【问题标题】:Error with try to connect oracle db with ruby尝试将 oracle db 与 ruby​​ 连接时出错
【发布时间】:2018-03-13 14:09:04
【问题描述】:

我正在尝试通过 ruby​​ 连接到 oracle 数据库,但出现错误: OCIError: ORA-12514: TNS:el listener no conoce actualmente el servicio solicitado en el descriptor de conexión oci8.c:659:in oci8lib_240.so 侦听器实际上并不知道连接描述符中请求的服务。

名称:

SERVICE_PODVCT_ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = podvct.x.com)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = PODVCT)
      (SERVICE_NAME = PODVCT)
      (SID = PODVCT)
    )
  )

听众:

LISTENER_PODVCT_ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = podvct.x.com)(PORT = 1521))
    (CONNECT_DATA = 
    (SERVICE_NAME = PODVCT)
    (SID = PODVCT)
    )
  )
  sid_list_LISTENER_PODVCT_ORCL=
   (sid_list=
   (sid_desc=
   (oracle-home=C:\app\user\product\11.2.0\dbhome_1)
   (sid_name=PODVCT)))
ADR_BASE_LISTENER_PODVCT_ORCL = C:\app\user

sqlnet:

AMES.TRACE_DIRECTORY = C:\app\user\product\11.2.0\dbhome_1\NETWORK\trace
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, HOSTNAME)
NAMES.TRACE_FILE = names.trc
NAMESCTL.TRACE_FILE = namesctl.trc
NAMES.PREFERRED_SERVERS =
  (address_list =
    (address = (protocol = tcp)(host = podvct.x.com)(port = 1521))
  )
NAMES.LOG_FILE = names.log
NAMESCTL.TRACE_LEVEL = ADMIN
NAMES.LOG_DIRECTORY = C:\app\user\product\11.2.0\dbhome_1\NETWORK\log
NAMES.DEFAULT_DOMAIN = world
NAMESCTL.TRACE_DIRECTORY = C:\app\user\product\11.2.0\dbhome_1\NETWORK\trace
NAMES.TRACE_LEVEL = ADMIN
ADR_BASE = C:\app\user

我配置了环境变量:

PATH: ...;C:\Ruby24-x64\bin\oci.dll;C:\Oracle_odbc;%ORACLE_HOME%/network/bin;C:\app\PRIVE2\product\11.2.0\dbhome_1\bin;
ORACLE_HOME:C:\app\user\product\11.2.0\dbhome_1
ORACLE_SID:podvct
NLS_LANG: SPANISH_SPAIN.WE8MSWIN1252
TNS_ADMIN: C:\app\USER\product\11.2.0\dbhome_1\NETWORK\ADMIN
  • 我用红宝石写了:

    需要'dbi' 需要'oci8'

    //dbh = OCI8.new(user,password,'podvct.x.com:1521/PODVCT')

    dbh = DBI.connect("DBI:OCI8:podvct.x.com:1521/PODVCT",user,password)

  • 我检查了自 ruby​​ 和自 sqlplus 以来的连接,错误是:

    dbh = DBI.connect("DBI:OCI8:podvct.monsanto.com:1521/PODVCT",user,password)

OCIError: ORA-12514: TNS:el listener no conoce actualmente el servicio solicitado en el descriptor de conxión oci8.c:659:in oci8lib_240.so 侦听器实际上并不知道连接描述符中请求的服务。

【问题讨论】:

  • db 和 listener 是否正在运行?
  • 数据库是一个远程数据库,它运行在服务器上,监听器在我的电脑上。
  • 你确认了吗,如果服务器上的监听器也启动了?
  • 我需要两者兼而有之的听众吗?服务器和我的电脑?我需要像在我的电脑中一样配置监听器吗?我会确认的。
  • 是的.. 服务器应该有监听器并且应该启动

标签: ruby database oracle


【解决方案1】:

我尝试了所有,响应是这样的:

dbh = DBI.connect("DBI:OCI8:SERVICE_PODVCT_ORCL",user,pass)

SERVICE_PODVCT_ORCL 是 tnsnames.ora 中的服务名称

谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-03
    • 1970-01-01
    • 2019-04-05
    • 1970-01-01
    • 2015-10-11
    • 2013-04-15
    • 2020-10-19
    相关资源
    最近更新 更多