真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

ORACLE數(shù)據(jù)庫(kù)文件丟失后的恢復(fù)測(cè)試

一、測(cè)試環(huán)境

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),新源企業(yè)網(wǎng)站建設(shè),新源品牌網(wǎng)站建設(shè),網(wǎng)站定制,新源網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,新源網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M(mǎn)足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專(zhuān)業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶(hù)成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

數(shù)據(jù)庫(kù)版本是11GR2,在做完一份完全備份之后,關(guān)機(jī),做一份快照,每一次開(kāi)機(jī)之后都執(zhí)行數(shù)次alter system switch logfile以產(chǎn)生歸檔日志。

之后的測(cè)試都是基于這么一個(gè)完全備份來(lái)恢復(fù)。

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/%F';

backup incremental level 0 format '/backup/%T_%f' database;

 

二、數(shù)據(jù)文件丟失的測(cè)試

2.1丟失所有數(shù)據(jù)文件的測(cè)試

  1.啟動(dòng)數(shù)據(jù)庫(kù)至mount狀態(tài)

  startupmount;

2.啟動(dòng)RMAN

[oracle@mycentos orcl]$ rman target /

3.還原數(shù)據(jù)庫(kù)

RMAN>restore database;

4.恢復(fù)數(shù)據(jù)庫(kù)

RMAN>recover database;

 

恢復(fù)完成之后,查看各個(gè)文件的狀態(tài)是否正常。

select file_name,file_id,statusfrom dba_data_files;

--查看臨時(shí)表空間文件

select status,enabled,name, bytes/1024/1024 file_size

from v$tempfile;

select file_namefrom dba_temp_files;

 

2.2丟失單個(gè)數(shù)據(jù)文件的測(cè)試

2.2.1非關(guān)鍵數(shù)據(jù)文件丟失

  以丟失數(shù)據(jù)文件’/u01/app/oracle/oradata/orcl/users01.dbf’為例,當(dāng)數(shù)據(jù)庫(kù)處于未崩潰狀態(tài)時(shí)

  1)alter database datafile'/u01/app/oracle/oradata/orcl/users01.dbf' offline;

  2)RMAN 模式下restore/recover數(shù)據(jù)文件

  restore datafile '/u01/app/oracle/oradata/orcl/users01.dbf';

  recover datafile '/u01/app/oracle/oradata/orcl/users01.dbf'

  3)數(shù)據(jù)文件上線

  alter database datafile'/u01/app/oracle/oradata/orcl/users01.dbf' online;

當(dāng)數(shù)據(jù)庫(kù)因意外而崩潰時(shí):

[oracle@mycentos ~]$ sqlplus /nolog

SQL> conn /as sysdba

SQL> startup;

ORA-01157: cannot identify/lock data file 4 - see DBWR trace file

ORA-01110: data file 4: '/u01/app/oracle/oradata/orcl/users01.dbf'

--可以直接先啟動(dòng)至mount狀態(tài)

啟動(dòng)RMAN:

  restore datafile '/u01/app/oracle/oradata/orcl/users01.dbf';

  recover datafile '/u01/app/oracle/oradata/orcl/users01.dbf'

  alter database datafile'/u01/app/oracle/oradata/orcl/users01.dbf' online;

  alter database open;

非關(guān)鍵數(shù)據(jù)文件丟失后,先使數(shù)據(jù)文件處于offline狀態(tài),在恢復(fù)數(shù)據(jù)文件之后,再將其轉(zhuǎn)成online狀態(tài)。

 

2.2.2關(guān)鍵數(shù)據(jù)文件丟失

[oracle@mycentos orcl]$ rm system01.dbf;

關(guān)閉數(shù)據(jù)庫(kù)后,過(guò)程與崩潰后恢復(fù)數(shù)據(jù)非關(guān)鍵數(shù)據(jù)文件的過(guò)程一樣。

 

三、日志文件丟失的測(cè)試

  當(dāng)前的配置是所有的group都只有一個(gè)成員,在group1中新增一個(gè)成員,使其變成2個(gè)成員,其他group仍然只有一個(gè)成員。

 

3.1丟失inactive日志文件的恢復(fù)測(cè)試

  刪除第二個(gè)日志組,并且模擬數(shù)據(jù)庫(kù)崩潰

  在未關(guān)機(jī)狀態(tài)下,數(shù)據(jù)庫(kù)能繼續(xù)運(yùn)行,但是日志文件中會(huì)有告警信息。

    shutdown abort;

    startup mount;

    alter database clear unarchived logfile group 2; #此命令會(huì)重建第二組日志文件

    alter database open;

  刪除第一組日志的一個(gè)成員:

    rm redo01.log

    shutdown abort;

    startup;

  數(shù)據(jù)庫(kù)可以正常打開(kāi)。redo01.log的狀態(tài)變成了INVALID.

  使用alter database clear unarchived logfile group 1;重建日志文件

3.2丟失CURRENT日志文件的恢復(fù)測(cè)試

  當(dāng)?shù)谝唤M為CURRENT或actives時(shí),刪除第一組日志的一個(gè)成員,數(shù)據(jù)庫(kù)可以正常打開(kāi)。

  第三組為CURRENT,并且只有一個(gè)成員時(shí),刪除第三組的日志。

  startup 命令報(bào)錯(cuò),并且在執(zhí)行clear unarchived logfile時(shí)會(huì)報(bào)

  ORA-01624: log 3 needed for crash recovery of instance orcl (thread 1)的錯(cuò)誤。

  alter database open;#會(huì)報(bào)ORA-00313的錯(cuò)誤

  因此需要用其他方式來(lái)打開(kāi)數(shù)據(jù)庫(kù):

方法一:使用不完全恢復(fù):

  RMAN>RESTORE DATABASE;

  RMAN>RECOVER DATABASE UNTIL TIME 'SYSDATE-5/1440';#具體的時(shí)間可以看歸檔日志的生成時(shí)間

  SQL>alter database open resetlogs;

方法二:直接使用不完全恢復(fù),不用RMAN。

  SQL>alter system set "_allow_resetlogs_corruption"=true scope=spfile;

  SQL>shutdown abort;

  SQL>startup mount;

  SQL> recover database until cancel;

  SQL> alter database open resetlogs;

3.3丟失歸檔日志文件,并且需要恢復(fù)數(shù)據(jù)庫(kù)。

使用RMAN不完全恢復(fù)至某一個(gè)時(shí)間點(diǎn)。

3.4丟失所有聯(lián)機(jī)重做日志文件的測(cè)試

參照丟3.2失CURRENT日志文件的恢復(fù)測(cè)試

 

 

四、丟失控制文件的測(cè)試

4.1當(dāng)控制文件有多個(gè)副本時(shí),刪除其中一個(gè)控制文件,模擬數(shù)據(jù)庫(kù)崩潰的情況。

在數(shù)據(jù)庫(kù)關(guān)閉的情況下,將副本復(fù)制成已刪除的控制文件的名字,能正常打開(kāi)數(shù)據(jù)庫(kù)。

4.2 控制文件所有成員丟失,模擬數(shù)據(jù)庫(kù)崩潰

4.2.1 有備份控制文件的情況下,使用備份的控制文件恢復(fù)數(shù)據(jù)庫(kù)。

SQL>startup nomount;

RMAN>set dbid 1443678834#可以查看備份的控制文件獲得DBID

RMAN>restore controlfile from '/backup/c-1443678834-20160723-00';

SQL>alter system set "_allow_resetlogs_corruption"=true scope=spfile;

SQL>shutdown abort;

  SQL>startup mount;

  SQL> recover database using backup controlfile until cancel;

    #輸入AUTO,應(yīng)用歸檔日志后,再輸入一遍recover database .......,輸入online redo的路徑+名稱(chēng)

  SQL> alter database open resetlogs;#數(shù)據(jù)不會(huì)丟失

  #有需要的話要重建臨時(shí)表空間

  #ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oracle/oradata/orcl/temp01.dbf' SIZE 1G;

4.2.2 沒(méi)有備份的控制文件,則需要重建控制文件。

在刪除控制文件之前,獲取控制文件的創(chuàng)建語(yǔ)句:

1)alter database backup controlfile to trace as '/home/oracle/crontol_trace.trc';

2)從/home/oracle/crontol_trace.trc文件中獲得如下語(yǔ)句:

CREATE CONTROLFILE REUSE DATABASE "ORCL" RESETLOGS  ARCHIVELOG

    MAXLOGFILES 16

    MAXLOGMEMBERS 3

    MAXDATAFILES 100

    MAXINSTANCES 8

    MAXLOGHISTORY 292

LOGFILE

  GROUP 1 '/u01/app/oracle/oradata/orcl/redo01.log'  SIZE 50M BLOCKSIZE 512,

  GROUP 2 '/u01/app/oracle/oradata/orcl/redo02.log'  SIZE 50M BLOCKSIZE 512,

  GROUP 3 '/u01/app/oracle/oradata/orcl/redo03.log'  SIZE 50M BLOCKSIZE 512,

  GROUP 4 '/u01/app/oracle/oradata/orcl/redo_04.log'  SIZE 50M BLOCKSIZE 512

DATAFILE

  '/u01/app/oracle/oradata/orcl/system01.dbf',

  '/u01/app/oracle/oradata/orcl/sysaux01.dbf',

  '/u01/app/oracle/oradata/orcl/undotbs01.dbf',

  '/u01/app/oracle/oradata/orcl/users01.dbf',

  '/u01/app/oracle/oradata/orcl/test_01.dbf',

  '/u01/app/oracle/oradata/orcl/test_02.dbf'

CHARACTER SET ZHS16GBK;

如果沒(méi)有使用1)中的語(yǔ)句獲取創(chuàng)建語(yǔ)句,也可以根據(jù)實(shí)際情況重建控制文件。

刪除所有的控制文件,并且模擬數(shù)據(jù)庫(kù)崩潰。

恢復(fù)的過(guò)程如下:

1)startup nomount;

2)執(zhí)行創(chuàng)建控制文件的語(yǔ)句,直接復(fù)制語(yǔ)句或放在腳本里均可。

3)之后執(zhí)行:

SQL>alter system set "_allow_resetlogs_corruption"=true scope=spfile;

SQL>shutdown abort;

  SQL>startup mount;

  SQL> recover database using backup controlfile until cancel;

    #輸入AUTO,應(yīng)用歸檔日志后,再輸入一遍recover database .......,輸入online redo的路徑+名稱(chēng)

  SQL> alter database open resetlogs;#數(shù)據(jù)不會(huì)丟失

    重建臨時(shí)表空間

    ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oracle/oradata/orcl/temp01.dbf' SIZE 1G;

五、在只有一份備份的情況下,其余文件均丟失后,打開(kāi)數(shù)據(jù)庫(kù)

在數(shù)據(jù)庫(kù)崩潰之后:

1)啟動(dòng)數(shù)據(jù)庫(kù)至nomount,開(kāi)啟RMAN并設(shè)置dbid

SQL>startup nomount;

RMAN>set dbid 1443678834

2)還原控制文件

RMAN>restore controlfile from '/backup/c-1443678834-20160723-00';

SQL>alter database mount;

3)還原數(shù)據(jù)文件

  RMAN>restore database;

4)執(zhí)行不完全恢復(fù):

    SQL>alter system set "_allow_resetlogs_corruption"=true scope=spfile;

    SQL>shutdown abort;

    SQL>startup mount;

    SQL> recover database using backup controlfile until cancel;

  因?yàn)槿罩疚募?、歸檔日志文件都已經(jīng)被刪除,所以選擇cancel不執(zhí)行恢復(fù)。

    SQL> alter database open resetlogs;

  之后檢查各文件是否正常。

 

 

六、總結(jié)

從模擬在線日志文件、控制文件丟失的過(guò)程中可以發(fā)現(xiàn),當(dāng)這些文件有副本時(shí),可以很快地打開(kāi)數(shù)據(jù)庫(kù),從而降低恢復(fù)數(shù)據(jù)庫(kù)的難度。

 

 

 

 

 

 

 

 

 

 


標(biāo)題名稱(chēng):ORACLE數(shù)據(jù)庫(kù)文件丟失后的恢復(fù)測(cè)試
瀏覽路徑:http://weahome.cn/article/pciocd.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部