[转]Oracle DB 使用RMAN将数据库移植到ASM存储区

1. 完全关闭数据库。
2. 关闭数据库并修改服务器参数文件,以使用Oracle Managed Files (OMF)。
3. 编辑并执行以下RMAN 脚本:
STARTUP NOMOUNT;
RESTORE CONTROLFILE FROM '/u1/c1.ctl';
ALTER DATABASE MOUNT;
BACKUP AS COPY DATABASE FORMAT '+dgroup1';
SWITCH DATABASE TO COPY;
SQL "ALTER DATABASE RENAME '/u1/log1'TO '+dgroup1' ";
# Repeat RENAME command for all online redo log members
...
ALTER DATABASE OPEN RESETLOGS;
SQL "ALTER DATABASE TEMPFILE '/u1/temp1' DROP";
 
 
  • 将数据库移植到ASM 存储区
由于ASM 文件无法通过正常的操作系统界面访问,因此RMAN 是复制ASM 文件的唯一途径。虽然由于表空间的历史原因,表空间中的文件既可以是ASM 文件,也可以
是非ASM 文件,但是RMAN 命令会将非ASM 文件移到ASM 磁盘组中。通过以下过程,可以将整个数据库移到ASM 磁盘组中:(假定你使用的是服务器参数文件。)
1. 使用V$CONTROLFILE和V$LOGFILE,获取当前控制文件和联机重做日志的文件名。
2. 像平常一样关闭数据库。按如下所述,修改数据库的服务器参数文件:
- 将必要的OMF 目标参数设置为所需的ASM 磁盘组。
- 删除CONTROL_FILES参数。
3. 编辑和运行RMAN 命令文件,这将备份数据库、将当前数据文件移到备份中并重命名联机重做日志。使用BACKUP AS COPY命令只能移动表空间或数据文件。
4. 删除旧的数据库文件。
注:如果创建一个OMF 控制文件,并且有一个服务器参数文件,则会在该服务器参数文件中创建一个CONTROL_FILES初始化参数条目。
 
 
  • 将表空间移植到ASM 存储中
移植表空间,使其可以使用ASM 存储。
1. 使用SQL*Plus,以 SYSDBA 用户身份连接到数据库实例,然后创建一个名为TBSASMMIG 的新的表空间。此表空间应当只包含一个存储于文件系统中的10 MB 
大小的文件(不使用ASM)。请确保连接的是 test0924(我本机的测试实例)实例,而不是ASM 实例。
2. 创建一个名为 T2、存储在新的表空间 TBSASMMIG 中的表。在 T2 中插入一行。 提交你所做的操作。

3. 将 TBSASMMIG 移植到ASM 存储中。完成操作后,请检查移植是否成功,并且该表空间中的表是否保持原样。

  1. sys@TEST0924> select  FILE_NAME,TABLESPACE_NAME from dba_data_files;  
  2.   
  3. FILE_NAME                                          TABLESPACE_NAME  
  4. -------------------------------------------------- ------------------------------  
  5. /u01/app/oracle/oradata/test0924/users01.dbf       USERS  
  6. /u01/app/oracle/oradata/test0924/sysaux01.dbf      SYSAUX  
  7. /u01/app/oracle/oradata/test0924/system01.dbf      SYSTEM  
  8. /u01/app/oracle/oradata/test0924/example01.dbf     EXAMPLE  
  9. /u01/app/oracle/oradata/test0924/undotbs01.dbf     UNDOTBS1  
  10.   
  11. sys@TEST0924> create tablespace TBSASMMIG datafile '/u01/app/oracle/oradata/test0924/tbsasmmig01.dbf' size 10m;  
  12.   
  13. Tablespace created.  
  14.   
  15. sys@TEST0924> create table t2 (id number,name varchar2(20)) tablespace TBSASMMIG;  
  16.   
  17. Table created.  
  18.   
  19. sys@TEST0924> insert into t2 values (1,'a1');  
  20.   
  21. 1 row created.  
  22.   
  23. sys@TEST0924> commit;  
  24.   
  25. Commit complete.  
  26.   
  27. sys@TEST0924> select file_id,file_name,tablespace_name from dba_data_files;  
  28.   
  29.    FILE_ID FILE_NAME                                          TABLESPACE_NAME  
  30. ---------- -------------------------------------------------- ------------------------------  
  31.          4 /u01/app/oracle/oradata/test0924/users01.dbf       USERS  
  32.          3 /u01/app/oracle/oradata/test0924/tbsasmmig01.dbf   TBSASMMIG  
  33.          2 /u01/app/oracle/oradata/test0924/sysaux01.dbf      SYSAUX  
  34.          1 /u01/app/oracle/oradata/test0924/system01.dbf      SYSTEM  
  35.          5 /u01/app/oracle/oradata/test0924/example01.dbf     EXAMPLE  
  36.          9 /u01/app/oracle/oradata/test0924/undotbs01.dbf     UNDOTBS1  
  37.   
  38. rows selected.  
  39.   
  40. [oracle@rtest ~]$ rman target /  
  41.   
  42. Recovery Manager: Release 11.2.0.3.0 - Production on Sun Nov 3 17:02:51 2013  
  43.   
  44. Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.  
  45.   
  46. connected to target database: TEST0924 (DBID=2720875862)  
  47.   
  48. RMAN> sql 'alter database datafile 3 offline';  
  49.   
  50. sql statement: alter database datafile 3 offline  
  51.   
  52. RMAN> backup as copy datafile 3 format '+DATA';  
  53.   
  54. Starting backup at 03-NOV-13  
  55. allocated channel: ORA_DISK_1  
  56. channel ORA_DISK_1: SID=127 device type=DISK  
  57. allocated channel: ORA_DISK_2  
  58. channel ORA_DISK_2: SID=191 device type=DISK  
  59. allocated channel: ORA_DISK_3  
  60. channel ORA_DISK_3: SID=157 device type=DISK  
  61. channel ORA_DISK_1: starting datafile copy  
  62. input datafile file number=00003 name=/u01/app/oracle/oradata/test0924/tbsasmmig01.dbf  
  63. output file name=+DATA/test0924/datafile/tbsasmmig.264.830538365 tag=TAG20131103T170603 RECID=13 STAMP=830538366  
  64. channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07  
  65. Finished backup at 03-NOV-13  
  66.   
  67. Starting Control File and SPFILE Autobackup at 03-NOV-13  
  68. piece handle=/u01/app/oracle/fast_recovery_area/TEST0924/autobackup/2013_11_03/o1_mf_s_830538370_97fl6mr9_.bkp comment=NONE  
  69. Finished Control File and SPFILE Autobackup at 03-NOV-13  
  70.   
  71. RMAN> switch datafile 3 to copy;  
  72.   
  73. datafile 3 switched to datafile copy "+DATA/test0924/datafile/tbsasmmig.264.830538365"  
  74.   
  75. RMAN> recover datafile 3;  
  76.   
  77. Starting recover at 03-NOV-13  
  78. using channel ORA_DISK_1  
  79. using channel ORA_DISK_2  
  80. using channel ORA_DISK_3  
  81.   
  82. starting media recovery  
  83. media recovery complete, elapsed time: 00:00:00  
  84.   
  85. Finished recover at 03-NOV-13  
  86.   
  87. RMAN> sql 'alter database datafile 3 online';  
  88.   
  89. sql statement: alter database datafile 3 online  
  90.   
  91.   
  92. sys@TEST0924> select file_id,file_name,tablespace_name from dba_data_files;  
  93.   
  94.    FILE_ID FILE_NAME                                          TABLESPACE_NAME  
  95. ---------- -------------------------------------------------- ------------------------------  
  96.          4 /u01/app/oracle/oradata/test0924/users01.dbf       USERS  
  97.          3 +DATA/test0924/datafile/tbsasmmig.264.830538365    TBSASMMIG  
  98.          2 /u01/app/oracle/oradata/test0924/sysaux01.dbf      SYSAUX  
  99.          1 /u01/app/oracle/oradata/test0924/system01.dbf      SYSTEM  
  100.          5 /u01/app/oracle/oradata/test0924/example01.dbf     EXAMPLE  
  101.          9 /u01/app/oracle/oradata/test0924/undotbs01.dbf     UNDOTBS1  
  102.   
  103. rows selected.  
  104.   
  105. sys@TEST0924> select * from t2  
  106.   2  ;  
  107.   
  108.         ID NAME  
  109. ---------- --------------------  
  110.          1 a1  


 


另一种转换方法:

    1. RMAN> backup tablespace users;  
    2.   
    3. Starting backup at 24-OCT-13  
    4. using target database control file instead of recovery catalog  
    5. allocated channel: ORA_DISK_1  
    6. channel ORA_DISK_1: SID=163 device type=DISK  
    7. allocated channel: ORA_DISK_2  
    8. channel ORA_DISK_2: SID=226 device type=DISK  
    9. allocated channel: ORA_DISK_3  
    10. channel ORA_DISK_3: SID=9 device type=DISK  
    11. channel ORA_DISK_1: starting full datafile backup set  
    12. channel ORA_DISK_1: specifying datafile(s) in backup set  
    13. input datafile file number=00004 name=/u01/app/oracle/oradata/test0924/users01.dbf  
    14. channel ORA_DISK_1: starting piece 1 at 24-OCT-13  
    15. channel ORA_DISK_1: finished piece 1 at 24-OCT-13  
    16. piece handle=/u01/app/oracle/fast_recovery_area/TEST0924/backupset/2013_10_24/o1_mf_nnndf_TAG20131024T101748_96lc0dxh_.bkp tag=TAG20131024T101748 comment=NONE  
    17. channel ORA_DISK_1: backup set complete, elapsed time: 00:00:07  
    18. Finished backup at 24-OCT-13  
    19.   
    20. Starting Control File and SPFILE Autobackup at 24-OCT-13  
    21. piece handle=/u01/app/oracle/fast_recovery_area/TEST0924/autobackup/2013_10_24/o1_mf_s_829649875_96lc0obm_.bkp comment=NONE  
    22. Finished Control File and SPFILE Autobackup at 24-OCT-13  
    23.   
    24. RMAN> run  
    25. 2> {sql 'alter tablespace users offline immediate';  
    26. 3> set newname for datafile 4 to '+DATA';  
    27. 4> restore tablespace users;  
    28. 5> switch datafile 4;  
    29. 6> recover tablespace users;  
    30. 7> sql 'alter tablespace users online';  
    31. 8> }  
    32.   
    33. sql statement: alter tablespace users offline immediate  
    34.   
    35. executing command: SET NEWNAME  
    36.   
    37. Starting restore at 24-OCT-13  
    38. using channel ORA_DISK_1  
    39. using channel ORA_DISK_2  
    40. using channel ORA_DISK_3  
    41.   
    42. channel ORA_DISK_1: starting datafile backup set restore  
    43. channel ORA_DISK_1: specifying datafile(s) to restore from backup set  
    44. channel ORA_DISK_1: restoring datafile 00004 to +DATA  
    45. channel ORA_DISK_1: reading from backup piece /u01/app/oracle/fast_recovery_area/TEST0924/backupset/2013_10_24/o1_mf_nnndf_TAG20131024T101748_96lc0dxh_.bkp  
    46. channel ORA_DISK_1: piece handle=/u01/app/oracle/fast_recovery_area/TEST0924/backupset/2013_10_24/o1_mf_nnndf_TAG20131024T101748_96lc0dxh_.bkp tag=TAG20131024T101748  
    47. channel ORA_DISK_1: restored backup piece 1  
    48. channel ORA_DISK_1: restore complete, elapsed time: 00:00:07  
    49. Finished restore at 24-OCT-13  
    50.   
    51. datafile 4 switched to datafile copy  
    52. input datafile copy RECID=6 STAMP=829650049 file name=+DATA/test0924/datafile/users.260.829650045  
    53.   
    54. Starting recover at 24-OCT-13  
    55. using channel ORA_DISK_1  
    56. using channel ORA_DISK_2  
    57. using channel ORA_DISK_3  
    58.   
    59. starting media recovery  
    60. media recovery complete, elapsed time: 00:00:01  
    61.   
    62. Finished recover at 24-OCT-13  
    63.   
    64. sql statement: alter tablespace users online  
    65.   
    66.   
    67.   
    68. sys@TEST0924> select file_name from dba_data_files;  
    69.   
    70. FILE_NAME  
    71. ----------------------------------------------------------------------------------------------------  
    72. +DATA/test0924/datafile/users.260.829650045  
    73. /u01/app/oracle/oradata/test0924/sysaux01.dbf  
    74. /u01/app/oracle/oradata/test0924/system01.dbf  
    75. /u01/app/oracle/oradata/test0924/example01.dbf  
    76. /u01/app/oracle/oradata/test0924/undotbs02.dbf  
    77. /u01/app/oracle/oradata/test0924/undotbs01.dbf  
    78. /u01/app/oracle/oradata/test0924/inventory01.dbf  
    79.   
    80. rows selected.  

来源:http://blog.csdn.net/rlhua/article/details/14107309

原文地址:https://www.cnblogs.com/gispf/p/3770773.html