使用asp.net从Windows服务器连接到Red Hat linux上的oracle 11g

时间:2012-07-08 02:37:35

标签: asp.net windows linux oracle sql-server-2008-r2

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

我们尚未设置基础架构来测试相同的内容。我想在此期间知道是否有人成功地做过这种事情。任何资源的指针都将是一个很大的优势。

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

一旦我准备好环境,我就会对此进行验证,但如果有人有任何相似的经验,请作为开端,分享。

提前致谢。

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

1 个答案:

答案 0 :(得分:0)

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

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

它还可以很好地处理数据类型映射,并提供重新映射数据类型的选项。

一些警告和注意事项。

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

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

  3. OracleConnection conn = new OracleConnection(oradb); // C# conn.Open(); OracleGlobalization session = conn.GetSessionInfo(); session.DateFormat =“DD.MM.RR”; //根据需要更改格式 conn.SetSessionInfo(会话);

    1. 插入或更新数据或相关错误时,最烦人的错误是数字转换的特征。
    2. 这里的问题是当您为sql提供程序向命令对象添加参数时,绑定按名称进行,但对于Oracle.DataAccess,默认绑定是按位置进行的。这篇帖子让我很头疼。 ODP .NET Parameter problem with uint datatype

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

      1. 当迁移返回数据的SP时,oracle会创建一个out参数引用游标。在构造命令参数时需要注意这一点。
      2. 例如   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)工作正常。如果需要,您可能需要将bool转换为数字。

        3. 希望这有助于避免移民头痛。如果我遇到,我会发布更多问题。