您好,欢迎访问一九零五行业门户网

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

由于asm 文件无法通过正常的操作系统界面访问,因此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 存储中。完成操作后,请检查移植是否成功,并且该表空间中的表是否保持原样。
sys@test0924> select  file_name,tablespace_name from dba_data_files;
file_name                                          tablespace_name
-------------------------------------------------- ------------------------------
/u01/app/oracle/oradata/test0924/users01.dbf      users
/u01/app/oracle/oradata/test0924/sysaux01.dbf      sysaux
/u01/app/oracle/oradata/test0924/system01.dbf      system
/u01/app/oracle/oradata/test0924/example01.dbf    example
/u01/app/oracle/oradata/test0924/undotbs01.dbf    undotbs1
sys@test0924> create tablespace tbsasmmig datafile '/u01/app/oracle/oradata/test0924/tbsasmmig01.dbf' size 10m;
tablespace created.
sys@test0924> create table t2 (id number,name varchar2(20)) tablespace tbsasmmig;
table created.
sys@test0924> insert into t2 values (1,'a1');
1 row created.
sys@test0924> commit;
commit complete.
sys@test0924> select file_id,file_name,tablespace_name from dba_data_files;
  file_id file_name                                          tablespace_name
---------- -------------------------------------------------- ------------------------------
        4 /u01/app/oracle/oradata/test0924/users01.dbf      users
        3 /u01/app/oracle/oradata/test0924/tbsasmmig01.dbf  tbsasmmig
        2 /u01/app/oracle/oradata/test0924/sysaux01.dbf      sysaux
        1 /u01/app/oracle/oradata/test0924/system01.dbf      system
        5 /u01/app/oracle/oradata/test0924/example01.dbf    example
        9 /u01/app/oracle/oradata/test0924/undotbs01.dbf    undotbs1
6 rows selected.
[oracle@rtest ~]$ rman target /
recovery manager: release 11.2.0.3.0 - production on sun nov 3 17:02:51 2013
copyright (c) 1982, 2011, oracle and/or its affiliates.  all rights reserved.
connected to target database: test0924 (dbid=2720875862)
rman> sql 'alter database datafile 3 offline';
sql statement: alter database datafile 3 offline
rman> backup as copy datafile 3 format '+data';
starting backup at 03-nov-13
allocated channel: ora_disk_1
channel ora_disk_1: sid=127 device type=disk
allocated channel: ora_disk_2
channel ora_disk_2: sid=191 device type=disk
allocated channel: ora_disk_3
channel ora_disk_3: sid=157 device type=disk
channel ora_disk_1: starting datafile copy
input datafile file number=00003 name=/u01/app/oracle/oradata/test0924/tbsasmmig01.dbf
output file name=+data/test0924/datafile/tbsasmmig.264.830538365 tag=tag20131103t170603 recid=13 stamp=830538366
channel ora_disk_1: datafile copy complete, elapsed time: 00:00:07
finished backup at 03-nov-13
其它类似信息

推荐信息