备份不正常处理

oracle手动执行导出报ora-31634、ora-31664
在服务器上通过计划任务部署了oracle的备份任务,最近发现有个表空间没有备份成功,手动执行后,发现报一下错误,百度搜索结果如下

ORA-31634: job already exists(JOB已经存在)

ORA-31664: unable to construct unique job name when defaulted(采用默认方式,不能创建唯一JOB名)

解决方法:

第一步:查询生成清理DBA_DATAPUMP_JOBS的SQL语句

1 select 'drop table ' || owner_name || '.' || job_name || ';'
2 from dba_datapump_jobs
3 where state = 'NOT RUNNING'

复制生成的处理SQL语句,进行对表DBA_DATAPUMP_JOBS进行清理,例句如下:

...............
drop table neands3.SYS_EXPORT_SCHEMA_06;
drop table neands3.SYS_EXPORT_SCHEMA_40;
...............

第二步:清理后再次查询确认DBA_DATAPUMP_JOBS是否清理完毕

1 SELECT owner_name, job_name, operation, job_mode,
2 state, attached_sessions
3 FROM dba_datapump_jobs
4 ORDER BY 1,2;

第一步执行完已经可以备份了,所以没有执行第三步。

第三步:如果清理失败,则执行如下语句进行处理

EXEC DBMS_DATAPUMP.STOP_JOB(DBMS_DATAPUMP_ATTACH(‘SYS_EXPORT_SCHEMA_02’,’OAK’));

实际用到的

select from dba_data_files where tablespace_name = 'USERS';
--2.查看表空间使用率:
select a.tablespace_name,a.bytes/1024/1024 "Sum MB",(a.bytes-b.bytes)/1024/1024 "used MB",b.bytes/1024/1024 "free MB",round(((a.bytes-b.bytes)/a.bytes)
100,2) "percent_used"
from
(select tablespace_name,sum(bytes) bytes from dba_data_files group by tablespace_name) a,
(select tablespace_name,sum(bytes) bytes,max(bytes) largest from dba_free_space group by tablespace_name) b
where a.tablespace_name=b.tablespace_name
order by ((a.bytes-b.bytes)/a.bytes) desc;

select * from dba_directories;

select 'drop table ' || owner_name || '.' || job_name || ';'
from dba_datapump_jobs
where state = 'NOT RUNNING'

生成了 类似 drop table WMS_ZD.SYS_EXPORT_SCHEMA_84;百张表执行

查看了一下jobs里的调度程序
查看了PROC_DAY_TASK过程

猜你喜欢

转载自blog.51cto.com/bks2015/2542699