升級可能導致資料庫不可用(二)
升級過程也是一個危險的過程,操作不當可能造成資料庫無法開啟,因此在升級之前應該做好備份。
嘗試解決問題。
升級可能導致資料庫不可用(一):http://yangtingkun.itpub.net/post/468/504017
在上一篇的文章中,由於升級過程中犯了個小錯誤,倒是資料庫無法開啟,且升級過程無法正常繼續。
其實這個錯誤都不是很嚴重,本來是有辦法解決的。但是由於當前的資料庫環境必須設定COMPATIBLE,而且11.2升級過程中,也比較確保COMPATIBLE大於10.1,這就導致COMPATIBLE引數不能保持原始值不變,從而導致了嚴重的後果。
如果升級之前備份了資料庫,那麼只需要關閉資料庫,並利用備份恢復,然後改成錯誤,重新執行升級過程即可。
在沒有備份的情況下,只能採用一些極端的手段進行恢復了。
由於執行catupgrd.sql指令碼報錯,下面之後修改指令碼中檢查錯誤的地方,將catupstr.sql指令碼的下列語句註釋掉:
DOC
#######################################################################
#######################################################################
The following statement will cause:
- "ORA-00942: table or view does not exist" ; or
- "ORA-00904: "TZ_VERSION": invalid identifier"" ; or
- "ORA-01722: invalid number"
if the pre-upgrade utility (utlu112i.sql) has not been run to:
a) create and update registry$database table to include the current
database timezone file version used in the old release; or
b) do inserts into sys.props$.
o Action:
Shutdown ABORT and revert to the original ORACLE_HOME. Then run
utlu112i.sql to populate registry$database with the database timezone
file version used by the lower version database and to populate
sys.props$ with Day Light Saving Time (DST) properties information.
OR
- An "ORA-01722: invalid number"
if the old release uses a timezone file version newer than 8 (shipped with
11.2) but the new release has not been patched yet.
o Action:
Shutdown ABORT and patch new ORACLE_HOME to the same timezone file
version as used in the old ORACLE_HOME.
#######################################################################
#######################################################################
#
SELECT TO_NUMBER('MUST_BE_SAME_TIMEZONE_FILE_VERSION')
FROM sys.props$
WHERE
(
(name = 'DST_PRIMARY_TT_VERSION' AND
TO_NUMBER(value$) != (SELECT tz_version from registry$database))
AND
((SELECT version from v$timezone_file) !=
(SELECT tz_version from registry$database))
)
OR
(
(name = 'DST_PRIMARY_TT_VERSION' AND TO_NUMBER(value$) > 8)
AND
(0 = (select count(*) from v$timezone_file))
);
由於沒有執行utlu112i.sql,導致registry$database表不存在,因此這裡執行報錯,為了整個語句可以順利執行,先把這個SQL註釋掉。
再次呼叫catupgrd.sql,升級過程開始。
但是由於缺少表的支援,升級過程必然會出現錯誤,導致升級到一半,出現了大量的ORA-3113錯誤:
ORA-00603: ORACLE server session terminated by fatal error
ERROR:
ORA-03114: 脦麓脕盧陸脫碌陸 ORACLE
ERROR:
ORA-03114: 脦麓脕盧陸脫碌陸 ORACLE
ERROR:
ORA-03114: 脦麓脕盧陸脫碌陸 ORACLE
ERROR:
ORA-03114: 脦麓脕盧陸脫碌陸 ORACLE
ERROR:
ORA-03114: 脦麓脕盧陸脫碌陸 ORACLE
ERROR:
ORA-03114: 脦麓脕盧陸脫碌陸 ORACLE
ERROR:
ORA-03114: 脦麓脕盧陸脫碌陸 ORACLE
ERROR:
ORA-03114: 脦麓脕盧陸脫碌陸 ORACLE
ERROR:
ORA-03114: 脦麓脕盧陸脫碌陸 ORACLE
ERROR:
ORA-03114: 脦麓脕盧陸脫碌陸 ORACLE
.
.
.
升級失敗。不過這時在意料之中的,將catupstr.sql中註釋的部分去掉,關閉資料庫,重啟以upgrade方式啟動,再次執行catupgrd.sql指令碼,重新升級過程。
執行最終仍然出現了上面的錯誤資訊。重複多次升級步驟,問題依舊。
但是雖然升級過程失敗,但是資料庫可以短暫的開啟:
[oracle@bjtest ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期四 4月 29 23:07:20 2010
Copyright (c) 1982, 2009, Oracle. All rights reserved.
已連線到空閒例程。
SQL> startup pfile=inittest9.ora
ORA-32006: BACKGROUND_DUMP_DEST initialization parameter has been deprecated
ORA-32006: USER_DUMP_DEST initialization parameter has been deprecated
ORACLE 例程已經啟動。
Total System Global Area 618012672 bytes
Fixed Size 2215784 bytes
Variable Size 343933080 bytes
Database Buffers 268435456 bytes
Redo Buffers 3428352 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL> select instance_name, status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
test9 OPEN
SQL> select name, open_mode from v$database;
NAME OPEN_MODE
--------- --------------------
TEST9 READ WRITE
SQL> exit
從 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options 斷開
[oracle@bjtest ~]$ exp system/test file=full.dp full=y buffer=20480000 log=full.log
Export: Release 11.2.0.1.0 - Production on 星期四 4月 29 23:09:31 2010
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
連線到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
已匯出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
即將匯出整個資料庫...
. 正在匯出表空間定義
. 正在匯出概要檔案
. 正在匯出使用者定義
. 正在匯出角色
EXP-00008: 遇到 ORACLE 錯誤 4045
ORA-04045: 在重新編譯/重新驗證 SYS.DBMS_DATAPUMP 時出錯
ORA-00600: 內部錯誤程式碼, 引數: [ktfbbsearch-8], [128], [15], [], [], [], [], [], [], [], [], []
ORA-06508: PL/SQL: 無法找到正在呼叫 : "SYS.DBMS_DATAPUMP" 的程式單元
ORA-06512: 在 "SYS.DBMS_LOGREP_EXP", line 3242
ORA-06512: 在 "SYS.DBMS_FILE_GROUP_EXP", line 813
ORA-06512: 在 line 1
EXP-00083: 呼叫 SYS.DBMS_FILE_GROUP_EXP.grant_sysprivs_exp 時出現前一問題
. 正在匯出資源成本
. 正在匯出回退段定義
. 正在匯出資料庫連結
. 正在匯出序號
. 正在匯出目錄別名
. 正在匯出上下文名稱空間
. 正在匯出外部函式庫名
. 匯出 PUBLIC 型別同義詞
. 正在匯出專用型別同義詞
. 正在匯出物件型別定義
. 正在匯出系統過程物件和操作
EXP-00008: 遇到 ORACLE 錯誤 4063
ORA-04063: package body "SYS.DBMS_DATAPUMP" 有錯誤
ORA-06508: PL/SQL: 無法找到正在呼叫 : "SYS.DBMS_DATAPUMP" 的程式單元
ORA-06512: 在 "SYS.DBMS_REPCAT_EXP", line 113
ORA-06512: 在 line 1
EXP-00083: 呼叫 SYS.DBMS_REPCAT_EXP.system_info_exp 時出現前一問題
. 正在匯出 pre-schema 過程物件和操作
EXP-00008: 遇到 ORACLE 錯誤 4063
ORA-04063: package body "SYS.DBMS_AW_EXP" 有錯誤
ORA-06508: PL/SQL: 無法找到正在呼叫 : "SYS.DBMS_AW_EXP" 的程式單元
ORA-06512: 在 line 1
EXP-00083: 呼叫 SYS.DBMS_AW_EXP.schema_info_exp 時出現前一問題
EXP-00008: 遇到 ORACLE 錯誤 4063
ORA-04063: package body "SYS.DBMS_DATAPUMP" 有錯誤
ORA-06508: PL/SQL: 無法找到正在呼叫 : "SYS.DBMS_DATAPUMP" 的程式單元
ORA-06512: 在 "SYS.DBMS_RULE_EXP_UTL", line 50
ORA-06512: 在 "SYS.DBMS_RULE_EXP_RULES", line 147
ORA-06512: 在 line 1
EXP-00083: 呼叫 SYS.DBMS_RULE_EXP_RULES.schema_info_exp 時出現前一問題
. 正在匯出簇定義
. 即將匯出 SYSTEM 的表透過常規路徑...
. . 正在匯出表 DEF$_AQCALL匯出了 0 行
. . 正在匯出表 DEF$_AQERROR匯出了 0 行
. . 正在匯出表 DEF$_CALLDEST匯出了 0 行
. . 正在匯出表 DEF$_DEFAULTDEST匯出了 0 行
. . 正在匯出表 DEF$_DESTINATION匯出了 0 行
.
.
.
. . 正在匯出表 REPCAT$_USER_PARM_VALUES匯出了 0 行
. . 正在匯出表 SQLPLUS_PRODUCT_PROFILE匯出了 1 行
. 即將匯出 OUTLN 的表透過常規路徑...
. . 正在匯出表 OL$匯出了 0 行
. . 正在匯出表 OL$HINTS匯出了 0 行
. . 正在匯出表 OL$NODES匯出了 0 行
. 即將匯出 U1 的表透過常規路徑...
. . 正在匯出表 PLAN_TABLE匯出了 0 行
. . 正在匯出表 T匯出了 0 行
. 正在匯出同義詞
. 正在匯出檢視
. 正在匯出引用完整性約束條件
. 正在匯出儲存過程
. 正在匯出運算子
. 正在匯出索引型別
. 正在匯出點陣圖, 功能性索引和可擴充套件索引
. 正在匯出後期表活動
. 正在匯出觸發器
. 正在匯出實體化檢視
. 正在匯出快照日誌
. 正在匯出作業佇列
. 正在匯出重新整理組和子組
. 正在匯出維
. 正在匯出 post-schema 過程物件和操作
EXP-00008: 遇到 ORACLE 錯誤 4063
ORA-04063: package body "SYS.DBMS_AW_EXP" 有錯誤
ORA-06508: PL/SQL: 無法找到正在呼叫 : "SYS.DBMS_AW_EXP" 的程式單元
ORA-06512: 在 line 1
EXP-00083: 呼叫 SYS.DBMS_AW_EXP.schema_info_exp 時出現前一問題
EXP-00008: 遇到 ORACLE 錯誤 4063
ORA-04063: package body "SYS.DBMS_DATAPUMP" 有錯誤
ORA-06508: PL/SQL: 無法找到正在呼叫 : "SYS.DBMS_DATAPUMP" 的程式單元
ORA-06512: 在 "SYS.DBMS_RULE_EXP_UTL", line 50
ORA-06512: 在 "SYS.DBMS_RULE_EXP_RULES", line 147
ORA-06512: 在 line 1
EXP-00083: 呼叫 SYS.DBMS_RULE_EXP_RULES.schema_info_exp 時出現前一問題
. 正在匯出使用者歷史記錄表
. 正在匯出預設值和系統審計選項
. 正在匯出統計資訊
匯出成功終止, 但出現警告。
開啟資料庫後,馬上利用EXP可以將資料庫進行邏輯匯出,可以看到,雖然資料庫中部分元件仍然存在錯誤,但是使用者資料部分已經匯出了。這樣就有機會重建資料庫了。
資料庫雖然可以開啟,但是狀態並不正常,執行一段時間,資料庫自動報錯關閉:
[oracle@bjtest ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期五 4月 30 01:00:19 2010
Copyright (c) 1982, 2009, Oracle. All rights reserved.
連線到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> show parameter db_block_size
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_block_size integer 10240
SQL> show parameter compat
ORA-03135: 連線失去聯絡
程式 ID: 25948
會話 ID: 48 序列號: 65
SQL> EXIT
從 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options 斷開
雖然資料庫可以匯出,但是很可能會導致資料出現不一致或其他的問題,為了避免這種情況的出現,應該在升級之前備份好資料庫。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-671515/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 升級可能導致資料庫不可用(一)資料庫
- 資料庫升級導致ORA-918錯誤資料庫
- Oracle資料庫導致效能問題的可能原因Oracle資料庫
- rac 升級crs 升級資料庫軟體,升級資料庫資料庫
- 使用資料庫處理併發可能導致的問題資料庫
- 資料庫升級資料庫
- ♀♀資料庫升級♀♀資料庫
- Oracle 資料庫升級Oracle資料庫
- iOS CoreData (二) 版本升級和資料庫遷移iOS資料庫
- 資料庫升級之-Dataguard滾動升級資料庫
- 資料庫升級之-資料泵資料庫
- JPA 二級快取 網路多播協議導致的資料庫效能問題快取協議資料庫
- 資料庫恢復狀態可能導致JOB無法自動執行資料庫
- 資料庫升級和工具資料庫
- 資料庫升級之-XTTS資料庫TTS
- 資料庫升級報錯資料庫
- 探索Oracle之資料庫升級二 11.2.0.3升級到11.2.0.4完整步驟Oracle資料庫
- 靜默方式安裝、升級oracle(二): 建立資料庫Oracle資料庫
- oracle資料庫升級11.2.0.3升級到11.2.0.4Oracle資料庫
- 靜默方式安裝、升級oracle(三): 升級資料庫軟體及資料庫Oracle資料庫
- android資料庫如何進行版本升級?架構之資料庫框架升級Android資料庫架構框架
- Oracle資料庫升級(轉發)Oracle資料庫
- Oracle 資料庫 升級為 RACOracle資料庫
- 微軟升級病毒庫導致Win7/8.1端Defender出現bug微軟Win7
- 【伺服器資料恢復】MDisk重建導致vdisk丟失,上層Oracle資料庫不可用的資料恢復案例伺服器資料恢復Oracle資料庫
- chorme自動升級導致跨域問題ORM跨域
- Oracle資料庫升級與補丁Oracle資料庫
- 資料庫升級後‘PLAN_TABLE資料庫
- Oracle 資料庫升級注意事項Oracle資料庫
- 資料庫的升級及遷移資料庫
- RAC資料庫升級到10.2.0.5資料庫
- 谷歌升級雲端資料庫Cloud SQL谷歌資料庫CloudSQL
- 資料庫升級-物理重新整理資料字典資料庫
- iOS 資料庫升級資料遷移解決方案iOS資料庫
- xcode升級導致cocoapods很多奇葩問題XCode
- Android版本升級同時Sqlite資料庫的升級及之前資料的保留AndroidSQLite資料庫
- 利用STANDBY將單例項資料庫升級為RAC環境(二)單例資料庫
- inode節點耗盡導致資料庫OOM資料庫OOM