ORA-06502報錯導致資料庫所有檢視無法修改。
ORA-06502報錯導致資料庫所有檢視無法修改。
今天有客戶反映資料庫所有檢視和包重新編譯都會報這個錯
1.日誌資訊
Mon Mar 3 09:54:48 2014
Errors in file /oracle/oracle/admin/xxx/bdump/xxx_j000_21390.trc:
ORA-12012: 自動執行作業 1541 出錯
ORA-04045: 在重新編譯/重新驗證 user.table_UPDATE_ST 時出錯
ORA-01422: 實際返回的行數超出請求的行數
ORA-06512: 在line 14
Mon Mar 3 09:58:49 2014
Errors in file /oracle/oracle/admin/xxx/bdump/xxx_j001_21208.trc:
ORA-12012: 自動執行作業 1541 出錯
ORA-04045: 在重新編譯/重新驗證 user.table_UPDATE_ST 時出錯
ORA-01422: 實際返回的行數超出請求的行數
ORA-06512: 在line 14
Mon Mar 3 10:06:52 2014
Errors in file /oracle/oracle/admin/xxx/bdump/xxx_j000_21390.trc:
ORA-12012: 自動執行作業 1541 出錯
ORA-04045: 在重新編譯/重新驗證 user.table_UPDATE_ST 時出錯
ORA-01422: 實際返回的行數超出請求的行數
ORA-06512: 在line 14
2.
sqlplus 執行修改檢視內容:
報:
ORA-00604
ORA-06502
ORA-06512
3.檢視引數設定
執行 select dummy from dual; 沒問題
執行
SELECT KSPFTCTXPN PARAMETER_NUMBER,
KSPPINM PARAMETER_NAME,
KSPPITY PARAMETER_TYPE,
KSPFTCTXVL PARAMETER_VALUE,
KSPFTCTXDF IS_DEFAULT,
KSPPIFLG MODIFICATION_FLAG,
KSPFTCTXVF VALUE_FLAG
FROM X$KSPPI X, X$KSPPCV2 Y
WHERE (X.INDX + 1) = KSPFTCTXPN
AND KSPPINM LIKE '_system_trig_enabled';
結果為true\
4.編譯檢視沒問題
Connected.
SQL> alter procedure table_update_st compile;
Procedure altered.
SQL> show errors;
No errors.
5.
執行檢視內容修改的語句報錯ORA-00604 ,ORA-06502,ORA-06512
SQL> exec table_to_custom_v;
BEGIN table_to_custom_v; END;
*
ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00221: 'table_TO_CUSTOM_V' is not a procedure or is undefined
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
5.解決
alter system set "_system_trig_enabled"=false;
6.
官方文件上的解釋:
ORA-06502: PL/SQL: numeric or value errorstring
Cause: An arithmetic, numeric, string, conversion, or constraint error occurred. For example, this error occurs if an attempt is made to assign the value NULL to a variable declared NOT NULL, or if an attempt is made to assign an integer larger than 99 to a variable declared NUMBER(2).
Action: Change the data, how it is manipulated, or how it is declared so that values do not violate constraints.
官方解釋是: 想存入資料庫的資料(包含資料,字串等等)不符合該欄位的定義(比如長度,約束等), 舉個例子,就是說你想存一個空值到非空欄位,如存入3位以上的數字到NUMBER(2)欄位中,等等
官方解決方法是: 改變資料的型別,或長度,等等。
7.
oracle隱含引數“_system_trig_enabled”用來控制系統觸發器的,用來儲存系統的一些觸發事件,但這個表(目前不知道是哪個表)本身有問題,導致資料無法插入。
解決思路: 把這個引數關掉,讓系統的日誌不儲存在那張有問題的表中,就好了(當然有隱含風險,目前未知):
8.
一.如果是使用者資料,則更改使用者表,或者資料
二.如果是oracle系統表,則使用如下語句關係統系統觸發器:
alter system set "_system_trig_enabled"=false;
今天有客戶反映資料庫所有檢視和包重新編譯都會報這個錯
1.日誌資訊
Mon Mar 3 09:54:48 2014
Errors in file /oracle/oracle/admin/xxx/bdump/xxx_j000_21390.trc:
ORA-12012: 自動執行作業 1541 出錯
ORA-04045: 在重新編譯/重新驗證 user.table_UPDATE_ST 時出錯
ORA-01422: 實際返回的行數超出請求的行數
ORA-06512: 在line 14
Mon Mar 3 09:58:49 2014
Errors in file /oracle/oracle/admin/xxx/bdump/xxx_j001_21208.trc:
ORA-12012: 自動執行作業 1541 出錯
ORA-04045: 在重新編譯/重新驗證 user.table_UPDATE_ST 時出錯
ORA-01422: 實際返回的行數超出請求的行數
ORA-06512: 在line 14
Mon Mar 3 10:06:52 2014
Errors in file /oracle/oracle/admin/xxx/bdump/xxx_j000_21390.trc:
ORA-12012: 自動執行作業 1541 出錯
ORA-04045: 在重新編譯/重新驗證 user.table_UPDATE_ST 時出錯
ORA-01422: 實際返回的行數超出請求的行數
ORA-06512: 在line 14
2.
sqlplus 執行修改檢視內容:
報:
ORA-00604
ORA-06502
ORA-06512
3.檢視引數設定
執行 select dummy from dual; 沒問題
執行
SELECT KSPFTCTXPN PARAMETER_NUMBER,
KSPPINM PARAMETER_NAME,
KSPPITY PARAMETER_TYPE,
KSPFTCTXVL PARAMETER_VALUE,
KSPFTCTXDF IS_DEFAULT,
KSPPIFLG MODIFICATION_FLAG,
KSPFTCTXVF VALUE_FLAG
FROM X$KSPPI X, X$KSPPCV2 Y
WHERE (X.INDX + 1) = KSPFTCTXPN
AND KSPPINM LIKE '_system_trig_enabled';
結果為true\
4.編譯檢視沒問題
Connected.
SQL> alter procedure table_update_st compile;
Procedure altered.
SQL> show errors;
No errors.
5.
執行檢視內容修改的語句報錯ORA-00604 ,ORA-06502,ORA-06512
SQL> exec table_to_custom_v;
BEGIN table_to_custom_v; END;
*
ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00221: 'table_TO_CUSTOM_V' is not a procedure or is undefined
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
5.解決
alter system set "_system_trig_enabled"=false;
6.
官方文件上的解釋:
ORA-06502: PL/SQL: numeric or value errorstring
Cause: An arithmetic, numeric, string, conversion, or constraint error occurred. For example, this error occurs if an attempt is made to assign the value NULL to a variable declared NOT NULL, or if an attempt is made to assign an integer larger than 99 to a variable declared NUMBER(2).
Action: Change the data, how it is manipulated, or how it is declared so that values do not violate constraints.
官方解釋是: 想存入資料庫的資料(包含資料,字串等等)不符合該欄位的定義(比如長度,約束等), 舉個例子,就是說你想存一個空值到非空欄位,如存入3位以上的數字到NUMBER(2)欄位中,等等
官方解決方法是: 改變資料的型別,或長度,等等。
7.
oracle隱含引數“_system_trig_enabled”用來控制系統觸發器的,用來儲存系統的一些觸發事件,但這個表(目前不知道是哪個表)本身有問題,導致資料無法插入。
解決思路: 把這個引數關掉,讓系統的日誌不儲存在那張有問題的表中,就好了(當然有隱含風險,目前未知):
8.
一.如果是使用者資料,則更改使用者表,或者資料
二.如果是oracle系統表,則使用如下語句關係統系統觸發器:
alter system set "_system_trig_enabled"=false;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29371470/viewspace-1104458/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 誤修改ORACLE_HOME導致無法登陸資料庫Oracle資料庫
- 修改SQLNET.ORA導致資料庫無法啟動SQL資料庫
- 資料庫無法建立資料庫檢視資料庫
- 【故障恢復】因spfile修改錯誤導致資料庫無法啟動的恢復方法資料庫
- SPFILE 錯誤導致資料庫無法啟動(ORA-01565)資料庫
- spfile誤修改導致資料庫無法啟動的另一種恢復方法資料庫
- 建立物化檢視導致資料庫例項崩潰資料庫
- HA異常導致oracle資料庫無法啟動Oracle資料庫
- 又一例SPFILE設定錯誤導致資料庫無法啟動資料庫
- [oracle]undo表空間出錯,導致資料庫例項無法開啟Oracle資料庫
- 程式無任何報錯但是無法寫入資料庫資料庫
- 磁碟IO故障導致的SQLServer資料庫無法寫入SQLServer資料庫
- UNDO表空間損壞導致資料庫無法OPEN資料庫
- 歸檔問題導致的資料庫無法啟動資料庫
- listener的ORACLE_HOME配置出錯導致無法遠端登陸資料庫Oracle資料庫
- MySQL資料庫檢視:檢視定義、建立檢視、修改檢視MySql資料庫
- 【strings】spfile誤修改導致資料庫無法啟動的另一種恢復方法資料庫
- vim 編輯報錯導致無法正常退出和編輯
- 檢查主庫dataguard有無報錯資訊的檢視
- oracle SGA設定過大導致資料庫無法啟動Oracle資料庫
- 歸檔日誌無法歸檔導致資料庫hang住資料庫
- 大量"library cache lock"事件導致資料庫無法連線事件資料庫
- 重置資料庫密碼後導致網站無法訪問資料庫密碼網站
- 多個物化檢視導致物化日誌無法及時更新
- ZT 定位導致物化檢視無法快速重新整理的原因
- ORACLE DSG資料同步軟體程式導致資料庫無法正常關閉Oracle資料庫
- 資料庫表匯出不全導致tomcat無法釋出程式資料庫Tomcat
- OS臨時埠耗盡導致無法建立資料庫連線資料庫
- 【epoll問題】EPOLLRDHUP使用導致無法接受資料
- 資料庫恢復狀態可能導致JOB無法自動執行資料庫
- cacti登陸出現報錯:資料庫無法連線資料庫
- 資料庫資料恢復-oracle資料庫報錯無法開啟的如何恢復資料?資料庫資料恢復Oracle
- 應用使用JNDI,資料庫無法連線,導致的程序無法啟動問題處理資料庫
- linux下錯誤修改了/etc/profile導致虛擬機器無法登入Linux虛擬機
- [Oracle]由於初始化引數檔案修改錯誤導致oracle無法startupOracle
- 11gR2私有ip修改錯誤導致crs無法啟動解決方法
- db_file_name_convert設定出錯導致備庫無法recovery
- 【案例】Oracle報錯ORA-01194 ORA-01110 由於資料庫SCN不一致導致無法啟動Oracle資料庫