当前位置: 代码迷 >> 综合 >> Docker 中Oracle 容器 impdp 导入报错处理
  详细解决方案

Docker 中Oracle 容器 impdp 导入报错处理

热度:19   发布时间:2024-01-27 00:42:49.0

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 命令快速切换。

  相关解决方案