一 switch 命令
1 switch命令用途
更新數據文件名為rman下鏡像拷貝時指定的數據文件名
更新數據文件名為 set newname 命令指定的名字。
?
2 switch 命令使用前提條件
rman 必須連接到目標數據庫
當switch tablespaces、datafiles、tempfiles時,這些文件必須離線
當switch 整個數據庫時,數據庫不能open
3 注意事項
switch....to copy 命令用于rman命令提示符下
switch沒有to copy的命令用于run語句塊中
??
4 語法
? 第一組
?? switch dtabase to copy;??????????????????
?? switch datafile number|name to copy;
?? switch tablespace name to copy;
? 第二組
?? switch datafile all;
?? switch datafile number|name;
?? switch tempfile all;
???
二 舉例如下:
例一:用switch datafile number to copy 更新數據文件位置和名字
RMAN> backup as copy datafile 8? format '/oracle/CRM/test.dbf';
Starting backup at 2013-02-22 10:06:21
using channel ORA_DISK_1
using channel ORA_DISK_2
channel ORA_DISK_1: starting datafile copy
input datafile file number=00008 name=/backup/test.dbf
output file name=/oracle/CRM/test.dbf tag=TAG20130222T100621 RECID=14 STAMP=808049181
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 2013-02-22 10:06:22
Starting Control File and SPFILE Autobackup at 2013-02-22 10:06:22
piece handle=/backup/c-3599153036-20130222-01 comment=NONE
Finished Control File and SPFILE Autobackup at 2013-02-22 10:06:25
RMAN> sql 'alter tablespace test offline';
sql statement: alter tablespace test offline
RMAN> switch datafile 8 to copy;
datafile 8 switched to datafile copy "/oracle/CRM/test.dbf"
RMAN> report schema;
Report of database schema for database with db_unique_name CRM
List of Permanent Datafiles
===========================
File Size(MB) Tablespace?????????? RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1??? 750????? SYSTEM?????????????? ***???? /oracle/CRM/system01.dbf
2??? 540????? SYSAUX?????????????? ***???? /oracle/CRM/sysaux01.dbf
3??? 100????? UNDOTBS3???????????? ***???? /oracle/CRM/undotbs3.dbf
4??? 1742???? USERS??????????????? ***???? /backup/users01.dbf
5??? 500????? POS????????????????? ***???? /oracle/CRM/pos.dbf
6??? 100????? ERP????????????????? ***???? /oracle/CRM/erp.dbf
7??? 5??????? USER01?????????????? ***???? /oracle/CRM/user01.dbf
8??? 0??????? TEST???????????????? ***???? /oracle/CRM/test.dbf
List of Temporary Files
=======================
File Size(MB) Tablespace?????????? Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1??? 218????? TEMP???????????????? 32767?????? /oracle/CRM/temp01.dbf
2??? 3072???? MYNEWTEMP??????????? 40960?????? /oracle/CRM/newtemp.dbf
例二 用switch tablespace name to copy更新表空間所有數據文件位置和名字
RMAN> backup? as copy? tablespace? pos format '/oracle/%N%f.dbf';
(%N為表空間名、%f為數據文件絕對文件號)
Starting backup at 2013-02-22 10:55:49
using channel ORA_DISK_1
using channel ORA_DISK_2
channel ORA_DISK_1: starting datafile copy
input datafile file number=00005 name=/oracle/CRM/pos.dbf
channel ORA_DISK_2: starting datafile copy
input datafile file number=00009 name=/oracle/CRM/pos2.dbf
output file name=/oracle/POS9.dbf tag=TAG20130222T105549 RECID=18 STAMP=808052153
channel ORA_DISK_2: datafile copy complete, elapsed time: 00:00:07
output file name=/oracle/POS5.dbf tag=TAG20130222T105549 RECID=19 STAMP=808052179
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:36
Finished backup at 2013-02-22 10:56:25
Starting Control File and SPFILE Autobackup at 2013-02-22 10:56:25
piece handle=/backup/c-3599153036-20130222-03 comment=NONE
Finished Control File and SPFILE Autobackup at 2013-02-22 10:56:28
RMAN> sql 'alter tablespace? pos offline';
sql statement: alter tablespace? pos offline
RMAN> switch tablespace pos to copy;
datafile 5 switched to datafile copy "/oracle/POS5.dbf"
datafile 9 switched to datafile copy "/oracle/POS9.dbf"
RMAN> report schema;
Report of database schema for database with db_unique_name CRM
List of Permanent Datafiles
===========================
File Size(MB) Tablespace?????????? RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1??? 750????? SYSTEM?????????????? ***???? /oracle/CRM/system01.dbf
2??? 540????? SYSAUX?????????????? ***???? /oracle/CRM/sysaux01.dbf
3??? 100????? UNDOTBS3???????????? ***???? /oracle/CRM/undotbs3.dbf
4??? 1742???? USERS??????????????? ***???? /backup/users01.dbf
5??? 0??????? POS????????????????? ***???? /oracle/POS5.dbf
6??? 100????? ERP????????????????? ***???? /oracle/CRM/erp.dbf
7??? 5??????? USER01?????????????? ***???? /oracle/CRM/user01.dbf
8??? 0??????? TEST???????????????? ***???? /oracle/CRM/test.dbf
9??? 0??????? POS????????????????? ***???? /oracle/POS9.dbf
List of Temporary Files
=======================
File Size(MB) Tablespace?????????? Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1??? 218????? TEMP???????????????? 32767?????? /oracle/CRM/temp01.dbf
2??? 3072???? MYNEWTEMP??????????? 40960?????? /oracle/CRM/newtemp.dbf
例三 用switch dtabase to copy更新數據庫所有數據文件位置和名字
RMAN> backup as copy database format '/oracle/CRM/test/%N%f.dbf';
Starting backup at 2013-02-22 11:26:52
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=129 device type=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: SID=192 device type=DISK
channel ORA_DISK_1: starting datafile copy
input datafile file number=00004 name=/backup/users01.dbf
channel ORA_DISK_2: starting datafile copy
input datafile file number=00001 name=/oracle/CRM/system01.dbf
output file name=/oracle/CRM/test/SYSTEM1.dbf tag=TAG20130222T112653 RECID=52 STAMP=808054107
channel ORA_DISK_2: datafile copy complete, elapsed time: 00:01:41
channel ORA_DISK_2: starting datafile copy
input datafile file number=00002 name=/oracle/CRM/sysaux01.dbf
output file name=/oracle/CRM/test/USERS4.dbf tag=TAG20130222T112653 RECID=53 STAMP=808054182
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:02:54
channel ORA_DISK_1: starting datafile copy
input datafile file number=00005 name=/oracle/POS5.dbf
output file name=/oracle/CRM/test/SYSAUX2.dbf tag=TAG20130222T112653 RECID=54 STAMP=808054193
channel ORA_DISK_2: datafile copy complete, elapsed time: 00:01:11
channel ORA_DISK_2: starting datafile copy
input datafile file number=00003 name=/oracle/CRM/undotbs3.dbf
output file name=/oracle/CRM/test/UNDOTBS33.dbf tag=TAG20130222T112653 RECID=55 STAMP=808054203
channel ORA_DISK_2: datafile copy complete, elapsed time: 00:00:16
channel ORA_DISK_2: starting datafile copy
input datafile file number=00006 name=/oracle/CRM/erp.dbf
output file name=/oracle/CRM/test/ERP6.dbf tag=TAG20130222T112653 RECID=56 STAMP=808054230
channel ORA_DISK_2: datafile copy complete, elapsed time: 00:00:25
channel ORA_DISK_2: starting datafile copy
input datafile file number=00009 name=/oracle/POS9.dbf
output file name=/oracle/CRM/test/POS5.dbf tag=TAG20130222T112653 RECID=57 STAMP=808054247
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:58
channel ORA_DISK_1: starting datafile copy
input datafile file number=00007 name=/oracle/CRM/user01.dbf
output file name=/oracle/CRM/test/POS9.dbf tag=TAG20130222T112653 RECID=58 STAMP=808054247
channel ORA_DISK_2: datafile copy complete, elapsed time: 00:00:08
channel ORA_DISK_2: starting datafile copy
input datafile file number=00008 name=/oracle/CRM/test.dbf
output file name=/oracle/CRM/test/USER017.dbf tag=TAG20130222T112653 RECID=59 STAMP=808054250
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:00
output file name=/oracle/CRM/test/TEST8.dbf tag=TAG20130222T112653 RECID=60 STAMP=808054250
channel ORA_DISK_2: datafile copy complete, elapsed time: 00:00:01
Finished backup at 2013-02-22 11:30:51
Starting Control File and SPFILE Autobackup at 2013-02-22 11:30:51
piece handle=/backup/c-3599153036-20130222-06 comment=NONE
Finished Control File and SPFILE Autobackup at 2013-02-22 11:30:59
RMAN> switch database to copy;
datafile 1 switched to datafile copy "/oracle/CRM/test/SYSTEM1.dbf"
datafile 2 switched to datafile copy "/oracle/CRM/test/SYSAUX2.dbf"
datafile 3 switched to datafile copy "/oracle/CRM/test/UNDOTBS33.dbf"
datafile 4 switched to datafile copy "/oracle/CRM/test/USERS4.dbf"
datafile 5 switched to datafile copy "/oracle/CRM/test/POS5.dbf"
datafile 6 switched to datafile copy "/oracle/CRM/test/ERP6.dbf"
datafile 7 switched to datafile copy "/oracle/CRM/test/USER017.dbf"
datafile 8 switched to datafile copy "/oracle/CRM/test/TEST8.dbf"
datafile 9 switched to datafile copy "/oracle/CRM/test/POS9.dbf"
RMAN> sql 'alter database open';
sql statement: alter database open
SQL> select file#,name,status from v$datafile;
???? FILE# NAME???????????????????????????????????? STATUS
---------- ---------------------------------------- -------
???????? 1 /oracle/CRM/test/SYSTEM1.dbf???????????? SYSTEM
???????? 2 /oracle/CRM/test/SYSAUX2.dbf???????????? ONLINE
???????? 3 /oracle/CRM/test/UNDOTBS33.dbf?????????? ONLINE
???????? 4 /oracle/CRM/test/USERS4.dbf????????????? ONLINE
???????? 5 /oracle/CRM/test/POS5.dbf??????????????? ONLINE
???????? 6 /oracle/CRM/test/ERP6.dbf??????????????? ONLINE
???????? 7 /oracle/CRM/test/USER017.dbf???????????? ONLINE
???????? 8 /oracle/CRM/test/TEST8.dbf?????????????? ONLINE
???????? 9 /oracle/CRM/test/POS9.dbf??????????????? ONLINE
???
???
例四 用switch tempfile all更新所有臨時數據文件位置和名字
SQL> select file#,name,status from v$tempfile;
???? FILE# NAME???????????????????????????????????? STATUS
---------- ---------------------------------------- -------
???????? 1 /oracle/CRM/temp01.dbf?????????????????? ONLINE
???????? 2 /oracle/CRM/newtemp.dbf????????????????? ONLINE
???
語句如下:???
startup force mount
run{
set newname for tempfile 1 to '/oracle/CRM/test/temp01.dbf';
set newname for tempfile 2 to '/oracle/CRM/test/temp02.dbf';
switch tempfile all;
alter database open;
}
執行過程如下:
RMAN> startup force mount
run{
set newname for tempfile 1 to '/oracle/CRM/test/temp01.dbf';
set newname for tempfile 2 to '/oracle/CRM/test/temp02.dbf';
switch tempfile all;
alter database open;
}
Oracle instance started
database mounted
Total System Global Area??? 1252663296 bytes
Fixed Size???????????????????? 2226072 bytes
Variable Size?????????????? 1006635112 bytes
Database Buffers???????????? 234881024 bytes
Redo Buffers?????????????????? 8921088 bytes
RMAN> 2> 3> 4> 5> 6>?
executing command: SET NEWNAME
executing command: SET NEWNAME
renamed tempfile 1 to /oracle/CRM/test/temp01.dbf in control file
renamed tempfile 2 to /oracle/CRM/test/temp02.dbf in control file
database opened
RMAN> report schema;
Report of database schema for database with db_unique_name CRM
List of Permanent Datafiles
===========================
File Size(MB) Tablespace?????????? RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1??? 750????? SYSTEM?????????????? ***???? /oracle/CRM/test/SYSTEM1.dbf
2??? 540????? SYSAUX?????????????? ***???? /oracle/CRM/test/SYSAUX2.dbf
3??? 100????? UNDOTBS3???????????? ***???? /oracle/CRM/test/UNDOTBS33.dbf
4??? 1742???? USERS??????????????? ***???? /oracle/CRM/test/USERS4.dbf
5??? 500????? POS????????????????? ***???? /oracle/CRM/test/POS5.dbf
6??? 100????? ERP????????????????? ***???? /oracle/CRM/test/ERP6.dbf
7??? 5??????? USER01?????????????? ***???? /oracle/CRM/test/USER017.dbf
8??? 1??????? TEST???????????????? ***???? /oracle/CRM/test/TEST8.dbf
9??? 10?????? POS????????????????? ***???? /oracle/CRM/test/POS9.dbf
List of Temporary Files
=======================
File Size(MB) Tablespace?????????? Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1??? 218????? TEMP???????????????? 32767?????? /oracle/CRM/test/temp01.dbf
2??? 3072???? MYNEWTEMP??????????? 40960?????? /oracle/CRM/test/temp02.dbf
例五 用switch datafile all更新表空間所有數據位置和名字
語句:
run{
sql 'alter tablespace pos offline immediate';
set newname for datafile '/oracle/CRM/test/POS5.dbf' to '/oracle/CRM/pos1.dbf';
set newname for datafile '/oracle/CRM/test/POS9.dbf' to '/oracle/CRM/pos2.dbf';
restore tablespace pos;
switch datafile all;
recover tablespace pos;
sql 'alter tablespace pos online';
}
執行過程如下:
RMAN> run{
2> sql 'alter tablespace pos offline immediate';
3> set newname for datafile '/oracle/CRM/test/POS5.dbf' to '/oracle/CRM/pos1.dbf';
4> set newname for datafile '/oracle/CRM/test/POS9.dbf' to '/oracle/CRM/pos2.dbf';
5> restore tablespace pos;
6> switch datafile all;
7> recover tablespace pos;
8> sql 'alter tablespace pos online';
9> }
sql statement: alter tablespace pos offline immediate
executing command: SET NEWNAME
executing command: SET NEWNAME
Starting restore at 2013-02-22 15:18:37
using channel ORA_DISK_1
using channel ORA_DISK_2
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00005 to /oracle/CRM/pos1.dbf
channel ORA_DISK_1: restoring datafile 00009 to /oracle/CRM/pos2.dbf
channel ORA_DISK_1: reading from backup piece /backup/20130222_hho2k7jn_1_1
channel ORA_DISK_1: piece handle=/backup/20130222_hho2k7jn_1_1 tag=TAG20130222T145756
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:25
Finished restore at 2013-02-22 15:19:03
datafile 5 switched to datafile copy
input datafile copy RECID=72 STAMP=808067944 file name=/oracle/CRM/pos1.dbf
datafile 9 switched to datafile copy
input datafile copy RECID=73 STAMP=808067944 file name=/oracle/CRM/pos2.dbf
Starting recover at 2013-02-22 15:19:04
using channel ORA_DISK_1
using channel ORA_DISK_2
starting media recovery
media recovery complete, elapsed time: 00:00:00
Finished recover at 2013-02-22 15:19:05
sql statement: alter tablespace pos online
RMAN> report schema;
Report of database schema for database with db_unique_name CRM
List of Permanent Datafiles
===========================
File Size(MB) Tablespace?????????? RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1??? 750????? SYSTEM?????????????? ***???? /oracle/CRM/test/SYSTEM1.dbf
2??? 540????? SYSAUX?????????????? ***???? /oracle/CRM/test/SYSAUX2.dbf
3??? 100????? UNDOTBS3???????????? ***???? /oracle/CRM/test/UNDOTBS33.dbf
4??? 1742???? USERS??????????????? ***???? /oracle/CRM/test/USERS4.dbf
5??? 500????? POS????????????????? ***???? /oracle/CRM/pos1.dbf
6??? 100????? ERP????????????????? ***???? /oracle/CRM/test/ERP6.dbf
7??? 5??????? USER01?????????????? ***???? /oracle/CRM/test/USER017.dbf
8??? 1??????? TEST???????????????? ***???? /oracle/CRM/test/TEST8.dbf
9??? 10?????? POS????????????????? ***???? /oracle/CRM/pos2.dbf