1

我们在 Windows 服务器上使用 ASP.NET 使用 sql server 2008r2 开发和测试了我们的应用程序。现在我们需要将数据库从 windows 移动到 red hat linux 上的 oracle。

我们还没有设置基础设施来测试它。同时我想知道是否有人成功地完成了这种事情。指向任何资源的指针将是一个很大的优势。

更改连接字符串是唯一需要做的事情,还是 Linux 中有任何特定配置允许这样做?

一旦我准备好环境,我将验证这一点,但如果有人有任何类似的经验,请分享一下。

提前致谢。

PS:为了将表结构、存储过程等迁移到 oracle,我们将使用 Sql Developer 工具。

4

1 回答 1

0

我想回答我的问题,因为迁移到 oracle 并不是那么简单,但是有一些技巧可以帮助任何人在 Windows 或 linux 上迁移到 oracle 而不那么头痛。

Sql 开发人员工具首先将 sqlserver 模式和数据迁移到 oracle,包括存储过程、约束、触发器等。

它还可以很好地进行数据类型映射,并在需要时提供重新映射数据类型的选项。

一些注意事项和注意事项。

  1. Oracle 对存储过程名称的长度有大约 30 个字符的限制。这是您需要进行一些手动重命名的区域,因为迁移 SP 或名称大于 30 个字符的标识符可能会被截断。

  2. 您可能面临的另一个常见问题是日期插入和格式设置。您可以使用以下代码段来避免头痛。常见错误是“不是有效月份”。

OracleConnection conn = new OracleConnection(oradb); // C# conn.Open(); OracleGlobalization session = conn.GetSessionInfo(); session.DateFormat = "DD.MM.RR"; // 这里根据需要改变格式 conn.SetSessionInfo(session);

  1. 插入或更新数据或相关错误时,最烦人的错误是字符到数字的转换。

这里的问题是,当您将参数添加到 sql 提供程序的命令对象时,绑定按名称发生,但对于 Oracle.DataAccess,默认绑定是按位置。这是让我头疼的帖子。 uint 数据类型的 ODP .NET 参数问题

你可以做的是设置 command.BindByName = true;

  1. 当迁移返回数据的 SP 时,oracle 会创建一个 out 参数引用游标。在构造命令参数时需要注意这一点。

例如 OracleParameter refp = new Oracle.DataAccess.Client.OracleParameter("cv_1", OracleDbType.RefCursor, ParameterDirection.InputOutput);

command.Parameters.Add(refp);

  1. 此外,sqlserver 要求 SP 的参数以“@”为前缀,而 oracle 则不需要。这可以在您的数据层中轻松处理。

  2. 此外,由于 Oracle 中没有位数据类型,因此 number(1) 可以正常工作。如果需要,您可能需要将布尔值转换为数字。

希望这可以帮助某人避免迁移头痛。如果我遇到,我会发布更多问题。

于 2012-07-13T02:37:28.020 回答