我们在Windows服务器上使用ASP.NET开发并使用sql server 2008r2测试了我们的应用程序。现在我们需要在red hat linux上将数据库从windows移动到oracle。
我们尚未设置基础架构来测试相同的内容。我想在此期间知道是否有人成功地做过这种事情。任何资源的指针都将是一个很大的优势。
更改连接字符串是唯一需要完成的事情,还是在Linux中有任何特定配置允许这样做?
一旦我准备好环境,我就会对此进行验证,但如果有人有任何相似的经验,请作为开端,分享。
提前致谢。
P.S:为了将表结构,存储过程等迁移到oracle,我们将使用Sql Developer工具。
答案 0 :(得分:0)
我想回答我的问题,因为迁移到oracle并不是那么直接,但是有一些技巧可以帮助任何人在Windows或Linux上迁移到oracle而不那么头痛。
Sql开发人员工具首先将sqlserver架构和数据迁移到oracle,包括存储过程,约束,触发器等。
它还可以很好地处理数据类型映射,并提供重新映射数据类型的选项。
一些警告和注意事项。
Oracle对大约30个字符的存储过程名称的长度有限制。这是您需要使用某些手动重命名的区域,因为迁移SP或名称大于30个字符的标识符可能会被截断。
您可能面临的另一个常见问题是日期插入和格式化问题。您可以使用以下代码段来避免头痛。常见错误是“不是有效月份”。
OracleConnection conn = new OracleConnection(oradb); // C# conn.Open(); OracleGlobalization session = conn.GetSessionInfo(); session.DateFormat =“DD.MM.RR”; //根据需要更改格式 conn.SetSessionInfo(会话);
这里的问题是当您为sql提供程序向命令对象添加参数时,绑定按名称进行,但对于Oracle.DataAccess,默认绑定是按位置进行的。这篇帖子让我很头疼。 ODP .NET Parameter problem with uint datatype
您可以做的是设置command.BindByName = true;
例如 OracleParameter refp = new Oracle.DataAccess.Client.OracleParameter(“cv_1”,OracleDbType.RefCursor,ParameterDirection.InputOutput);
command.Parameters.Add(REFP);
此外,sqlserver要求SP的参数以“@”为前缀,oracle不要。这可以在您的数据层中轻松处理。
此外,由于Oracle中没有位数据类型,因此number(1)工作正常。如果需要,您可能需要将bool转换为数字。
希望这有助于避免移民头痛。如果我遇到,我会发布更多问题。