首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle无法读取全局可访问的转储文件(777)

问Oracle无法读取全局可访问的转储文件(777)
EN

Stack Overflow用户
提问于 2015-11-24 00:26:33
回答 1查看 1.5K关注 0票数 1

我正在尝试导入Oracle转储文件,尽管授予了对这些文件的全局rwx权限,但在运行导入时仍收到权限错误。

下面是我运行的整个过程:

代码语言:javascript
复制
# Create the dump directory with the dump file, and grant 777 permissions
mkidr -p /home/vagrant/dump
mv /home/vagrant/data.dmp /home/vagrant/dump
chmod -R 777 /home/vagrant/dump

# Check the file permissions

# drwsrwsrwx. vagrant vagrant dump
# -rwxrwxrwx. vagrant vagrant dump/data.dmp

# Add the directory to Oracle
sqlplus system/vagrant
CREATE DIRECTORY DUMP_DIR AS '/home/vagrant/dump';
exit

# Try importing the data   
impdp system/vagrant dumpfile=data.dmp directory=DUMP_DIR nologfile=y

让键盘开始砸吧..。

代码语言:javascript
复制
Connected to: Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
ORA-39001: invalid argument value
ORA-39000: bad dump file specification
ORA-31640: unable to open dump file "/home/vagrant/dump/data.dmp" for read
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 13: Permission denied
Additional information: 3

注意:我完全知道这些权限和密码对安全性来说很糟糕,但由于我只是尝试在公开可用的数据集上运行一些实验分析,所以我并不真正关心。

EN

回答 1

Stack Overflow用户

发布于 2015-11-24 19:43:06

我认为问题在于您的脚本使用的是mkidr而不是mkdir。

这样,您不需要创建目录,当您将文件移动到假定的目录时,它只重命名文件,使其(作为文件,而不是目录)显示为具有正确权限的/home/vagrant/dump (除了开头的d字符),当然,您不能在其中搜索文件,因为它不是目录,而是一个文件。这也会妨碍oracle成功执行CREATE DIRECTORY DUMP_DIR AS '/home/vagrant/dump';,因为那里有一个同名的文件。

顺便说一下,要访问文件,您不仅需要在文件inode中拥有读取权限,还需要在路径后面的所有目录中执行权限x (在本例中为/home、/home/vagrant和/home/vagrant/dump -最后一个是文件,而不是目录-)。在本例中,必须检查的用户是ora (运行oracle的用户)。

我建议您以用户ora的身份进行模拟,如果这样做不起作用,请尝试从运行数据库的同一目录中读取文件,并使用与打开文件时相同的路径。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33875835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档