集中備份項目實施方案



目錄
1、集中備份 ........................................................................................................................................3
1.項目目的 .....................................................................................................................................3
2.項目目標 .....................................................................................................................................3
3.環境的搭建.................................................................................................................................3
4.制定備份策略 .............................................................................................................................4
4.1 rman 的設置 ....................................................................................................................4
4.2 編寫備份腳本 ..................................................................................................................4
4.3 執行備份計劃 ..................................................................................................................5
4.4 rman 的維護 .............................................................................................................6
2、恢復測試 ........................................................................................................................................7
1.恢復環境的設置 .........................................................................................................................7
1.1 初始化參數: ..................................................................................................................7
1.2 建立對應目錄: ..............................................................................................................7
1.3 複製備份文件到 /backup 目錄.............................................................................................8
2.恢復過程 .....................................................................................................................................8
2.1 數據庫啓動到 nomount 恢復控制文件: ...................................................................8
2.2 數據庫啓動到 mount 查看備份情況: .......................................................................9
2.3 查看備份和歸檔情況確認 recover 的 scn 號: ........................................................11
2.4 用 resetlogs 方式打開數據庫確認恢復情況: .........................................................12


生產服務器 服務器型號 IBM RS6000 操做系統 AIX 5.3.0.8 數據庫版本 10.2.0.1.0 備份服務器 服務器型號 操做系統 存儲 Sun T3陣列 恢復服務器 服務器型號 操做系統 數據庫版本 10.2.0.1.0
1、集中備份
1.項目目的
爲了實現 oracle 數據庫的保護,實施 oracle 數據庫集中備份項目,通
過交換機和生產服務器、備份服務器、恢復服務器相連,組成一個內部備份恢復
局域網,以後經過將備份服務器上的存儲介質以 NFS 方式分別掛載到生產服
務器與恢復服務器上,使用 RMAN 實現生產數據的集中備份與遠程恢復。
2.項目目標
對生產庫的數據進行備份,制定數據庫備份策略、編寫備份執行腳本。
肯定最少的恢復時間,儘可能減小對數據庫的影響,同時,爲確保數據的安全。
在備份時要遵循存儲空間與資源最節省原則,而且對 RMAN 的元數據進行保護,
可使生產庫可以完成對 Oracle 數據庫備份數據的集中管理。
3.環境的搭建
3


原理圖以下:
Server4 Server5 Server6
備份服務器
Server1 server2 server3
測試服務器

拓撲圖以下:
IBM P-SERIES 630 AIX 191 IBM P-SERIES 630 AIX 197 IBM P-SERIES 630 AIX 199
生產庫 備份服務器 測試服務器
SAN 光纖交換機
SAN T3 存儲
在生產服務器上安裝 oracle 搭建生產庫,在恢復服務器安裝 oracle 軟件,設置 nfs 讓
生產庫的備份能夠放到備份服務器上爲以後的統一管理。


4 備份策略
4.1 rman 的設置
根據備份要求 2 個冗餘,設置以下:
RMAN> show all;
using target database control file instead of recovery catalog
RMAN configuration parameters are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO BACKUPSET;
以周爲單位
週日作 0級備份
周 1 周2 作2級備份
周3作1級備份
周4 周5 周6 作 2級備份
週日再作 0級備份

4.2 編寫備份腳本
零級備份腳本
#!/usr/bin/bash
#set env
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_SID=prod
export ARC_PATH= /backup/rman_backup/arch
export RMAN_BAK_PATH=/backup/rman_backup
DATE=`date +%Y%m%d-%H:%M:%S`
rman target / log /home/oracleuser/scripts/log/L0_bk_$DATE.log << EOF 保存rman 備份產生的日誌
run {
allocate channel c1 type disk ;
allocate channel c2 type disk ;
allocate channel c3 type disk ;
backup incremental level 0 tag 'dbL0' format '$RMAN_BAK_PATH/L0_%U_%t.bak' database ;
sql 'alter system archive log current';
backup filesperset 3 format '$ARC_PATH/arch%t.arc' archivelog all delete input ;
delete noprompt obsolete ;
release channel c1;
release channel c2;
release channel c3;
}
exit;
EOF
1級備份腳本
#!/usr/bin/bash
#set env
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_SID=prod
export ARC_PATH= /backup/rman_backup/arch
export RMAN_BAK_PATH=/backup/rman_backup
DATE=`date +%Y%m%d-%H:%M:%S`
rman target / log /home/oracleuser/scripts/log/L1_bk_$DATE.log << EOF
run {
allocate channel c1 type disk ;
allocate channel c2 type disk ;
allocate channel c3 type disk ;
backup incremental level 1 tag 'dbL1' format '$RMAN_BAK_PATH/L0_%U_%t.bak' database ;
sql 'alter system archive log current';
backup filesperset 3 format '$ARC_PATH/arch%t.arc' archivelog all delete input ;
delete noprompt obsolete ;
release channel c1;
release channel c2;
release channel c3;
}
exit;

4.3 執行備份計劃
2級備份腳本
#!/usr/bin/bash
#set env
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_SID=prod
export ARC_PATH= /backup/rman_backup/arch
export RMAN_BAK_PATH=/backup/rman_backup
DATE=`date +%Y%m%d-%H:%M:%S`
rman target / log /home/oracleuser/scripts/log/L2_bk_$DATE.log << EOF
run {
allocate channel c1 type disk ;
allocate channel c2 type disk ;
allocate channel c3 type disk ;
backup incremental level 2 tag 'dbL2' format '$RMAN_BAK_PATH/L0_%U_%t.bak' database ;
sql 'alter system archive log current';
backup filesperset 3 format '$ARC_PATH/arch%t.arc' archivelog all delete input ;
delete noprompt obsolete ;
release channel c1;
release channel c2;
release channel c3;
}
exit;
EOF
掛載備份服務器備份目錄:
[root@aix191 /]#showmount -e 192.168.8.152
export list for 192.168.8.152:
/backup/cuug10 aix205,aix191
/backup/cuug09 aix191
[root@aix191 /]#mount 192.168.8.152:/backup/cuug10 /backup 掛載備份服務器目錄
[root@aix191 /]#bdf
Filesystem kbytes used avail %used Mounted on
/dev/vg00/lvol3 204800 159560 44992 78%
/dev/vg00/lv_u05 65536 36184 29136 55% /home
192.168.8.152:/backup/cuug10
13417584 5946680 6789336 47% /backup
/dev/vg00/lvol5 65536
65536
4.4 RMAN 的維護
由於設置了 2 個冗餘,長時間後有陳舊備份用如下命令對數據庫備份檢查:
crosscheck backup;
crosscheck archivelog all;
delete noprompt expired backup; ###刪除過時備份
delete noprompt obsolete; ###刪除陳舊備份
爲模擬正常的生產庫的平常業務,編寫了如下腳本對數據更新:
建立計劃任務:
bash-2.04$ crontab -e
* * * * 0 /home/oracle/scripts/bin/l0_bk.sh
* * * * 1 2 /home/oracle/scripts/bin/l2_bk.sh
* * * * 3 /home/oracle/scripts/bin/l1_bk.sh
* * * * 4 5 6 /home/oracle/scripts/bin/l2_bk.sh
bash-2.04$ cat dml.sh
#!/usr/bin/sh
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export ORACLE_SID=shennao
export PATH=$PATH:$ORACLE_HOME/bin:/usr/bin
while true
do
sqlplus scott/tiger <<EOF
insert into test select * from emp;
insert into test select * from emp;
commit;
update test set ename='CUUG';
rollback;
delete from test where empno=7788;
commit;
EOF
done

2、恢復測試
恢復測試的目的是爲確認備份的有效性,恢復分本地恢復和遠程恢復兩種,如下是遠程
恢復的過程。恢復過程要求最短期完成且達到恢復的目的。
1.恢復環境的設置
1.1 修改初始化參數:
[oracle@aix191 dbs]$cat initprod.ora
*.audit_file_dest='/u01/app/oracle/admin/prod/adump'
*.background_dump_dest='/u01/app/oracle/admin/prod/bdump'
*.compatible='10.2.0.1.0'
*.control_files='/u01/disk1/prod/control01.ctl','/u01/disk2/prod/control02.ctl'
*.core_dump_dest='/u01/app/oracle/admin/prod/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='prod'
*.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.dispatchers='(PROTOCOL=TCP) (SERVICE=prodXDB)'
*.job_queue_processes=10
*.log_archive_dest_1='location=/u01/arch'
*.log_archive_format='arch_%t_%s_%r.arc'
*.open_cursors=300
*.pga_aggregate_target=96468992
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=200455552
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/u01/app/oracle/admin/prod /udump'
1.2 建立對應目錄:
[oracle@aix191 dbs]$mkdir -p /u01/app/oracle/admin/prod/adump
[oracle@aix191 dbs]$mkdir -p /u01/app/oracle/admin/prod/bdump
[oracle@aix191 dbs]$mkdir -p /u01/app/oracle/admin/prod/cdump
[oracle@aix191 dbs]$mkdir -p /u01/app/oracle/admin/prod/udump


[oracle@aix191 dbs]$mkdir -p /u01/disk1/prod/
[oracle@aix191 dbs]$mkdir -p /u01/disk2/prod/
[oracle@aix191 dbs]$mkdir -p /u01/app/oracle/oradata/prod
1.3 複製備份文件到 /backup 目錄
[root@aix191 /backup]#ls -l
-rw-r--r--
1 200 200 9568256 Nov 29 09:13
ctl_AMBER_c-3061253012-20121129-02.bk
-rw-r--r--
1 200 200 9666560 Nov 29 09:46
ctl_AMBER_c-3061253012-20121129-03.bk
-rw-r--r--
1 200
200 10649600 Nov 29 10:51
ctl_AMBER_c-3061253012-20121129-04.bk
-rw-r--r--
1 200 200 10649600 Nov 29 11:08
ctl_AMBER_c-3061253012-20121129-05.bk
-rw-r--r--
-rw-r--r--
-rw-r--r--
-rw-r--r--
1 200
1 200
1 200
1 200
200
200
200
200
948379648 Nov 29 09:13 full_244.bk
3151806464 Nov 29 09:46 full_246.bk
2166110208 Nov 29 10:51 full_248.bk
599107584 Nov 29 11:07 full_250.bk
由於以後的恢復須要 restore 數據文件和歸檔,確認空間是否足夠。
[oracle@aix191 prod]$bdf
Filesystem kbytes
/dev/vg00/lvol3 1048576
used
146280
avail %used Mounted on
896456 14% /
/dev/vg00/lvol1
/dev/vg00/lvol8
/dev/vg00/lvol7
505392 68504 386344
2613248 957776 1643616
2334720 1614760 714376
15% /stand
37% /var
69% /usr
/dev/vg00/u01
/dev/vg00/lvol4
/dev/vg00/lvol6
10240000 4997449 4919974 50% /u01
2048000 995248 1045288 49% /tmp
3506176 2435224 1062640 70% /opt
/dev/vg00/lvol5
2048000
3112 2029288
0% /home
2.恢復過程
2.1 數據庫啓動到 nomount 恢復控制文件:
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 201326592 bytes
Fixed Size 2005184 bytes
Variable Size 75499328 bytes
Database Buffers 121634816 bytes
Redo Buffers 2187264 bytes

[oracle@aix191 amber]$rman target /
Recovery Manager: Release 10.2.0.1.0 - Production on Fri Nov 30 16:29:27 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to target database: amber (not mounted)
RMAN> restore controlfile from '/backup/rman_controlfile/****.bak' ;
Starting restore at 25-DEC-12
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=155 devtype=DISK
channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
output filename=/u01/app/oracle/oradata/orcl2/control01.ctl
output filename=/u01/app/oracle/oradata/orcl2/control02.ctl
output filename=/u01/app/oracle/oradata/orcl2/control03.ctl
Finished restore at 25-DEC-12
2.2 數據庫啓動到 mount 查看備份情況:
RMAN> alter database mount;
database mounted
released channel: ORA_DISK_1
RMAN> list backup of database;
BS Key
Type LV Size
Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
241
Full
904.44M DISK
00:19:10
29-NOV-12
BP Key: 241 Status: AVAILABLE Compressed: NO Tag: TAG20121129T103308
Piece Name: /u01/backup/full_244.bk
List of Datafiles in backup set 241
File LV Type Ckp SCN Ckp Time Name
---- -- ---- ---------- --------- ----
1 Full 734535
29-NOV-12 /u01/app/oracle/oradata/amber/system01.dbf
2 Full 734535 29-NOV-12 /u01/app/oracle/oradata/amber/undotbs01.dbf
3
4
5
Full 734535
Full 734535
Full 734535
29-NOV-12 /u01/app/oracle/oradata/amber/sysaux01.dbf
29-NOV-12 /u01/app/oracle/oradata/amber/users01.dbf
29-NOV-12 /u01/app/oracle/oradata/amber/example01.dbf


2.3 restore 數據文件:
RMAN> restore database;
Starting restore at 30-NOV-12
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00001 to /u01/app/oracle/oradata/amber/system01.dbf
restoring datafile 00002 to /u01/app/oracle/oradata/amber/undotbs01.dbf
restoring datafile 00003 to /u01/app/oracle/oradata/amber/sysaux01.dbf
restoring datafile 00004 to /u01/app/oracle/oradata/amber/users01.dbf
restoring datafile 00005 to /u01/app/oracle/oradata/amber/example01.dbf
channel ORA_DISK_1: reading from backup piece /bk/full_244.bk
channel ORA_DISK_1: restored backup piece 1
piece handle=/backup/full_244.bk tag=TAG20121129T103308
channel ORA_DISK_1: restore complete, elapsed time: 00:02:35
Finished restore at 30-NOV-12
[oracle@aix191 prod]$ls -l
total 4238582
-rw-r-----
-rw-r-----
-rw-r-----
-rw-r-----
-rw-r-----
1 oracle
1 oracle
1 oracle
1 oracle
1 oracle
oinstall
oinstall
oinstall
oinstall
oinstall
157294592 Nov 30 17:11 example01.dbf
251666432 Nov 30 17:20 sysaux01.dbf
503324672 Nov 30 17:18 system01.dbf
571482112 Nov 30 17:18 undotbs01.dbf
524296192 Nov 30 17:16 users01.dbf
2.4 查看備份和歸檔情況確認 recover 的 scn 號:
從備份的數據文件看 scn 是 734535 花費時間是 19:10,歸檔的記錄可

SQL> select SEQUENCE#,FIRST_CHANGE#,NEXT_CHANGE#,to_char(first_time,'yyyy-mm-dd hh24:mi:ss') 「time」 from v$archived_log;
SEQUENCE# FIRST_CHANGE# NEXT_CHANGE# time
------------------------------------------------------------------------------------------------------------------
216 734199 735024 2012-11-29 10:31:32
266 765012 765609 2012-11-29 10:48:53
267 765609 766001 2012-11-29 10:49:09
268 766001 766744 2012-11-29 10:49:26
269 766744 767410 2012-11-29 10:52:04
270 767410 767987 2012-11-29 10:54:07
271 767987 768483 2012-11-29 10:54:20


以上的信息確承認以恢復到 scn=766744 就能夠把庫打開。
RMAN> recover database until scn 766744;
channel ORA_DISK_1: restore complete, elapsed time: 00:06:07
………………………………………………………………………………………………
media recovery complete, elapsed time: 00:05:48
SQL> select checkpoint_change# from v$datafile_header;
CHECKPOINT_CHANGE#
------------------
766744
766744
766744
766744
766744
2.5 用 resetlogs 方式打開數據庫確認恢復情況:
已經成功恢復,
restore 數據文件時間是 00:02:35,
restore 歸檔時間是 00:06:07,
Recover 數據文件時間是 00:05:48。
SQL> alter database open resetlogs;
Database altered.
SQL> conn cuug/cuug
Connected.
SQL> select * from tab;
TNAME TABTYPE
EMP TABLE
TEST TABLEsql

相關文章
相關標籤/搜索