在 AIX 中成功使用 ruby-oci8(无 ORA-12537)
Using ruby-oci8 with AIX successfully (no ORA-12537)
有没有人在 AIX 上成功使用当前 (2.1.7) 版本的 ruby-oci8
对抗 Oracle?
我可以 运行 我的 ruby-oci8 测试脚本并使其针对 Linux 的 TNS 和 Windows 的 TNS 而不是 AIX。
但是,这不是 Oracle Instant Client 问题,我可以使用命令行 sqlplus 从我的机器连接到 Oracle(AIX 的 TNS)服务器,它工作正常。但是,当我将它包装在 ruby 脚本中(使用 ruby 1.8.7)时,它失败了:
oci8.c:513:in oci8lib.so: ORA-12537: TNS:connection closed (OCIError)
from /usr/lib64/ruby/gems/1.8/gems/ruby-oci8-2.1.7/lib/oci8/oci8.rb:148:in initialize' from app/controllers/testdb.rb:32:innew'
from app/controllers/testdb.rb:32
我在这里没有做任何聪明的事情,只是像这样创建一个新连接:
conn = OCI8.new(username, password)
任何关于这方面的信息都会很棒,我还没有尝试过数据包嗅探 - 但是....
-约翰
我最终确实成功了,简短的回答是我成功使用了完整的连接字符串,即:
OCI8.new("user/password@(description=(address=(protocol=tcp)(host=host.uab.edu)(port=1521))(connect_data=(sid=somesid)))")
令人困惑的部分是 API 中没有提到这种格式,我不得不使用 service_name=.
的 sid=
有没有人在 AIX 上成功使用当前 (2.1.7) 版本的 ruby-oci8
对抗 Oracle?
我可以 运行 我的 ruby-oci8 测试脚本并使其针对 Linux 的 TNS 和 Windows 的 TNS 而不是 AIX。
但是,这不是 Oracle Instant Client 问题,我可以使用命令行 sqlplus 从我的机器连接到 Oracle(AIX 的 TNS)服务器,它工作正常。但是,当我将它包装在 ruby 脚本中(使用 ruby 1.8.7)时,它失败了:
oci8.c:513:in oci8lib.so: ORA-12537: TNS:connection closed (OCIError)
from /usr/lib64/ruby/gems/1.8/gems/ruby-oci8-2.1.7/lib/oci8/oci8.rb:148:in initialize' from app/controllers/testdb.rb:32:innew'
from app/controllers/testdb.rb:32
我在这里没有做任何聪明的事情,只是像这样创建一个新连接:
conn = OCI8.new(username, password)
任何关于这方面的信息都会很棒,我还没有尝试过数据包嗅探 - 但是....
-约翰
我最终确实成功了,简短的回答是我成功使用了完整的连接字符串,即: OCI8.new("user/password@(description=(address=(protocol=tcp)(host=host.uab.edu)(port=1521))(connect_data=(sid=somesid)))")
令人困惑的部分是 API 中没有提到这种格式,我不得不使用 service_name=.
的 sid=