oracle重建控制文件流程,ORACLE之重建控制文件
當(dāng)這些信息更改或者變動(dòng)時(shí),oracle數(shù)據(jù)庫(kù)會(huì)自動(dòng)把最新信息更新到controlfile文件里面。
啟動(dòng)數(shù)據(jù)庫(kù)時(shí),Oracle從初始化參數(shù)文件(pfile/spfile)中獲得控制文件的名字及位置,打開控制文件,然后從控制文件中讀取數(shù)據(jù)文件和聯(lián)機(jī)日志文件的信息,最后打開數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)運(yùn)行時(shí),Oracle會(huì)修改控制文件,所以,一旦控制文件損壞,數(shù)據(jù)庫(kù)將不能正常運(yùn)行。
創(chuàng)建控制文件有幾個(gè)前提和幾個(gè)區(qū)別:
前提:
1.如果是RAC下,則需要關(guān)閉群集:
alter system set cluster_database=FALSE scope=spfile sid=‘*‘;
否則恢復(fù)的時(shí)候會(huì)報(bào)錯(cuò);
2.數(shù)據(jù)庫(kù)在mount或者OPEN狀態(tài)下,才能夠重建。
區(qū)別:
重建控制文件有兩種1.resetlogs恢復(fù)和noresetlogs恢復(fù)方式
下面還是著手恢復(fù)步驟:
重建控制文件,
備份方式
Sql>alter? database?backup? controlfile to trace? as ‘/u01/controlfile.trcd’;
創(chuàng)建controlfile備份文件到本地
alter?database?backup?controlfile?to? ‘+UNDO/ORCL/control‘;
這個(gè)是備份控制文件到ASM管理存儲(chǔ)里面
如果不知道當(dāng)前控制文件在哪里
查看位置:select?*?from?v$controlfile;
首先,庫(kù)能夠進(jìn)入mount狀態(tài)或者處于OPEN狀態(tài):
SQL>startup mount;或者直接open狀態(tài)
SQL>alter?database?backup?controlfile?to?trace?as?‘/u01/controlfile.trc‘;
進(jìn)入/u01/下面
然后編輯這個(gè)控制文件
里面包含兩部分恢復(fù)腳本
一個(gè)就是使用norestlogs和另外一個(gè)是使用resetlogs恢復(fù)的腳本:
內(nèi)容就不詳細(xì)全部列出來(lái)了:
標(biāo)識(shí)Set #1.NORESETLOGS? case的是使用noresetlogs恢復(fù)的
標(biāo)識(shí)Set #1.RESETLOGS? case的是使用resetlogs恢復(fù)的
內(nèi)容如下:
第一個(gè)是noresetlogs恢復(fù)的腳本
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE"ORCL"NORESETLOGSARCHIVELOG
MAXLOGFILES 192
MAXLOGMEMBERS 3
MAXDATAFILES 1024
MAXINSTANCES 32
MAXLOGHISTORY 292
LOGFILE
GROUP 1‘+UNDO/orcl/onlinelog/group_1.257.912261307‘? SIZE 50M BLOCKSIZE 512,
GROUP 2‘+UNDO/orcl/onlinelog/group_2.258.912261307‘? SIZE 50M BLOCKSIZE 512,
GROUP 3‘+UNDO/orcl/onlinelog/group_3.259.912261453‘? SIZE 50M BLOCKSIZE 512,
GROUP 4‘+UNDO/orcl/onlinelog/group_4.260.912261453‘? SIZE 50M BLOCKSIZE 512
DATAFILE
‘+DATA/orcl/datafile/system.256.912261237‘,
‘+DATA/orcl/datafile/sysaux.257.912261239‘,
‘+DATA/orcl/datafile/undotbs1.258.912261239‘,
‘+DATA/orcl/datafile/users.259.912261239‘,
‘+DATA/orcl/datafile/undotbs2.261.912261395‘
CHARACTER SET UTF8
VARIABLE RECNO NUMBER;
EXECUTE :RECNO :=SYS.DBMS_BACKUP_RESTORE.SETCONFIG(‘CONTROLFILE AUTOBACKUP‘,‘ON‘);
RECOVER DATABASE
ALTER SYSTEM ARCHIVE LOG ALL;
ALTER DATABASE OPEN;
ALTER TABLESPACE TEMP ADD TEMPFILE‘+DATA/orcl/tempfile/temp.260.912261313‘
SIZE 33554432?REUSE AUTOEXTEND ON NEXT 655360? MAXSIZE 32767M;
下面這就是一個(gè)resetlog恢復(fù)的腳本:
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE"ORCL"RESETLOGSARCHIVELOG
MAXLOGFILES 192
MAXLOGMEMBERS 3
MAXDATAFILES 1024
MAXINSTANCES 32
MAXLOGHISTORY 292
LOGFILE
GROUP 1‘+UNDO/orcl/onlinelog/group_1.257.912261307‘? SIZE 50M BLOCKSIZE 512,
GROUP 2‘+UNDO/orcl/onlinelog/group_2.258.912261307‘? SIZE 50M BLOCKSIZE 512
DATAFILE
‘+DATA/orcl/datafile/system.256.912261237‘,
‘+DATA/orcl/datafile/sysaux.257.912261239‘,
‘+DATA/orcl/datafile/undotbs1.258.912261239‘,
‘+DATA/orcl/datafile/users.259.912261239‘,
‘+DATA/orcl/datafile/undotbs2.261.912261395‘
CHARACTER SET UTF8
;
VARIABLE RECNO NUMBER;
EXECUTE :RECNO :=SYS.DBMS_BACKUP_RESTORE.SETCONFIG(‘CONTROLFILE AUTOBACKUP‘,‘ON‘);
RECOVER DATABASE USING BACKUP CONTROLFILE
ALTER DATABASE ADD LOGFILE THREAD 2
GROUP 3‘+UNDO/orcl/onlinelog/group_3.259.912261453‘ SIZE 50M BLOCKSIZE 512 REUSE,
GROUP 4‘+UNDO/orcl/onlinelog/group_4.260.912261453‘ SIZE 50M BLOCKSIZE 512 REUSE;
ALTER DATABASE OPEN RESETLOGS;
ALTER TABLESPACE TEMP ADD TEMPFILE‘+DATA/orcl/tempfile/temp.260.912261313‘
SIZE 33554432?REUSE AUTOEXTEND ON NEXT 655360? MAXSIZE 32767M;
好了,下面開始停庫(kù)恢復(fù):
啟動(dòng)到nomount狀態(tài)下:
Startup? nomount
直接在nomount狀態(tài)下復(fù)制粘貼下面這段腳本:
CREATE CONTROLFILE REUSE DATABASE"ORCL" NORESETLOGSARCHIVELOG
MAXLOGFILES 192
MAXLOGMEMBERS 3
MAXDATAFILES 1024
MAXINSTANCES 32
MAXLOGHISTORY 292
LOGFILE
GROUP 1‘+UNDO/orcl/onlinelog/group_1.257.912261307‘? SIZE 50M BLOCKSIZE 512,
GROUP 2‘+UNDO/orcl/onlinelog/group_2.258.912261307‘? SIZE 50M BLOCKSIZE 512,
GROUP 3‘+UNDO/orcl/onlinelog/group_3.259.912261453‘? SIZE 50M BLOCKSIZE 512,
GROUP 4 ‘+UNDO/orcl/onlinelog/group_4.260.912261453‘?SIZE 50M BLOCKSIZE 512
DATAFILE
‘+DATA/orcl/datafile/system.256.912261237‘,
‘+DATA/orcl/datafile/sysaux.257.912261239‘,
‘+DATA/orcl/datafile/undotbs1.258.912261239‘,
‘+DATA/orcl/datafile/users.259.912261239‘,
‘+DATA/orcl/datafile/undotbs2.261.912261395‘
CHARACTER SET UTF8;
好了
現(xiàn)在控制文件創(chuàng)建好了;如果有報(bào)錯(cuò),查看是不是RAC狀態(tài)下沒(méi)有關(guān)閉集群
查看當(dāng)前狀態(tài):已經(jīng)到了MOUNTED狀態(tài)下了
執(zhí)行后面的:
VARIABLE RECNO NUMBER;
EXECUTE :RECNO :=SYS.DBMS_BACKUP_RESTORE.SETCONFIG(‘CONTROLFILE AUTOBACKUP‘,‘YES‘);
在后面的
RECOVERY DATABASE就不用執(zhí)行了,因?yàn)橐呀?jīng)有數(shù)據(jù)文件了。
這里僅僅只是控制文件沒(méi)有而已
直接ALTER DATABASE OPEN;
成功啟動(dòng)數(shù)據(jù)庫(kù)
最后執(zhí)行以下TEM表空間
ALTER TABLESPACE TEMP ADD TEMPFILE‘+DATA/orcl/tempfile/temp.260.912261313‘
SIZE33554432? REUSE AUTOEXTEND ON NEXT 655360? MAXSIZE 32767M;
resetlogs方式重建controlfile
數(shù)據(jù)文件在,但是日志文件沒(méi)有是可以用這個(gè)方式回復(fù)
啟動(dòng)到nomount狀態(tài)下:
Startup? nomount
直接在nomount狀態(tài)下復(fù)制粘貼下面這段腳本:
CREATE CONTROLFILE REUSE DATABASE"ORCL"RESETLOGSARCHIVELOG
MAXLOGFILES 192
MAXLOGMEMBERS 3
MAXDATAFILES 1024
MAXINSTANCES 32
MAXLOGHISTORY 292
LOGFILE
GROUP 1‘+UNDO/orcl/onlinelog/group_1.257.912261307‘? SIZE 50M BLOCKSIZE 512,
GROUP 2‘+UNDO/orcl/onlinelog/group_2.258.912261307‘? SIZE 50M BLOCKSIZE 512
DATAFILE
‘+DATA/orcl/datafile/system.256.912261237‘,
‘+DATA/orcl/datafile/sysaux.257.912261239‘,
‘+DATA/orcl/datafile/undotbs1.258.912261239‘,
‘+DATA/orcl/datafile/users.259.912261239‘,
‘+DATA/orcl/datafile/undotbs2.261.912261395‘
CHARACTER SET UTF8;
好了
查看當(dāng)前狀態(tài):已經(jīng)到了MOUNTED狀態(tài)下了
執(zhí)行后面的:
VARIABLE RECNO NUMBER;
EXECUTE :RECNO :=SYS.DBMS_BACKUP_RESTORE.SETCONFIG(‘CONTROLFILE AUTOBACKUP‘,‘YES‘);
這里因?yàn)槭怯胷esetlogs恢復(fù)的所以啟動(dòng)數(shù)據(jù)庫(kù)的時(shí)候也要resetlogs
ALTER DATABASE OPEN resetlogs;
成功啟動(dòng)數(shù)據(jù)庫(kù)
最后執(zhí)行以下TEM表空間
ALTER TABLESPACE TEMP ADD TEMPFILE‘+DATA/orcl/tempfile/temp.260.912261313‘
SIZE33554432? REUSE AUTOEXTEND ON NEXT 655360? MAXSIZE 32767M;
Ok這個(gè)也恢復(fù)成功了。
總結(jié):
兩種恢復(fù)方式基本一樣,只有在啟動(dòng)數(shù)據(jù)庫(kù)的時(shí)候有差別,可以根據(jù)數(shù)據(jù)庫(kù)當(dāng)時(shí)情況具體操作。
但是一般情況下不可能出現(xiàn)控制文件丟失。而且控制文件最少要備份兩份以上放在不同的位置。
如有不足或缺漏請(qǐng)一起討論,共同進(jìn)步
本文出自 “且行且珍惜” 博客,請(qǐng)務(wù)必保留此出處http://zjwbk.blog.51cto.com/8740969/1788659
ORACLE之重建控制文件
標(biāo)簽:oracle???數(shù)據(jù)庫(kù)???控制文件???controlfile
本條技術(shù)文章來(lái)源于互聯(lián)網(wǎng),如果無(wú)意侵犯您的權(quán)益請(qǐng)點(diǎn)擊此處反饋版權(quán)投訴
本文系統(tǒng)來(lái)源:http://zjwbk.blog.51cto.com/8740969/1788659
總結(jié)
以上是生活随笔為你收集整理的oracle重建控制文件流程,ORACLE之重建控制文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: jsp oracle 登录页面,Orac
- 下一篇: 如何快速在oracle内生成数据,[Or