Docker 上的 Oracle :: ORA-12162: TNS:net 服务名称指定不正确
Oracle on Docker :: ORA-12162: TNS:net service name is incorrectly specified
我每次在 Oracle Docker 图像上登录 sqlplus 时都必须设置 $ORACLE_SID .
Steps to reproduce:
- 我登录到一个全新的 19c 映像,该映像刚从 Oracle 下载并安装:
docker exec -it 19c bash
- 我检查$ORACLE_SID和命令
echo $ORACLE_SID
return我一个空行(很奇怪!?)
- 所以我手动设置了 $ORACLE_SID:
export ORACLE_SID="ORCLCDB"
- 我再次检查 $ORACLE_SID,这次命令
echo $ORACLE_SID
returns me ORCLCDB
这是我设置的正确名称
- 我使用
exit
从 bash Docker 终端退出
- 我重新登录
docker exec -it 19c bash
- 我检查 $ORACLE_SID 是否与
echo $ORACLE_SID
保持一致,它 return 又给我一个空行
为什么更改不是永久性的?
容器启动后,no
可以change/add 环境变量。因此,最好的选择是 stop and remove the existing container, then recreate it with the correct environment variable.
在 Docker 中,您可以在 Docker 文件中使用 ENV
命令在图像上设置环境变量。您还可以配置在调用 docker run -e ...
时用于启动容器的默认环境
我每次在 Oracle Docker 图像上登录 sqlplus 时都必须设置 $ORACLE_SID .
Steps to reproduce:
- 我登录到一个全新的 19c 映像,该映像刚从 Oracle 下载并安装:
docker exec -it 19c bash
- 我检查$ORACLE_SID和命令
echo $ORACLE_SID
return我一个空行(很奇怪!?) - 所以我手动设置了 $ORACLE_SID:
export ORACLE_SID="ORCLCDB"
- 我再次检查 $ORACLE_SID,这次命令
echo $ORACLE_SID
returns meORCLCDB
这是我设置的正确名称 - 我使用
exit
从 bash Docker 终端退出
- 我重新登录
docker exec -it 19c bash
- 我检查 $ORACLE_SID 是否与
echo $ORACLE_SID
保持一致,它 return 又给我一个空行
为什么更改不是永久性的?
容器启动后,no
可以change/add 环境变量。因此,最好的选择是 stop and remove the existing container, then recreate it with the correct environment variable.
在 Docker 中,您可以在 Docker 文件中使用 ENV
命令在图像上设置环境变量。您还可以配置在调用 docker run -e ...