当前位置: 首页 > Oracle, oracle 11g > 正文

Linux 目录权限不足导致ORA-39070错误

同事要做数据迁移测试,需要服务器权限,就在操作系统上给他创建了一个用户wzs,给分了dba组,拥有dba组的用户就可以正常操作数据库,而且可以使用最高权限(SYS)。

[root@SL010A-IVDB08 ~]# id wzs
uid=54322(wzs) gid=54322(dba) groups=54322(dba)

可是他在用impdp向这个数据库中导入数据的时候,遇到了下面的错误。

[wzs@SL010A-UVDB08 ~]$ impdp mig directory=BK dumpfile=ugcall.dmp logfile=impdp_ugcall.log

Import: Release 11.2.0.4.0 - Production on wed Mar 28 12:21:42 2018

Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
Password:

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 -64bit Production
With the Partitioning,OLAP,Data Mining and Real Application Testing 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 536
ORA-29283: invalid file operation

这个错误最关键的部分是ORA-39070错误,一看就是没有权限写log文件导致的,我也没想那么多,就登录数据库给MIG用户授予了BK这个目录的读写权限。

SQL> grant read,write on directory BK to mig;

Grant succeeded.

然后,问题并没有解决,还是这个错误,那这就不是数据库层面的权限问题了,应该是操作系统层的权限不足,查看了一下他创建的这个目录对应操作系统的文件系统中的位置。

SQL> select * from dba_directories where directory_name=’BK’;

OWNER        DIRECTORY_NAME     DIRECTORY_PATH
----------   --------------    -------------------
SYS          BK                /home/wzs

他竟然把BK这个目录创建到了/home下,/home目录下的全是是很严格的,不同的用户是不能访问其他用户的家目录的,他把BK这个目录创建到了他操作系统用户的家目录,Oracle用户肯定是无法向那写log文件的。

通常我们会把oracle数据库安装在/u01目录下,而/u01目录通常都是755权限,而/home目录是700权限。

[root@SL010A-IVDB08 ~]# cd /home/
[root@SL010A-IVDB08 home]# ll
total 12
drwx------. 5 oracle        oinstall 4096 Sep 20  2017 oracle
drwx------. 4 wzs                dba 4096 Mar 28 12:14 wzs
drwx------. 4 xguest        xguest   4096 Aug 28  2017 xguest

再看下/home/wzs目录下的文件权限,应该是644权限。

[root@SL010A-IVDB08 wzs]# ll
total 1763972
-rw-r--r--. 1 wzs dba 303373994 Sep 20  2017 hm_cust_t_20170920.zip
-rw-r--r--. 1 wzs dba 455213056 Mar 28 11:06 mig_object.dump
-rw-r--r--. 1 wzs dba 118055080 Mar 28 11:20 mig_object.zip
-rw-r--r--. 1 wzs dba 641916928 Sep 20  2017 pub_data_0920.dump
-rw-r--r--. 1 wzs dba 999 Sep 20  2017 pub_data_0920.log
-rw-r--r--. 1 wzs dba 187157270 Sep 20  2017 pub_data_0920.tar.gz
-rw-r--r--. 1 wzs dba 74407936 Mar 28 12:05 ugcall.dmp
-rw-r--r--. 1 wzs dba 26166012 Mar 28 12:14 ugcall.zip

644权限dba组也只有读的权限,而没有写的权限。将/home/wzs目录的权限修改为755,问题解决。

其实/u01目录是755权限,wzs这个用户完全有权限向/u01目录里写数据,如果他将BK这个目录创建到/u01目录下面,就不会遇到这个问题,但这哥们不按套路出牌,把BK这个目录创建到了操作系统用户的家目录,才遇到这个权限不足的错误。

 

本文固定链接: http://www.dbdream.com.cn/2018/03/linux-%e7%9b%ae%e5%bd%95%e6%9d%83%e9%99%90%e4%b8%8d%e8%b6%b3%e5%af%bc%e8%87%b4ora-39070%e9%94%99%e8%af%af/ | 信春哥,系统稳,闭眼上线不回滚!

该日志由 dbdream 于2018年03月30日发表在 Oracle, oracle 11g 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: Linux 目录权限不足导致ORA-39070错误 | 信春哥,系统稳,闭眼上线不回滚!
关键字: , , ,

Linux 目录权限不足导致ORA-39070错误:等您坐沙发呢!

发表评论

快捷键:Ctrl+Enter