首页 > 解决方案 > 在 docker 中将 Oracle 转储表导入 Oracle 数据库

问题描述

操作系统是 Ubuntu 20.04。我有一个位于 docker 中的 Oracle Database 19c。详细地说,在/opt中,我创建了带有子文件夹的oracle文件夹并授予它们权限。您可以在以下内容中看到它们:

sudo chmod 777 /opt/oracle/admin/
sudo chown -R root /opt/oracle/admin/
sudo chmod 777 /opt/oracle/oradata/
sudo chown -R root /opt/oracle/oradata/
sudo chmod 777 /opt/oracle/scripts/startup/
sudo chown -R root /opt/oracle/scripts/startup/
sudo chmod 777 /opt/oracle/scripts/setup/
sudo chown -R root /opt/oracle/scripts/setup/

然后我使用以下命令运行 Oracle Docker 映像:

sudo docker run --name oracledb --shm-size=4g -p 1521:1521 -p 5500:5500 -e ORACLE_SID=testdb -e ORACLE_PDB=testpdb -e ORACLE_PWD=Oracle123 -v /opt/oracle/oradata:/opt/oracle/oradata -v /opt/oracle/admin:/opt/oracle/admin -v /opt/oracle/scripts/startup:/opt/oracle/scripts/startup -v /opt/oracle/scripts/setup:/opt/oracle/scripts/setup oracle:19.3.0

运行 Oracle 后,我打开主机/opt/oracle/oradata/dbconfig/TESTDB中的sqlnet.ora并更改其内容。修改后是这样的:

SQLNET.AUTHENTICATION_SERVICES=(ALL)
NAMES.DIRECTORY_PATH= (EZCONNECT, TNSNAMES, HOSTNAME)
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
SQLNET.ALLOWED_LOGON_VERSION=8

其他两个文件是这样的: listener.ora

 LISTENER =
  (DESCRIPTION_LIST =
   (DESCRIPTION =
    (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
    (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
   )
  )

tnsnames.ora

TESTDB=localhost:1521/TESTDB
TESTPDB=
  (DESCRIPTION =
   (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = TESTPDB)
   )
  )

DEDICATED_THROUGH_BROKER_LISTENER=ON DIAG_ADR_ENABLED = 关闭

它运行没有问题。我安装了 Bbvis 并创建了一个用户,但我无法导入任何“.dmp”表。即使我可以在 Dbvis 中创建用户,UI Oracle 也不起作用。我在localhost:5500/em中看不到任何东西。这对我来说很奇怪。另外,我安装了 Sql developer 来导入表,但我根本无法连接到数据库。我收到此错误:

状态:失败 - 测试失败:IO 错误:从读取调用中得到减一

我尝试像这样在docker中使用impdp

docker exec -it id_container impdp user/password DUMPFILE=cst.dmp

但我收到此错误:

ORA-27101: 共享内存领域不存在

此外,当我运行此命令时:

sudo docker exec -ti 6e277a00b558 sqlplus system/Pass@TESTPDB

它要我输入用户名和密码。我输入“系统”及其密码。但它不被接受,我收到此错误:

ERROR:
 ORA-01034: ORACLE not available
 ORA-27101: shared memory realm does not exist
 Linux-x86_64 Error: 2: No such file or directory
 Additional information: 4376
 Additional information: -179270649
 Process ID: 0
 Session ID: 0 Serial number: 0

我进行了很多搜索并测试了将转储文件导入 Ubuntu 中的 Oracle Docker 的各种方法。甚至,我安装了squirrelsql,但它可以导入我没有的 CSV 文件。

非常感谢任何帮助。

标签: oracledockerubuntuoracle-sqldeveloperdbvisualizer

解决方案


推荐阅读