ORA-39171: 作业出现可恢复的等待

ORA-39171: 作业出现可恢复的等待

 

在测试系统恢复数据时报错如下:

ORA-39171: 作业出现可恢复的等待。
ORA-01658: 无法为表空间 NNC_DATA01 中的段创建 INITIAL 区
处理对象类型 SCHEMA_EXPORT/TABLE/TABLE_DATA
ORA-39171: 作业出现可恢复的等待。
ORA-01653: 表 NC0731.SM_BUSILOG_DEFAULT 无法通过 32 (在表空间 NNC_DATA01 中) 扩展
ORA-39171: 作业出现可恢复的等待。

初步判断是因为名为NNC_DATA01的表空间不足导致,查看对应的数据文件,发现马上要到32G了,所以报错。
Oracle单个数据文件超过32G后需要扩容

 

解决思路

  • 查看表空间使用情况等信息
SQL> select file_name,tablespace_name,round(bytes/(1024*1024)) from dba_data_files;

一般来说,单个数据文件最大为32G,我的结果显示其中一个表空间的数据文件已经达到32G了,所以新建用户默认使用的是这个表空间,空间不足就会造成数据无法导入,需要更换表空间或者增加数据文件。

  • 查看用户与表空间的关系
SQL> SELECT USERNAME,ACCOUNT_STATUS,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE,CREATED FROM DBA_USERS WHERE ACCOUNT_STATUS = 'OPEN';

注:查询用户名,状态,默认表空间,默认临时表空间,创建日期
找到上面32G的数据文件对应的表空间,然后看这个表空间上有哪些用户。就像这个测试系统,开发需要多个用户,所以导致表空间不够用。

  • 查找哪个用户占用表空间最大
select *
from (select owner || '.' || tablespace_name name, sum(b) g
from (select owner,
t.segment_name,
t.partition_name,
round(bytes / 1024 / 1024 / 1024, 2) b,
tablespace_name
from dba_segments t)
where owner not in
('SYS', 'OUTLN', 'SYSTEM', 'TSMSYS', 'DBSNMP', 'WMSYS')
group by owner || '.' || tablespace_name)
order by name

 

解决方案

 

一、新增数据文件

SQL> select file_name,tablespace_name,round(bytes/(1024*1024)) from dba_data_files;  
--找到爆满的表空间以及对应的数据文件的位置。
SQL> alter tablespace NNC_DATA01 add datafile 'D:\oradata\ncdb\NNC_DATA02.DBF' size 200M  autoextend on next 50M maxsize unlimited;   
/*
新增一个数据文件到表空间,数据文件可以放到同一个系统目录下,方便管理。
数据文件初始大小为200M,自动扩展,最大不限制,也就是最大是32G
*/

 

二、将备份数据恢复到新的表空间

SQL> create tablespace test_data  logging  datafile 'e:\oradata\test_data.dbf' size 1024m  autoextend on  next 200m maxsize 30000M  extent management local;
-- 创建新的表空间
SQL> create temporary tablespace test_temp tempfile 'e:\oradata\test_temp.dbf' size 1024m  autoextend on  next 200m maxsize 30000m  extent management local;
--创建新的临时表空间
SQL> create user test123 identified by test123  default tablespace test_data  temporary tablespace test_temp;
--创建用户,并指定表空间与临时表空间。如果要导入数据,不要忘了授权哦。
SQL>SELECT USERNAME,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE FROM DBA_USERS WHERE USERNAME= 'TEST123';
--查看用户表空间与临时表空间

 

三、删除爆满表空间上之前的用户

SQL> select file_name,tablespace_name,round(bytes/(1024*1024)) from dba_data_files;  
--找到爆满的表空间以及对应的数据文件的位置。
select *
from (select owner || '.' || tablespace_name name, sum(b) g
from (select owner,
t.segment_name,
t.partition_name,
round(bytes / 1024 / 1024 / 1024, 2) b,
tablespace_name
from dba_segments t)
where owner not in
('SYS', 'OUTLN', 'SYSTEM', 'TSMSYS', 'DBSNMP', 'WMSYS')
group by owner || '.' || tablespace_name)
order by name
--查看哪个用户占用的表空间最大
SQL>  drop user test123 cascade;
--删除用户及用户下的数据

小礼物走一走,来简书关注我



作者:桩i
链接:https://www.jianshu.com/p/f8120d1b857a
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值