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
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 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