自動備份失效,手動執行指令碼報錯 ORA-31634 ORA-31664
1、問題發現:
每天定時資料泵匯出作業未正常匯入,檢視import.log,居然為空。
2、問題追蹤:
手工呼叫back.sh指令碼匯出,執行幾秒後報錯:
ORA-31634: job already exists
ORA-31664: unable to construct unique job name when defaulted
3、查詢解決
1)分析錯誤及如何解決:
ORA-31634: job already exists
Cause: Job creation or restart failed because a job having the selected name is currently executing. This also generally indicates that a Master Table with that job name exists in the user schema. Refer to any following error messages for clarification.
Action: Select a different job name, or stop the currently executing job and re-try the operation (may require a DROP on the Master Table).
ORA-31664: unable to construct unique job name when defaulted
Cause: The job name was defaulted, and the name creation algorithm was unable to find a unique job name for this schema where the table name (for the master table) didn"t already exist.
Action: Specify a job name to use or delete some of the existing tables causing the name conflicts.
經分析是expdp執行時呼叫job的唯一名不存在,查詢dba_datapump_jobs,正常情況下job_name欄位只有SYS_IMPORT_SCHEMA_01和SYS_IMPORT_SCHEMA_02兩行,而此表有135行,解決方法刪除表中欄位state是NOT RUNNING狀態的表。
2)解決
生成清除master table的SQL語句為:
select 'drop table ' || owner_name || '.' || job_name || ';' from dba_datapump_jobs where state = 'NOT RUNNING'
手工執行生成的SQL語句後,再次查詢dba_datapump_jobs確認是否有state是NOT RUNNING的master table,重複生成SQL語句執行即可。
再次手工呼叫匯入指令碼,正常匯入。
每天定時資料泵匯出作業未正常匯入,檢視import.log,居然為空。
2、問題追蹤:
手工呼叫back.sh指令碼匯出,執行幾秒後報錯:
ORA-31634: job already exists
ORA-31664: unable to construct unique job name when defaulted
3、查詢解決
1)分析錯誤及如何解決:
ORA-31634: job already exists
Cause: Job creation or restart failed because a job having the selected name is currently executing. This also generally indicates that a Master Table with that job name exists in the user schema. Refer to any following error messages for clarification.
Action: Select a different job name, or stop the currently executing job and re-try the operation (may require a DROP on the Master Table).
ORA-31664: unable to construct unique job name when defaulted
Cause: The job name was defaulted, and the name creation algorithm was unable to find a unique job name for this schema where the table name (for the master table) didn"t already exist.
Action: Specify a job name to use or delete some of the existing tables causing the name conflicts.
經分析是expdp執行時呼叫job的唯一名不存在,查詢dba_datapump_jobs,正常情況下job_name欄位只有SYS_IMPORT_SCHEMA_01和SYS_IMPORT_SCHEMA_02兩行,而此表有135行,解決方法刪除表中欄位state是NOT RUNNING狀態的表。
2)解決
生成清除master table的SQL語句為:
select 'drop table ' || owner_name || '.' || job_name || ';' from dba_datapump_jobs where state = 'NOT RUNNING'
手工執行生成的SQL語句後,再次查詢dba_datapump_jobs確認是否有state是NOT RUNNING的master table,重複生成SQL語句執行即可。
再次手工呼叫匯入指令碼,正常匯入。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9399028/viewspace-1401753/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 自動備份指令碼指令碼
- linux下rman增量備份指令碼以及指令碼自動執行Linux指令碼
- 設定週期性自動執行備份指令碼指令碼
- MySQL自動備份指令碼MySql指令碼
- oracle自動冷備份指令碼Oracle指令碼
- ORACLE自動備份shell指令碼Oracle指令碼
- rman 自動備份指令碼-windows指令碼Windows
- windows下rman自動備份指令碼Windows指令碼
- svn dump 全自動備份指令碼指令碼
- oracle 自動冷備份指令碼(轉)Oracle指令碼
- MySQL自動備份指令碼30天自動刪除MySql指令碼
- shell 備份檔案指令碼+自動清理指令碼
- Oracle自動備份指令碼的實現Oracle指令碼
- windows部分聯機自動備份指令碼!Windows指令碼
- suse下oracle的自動備份指令碼Oracle指令碼
- TSM+RMAN 自動備份指令碼 on aix指令碼AI
- Windows環境PgSql自動備份指令碼WindowsSQL指令碼
- UNIX crontab自動執行指令碼指令碼
- 用友U8設定了自動備份,備份失效
- 【BASIS】HANA備份指令碼,Catalog自動清理指令碼
- 設定自動匯出(exp)備份指令碼指令碼
- 啟動vi時自動執行的指令碼指令碼
- Linux管理指令碼之自動執行指令碼Linux指令碼
- 自動重建失效index的shell指令碼Index指令碼
- Oracle用指令碼執行備份Oracle指令碼
- sqlplus執行指令碼時遇到錯誤自動停止SQL指令碼
- Oracle Windows平臺自動排程備份指令碼OracleWindows指令碼
- rman映像copy自動備份的一個指令碼指令碼
- sh指令碼執行報錯指令碼
- 開機自動執行python指令碼Python指令碼
- oracle自動備份,儲存每天備份日誌的指令碼編寫Oracle指令碼
- windows下自動備份指令碼(exp)Windows指令碼
- 如何在Docker容器啟動時自動執行指令碼Docker指令碼
- Oracle 11g EXPDP、RMAN自動備份SHELL指令碼Oracle指令碼
- 一個簡單的自動備份alert log指令碼指令碼
- MySQL自動備份指令碼及異地定時FTPMySql指令碼FTP
- Linux ftp 自動上傳備份檔案指令碼LinuxFTP指令碼
- 使用php作linux自動執行指令碼PHPLinux指令碼