ORA-01691: unable to extend lob segment 问题解决

问题: ORA-01691: unable to extend lob segment SJJH.SYS_LOB0000081598C00004$$ by 8192 in tablespace SJJH
描述:现场突然反馈回来说系统运行好好的出故障了,没有日志,也不报错,就是进不了系统。搜集最近

          的一次日志发现,有ora-01691的错误问题。

          查看错误信息发现原因是表空间无法分配新的空间给表。所以报错。

 

解决办法:

         1  网传的方法:

数据库的DataFile的文件已经到了最大值,这种最大值分为两种:

(1)DataFile文件设定了大小,且设置不能自动增长,

(2)DataFile设定了大小,且设置为自动增长,已经到了32G的文件最大值上限。

 

针对第一种情况,修改数据文件的扩展属性:

[sql]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. alter database datafile '数据文件路径' autoextend on next 100m maxsize 4000M;  

 

针对第二种情况,给表空间增加新的数据文件:

[sql]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. ALTER TABLESPACE XXX ADD DATAFILE '数据文件路径' SIZE 100M AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED;  


实例

[sql]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. alter tablespace IFAMEX_BLOB online  
  2.   
  3. alter tablespace IFAMEX_BLOB rename datafile 'C:/DATA/HJCBFW01/BLOB01.DBF' to 'D:/DATA/HJCBFW01/BLOB01.DBF'  
  4.   
  5. alter tablespace IFAMEX_BLOB add datafile 'C:/DATA/HJCBFW01/BLOB02.DBF' size 200m autoextend on next 10m maxsize 2000m  

 

辅助:

如果数据文件路径不知道,可以使用以下语句查询:

[sql]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. SELECT a.tablespace_name "tbs name", b.NAME "file path"   
  2. FROM dba_tablespaces a, v$datafile b, v$tablespace c   
  3.   WHERE a.tablespace_name = c.NAME   
  4.   AND c.ts# = b.ts#;   

   

2. 自己的方法:

     分区满了,缩减分区。

<think>好的,我现在需要帮助用户解决在使用impdp导入数据库时遇到的ORA-39171错误。首先,我得回忆一下这个错误的具体情况。ORA-39171通常与可恢复的等待有关,可能是在导入过程中遇到了某些资源问题,比如表空间不足、文件无法扩展或者权限问题,导致任务进入挂起状态,等待问题解决后继续。 用户的问题是如何恢复或者跳过这个等待继续导入。我需要分步骤思考解决方案。首先,应该检查具体的等待原因,因为不同的原因有不同的处理方式。用户可能需要查询DBA_RESUMABLE视图来获取错误信息,比如哪个对象出问题,具体是什么原因导致的等待。 然后,根据不同的原因提供对应的解决办法。比如,如果是表空间不足,就需要增加数据文件或者扩展现有文件;如果是权限问题,就需要授予相应的权限。另外,可能需要用户干预,比如按Enter键继续,或者设置RESUMABLE_TIMEOUT参数来调整等待时间。 另外,用户可能想知道如何跳过当前错误继续导入。这时候需要提到使用EXCLUDE参数排除有问题的对象,但需要注意数据完整性问题。同时,如果任务已经挂起,可能需要使用ATTACH命令连接到作业,然后处理问题后继续执行。 还需要提醒用户处理完成后如何继续任务,比如使用CONTINUE_CLIENT命令,或者重新启动impdp时附加作业。此外,预防措施也很重要,比如导入前检查存储空间和权限,设置合适的超时参数,以及监控导入过程中的警告信息。 要确保回答结构清晰,分步骤说明,帮助用户一步步排查和解决问题。同时要注意使用中文,避免技术术语的混淆,必要时解释术语。最后,确认所有建议符合Oracle的最佳实践,避免误导用户。</think>当使用`impdp`进行数据库导入时,遇到**ORA-39171: Job is experiencing a resumable wait**错误,表示导入作业因资源问题(如空间不足、权限不足等)进入可恢复等待状态。以下是逐步解决和恢复的方法: --- ### **1. 确定具体等待原因** 首先需要查询错误详情,定位根本原因: ```sql -- 连接到数据库后执行: SELECT error_msg, status, suspend_time FROM dba_resumable WHERE session_id = (SELECT sid FROM v$session WHERE username = 'SYSTEM'); -- 替换为实际用户 ``` 输出示例: ``` ERROR_MSG: ORA-01691: unable to extend lob segment SYSTEM.SYS_LOB000... by 8192 in tablespace USERS STATUS: SUSPENDED SUSPEND_TIME: 2023-10-01 10:00:00 ``` 常见原因包括: - **表空间不足**(ORA-01691- **数据文件无法扩展**(如磁盘空间不足) - **权限不足**(如对目标表的INSERT权限缺失) --- ### **2. 根据原因解决问题** #### **情况1:表空间或磁盘空间不足** - **扩展表空间**: ```sql ALTER TABLESPACE users ADD DATAFILE '/path/to/new_datafile.dbf' SIZE 1G AUTOEXTEND ON; ``` - **清理磁盘空间**:删除无用文件或扩展磁盘容量。 #### **情况2:权限不足** 授予缺失的权限: ```sql GRANT INSERT ON schema_name.table_name TO impdp_user; ``` #### **情况3:文件路径错误** 检查导出文件的路径权限: ```sql ALTER SYSTEM SET utl_file_dir='/new_path' SCOPE=SPFILE; ``` --- ### **3. 恢复导入作业** 解决问题后,恢复作业的两种方式: #### **方式1:交互式恢复** 在`impdp`命令行中直接按**Enter键**,系统会自动尝试恢复。 #### **方式2:手动恢复** 若作业已断开,重新附加到作业: ```bash impdp system/password ATTACH=job_name ``` 然后执行: ```sql -- 在impdp交互界面输入: CONTINUE_CLIENT ``` --- ### **4. 跳过错误(谨慎使用)** 若需强制跳过当前错误(可能导致数据丢失): ```bash impdp system/password SKIP=YES ``` 或通过参数文件指定排除对象: ```bash impdp system/password EXCLUDE=TABLE:"IN ('PROBLEM_TABLE')" ``` --- ### **5. 预防措施** - **预检存储空间**:导入前检查表空间和磁盘空间。 - **设置超时参数**:通过`RESUMABLE_TIMEOUT`控制等待时间: ```bash impdp system/password RESUMABLE_TIMEOUT=3600 -- 单位:秒 ``` - **监控日志**:使用`STATUS`参数定期查看进度: ```bash impdp system/password STATUS=30 -- 每30秒输出一次状态 ``` --- ### **总结步骤** 1. **查询`dba_resumable`定位错误** → 2. **解决资源问题** → 3. **恢复作业** 如果问题无法解决,再考虑跳过错误或调整参数。建议优先修复资源问题以保证数据完整性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值