重建控制文件的方法 參考原文: How to Recreate a Controlfile (Doc ID 735106.1) 適用于: Oracle Database - Enterprise Edition - Version 9.0.1.0 and later Information in this document applies to any platform. 解決方案: 警告: 只有遇到下列場(chǎng)
重建控制文件的方法
參考原文:
How to Recreate a Controlfile (Doc ID 735106.1)
適用于:
Oracle Database - Enterprise Edition - Version 9.0.1.0 and later
Information in this document applies to any platform.
解決方案:
警告:
只有遇到下列場(chǎng)景時(shí),你才應(yīng)該recreate 你的控制文件
1.所有的當(dāng)前的控制文件copies 已經(jīng)丟失 或者 都已經(jīng)損壞(corrupted)
2.你正在restore一個(gè)backup,在此backup中控制文件已經(jīng)損壞 或者丟失(missing)
3.你需要在控制文件中改變一個(gè)hard limit 的數(shù)據(jù)庫(kù)參數(shù)(database parameter)
4.如果你正在move 你的database 到一個(gè)server上,并且files位于不同的location上。
5. oracle 技術(shù)支持人員建議你重建控制文件。
第一種情況:在已經(jīng)存在的db中(并且該db是mount or open狀態(tài))建立一個(gè)新的controlfile
首先,必須生成一個(gè)控制文件的ascii dump文件
SQL> alter database backup controlfile to trace;
該trace文件被生成在udump目錄下:
SQL> show parameter user_dump_dest
NAME TYPE VALUE
-------------- ------ ------------------------------------------------
user_dump_dest string /oracle/product/11.1.0/db_1/diag/rdbms/V11/trace
到/oracle/product/11.1.0/db_1/diag/rdbms/V11/trace目錄下,按照時(shí)間排序:
% cd /oracle/product/11.1.0/db_1/diag/rdbms/V11/trace
% ls -ltr
一旦定位到該文件,該文件會(huì)與一般的trace file一樣顯示如下:
Trace file /oracle/product/11.1.0/db_1/diag/rdbms/V11/trace/V11_ora_31225.trc
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORACLE_HOME = /oracle/product/11.1.0/db_1
你感興趣的是 包括 控制文件創(chuàng)建腳本的那一段。
修改trace file 并用修改后的腳本來(lái)建立控制文件
CREATE CONTROLFILE REUSE DATABASE "V11" NORESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/oradata/V11/redo01.log' SIZE 50M,
GROUP 2 '/oradata/V11/redo02.log' SIZE 50M,
GROUP 3 '/oradata/V11/redo03.log' SIZE 50M
DATAFILE
'/oradata/V11/system01.dbf',
'/oradata/V11/sysaux01.dbf',
'/oradata/V11/undotbs01.dbf',
'/oradata/V11/user01.dbf'
CHARACTER SET WE8MSWIN1252
;
--->請(qǐng)?zhí)貏e注意:CHARACTER SET WE8MSWIN1252 可以由 alert_sid.log中得到。
ALTER TABLESPACE TEMP_TEST ADD TEMPFILE '/oradata/V11/temp01.dbf' reuse;
"CREATE CONTROLFILE"之前的任何東西請(qǐng)刪掉,
CHARACTER SET之后的任何東西請(qǐng)刪掉,一定要保留那個(gè)分號(hào)
在上面的例子中,我們選擇了NORESETLOGS 選項(xiàng),并且該db運(yùn)行于archivelog模式下。
請(qǐng)務(wù)必保證使用shutdown immediate選項(xiàng)來(lái)關(guān)閉數(shù)據(jù)庫(kù)。然后啟動(dòng)到nomount狀態(tài)下:
SQL> shutdown immediate;
SQL> startup nomount;
SQL>@control.sql
注意:當(dāng)重建控制文件完畢后,務(wù)必保證添加已經(jīng)存在temp file:
alter tablespace temp_ts add tempfile '?/oradata/V11/temp01.dbf'? reuse;
控制文件一旦被創(chuàng)建,db 被自動(dòng)帶入到mounted 狀態(tài)。如果你使用了resetlogs打開(kāi)了database,請(qǐng)盡快做一個(gè)backup
第二種情況:該db無(wú)法到mount 狀態(tài)
1.要么restore 控制文件,
2.要么有一個(gè)重建控制文件的腳本,如下是一個(gè)例子:
CREATE CONTROLFILE REUSE DATABASE "DBNAME" NORESETLOGS ARCHIVELOG
Follow the format listing:
- Location of redo logs.
- Location of datafiles
- Specifying the characterset.
Once you have listed all files correctly you are ready to recreate your controlfile
SQL> startup nomount;
SQL>@control.sql
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com