oracle11g 导入数据时 ORA-20446 错误的 解决方案

本文介绍了解决数据库中出现ORA-20446错误的方法,该错误通常与作业所有者未注册有关。通过使用sysman用户登录并执行特定的PL/SQL语句可以修复这个问题。

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

错误信息

ORA-20446: The owner of the job is not registered ORA-06512: 在 "SYSMAN.MGMT_JOBS", line 168 ORA-06512: 在 "SYSMAN.MGMT_JOBS", line 86 ORA-06512: 在 line 1

解决方法

Login as sysman user to the database and execute the following :
使用plus命令行工具,使用sysman 登录系统,执行以下语句
execute MGMT_USER.MAKE_EM_USER('所导出导入使用的用户名');
<think>好的,用户现在遇到了在Windows上使用SQL*Loader(可能用户误写为sqldpv)还原Oracle数据出现ORA-39002、ORA-39070、ORA-39088错误的问题。我需要结合用户提供的引用和之前的对话内容来给出解决方案。首先,用户之前的问题是关于DataPump的,现在可能混淆了工具名称,但错误代码相同,所以解决方案应该类似。引用[2]提到用户创建了目录对象并授权,但可能权限不足或路径问题。引用[1]中的listener.ora修改可能与当前问题无关,但用户可能误操作了配置文件。引用[3]涉及用户权限问题,可能需要更多的权限授予。需要检查的步骤包括:目录权限是否正确,Oracle目录对象是否有效,文件名是否合法,作业是否冲突,以及是否有足够的权限。同,用户可能没有正确使用DIRECTORY参数,导致路径错误。此外,确保日志文件可写,磁盘空间足够,以及转储文件没有损坏。 需要将步骤分点说明,确保用户能逐步排查。同,根据用户之前的提问,可能需要生成相关问题,比如如何处理权限、清理残留作业等。要注意引用之前的引用内容,比如引用[2]中的目录创建和授权,引用[3]中的权限问题,并正确标注引用标记。</think>### Windows上使用SQL*Loader恢复Oracle数据ORA-39002、ORA-39070、ORA-39088错误解决方案 --- #### 1. **错误原因定位** - **ORA-39002**: 通常由文件路径权限不足、目录对象未正确配置或作业命名冲突导致[^2] - **ORA-39070**: 日志文件无法访问,可能因Windows目录权限问题或路径格式错误[^2] - **ORA-39088**: 文件名非法(含特殊字符或路径符号)或作业名重复[^3] --- #### 2. **分步解决方案** ##### **步骤1:验证操作系统目录权限** 1. 检查物理路径是否存在(如`C:\temp`) ```bash # 若路径不存在则手动创建 mkdir C:\temp ``` 2.Oracle服务账户分配NTFS权限: - 右键目录 -> 属性 -> 安全 -> 添加Oracle服务账户(如`SYSTEM`或`OracleServiceORCL`) - 勾选**完全控制**权限(包含读/写/删除权限)[^2] ##### **步骤2:重建Oracle目录对象** 1. 使用SQL*Plus创建目录对象并授权: ```sql CREATE OR REPLACE DIRECTORY dbbak AS 'C:\temp'; GRANT READ, WRITE ON DIRECTORY dbbak TO your_user; -- 替换your_user为实际用户[^2] ``` - **关键点**:授权后需断开数据库会话重新连接才能生效 ##### **步骤3:规范文件名与参数** 1. **禁用路径符号**:在`impdp`命令中仅使用文件名,通过`DIRECTORY`参数指定路径 ```bash impdp user/password@ORCL DIRECTORY=dbbak DUMPFILE=data.dmp LOGFILE=imp.log ``` - **错误示例**:`DUMPFILE=C:\temp\data.dmp`(路径必须通过`DIRECTORY`指定) 2. **文件名规范**:仅使用字母、数字和下划线(如`dump_2024.dmp`) ##### **步骤4:处理作业冲突** 1. 查询活跃作业: ```sql SELECT owner_name, job_name, state FROM dba_datapump_jobs; ``` 2. 终止重复作业: ```bash impdp system/password ATTACH=SYS_IMPORT_FULL_01 STOP_JOB=IMMEDIATE ``` ##### **步骤5:补充权限修复** - 授予用户完整权限(若引用[3]中权限不足): ```sql GRANT CREATE ANY DIRECTORY TO your_user; GRANT EXP_FULL_DATABASE, IMP_FULL_DATABASE TO your_user; -- 完整导入导出权限[^3] ``` --- #### 3. **操作验证示例** ```bash # 正确命令结构 impdp userbook/user123@ORCL DIRECTORY=dbbak DUMPFILE=book.dmp LOGFILE=imp_2024.log TABLE_EXISTS_ACTION=REPLACE ``` --- #### 4. **高级排查** - **检查监听配置**(若同出现TNS错误): 修改`listener.ora`添加SID描述(参考引用[1]): ```ini (SID_DESC = (GLOBAL_DBNAME = ORCL) (ORACLE_HOME = D:\app\oracle\product\11.2.0\dbhome_1) (SID_NAME = ORCL) ) ``` - **转储文件完整性检查**: ```bash impdp system/password DIRECTORY=dbbak DUMPFILE=test.dmp SQLFILE=test.sql ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值