asm下表空間的重命名與普通文件系統下的表空間重命名原理是一樣的,只不過asm管理的數據文件有一些需要注意的地方,另外在asm下操作數據文件需要格外小心,稍有不慎將會造成數據文件丟失,如可以做備份最好需要備份。
需求:公司rac數據庫asm存儲原本采用normal模式,現在給數據庫做了備份策略,不想在使用normal模式的asm管理,這樣日常管理太浪費時間,為了平滑遷移,我新添加了一個磁盤組oradata,把日后增加的數據文件首先添加到oradata磁盤組下,然后沒有業務發生時再去遷移原始數據。
實施步驟:
1、原始文件存儲data磁盤組:
ASMCMD [+data/orcl/datafile] > ls -l
Type Redund Striped Time Sys Name
DATAFILE MIRROR COARSE JUN 27 14:00:00 Y EFMIS.268.907265611
DATAFILE MIRROR COARSE JUN 27 14:00:00 Y EFMIS.269.911467049
DATAFILE MIRROR COARSE JUN 27 14:00:00 Y EFMIS.270.911467085
DATAFILE MIRROR COARSE JUN 27 14:00:00 Y EFMIS.271.913894971
DATAFILE MIRROR COARSE JUN 27 14:00:00 Y EFMIS.272.915559085
DATAFILE MIRROR COARSE JUN 27 14:00:00 Y EFMIS.273.915613859
DATAFILE MIRROR COARSE JUN 27 14:00:00 Y SYSAUX.257.907264709
DATAFILE MIRROR COARSE JUN 27 14:00:00 Y SYSTEM.256.907264709
DATAFILE MIRROR COARSE JUN 27 14:00:00 Y UNDOTBS1.258.907264709
DATAFILE MIRROR COARSE JUN 27 14:00:00 Y UNDOTBS2.264.907264867
DATAFILE MIRROR COARSE JUN 27 14:00:00 Y USERS.259.907264709
N efmis01.dbf => +DATA/ORCL/DATAFILE/EFMIS.268.907265611
N efmis02.dbf => +DATA/ORCL/DATAFILE/EFMIS.269.911467049
N efmis03.dbf => +DATA/ORCL/DATAFILE/EFMIS.270.911467085
N efmis04.dbf => +DATA/ORCL/DATAFILE/EFMIS.271.913894971
N efmis05.dbf => +DATA/ORCL/DATAFILE/EFMIS.272.915559085
N efmis06.dbf => +DATA/ORCL/DATAFILE/EFMIS.273.915613859
2、目標文件存儲oradata磁盤組:
ASMCMD [+oradata/orcl/datafile] > ls -l
Type Redund Striped Time Sys Name
DATAFILE UNPROT COARSE JUN 27 22:00:00 Y EFMIS.256.915634603
DATAFILE UNPROT COARSE JUN 27 22:00:00 Y EFMIS.257.915634643
DATAFILE UNPROT COARSE JUN 27 22:00:00 Y EFMIS.258.915634663
DATAFILE UNPROT COARSE JUN 27 22:00:00 Y EFMIS.259.915634679
N efmis07.dbf => +ORADATA/ORCL/DATAFILE/EFMIS.256.915634603
N efmis08.dbf => +ORADATA/ORCL/DATAFILE/EFMIS.257.915634643
N efmis09.dbf => +ORADATA/ORCL/DATAFILE/EFMIS.258.915634663
N efmis10.dbf => +ORADATA/ORCL/DATAFILE/EFMIS.259.915634679
3、這里需要將data磁盤組下的efmis數據表空間下的文件都遷移到oradata下:
1)首先關閉數據庫:
[grid@node2 ~]$ serctl stop database -d orcl
2)啟動數據庫一個節點實例到mount狀態(也可以open下遷移數據,這里因為數據庫暫時不會發生業務,所以直接在mount下遷移)並查詢數據庫數據文件組成:
[oracle@node1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Mon Jun 27 22:28:42 2016
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup mount
ORACLE instance started.
Total System Global Area 4275781632 bytes
Fixed Size 2260088 bytes
Variable Size 1073742728 bytes
Database Buffers 3187671040 bytes
Redo Buffers 12107776 bytes
Database mounted.
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
+DATA/orcl/datafile/system.256.907264709
+DATA/orcl/datafile/sysaux.257.907264709
+DATA/orcl/datafile/undotbs1.258.907264709
+DATA/orcl/datafile/users.259.907264709
+DATA/orcl/datafile/undotbs2.264.907264867
+DATA/orcl/datafile/efmis01.dbf
+DATA/orcl/datafile/efmis02.dbf
+DATA/orcl/datafile/efmis03.dbf
+DATA/orcl/datafile/efmis04.dbf
+DATA/orcl/datafile/efmis05.dbf
+DATA/orcl/datafile/efmis06.dbf
+ORADATA/orcl/datafile/efmis07.dbf
+ORADATA/orcl/datafile/efmis08.dbf
+ORADATA/orcl/datafile/efmis09.dbf
+ORADATA/orcl/datafile/efmis10.dbf
15 rows selected.
3)asm上遷移物理文件:
ASMCMD [+data/orcl/datafile] > cp +DATA/ORCL/DATAFILE/EFMIS.273.915613859 +ORADATA/ORCL/DATAFILE/efmis06.dbf
copying +DATA/ORCL/DATAFILE/EFMIS.273.915613859 -> +ORADATA/ORCL/DATAFILE/efmis06.dbf
ASMCMD [+data/orcl/datafile] > cp +DATA/ORCL/DATAFILE/EFMIS.272.915559085 +ORADATA/ORCL/DATAFILE/efmis05.dbf
copying +DATA/ORCL/DATAFILE/EFMIS.272.915559085 -> +ORADATA/ORCL/DATAFILE/efmis05.dbf
ASMCMD [+data/orcl/datafile] > cp +DATA/ORCL/DATAFILE/EFMIS.271.913894971 +ORADATA/ORCL/DATAFILE/efmis04.dbf
copying +DATA/ORCL/DATAFILE/EFMIS.271.913894971 -> +ORADATA/ORCL/DATAFILE/efmis04.dbf
ASMCMD [+data/orcl/datafile] > cp +DATA/orcl/datafile/EFMIS.270.911467085 +ORADATA/orcl/datafile/efmis03.dbf
copying +DATA/orcl/datafile/EFMIS.270.911467085 -> +ORADATA/orcl/datafile/efmis03.dbf
ASMCMD [+data/orcl/datafile] > cp +DATA/ORCL/DATAFILE/EFMIS.269.911467049 +ORADATA/ORCL/DATAFILE/efmis02.dbf
copying +DATA/ORCL/DATAFILE/EFMIS.269.911467049 -> +ORADATA/ORCL/DATAFILE/efmis02.dbf
ASMCMD [+data/orcl/datafile] > cp +DATA/ORCL/DATAFILE/EFMIS.268.907265611 +ORADATA/orcl/datafile/efmis01.dbf
copying +DATA/ORCL/DATAFILE/EFMIS.268.907265611 -> +ORADATA/orcl/datafile/efmis01.dbf
ASMCMD [+data/orcl/datafile] > cp USERS.259.907264709 +ORADATA/orcl/datafile/USERS
copying +data/orcl/datafile/USERS.259.907264709 -> +ORADATA/orcl/datafile/USERS
ASMCMD [+oradata/orcl/datafile] > ls -l
Type Redund Striped Time Sys Name
DATAFILE UNPROT COARSE JUN 27 23:00:00 Y EFMIS.256.915634603
DATAFILE UNPROT COARSE JUN 27 23:00:00 Y EFMIS.257.915634643
DATAFILE UNPROT COARSE JUN 27 23:00:00 Y EFMIS.258.915634663
DATAFILE UNPROT COARSE JUN 27 23:00:00 Y EFMIS.259.915634679
N USERS => +ORADATA/ASM/DATAFILE/USERS.266.915663721
N efmis01.dbf => +ORADATA/ASM/DATAFILE/efmis01.dbf.265.915663163
N efmis02.dbf => +ORADATA/ASM/DATAFILE/efmis02.dbf.264.915662267
N efmis03.dbf => +ORADATA/ASM/DATAFILE/efmis03.dbf.263.915662067
N efmis04.dbf => +ORADATA/ASM/DATAFILE/efmis04.dbf.262.915662031
N efmis05.dbf => +ORADATA/ASM/DATAFILE/efmis05.dbf.261.915661983
N efmis06.dbf => +ORADATA/ASM/DATAFILE/efmis06.dbf.260.915661893
N efmis07.dbf => +ORADATA/ORCL/DATAFILE/EFMIS.256.915634603
N efmis08.dbf => +ORADATA/ORCL/DATAFILE/EFMIS.257.915634643
N efmis09.dbf => +ORADATA/ORCL/DATAFILE/EFMIS.258.915634663
N efmis10.dbf => +ORADATA/ORCL/DATAFILE/EFMIS.259.915634679
4)數據庫下重命名數據文件:
SQL> alter database rename file '+DATA/orcl/datafile/efmis01.dbf' to '+ORADATA/orcl/datafile/efmis01.dbf';
Database altered.
SQL> alter database rename file '+DATA/orcl/datafile/efmis02.dbf' to '+ORADATA/orcl/datafile/efmis02.dbf';
Database altered.
SQL> alter database rename file '+DATA/orcl/datafile/efmis03.dbf' to '+ORADATA/orcl/datafile/efmis03.dbf';
Database altered.
SQL> alter database rename file '+DATA/orcl/datafile/efmis04.dbf' to '+ORADATA/orcl/datafile/efmis04.dbf';
Database altered.
SQL> alter database rename file '+DATA/orcl/datafile/efmis05.dbf' to '+ORADATA/orcl/datafile/efmis05.dbf';
Database altered.
SQL> alter database rename file '+DATA/orcl/datafile/efmis06.dbf' to '+ORADATA/orcl/datafile/efmis06.dbf';
Database altered.
SQL> alter database rename file '+DATA/orcl/datafile/users.259.907264709' to '+ORADATA/orcl/datafile/USERS';
Database altered.
5)查看遷移后數據文件分布情況:
SQL> SELECT NAME FROM V$DATAFILE;
NAME
--------------------------------------------------------------------------------
+DATA/orcl/datafile/system.256.907264709
+DATA/orcl/datafile/sysaux.257.907264709
+DATA/orcl/datafile/undotbs1.258.907264709
+ORADATA/orcl/datafile/users
+DATA/orcl/datafile/undotbs2.264.907264867
+ORADATA/orcl/datafile/efmis01.dbf
+ORADATA/orcl/datafile/efmis02.dbf
+ORADATA/orcl/datafile/efmis03.dbf
+ORADATA/orcl/datafile/efmis04.dbf
+ORADATA/orcl/datafile/efmis05.dbf
+ORADATA/orcl/datafile/efmis06.dbf
+ORADATA/orcl/datafile/efmis07.dbf
+ORADATA/orcl/datafile/efmis08.dbf
+ORADATA/orcl/datafile/efmis09.dbf
+ORADATA/orcl/datafile/efmis10.dbf
15 rows selected.
6)打開數據庫:這里可以成功打開數據庫,證明數據文件遷移是沒有問題的。
SQL> alter database open;
Database altered.
7)設置grid管理數據庫
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit
[grid@node2 ~]$ srvctl start database -d orcl
8)查看目前集群軟件及數據庫運行狀態:
[grid@node2 ~]$ crsctl status resource -t
ora.asm
ONLINE ONLINE node1 Started
ONLINE ONLINE node2 Started
ora.orcl.db
1 ONLINE ONLINE node1 Open
2 ONLINE ONLINE node2 Open
ASMCMD [+oradata/orcl/datafile] > lsdg
State Type Total_MB Free_MB Req_mir_free_MB Usable_file_MB Voting_files Name
MOUNTED NORMAL 409592 358082 102398 127842 N DATA/
MOUNTED NORMAL 204796 204126 0 102063 N FLASH/
MOUNTED EXTERN 6134 5736 0 5736 Y GRIDDG/
MOUNTED EXTERN 409594 255077 0 255077 N ORADATA/
SQL> select name,round(total_mb/1024,2),round(free_mb/1024,2) from v$asm_diskgroup;
NAME ROUND(TOTAL_MB/1024,2) ROUND(FREE_MB/1024,2)
-------------------- ---------------------- ------------------------------------------------------------------------------
DATA 399.99 349.69
FLASH 200 199.34
GRIDDG 5.99 5.6
ORADATA 399.99 249.1