分类: 服务器与存储
2008-06-14 13:36:06
1、建rman库作为repository
$more createrman_db1.sh set echo on spool makedb1.log create database rman datafile '/export/home/oracle/oradata/rman_data/system.dbf' size 50m autoextend on next 640K logfile '/export/home/oracle/oradata/rman_data/redo0101.log' SIZE 10M, '/export/home/oracle/oradata/rman_data/redo0201.log' SIZE 10M maxdatafiles 30 maxinstances 8 maxlogfiles 64 character set US7ASCII national character set US7ASCII ; disconnect spool off exit
@/export/home/oracle/8.1.6/rdbms/admin/catalog.sql;
REM ********** ALTER SYSTEM TABLESPACE ********* ALTER TABLESPACE SYSTEM DEFAULT STORAGE ( INITIAL 64K NEXT 64K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCR EASE 50); ALTER TABLESPACE SYSTEM MINIMUM EXTENT 64K;
REM ********** TABLESPACE FOR ROLLBACK ********** CREATE TABLESPACE RBS DATAFILE '/export/home/oracle/oradata/rman_data/rbs.dbf' s ize 50m AUTOEXTEND ON NEXT 512K MINIMUM EXTENT 512K DEFAULT STORAGE ( INITIAL 512K NEXT 512K MINEXTENTS 10 MAXEXTENTS UNLIMITED PC TINCREASE 0 );
REM ********** TABLESPACE FOR TEMPORARY ********** CREATE TABLESPACE TEMP DATAFILE '/export/home/oracle/oradata/rman_data/temp.dbf' size 50m AUTOEXTEND ON NEXT 64K MINIMUM EXTENT 64K DEFAULT STORAGE ( INITIAL 64K NEXT 64K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCR EASE 0) TEMPORARY;
REM **** Creating four rollback segments **************** CREATE PUBLIC ROLLBACK SEGMENT RBS_0 TABLESPACE RBS STORAGE ( OPTIMAL 64000K ); ALTER ROLLBACK SEGMENT "RBS_0" ONLINE;
REM **** SYS and SYSTEM users **************** alter user sys temporary tablespace TEMP; alter user system temporary tablespace TEMP; disconnect spool off exit
$more createrman_db3.sh spool crdb3.log @/export/home/oracle/8.1.6/rdbms/admin/catproc.sql @/export/home/oracle/8.1.6/rdbms/admin/caths.sql @/export/home/oracle/8.1.6/rdbms/admin/otrcsvr.sql connect system/manager @/export/home/oracle/8.1.6/sqlplus/admin/pupbld.sql
disconnect spool off exit |
2、建repository存放的表空间和rman用户
$more createrman_db4.sh
connect internal create tablespace rman_ts datafile '/export/home/oracle/oradata/rman_data/rman_ts.dbf' size 20M default storage (initial 100K next 100K pctincrease 0); create user rman_hainan identified by rman_hainan temporary tablespace TEMP default tablespace rman_ts quota unlimited on rman_ts; grant recovery_catalog_owner to rman_hainan; grant connect ,resource to rman_hainan; |
3、建catalog,注册目标数据库
$more createrman_db5.sh
rman catalog rman_hainan/rman_hainan@rman msglog=rman.log create catalog ; exit; rman target sys/oracle@db1 connect catalog rman_hainan/rman_hainan@rman register database; exit; |
4、可以开始做备份了
5、做全备
$more rmanshell . /export/home/oracle/.profile rman rcvcat rman_hainan/rman_hainan@rman target / cmdfile /export/home/oracle/ba ckup_level0.rcv log /export/home/oracle/backup.log
$more backup_level0.rcv resync catalog; run { allocate channel t1 type disk; backup incremental level 0 skip inaccessible tag hot_db_bk_level0 filesperset 3 format '/export/home/oracle/bk_%s_%p_%t.bk' (database); sql 'alter system archive log current'; backup filesperset 10 format '/export/home/oracle/a1_%s_%p_%t.ac' (archivelog all delete input); backup format '/export/home/oracle/df_t%t_s%s_p%p.ct' current controlfile ; } |
6、做增备
$more rmanshell1 rman rcvcat rman_hainan/rman_hainan@rman target / cmdfile backup_level1.rcv log backup.log
$more backup_level1.rcv resync catalog; run { allocate channel t1 type disk; backup incremental level 1 skip inaccessible tag hot_db_bk_level1 filesperset 3 format 'bk_%s_%p_%t.bk1' (database); sql 'alter system archive log current'; backup filesperset 10 format 'a1_%s_%p_%t.ac1' (archivelog all delete input); backup current controlfile; } |
1、 删除旧的全备
$rman rcvcat rman_hainan/rman_hainan@rman target /
Recovery Manager: Release 8.1.6.0.0 - Production
RMAN-06005: connected to target database: TEST (DBID=1692992254) RMAN-06008: connected to recovery catalog database
RMAN> list backupset;
RMAN-03022: compiling command: list
List of Backup Sets Key Recid Stamp LV Set Stamp Set Count Completion Time |
------- ---------- ---------- -- ---------- ---------- ----------------------
38 145 399987408 0 399987406 153 11-JUN-00
根据key来删除旧的备份。
RMAN> allocate channel for maintenance type disk;
RMAN> change backupset 169 delete; ----------THIS IS THE COMMAND TO REMOVE THE ENTRY & OS FILE
做完后可以看到list backupset和操作系统的文件都没有了。
2、 恢复
(1) 将数据库启动到nomount状态:
$svrmgrl
Server Manager Release 3.1.6.0.0 - Production
Copyright (c) 1997, 1999, Oracle Corporation. All Rights Reserved.
Oracle8i Enterprise Edition Release 8.1.6.0.0 - 64bit Production With the Partitioning option JServer Release 8.1.6.0.0 - Production
SVRMGR> connect internal Connected. SVRMGR> startup nomount; ORACLE instance started. Total System Global Area 339275684 bytes Fixed Size 94116 bytes Variable Size 318685184 bytes Database Buffers 16384000 bytes Redo Buffers 4112384 bytes SVRMGR> exit Server Manager complete. |
(2) 恢复控制文件:
$rman rcvcat rman_hainan/rman_hainan@rman target /
Recovery Manager: Release 8.1.6.0.0 - Production
RMAN-06006: connected to target database: test (not mounted) RMAN-06008: connected to recovery catalog database
RMAN> run { 2> allocate channel d1 type disk; 3> restore controlfile; 4> release channel d1; 5> } |
(3) 恢复数据文件
RMAN> run { 2> allocate channel d1 type disk; 3> sql "alter database mount"; 4> restore datafile 1; 5> restore datafile 2; 6> restore datafile 3; 7> restore datafile 4; 8> release channel d1; 9> } |
(4) 恢复日志文件
RMAN> run { 2> set archivelog destination to '/export/home/oracle/admin/test/arch'; 3> allocate channel d1 type disk; 4> restore archivelog all; 5> release channel d1; 6> } |
会把所有的日志文件恢复。
(5) 根据日志做recover
$svrmgrl
Oracle Server Manager Release 3.1.6.0.0 - Production
Copyright (c) 1997, 1999, Oracle Corporation. All Rights Reserved.
Oracle8i Enterprise Edition Release 8.1.6.0.0 - 64bit Production With the Partitioning option JServer Release 8.1.6.0.0 - Production
SVRMGR> connect internal Connected. SVRMGR> recover database using backup controlfile until cancel; ORA-00279: change 51054 generated at 06/11/2000 11:38:37 needed for thread 1 ORA-00289: suggestion : /export/home/oracle/admin/test/arch/arch_1_3.arc ORA-00280: change 51054 for thread 1 is in sequence #3 Specify log: { Log applied.
ORA-00279: change 51058 generated at 06/11/2000 11:38:44 needed for thread 1
ORA-00289: suggestion : /export/home/oracle/admin/test/arch/arch_1_4.arc
ORA-00280: change 51058 for thread 1 is in sequence #4
ORA-00278: log file '/export/home/oracle/admin/test/arch/arch_1_3.arc' no longer
needed for this recovery
Specify log: {
Log applied.
ORA-00279: change 51074 generated at 06/11/2000 11:40:20 needed for thread 1
ORA-00289: suggestion : /export/home/oracle/admin/test/arch/arch_1_5.arc
ORA-00280: change 51074 for thread 1 is in sequence #5
ORA-00278: log file '/export/home/oracle/admin/test/arch/arch_1_4.arc' no longer
needed for this recovery
Specify log: { cancel
Media recovery cancelled.
SVRMGR> alter database open resetlogs;
Statement processed.
恢复完成。
SVRMGR> select table_name from user_tables;
TABLE_NAME
------------------------------
BONUS
DEPT
EMP
SALGRADE
TEST
TEST_ZMY
ZMY
ZMY_DEPT
ZMY_EMP
9 rows selected. |
可以检查看到,所有的都恢复了,包括全备份后的事务。(只要有归档日志,都可以恢复)。
3、恢复后rman数据库的同步
$rman rcvcat rman_hainan/rman_hainan@rman target /
Recovery Manager: Release 8.1.6.0.0 - Production
RMAN-06005: connected to target database: TEST (DBID=1692992254) RMAN-06008: connected to recovery catalog database
RMAN> reset database;
RMAN-03022: compiling command: reset RMAN-03023: executing command: reset RMAN-08006: database registered in recovery catalog RMAN-03023: executing command: full resync RMAN-08029: snapshot controlfile name set to default value: ?/dbs/snapcf_@.f RMAN-08002: starting full resync of recovery catalog RMAN-08004: full resync complete |