|
|
RMAN相关总结
1 准备工作
1.1 RMAN工作前提
1. 设置口令文件验证
i. 设置口令文件验证,管理远程目标数据库。
ii. 设置操作系统本地验证,仅管理本地数据库。
a) init.ora中设置REMOTE_LOGIN_PASSWORDFILE为无。
b) 合理设置SQLNET.authentication参数。
2. 用户具有SYSDBA特权。
3. 全部备份设备RMAN可用,若要使用磁带,则需安装介质管理软件。
1.2 使用恢复目录
1.2.1 确定几个数据库使用RMAN
1. 如果有且只有一个数据库,并且正在使用RMAN,则不必使用恢复目录。但是必须将当前控制文件复制到多个地方,确保控制文件万无一失。
2. 如果需要使用RMAN管理多个数据库,应遵循如下步骤:
i. 如果将恢复目录存到一个现有数据库,则选择尺寸最小的数据库来存。
ii. 如果数据库非常大,则创建一新数据库存储恢复目录。
iii. 包括恢复目录数据库的交义备份。
iv. 对恢复目录做操作系统备份。
v. 对全部数据库运行在ARCHIVELOG模式,并维护归档日志集的多个备份拷贝。
vi. 确保恢复目录数据库与目标数据库不在同一磁盘上,否则没有多少意义。
1.2.2 创建恢复目录
准备工作:
1. 为目录模式创建一个独立的表空间。
2. 创建一个拥有目录模式的单独用户,该用户须拥有CONNECT、RESOURCE、RECOVERY_CATALOG_OWNER角色。
3. 在如上创建的表空间上,该创建用户须有UNLIMITED QUOTA特权。
创建独立表空间
create tablespace rcvcat
datafile ‘/usr2/app/oracle9/oradata/sdh/rcvcat01.dbf’
size 1000M
default storage( initial 50M
next 50M
minextents 1
maxextents unlimited
pctincrease 0 );
目标:192.168.2.203:/export/home/oracle/rman_createtablespace.sql
创建单独用户
添加用户
d:>sqlplus system/manager@sdh
SQL>create user rman identified by rman;
SQL>grant connect to rman;
SQL>grant resource to rman;
SQL>grant recovery_catalog_owner to rman;
SQL>alter user rman quota unlimited on rcvcat;
创建恢复目录
%rman catalog rman/rman@test.demo log=create_rmanlog.log //连接到恢复目录数据库
RMAN>create catalog tablespace ‘rcvcat’; //创建恢复目录,指定‘rcvcat’表空间。
1.2.3 注册数据库
%rman catalog rman/rman@test.demo target internal/oracle@oracle8i.oracle
//rman/rman@test.demo 创建了恢复目录的数据库。
//internal/oracle@oracle8i.oracle 需要注册的数据库。连接到该数据库。
%register database; //注册。
注销注册数据库
1. 准备db_key和db_id_number。
i. 执行:%rman catalog rman/rman@test.demo
RMAN>connect target internal/oracle@test.oracle
即可DBID=XXXXXXXXXX
ii. 执行:SQL>select db_key,rpad(to_char(db_id),12)”DB_ID_NUMBER” from db where db_id=XXXXXXXXX;即可查出所需。
2. 注销。
i. SQL>execute dbms_rcvcat.unregisterdatabase(db_key,db_id_number);
1.2.4 改变恢复目录
RMAN>list copy of tablespace “USERS”;
RMAN>change datafilecopy 1681 delete;
2 建立备份
2.1 完全数据库备份
备份到磁盘:
RMAN>run {
Allocate channel disk1 type disk format
‘/usr2/app/oracle9/u01/%d_backup%u’;
backup database;
sql ‘alter system archive log current’;
sql ‘alter system archive log all’;
}
备份到磁带:
需要安装介质管理器:比如Legato Storage Manager
RMAN>run {
Allocate channel dev1 type ‘sbt_tape’;
backup database;
sql ‘alter system archive log current’;
sql ‘alter system archive log all’;
RMAN>report schema; //生成一个报表,确定数据库中数据文件的可用性。
可通过报表中得出的文件名和路径,通过脚本来拷贝文件。
脚本:
RMAN>run{
2>allocate channel c1 type disk;
3>copy datafile 1 to ‘目标地址及文件名称(例如:/usr2/app/oracle9/u01/syslorcl.bak)’;
.
. //数据文件拷贝完成。
7>copy current controlfile to ‘/usr2/app/oracle9/u01/cntrlora.bak’;
}
操作系统copy 和RMAN的copy 区别:
RMAN的检查物理和逻辑(需要使用CHECK LOGIC选项才可以)数据块是否有顺坏。
检查超过一定设置数量才不会继续拷贝,可通过如下设置:
run{
set maxcorrupt for datafile 2 to 3;
allocate channel dev2 type disk;
copy check logical datafile ‘/usr2/app/oracle9/data/sdh/users01.dbf’ to ‘/usr2/app/oracle9/u01/rbsorcl.bak’ tag=’Bi_weekly_df_copy’ ;
}
创建操作系统级的完全备份,然后注册到RMAN。
如下操作:
1- 做好热备份。
2- 注册。
注册:(确保RMAN连接到所需的目标数据库,否则会报错)
RMAN>catalog datafilecopy ‘/usr2/app/oracle9/tstlorcl.dbf’;
可使用如下方法验证是否注册成功:
RMAN>LIST COPY OF TABLESPACE ‘USERS’;
2.2 表空间备份
RMAN>run{
Allocate channel c1 type disk;
Backup tablespace “users”
Filesperset 3
Format ‘aatst_%t%s.%p’;
}
可通过查看备份目标目录的文件,是否已经备份成功。
也可以用如下命令查看:
RMAN>list copy of tablespace “users”;
RMAN>list backupset of datafile “源文件路径和名称”;
RMAN>report unrecoverable tablespace “USERS”;
创建表空间的数据文件拷贝:
RMAN>run{
Allocate channel c1 type disk;
Copy datafile ‘源路径和名称.dbf’ to ‘目标路径和名称.bak’;
}
操作系统级备份:
2.3 数据文件备份
不选择。
2.4 控制文件备份
RMAN>run
{allocate channel c1 type disk;
backup current controlfile
tag = weekly_sat_backup;
}
当做完全备份时,已经包含了控制文件,其他备份时,使用如下命令顺便备份控制文件:
run{
allocate channel c1 type disk;
backup tablespace “USERS”
include current controlfile;
}
控制文件的文件拷贝:
RMAN>run
{
allocate channel c1 type disk;
copy current controlfile to ‘目标路径/名称.bak’;
}
2.5 归档日志文件的备份
备份全部归档日志文件
使用all选项。
以日志序号开始到终止备份
创建备份的可客户端保证正确设置:NLS_DATE_FORMAT和NLS_LANG。
例如备份日志序号3到10。
RMAN>run
{
allocate channel c1 type disk;
backup archivelog low logseq 3 high logseq 10 thread 1;
}
2.6 增量备份
仅限于对在同级或更低级别上进行的前一次备份之后作过改动的那些数据块进行拷贝。
简化工作,占用空间。
-累积增量备份:包含自最后一次在更低级别进行备份以来所有改动过的数据块。
-非累积增量备份:只包含自前一次在同级或更低级别进行备份以来改动过的数据块。
以USERS表空间做例子。
备份计划(非累积增量备份):
星期日 0级:曾经被数据库使用过的全部数据块
星期一 2级:星期日到星期一之间改变了的数据块
星期二 2级:星期一到星期二之间改变了的数据块
星期三 1级:在星期日到星期三之间改变的全部数据块
星期四 2级:星期一到星期二之间改变了的数据块
星期五 2级:星期一到星期二之间改变了的数据块
星期六 2级:星期一到星期二之间改变了的数据块
0级:
RMAN>run{
Allocate channel c1 type disk;
Backup incremental level 0
Format ‘路径/Sunday%t.%s’
Filesperset 5
Tablespace “USERS”;
}
//filesperset 设置放入一个备份集中的最大输入文件数,以此确保平均使用所有分配的通道来实现备份。
2级:
RMAN>run
{allocate channel c1 type disk;
backup incremental level 2
format ‘level2%t.%s’
filesperset 5
tablespace “USERS”;
}
1级:
RMAN>run
{allocate channel c1 type disk;
backup incremental level 1
format ‘level2%t.%s’
filesperset 5
tablespace “USERS”;
}
2.7 累积备份
使用OEM实现。
取消。
2.8 代理拷贝
RMAN backup 命令的PROXY选项,让第三方软件(介质管理器)来实现备份恢复操作。
3 RMAN报告功能
3.1 List
报表命令:查询特定数据库的恢复目录信息,并生成记录在该数据库的清单。可结合如下选项操作:
database , tablespace , archived , redolog , controlfile , datafilecopyfilename , devicename ,recoverability ,tag ,by time 。
例如:
RMAN>list of backup database;
RMAN>list copy of database;
RMAN>list copy of tablespace “rollback_data”;
RMAN>list backup of tablespace “USERS”;
3.2 report
对存储在恢复目录或控制文件中的信息进行详细分析。如果输出保存在消息日志文件中,则需要指定MSGLOG或LOG选项。
At time , at scn , at logseq ,选项执行report 时,必须使用恢复目录。其他不用。
例子:
RMAN>report schema;
不能从现有备份中恢复的全部数据文件:RMAN>report unrecoverable;
显示被废弃的备份集、备份片、数据文件拷贝RMAN>report obsolete redundancy 2;
//2 :指定如果有两个以上的最新备份或影响,则认定一个为废弃。
//找出废弃的了,就可以删除他们了。
显示不能恢复的数据文件清单:RMAN>report unrecoverable tablespace “USERS”;
得到前面备份的有关信息,比如前三天的:RMAN>report need backup days 3 tablespace “USERS”;
得到无法使用备份集报告:RMAN>report obsolete orphan;
4 已有脚本
必须使用恢复目录才能在其内部存储自行维护脚本。
Create创建脚本。为了运行,则使用execute script 命令 . 使用replace script替换现有的脚本.
脚本一:创建带有全部归档日志文件的完全备份.在备份后,删除他们.
RMAN>create script Full_backup
{allocate channel ch1 type disk;
allocate channel ch2 type disk;
allocate channel ch3 type disk;
allocate channel ch4 type disk;
backup full
tag weekly_inc_backup
filesperset 6
database;
sql ‘alter system archive log current’;
backup
filesperset 10
archivelog all
delete input;
}
使用下列脚本替换已有的 aa_full脚本
RMAN>replace script aa_full {
Allocate channel c1 type disk;
Backup full filesperset 3
(database format ‘aa_full%p%d.%s’);
}
为了运行一个脚本,必须使用execute script命令.
RMAN>run {
Execute script aa_full;
}
5 恢复操作
5.1 OEM执行完全恢复
5.2 表空间和数据文件恢复
run{
allocate channel ch1 type disk;
sql “alter tablespace users_data offline immediate”;
restore talblespace users_data;
recover tablespace users_data;
sql “alter tablespace users_data online”;
}
如果改变了数据文件位置,则使用set newname命令.
5.3 控制文件恢复
例如:恢复目录存储在abcd 中,恢复模式为RMAN,数据库DEMO是丢失控制文件的数据库.
1. 启动SQLPLUS,使用正确INIT.ORA文件,使用NOMOUNT选项.
2. 启动RMAN连接到恢复目录.
%rman catalog rman/rman@abcd
3. 理解到目标数据库DEMO.
RMAN>connect target internal/oracle@DEMO
4. 开始恢复
RMAN>run{
Allocate channel ch1 type disk;
Restore controlfile;
}
######################## |
|