问题描述
我使用了 docker oracle 数据库 Oracle Database 11g Express Edition Release 11.2.0.2.0 我尝试导入文件 dmp,但出现以下错误
docker-compose.yml
version: '3'
services:
oracle:
image: jaspeen/oracle-xe-11g
container_name: oracle11g
volumes:
- ~/docker/data:/u01/app/oracle jaspeen/oracle-xe-11g
ports:
- "1529:1521"
- "8081:8080"
- "2222:22"
命令
docker exec -it oracle11g sqlplus
Enter user-name: SYS as SYSDBA
Enter password: oracle
sql> CREATE TABLESPACE DEV_SPACE DATAFILE 'dev_space.dat' SIZE 500M AUTOEXTEND ON NEXT 10M;
sql> DEFINE NEW_USER = 'scoemploi';
sql> CREATE USER &NEW_USER. IDENTIFIED BY "1234";
sql> GRANT CONNECT,RESOURCE,CREATE JOB,CREATE VIEW,CREATE ANY CONTEXT TO &NEW_USER;
sql> ALTER USER &NEW_USER QUOTA UNLIMITED ON USERS;
sql> ALTER USER &NEW_USER DEFAULT TABLESPACE DEV_SPACE;
sql> CREATE OR REPLACE DIRECTORY docker_vol AS '/u01/app/oracle';
sql> GRANT READ,WRITE ON DIRECTORY docker_vol TO scoemploi;
sudo docker exec -it oracle11g impdp scoemploi/1234 DUMPFILE=docker_vol:scoemploi2020.DMP FULL=Y
ORA-39001: invalid argument value
ORA-39000: bad dump file specification
ORA-31640: unable to open dump file "/u01/app/oracle/scoemploi2020.DMP" for read
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional @R_781_4045@ion: 3
解决方法
您需要在 docker 中安装 scoemploi2020.DMP
docker cp /hostpath/scoemploi2020.DMP demo1:/u01/app/oracle
docker exec -it demo1 chmod +rxw /u01/app/oracle/scoemploi2020.DMP