下面列出关于RMAN的一些高级操作。
1 convert
rman的convert命令,用于跨平台迁移数据库或表空间时,对数据文件进行格式转换,使得文件在目标操作系统中可读。
1.1 源库上convert
tablespace
如将表空间从windows迁移到linux,可以在源平台上通过convert tablespace将表空间包含的数据文件转换成linux平台下的格式。
RMAN> CONVERT TABLESPACE finance,hr
TO PLATFORM ' Linux IA (32-bit)'
FORMAT='/tmp/transport_linux/%U';
1.2 目标库上convert
datafile
如将表空间从windows迁移到linux,可以在目标平台上通过convert datafile将表空间包含的数据文件转换成linux平台下的格式。
Rman> convert datafile '/tmp/ts5.dbf' to platform 'Linux IA (32-bit)' from platform 'Linux IA (32-bit)' db_file_name_convert
'/tmp','/home/oracle';
1.3 源主机上convert
database
如将数据库从windows迁移到linux,可以在源平台上通过convert
database进行转换
RMAN> CONVERT DATABASE NEW DATABASE 'newdb'
transport
script '/tmp/convertdb/transportscript'
to
platform 'Microsoft Windows IA (32-bit)'
db_file_name_convert
'/disk1/oracle/dbs' '/tmp/convertdb'
1.4 目标主机上convert
database
如将数据库从windows迁移到linux,可以在目标平台上通过convert
database进行转换
rman> CONVERT DATABASE ON TARGET PLATFORM
CONVERT
SCRIPT '/tmp/convertdb/convertscript.rman'
TRANSPORT
SCRIPT '/tmp/convertdb/transportscript.sql'
FORMAT
'/tmp/convertdb/%U'
2 delete
2.1 Expired
如果通过操作系统命令删除了rman备份,可以通过crosscheck找出这类备份文件,并通过delete expired删除。
从而使rman repository一致。
Rman> crosscheck backset
Rman> delete expired backupset;
删除不一致的备份集。
2.2 obsolete
根据rman备份保留策略,选择性删除过期的备份。
Rman> report obsolete; #找出过期备份
Rman> delete obsolete; #删除过期备份
3 switch
通过rman做恢复时,可以通过switch命令,将数据文件恢复到新的位置,或者修改数据文件的名称。
3.1 switch database
将数据库切换到copy备份上。
Rman> switch database to copy;
3.2 switch datafile
1、将表空间恢复到不同路径下
ALLOCATE CHANNEL dev1 DEVICE
TYPE DISK;
ALLOCATE CHANNEL dev2 DEVICE
TYPE sbt;
SQL "ALTER TABLESPACE tbs_1
OFFLINE IMMEDIATE";
SET NEWNAME FOR DATAFILE
'/disk7/oracle/tbs11.f'
TO '/disk9/oracle/tbs11.f';
RESTORE TABLESPACE tbs_1;
RECOVER TABLESPACE tbs_1;
SQL "ALTER TABLESPACE tbs_1
ONLINE";
3.3 switch tempfile
SET NEWNAME FOR TEMPFILE
1 TO '/newdisk/dbs/temp1.f';
4 drop
如果使用recovery catalog,可以通过rman删除数据库。
4.1 drop database
% sqlplus SYS/oracle@test1 AS SYSDBA;
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
% rman TARGET SYS/oracle@test1 CATALOG test1/test1@catdb
RMAN> DROP DATABASE INCLUDING BACKUPS NOPROMPT;
|