我想处理我数据库从服务器到本地,
docker:store/oracle/database-enterprise:12.2.0.1
我已经按照所有指南tns失去联系,但仍然没有解决。
sh-4.2$ ls -l $ORACLE_HOME/bin/oracle
-rwxr-x--x 1 oracle oinstall 395722363 Mar 2 2017 /u01/app/oracle/product/12.2.0/dbhome_1/bin/oracle
sh-4.2$ chmod u+s $ORACLE_HOME/bin/oracle
sh-4.2$
sh-4.2$ ls -l $ORACLE_HOME/bin/oracle
-rwsr-x--x 1 oracle oinstall 395722363 Mar 2 2017 /u01/app/oracle/product/12.2.0/dbhome_1/bin/oracle
sh-4.2$ su
[oracle@e859f5f6994c /]$ ls -l $ORACLE_HOME/bin/oracle
-rwsr-x--x 1 oracle oinstall 395722363 Mar 2 2017 /u01/app/oracle/product/12.2.0/dbhome_1/bin/oracle
然后重启Docker,对吧?我是Docker的新手。
SQL> connect sys as sysdba;
Enter password: Oradoc_db1
ERROR:
ORA-12547: TNS:lost contact
当Docker启动时,这会填满我的日志。docker-store/oracle/database-enterprise:12.2.0.1.log
编辑1
我已经尝试了这一个epiclabs/docker-oracle-xe-11g
仍然在同一问题。
1条答案
按热度按时间mdfafbf11#
我在MacBook Pro M2上的Docker上使用Oracle 11 g也遇到了同样的问题。这是由于
amd64
的模拟,我发现了2个解决方法。这是我尝试使用
sqlplus
在容器内部连接时得到的结果:请注意,容器以仿真模式运行(Apple Silicon芯片是
arm64
架构,而镜像是amd64
镜像):我正在运行Docker 4.23.0。第一种解决方法:当我启用实验功能“在Apple Silicon上使用Rosetta进行x86/amd 64仿真(转到Docker Desktop中的设置):
然后,只需重新启动一个新的容器,
sqlplus
就可以通过SQL*Net正确连接:第二种解决方法:使用原生
arm64
Docker镜像以避免模拟。但是,这只能从Oracle 19开始。不幸的是,Oracle目前没有推荐arm64
Docker镜像,所以你需要自己设置你的基础镜像(使用普通的Linuxarm64
镜像并安装Oracle rpm文件,请参阅https://www.oracle.com/database/technologies/oracle19c-linux-arm64-downloads.html)。