我正在尝试使用 TNS 和客户端钱包连接到外部 Oracle 数据库。我的组织要求进行确切的设置,所以我没有办法。问题是,当谈到甲骨文时,我是一个完全的菜鸟,而互联网没有完全零的信息——这意味着一些知识。node-oracledb 本身没有非常描述性的错误消息,所以我只是在这里闲逛,我很感激任何指导。
这是我的设置:
// This is the TypeORM config
{
type: 'oracle',
connectString: 'org',
username: process.env.DB_USER,
password: process.env.DB_PASS,
}
// .bashrc sets the env variable to the config dir
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/oracle/instantclient
export TNS_ADMIN=/opt/oracle
// tnsnames.ora
org =
(DESCRIPTION =
(ADDRESS =
(PROTOCOL = TCPS)
(HOST = prac-scan.it.org.com)
(PORT = 1533)
)
(CONNECT_DATA =
(FAILOVER_MODE =
(TYPE = select)
(METHOD = basic)
(RETRIES = 180)
(DELAY = 5)
)
(SERVICE_NAME = DB.ORG.COM)
)
)
// sqlnet.ora
WALLET_LOCATION = (SOURCE =
(METHOD = FILE)
(METHOD_DATA =
(DIRECTORY=/opt/oracle)
)
)
我得到的是这样的
ORA-12154: TNS:could not resolve the connect identifier specified
如果我将字符串从 tnsnames.ora 直接移动到 JS 的配置中,我会收到以下错误:
ORA-28759: failure to open file
所以我在这里,不知道我在做什么。甚至不确定如何调试,似乎混合节点和oracle并不是一件流行的事情。我会很感激任何方向。
UPD:发现我可以用字符串把钱包目录定义正确,所以我的 TypeORM 配置变成了:
{
connectString: `(DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS)(HOST=prac-scan.it.org.com)(PORT=1533))(CONNECT_DATA=(FAILOVER_MODE=(TYPE=select)(METHOD=basic)(RETRIES=180)(DELAY=5))(SERVICE_NAME=DB.ORG.COM))(SECURITY=(MY_WALLET_DIRECTORY=/opt/oracle)))`,
}
所以我现在得到的错误是:
ORA-28864: SSL connection closed gracefully