在AWS Lambda中连接Oracle RDS时,需要确保使用的Oracle客户端库版本与Lambda运行时环境兼容。如果使用不兼容的客户端库版本,则会出现DPI-1047错误。以下是解决此问题的步骤:
在Lambda函数中安装Oracle客户端库。
确保使用的Oracle客户端库版本与Lambda运行时环境兼容。使用以下代码在Lambda函数中安装Oracle客户端库:
# Create build directory
mkdir ~/oracle-build
cd ~/oracle-build
# Install Oracle Instant Client for Amazon Linux
yum install -y libaio
curl -O https://download.oracle.com/otn_software/linux/instantclient/19600/instantclient-basic-linux.x64-19.6.0.0.0dbru.zip -H 'Authorization: Bearer '
curl -O https://download.oracle.com/otn_software/linux/instantclient/19600/instantclient-sdk-linux.x64-19.6.0.0.0dbru.zip -H 'Authorization: Bearer '
unzip instantclient-basic-linux.x64-19.6.0.0.0dbru.zip
unzip instantclient-sdk-linux.x64-19.6.0.0.0dbru.zip
rm *.zip
# Create symbolic links
ln -s /usr/lib/oracle/19.6/client64/lib/libclntsh.so.19.1 ~/libclntsh.so
ln -s /usr/lib/oracle/19.6/client64/lib/libocci.so.19.1 ~/libocci.so
ln -s /usr/lib/oracle/19.6/client64/include ~/include
# Set environment variables
export LD_LIBRARY_PATH=~/:$LD_LIBRARY_PATH
此代码将安装19.6.0.0.0版本的Oracle Instant Client,并为其创建符号链接和环境变量。如果您需要安装不同版本的Instant Client,请相应地更改下载链接和文件名。