在Windows 2012 64位系统环境下,进行ASP应用程序升级时,遇到了与64位Oracle 11g的连接问题。原本在Windows 2003上运行的ASP应用,由于其本身是32位架构,无法直接连接到同样是64位的Oracle 11g数据库。解决这个问题的过程涉及以下步骤:
1. **安装Oracle 11.2.0.4 64位版本**:首先,在D:\app目录下安装Oracle 11g的64位服务器版本,确保数据库服务能够在新操作系统中正常运行。
2. **安装Oracle 10g 32位客户端**:为了支持32位应用的连接,需要在C:\oracle路径下安装Oracle 10g的32位客户端,这将用于提供ODBC驱动程序给ASP。
3. **配置32位ODBC**:在C:\Windows\SysWOW64\odbcad32.exe路径下的32位ODBC管理工具中,配置Microsoft ODBC for Oracle驱动器。尽管32位ODBC与64位数据库不直接兼容,但通过这个步骤,可以创建一个适配连接的环境。注意,这里无需设置TNS_ADMIN等高级参数,因为这些通常用于管理64位环境下的连接。
4. **编写ASP连接代码**:在ASP脚本中,使用ADODB.CONNECT对象建立连接。示例代码如下:
```vbscript
Dim conn
Dim connStr
Set conn = Server.CreateObject("ADODB.Connection")
connStr = "DRIVER={Microsoft ODBC for Oracle}; UID=oa; PWD=xxxx; SERVER=ORCL;"
conn.Open connStr
```
这里使用了微软提供的ODBC驱动程序,通过指定用户名(UID)、密码(PWD)和服务器名(SERVER)来连接Oracle数据库。
5. **测试连接**:确保上述配置无误后,运行ASP应用程序,尝试连接到Oracle 11g数据库。如果连接成功,说明问题已经解决,可以继续进行升级后的应用程序测试和优化。
总结来说,解决ASP通过ODBC连接64位Oracle 11g的问题的关键在于利用32位ODBC驱动程序,并通过适当的配置和连接字符串来确保跨平台和架构间的兼容性。虽然这可能需要额外的步骤和注意事项,但在实际项目中,这种策略可以有效避免因环境迁移导致的连接问题。