oracle directory使用网络映射地址

本文介绍了解决在使用IMPDP进行网络映射导入过程中遇到的问题的方法。通过正确配置目录路径、调整数据库及监听服务运行账号等步骤,确保可以从网络映射路径正确读取并导入DMP文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有个expdp的dmp包放在了ftp服务器上面,比较大,不好拷贝到本地,于是用网络映射的方式。

但在oracle中创建directory后,使用impdp,发现不能用,一直报错:

ORA-39001: 参数值无效
ORA-39000: 转储文件说明错误
ORA-31640: 无法打开要读取的转储文件 "y:\P2PDB_BAK\p2pdb_2009-06-05.dmp"
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 3) 系统找不到指定的路径。

根据分析,应该是oracle识别不到该网络映射路径。

在网上看到了这样的解决方法,尝试了下,可以正常使用:

1. Use UNC naming convention (\\<server>\<sharepoint>) on CREATE DIRECTORY command.
For example: CREATE DIRECTORY dump_dir AS '\\mk0510backup\dumpRAC$\DUMPS\DP';
2. Shut down the database.
3. Stop the listener.
4. Modify the instance service (OracleService<SID>) to run as OS account that has the appropriate privileges to access the mapped network disk.
5. Modify the listener service to run as the same account.
6. Start the instance service and the database.
7. Start the listener service.
If after 7, the DB or the listener didn't start appropriately, then Reboot the machine.

简而言之,就使需要一个可以访问远程映射地址的操作系统用户,使用这个操作系统用户来启动oracle和listener的服务。

比如我这里就自己创建了一个ftpuser用户,这个用户正常访问远程ftp上的文件,然后用这个ftpuser来启动数据库和监听,再次执行impdp操作就OK了。




<think>好的,我现在需要帮助用户解决如何在Oracle中创建DMPS_DIRECTORY目录对象的问题。首先,我需要回忆一下Oracle的数据泵工具expdp和impdp的相关知识。用户提到了引用中的一些SQL命令,比如创建目录和授权,这可能就是关键步骤。 首先,用户提供的引用[1]中有创建目录的语句:CREATE OR REPLACE DIRECTORY "DMPS" as '/data/oracleDmps'; 然后授权给public。这说明创建目录需要用到CREATE DIRECTORY语句,并且需要指定操作系统路径。同时,必须确保Oracle用户有权限访问该路径,否则导出导入会失败。 接下来,我需要考虑用户可能的操作步骤。首先,用户需要以有权限的用户(比如SYSTEM或SYS)登录数据库,然后执行创建目录的命令。然后,授予读写权限给需要使用的用户或者public。但要注意,实际生产环境中授权给public可能不安全,但用户示例中这么做了,可能需要提醒用户根据实际情况调整。 然后,用户可能还需要验证目录是否创建成功,可以通过查询DBA_DIRECTORIES视图来检查。此外,操作系统路径的权限是否正确,Oracle进程是否有权限读写该目录,这也是常见的问题点。比如,/data/oracleDmps目录是否存在,是否对oracle用户开放了读写权限。 用户可能遇到的错误包括目录不存在、权限不足,或者路径无效。需要指导用户如何排查这些问题。例如,使用SELECT * FROM DBA_DIRECTORIES WHERE DIRECTORY_NAME = 'DMPS'; 来确认目录是否存在,路径是否正确。 另外,用户提到的是用于expdp和impdp操作,所以在实际使用数据泵时,需要指定directory参数为DMPS,如引用[2]中的例子:directory=dumpdir,用户需要替换成DMPS。因此,在教程中需要说明如何在expdp命令中使用这个目录。 可能还需要注意版本问题,如引用[3]和[4]中提到的降版本导出,但用户当前的问题主要集中在创建目录,所以这部分可能暂时不需要涉及,但可以放在相关问题中作为扩展。 总结步骤应该是:1. 使用SYSTEM或具有权限的用户登录;2. 创建目录对象;3. 授权给相应用户;4. 验证目录和权限;5. 确保操作系统路径正确。同时给出示例命令和注意事项,比如路径大小写、权限管理等。 最后,用户可能需要相关的问题,比如如何授权、如何验证目录是否存在、如何处理权限错误等,这些可以作为相关问题列出。</think>### 分步说明:创建DMPS_DIRECTORY目录对象 1. **使用管理员账号登录数据库** 以`SYSTEM`或具有`CREATE ANY DIRECTORY`权限的用户登录SQL*Plus或其他Oracle客户端: ```sql sqlplus system/manager ``` 2. **创建目录对象** 执行以下SQL语句创建目录对象,将逻辑名称`DMPS`映射到操作系统路径`/data/oracleDmps`: ```sql CREATE OR REPLACE DIRECTORY DMPS AS '/data/oracleDmps'; ``` - **注意**:Oracle不验证路径是否存在,需确保路径有效且Oracle进程有读写权限[^1]。 3. **授权目录访问权限** 授予目标用户(或`PUBLIC`)对该目录的读写权限: ```sql GRANT READ, WRITE ON DIRECTORY DMPS TO PUBLIC; ``` - 生产环境建议授权给特定用户而非`PUBLIC`以提高安全性。 4. **验证目录创建** 查询数据字典确认目录信息: ```sql SELECT DIRECTORY_NAME, DIRECTORY_PATH FROM DBA_DIRECTORIES WHERE DIRECTORY_NAME = 'DMPS'; ``` 5. **操作系统路径权限配置** 确保操作系统目录`/data/oracleDmps`: - 存在且权限设置为`oracle:oinstall`(示例): ```bash mkdir -p /data/oracleDmps chown oracle:oinstall /data/oracleDmps chmod 755 /data/oracleDmps ``` ### 使用示例:通过数据泵导出数据 ```bash expdp system/manager directory=DMPS dumpfile=expdp.dmp schemas=hruser ``` 需指定`directory=DMPS`参数关联目录对象[^2]。 ### 常见问题排查 - **ORA-39002**: 目录路径不存在或权限不足,检查操作系统路径和Oracle用户权限。 - **ORA-39087**: 目录名称无效,确认目录名称与`DBA_DIRECTORIES`中的记录一致。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值