基於tsm的oracle資料庫備份及恢復

lygle發表於2014-05-07

1.檔案系統備份恢復操作

1.1 使用備份命令來備份檔案系統

命令使用方法如下:  

全備份/tmp下的所有檔案:

dsmc selective /tmp/* -subdir=yes

增量備份/tmp下的所有檔案:

dsmc incremental /tmp/* -subdir=yes

1.2 使用命令列來恢復檔案系統

命令使用方法如下:

恢復/tmp下的所有檔案:

dsmc restore /tmp/* –subdir=yes

/tmp/test1目錄下的內容恢復到/tmp/test2/test1這個目錄下

dsmc restore /tmp/test1/*  /tmp/test2/ -subdir=yes

顯示某一檔案的所有可恢復版本:

dsmc restore /tmp/test.out –pick –inactive

恢復某一目錄在某一時間點狀態:

dsmc restore –pitd=12/31/2006 –pitt=13:00:00 /tmp/

dsmc restore  GVSHX504_virtual_jukebox_53154ff0.iso –pick –inactive

 

1.3 現階段檔案系統備份指令碼

         現階段採用伺服器上/ptfs/fs/script/下的

full_hostname.sh,incre_hostname.sh

使用tivoli帳號登入伺服器後執行以下命令進行備份。

全備命令如下:

$sudo full_hostname.sh

增量備份命令如下:

$sudo incre_hostname.sh

2.資料庫備份操作

2.1 備份Oracle資料檔案

通過rman執行備份指令碼如下:

RMAN> run

2> {

3> allocate channel t1 type 'sbt_tape' parms

4> 'ENV=(TDPO_OPTFILE=/usr/tivoli/tsm/client/oracle/bin64/tdpo.opt)';

5> backup

6> filesperset 5

7> format 'df_%t_%s_%p'

8> (database);

9> }

2.2 資料庫全備份

         資料庫全備份包括資料檔案,控制檔案,spfile檔案,歸檔日誌檔案,執行備份指令碼如下:

run{

allocate channel t1 type 'sbt_tape' parms

 'ENV=(tdpo_optfile=/usr/tivoli/tsm/client/oracle/bin64/tdpo.opt)';

allocate channel t2 type 'sbt_tape' parms

 'ENV=(tdpo_optfile=/usr/tivoli/tsm/client/oracle/bin64/tdpo.opt)';

backup full tag 'dbfull' format 'dbfull_%t_%s_%p' diskratio=0 database include current controlfile;

sql 'alter system archive log current';

backup format 'arch%t_%s_%p' diskratio=0 archivelog all delete input;

release channel t1;

release channel t2;

2.3 刪除過期備份

         刪除90天以前的備份,執行指令碼如下:

Run

allocate channel for maintenance type 'sbt_tape' parms

'ENV=(TDPO_OPTFILE=/usr/tivoli/tsm/client/oracle/bin64/tdpo.opt)';

crosscheck backup;

crosscheck archivelog all;

report obsolete;

delete noprompt obsolete recovery window of 90 days;

delete noprompt expired backup;

release channel;

2.4 資料庫增量備份

         備份指令碼如下:

run{

allocate channel t1 type 'sbt_tape' parms

 'ENV=(tdpo_optfile=/usr/tivoli/tsm/client/oracle/bin64/tdpo.opt)';

allocate channel t2 type 'sbt_tape' parms

 'ENV=(tdpo_optfile=/usr/tivoli/tsm/client/oracle/bin64/tdpo.opt)';

backup incremental level 1 tag 'dbincr' format '%d_full_%s_%p' filesperset 5 diskratio=0 database include current controlfile;

sql 'alter system archive log current';

backup format 'arch%t_%s_%p' diskratio=0 archivelog all delete input;

release channel t1;

release channel t2;

}

2.5 檢視已備份的資料

    檢視資料庫備份:

    RMAN>list backup of database;

    檢視歸檔日誌備份:

    RMAN>list backup of archivelog all;

2.6 現階段資料庫備份指令碼s

現階段指令碼採用伺服器上/ptfs/oracle/script/fullarchincre)下的

full_hostname.sh,incre_hostname.sh,arch_hostname.sh

使用tivoli帳號登入伺服器後執行以下命令進行備份。

全備命令如下:

$sudo full_hostname.sh

增量備份命令如下:

$sudo incre_hostname.sh

歸檔日誌備份命令如下:

$sudo arch_hostname.sh

3.資料庫恢復操作

3.1 恢復前準備

    輸入dsmadmc進入TSM管理介面

    查詢資料庫備份所在儲存池的磁帶

TSMSERVER> q vol stg=hreccp_pool f=d

查詢磁帶中離所需恢復的時間最近的全備以及全備之後的增量備份和歸檔日誌檔案

TSMSERVER> q cont 912abfl5

檢查驅動器是否備佔用

    TSMSERVER> q mount

3.2 恢復spfile檔案

    設定資料庫DBID

    RMAN> set dbid=123456789

    使用預設pfile啟動資料庫到nomount狀態

    RMAN>startup nomont;

    從備份集中恢復spfile,執行命令如下:

run {

allocate channel c1 type 'sbt_tape' parms

 'ENV=(TDPO_OPTFILE=/usr/tivoli/tsm/client/oracle/bin64/tdpo.opt)';

restore spfile to '/oracle/HHQ/102_64/dbs/ctl_restore.bak' from 'c-3146837030';

release channel c1;

}

         重新啟動資料庫到nomount狀態

3.3 恢復控制檔案

         從備份集中恢復控制檔案,執行指令碼如下:

run {

allocate channel c1 type 'sbt_tape' parms

 'ENV=(TDPO_OPTFILE=/usr/tivoli/tsm/client/oracle/bin64/tdpo.opt)';

restore controlfile to '/oracle/HHQ/102_64/dbs/ctl_restore.bak' from

 'c-3146837030';

release channel c1;

}

    使用SQLPLUS,將資料庫狀態修改為MOUNT

    SQL>alter database open;

3.4 恢復資料檔案

         從備份集中恢復資料檔案,執行指令碼如下:

run {

allocate channel c1 type 'sbt_tape' parms

 'ENV=(TDPO_OPTFILE=/usr/tivoli/tsm/client/oracle/bin64/tdpo.opt)';

restore database from 'c-3146837030';

release channel c1;

}

3.5 以resetlogs方式開啟資料庫

使用recover對資料進行恢復到某一時點,開啟資料庫

SQL> RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL TIME

'2013-06-05 16:57:31'

SQL> ALTER DATABASE OPEN RESETLOGS;

使用recover將資料恢復到最後一個歸檔日誌結束,開啟資料庫

SQL> RECOVER DATABASE UNTIL CANCEL USING BACKUP CONTROLFILE;

SQL> ALTER DATABASE OPEN RESETLOGS;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28673746/viewspace-1156103/,如需轉載,請註明出處,否則將追究法律責任。

相關文章