暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

在Lambda执行: 错误: DPI-1047: 无法找到64位Oracle客户端库: libclntsh.so

ASKTOM 2020-06-12
394

问题描述

错误: DPI-1047: 无法找到64位Oracle客户端库: “libclntsh.so: 无法打开共享对象文件: 没有这样的文件或目录”。
您必须在LD_LIBRARY_PATH中具有64位Oracle客户端库,或者使用ldconfig进行配置。

以上是在aws lambda上运行函数的问题。

// lib/libclntsh.so可用。

我已经添加了路径,代码也在windows机器上本地工作。但不是在aws lambda上。


'严格使用';

进程。环境。ORA_SDTZ = 'UTC';
进程。env.LD_LIBRARY_PATH = '$ LAMBDA_RUNTIME_DIR:$ LAMBDA_RUNTIME_DIR/lib:$ LAMBDA_TASK_ROOT/lib';

const oracledb = require('oracledb');
oracledb.outFormat = oracledb.OUT_FORMAT_OBJECT;

module.exports.getmrl = 异步事件 => { // console.log (事件); console.log(process.env.LAMBDA_RUNTIME_DIR,process.env.LAMBDA_TASK_ROOT);
// console.log (“ld路径”,process.env.LD_LIBRARY_PATH);
返回getMrl();
};

异步函数getMrl() {

让连接;

尝试 {
连接 = 等待oracledb.getConnection({
用户: 进程。环境。DB_USER,
密码: 进程。环境。DB_PASS,
连接字符串: 进程。环境。数据库 _ con_string
});

常量结果 = 等待连接。exe可爱 (
'从appdbdev.IA_MRL M内部选择M.MRL,I.DOC_URL加入appdbdev.IA_MRL_DOCUMENTS I使用 (IA_ID) 按M.Id排序'
);
console.log('result ::',result.rows);
返回 {statusCode: 200,data: result.rows };
} 抓 (错误) {

console.log('getmrl :: error ::',err);
console.error(err);
返回 {statusCode: 500,err: err };

} 最后 {

如果 (连接) {
尝试 {
等待连接。关闭 ();
} 抓 (错误) {
console.log('getmrl :: connection :: catch',err);
console.error(err);
返回 {statusCode: 401,err: err };
}
}

}
}



专家解答

将 $ ORACLE_HOME/lib添加到您的LD_LIBRARY_PATH


[oracle@db19 dbhome_1]$ cd $ORACLE_HOME
[oracle@db19 dbhome_1]$ find . -name "libcl*" 
./lib/libclntsh.so.10.1
./lib/libclntshcore.so
./lib/libclsr19.a
./lib/libclntsh.so
./lib/libclsnsjni19.so
./lib/libclsce19.so
./lib/libclscest19.a
./lib/libclntshcore.so.19.1
./lib/libclsra19.so
./lib/libclscred19.so
./lib/libclient19.a
./lib/libclntst19.a
./lib/libclntsh.so.19.1
./lib/libclntsh.so.11.1
./lib/libclntsh.so.12.1
./lib/libclntsh.so.18.1

文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论