oracle - 在 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 文件。
非常感谢任何帮助。
解决方案
推荐阅读
- typo3 - 在 Typo3 代码中提交表单时出错:201905310232036dfcc153
- python - 如何训练神经网络来识别书面和口头数字是否相同
- amazon-web-services - 在域下创建子域并将该域用于电子邮件票务服务
- jenkins - 如何在 Jenkins 上正确地将 TFS 变更集编号放入 SonarScanner 的项目版本字段中?
- android - 如何管理来自特定不同活动的 NFC 标签读取
- javascript - 想将更新的“Second”合并到“MYJsonObj”
- laravel - Laravel 验证数量的字段数组不起作用
- windows - 使用批处理文件附加到系统 PATH 变量值
- nexus - 启动 Nexus docker 映像时如何设置管理员用户/密码
- c# - Angular 7、.netcore 应用程序上的 401(未经授权)请求