R Oracle数据库连接使用dbPool失败,但使用dbConnect成功



我正在尝试使用池包的dbPool函数重构旧代码以利用数据库池。

从历史上看,我一直在毫无问题地使用DBI包的dbConnect函数。我可以用以下代码成功创建到我的Oracle数据库的连接(所有凭据都是伪造的(:

conn <- DBI::dbConnect(
ROracle::Oracle(),
"database.abcd1234.us-east-1.rds.amazonaws.com/orcl",
username="username",
password="hunter2"
)

然而,当我在相同的开发环境中使用相同的凭据来尝试创建这样的池时:

pool <- pool::dbPool(
drv      = ROracle::Oracle(),
dbname   = "orcl",
host     = "database.abcd1234.us-east-1.rds.amazonaws.com",
username = "username",
password = "hunter2"
)

我得到一个错误:

Error in .oci.Connect(.oci.drv(), username = username, password = password,  : 
ORA-12162: TNS:net service name is incorrectly specified

我以前使用过dbPool,但使用Postgres数据库而不是Oracle,对于Postgres来说,它只是起作用!我在想,因为我的凭据在dbConnect上运行良好,所以我一定错过了一些小东西,这些东西也是dbPool正常工作所必需的

orclservice name,而不是database name

尝试:

pool <- pool::dbPool(
drv      = ROracle::Oracle(),
host     = "database.abcd1234.us-east-1.rds.amazonaws.com/orcl",
username = "username",
password = "hunter2"
)

pool <- pool::dbPool(
drv      = ROracle::Oracle(),
sid      = "orcl",
host     = "database.abcd1234.us-east-1.rds.amazonaws.com",
username = "username",
password = "hunter2"
)

最新更新