docker 中Oracle 容器 impdp 导入 dmp 文件时 报错 : 日志没有权限 等
impdp mogo/mogo directory=DATA_TEMP dumpfile=data-mogo.dmp full=y table_exists_action=replace
oracle 容器 impdp导入时 提示“ORA-39002: 操作无效 ORA-39070: 无法打开日志文件 ” :
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
ORA-39002: invalid operation
ORA-39070: Unable to open the log file.
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 475
ORA-29283: invalid file operation
这种是 权限 问题: /home/oracle/data_temp 挂载目录 权限 为 Oracle 应 归属 root
临时关闭selinux:
setenforce 0 即可搞定
Docker容器挂载主机目录访问出现Permission denied的解决办法
查看Oracle 容器内 /home/oracle/data_temp 所有者 及 归属 是否为root
Oracle 容器 切换到 root : su root / password : helowin
如果 root 账户也无法切换 所有者权限
解决办法:
问题原因及解决办法
原因是CentOS7中的安全模块selinux把权限禁掉了,至少有以下三种方式解决挂载的目录没有权限的问题:
1.在运行容器的时候,给容器加特权,及加上 --privileged=true 参数:
docker run -i -t -v /soft:/soft --privileged=true 686672a1d0cc /bin/bash
2.临时关闭selinux:
setenforce 0
3.添加selinux规则,改变要挂载的目录的安全性文本
我采用第二种办法 : 新开 窗口 临时关闭 selinux
开机关闭SELinux
编辑/etc/selinux/config文件,如下图,将SELINUX的值设置为disabled。下次开机SELinux就不会启动了。
SELinux 有三种工作模式,分别是:1. enforcing:强制模式。违反 SELinux 规则的行为将被阻止并记录到日志中。 强制不可以访问
2. permissive:宽容模式。违反 SELinux 规则的行为只会记录到日志中。一般为调试用。 警告但可以访问
3. disabled:关闭 SELinux。 不警告不拒绝
SELinux 工作模式可以在 /etc/selinux/config 中设定。 selinux=disable 或者 enforcing
如果想从 disabled 切换到 enforcing 或者 permissive 的话,需要重启系统。反过来也一样。
enforcing 和 permissive 模式可以通过 setenforce 1|0 命令快速切换。