oracle数据文件迁移

当新挂载上去磁盘到asm里面,也建了新的asm磁盘组,想把一些数据迁移到新的asm磁盘组上面。

下面就是将一些表空间迁移到新的asm磁盘的过程及步骤

迁移准备

1、通过select语句拼接rman copy的语句:
select 'copy datafile '''||file_name||''' to ''+data_dg/milk/datafile/'||tablespace_name||rownum||'.dbf'';' from dba_data_files where tablespace_NAME in('MILK');
2、通过select语句拼接datafile rename的语句
select 'alter database rename file '''||file_name||''''||' to '||'''+data_dg/milk/datafile/'||tablespace_name||rownum||'.dbf'||''''||';',file_id from dba_data_files where tablespace_NAME in('MILK');
保存上面两条语句的输出
脚本准备
1、将第一条语句的输出结果替代下面的copy datafile部分,并根据自己的环境更改相关变量
[oracle@milkrac1 ~]$ cat milk.sh
#!/bin/ksh
#!/bin/sh
if [ -f ~/.bash_profile ];
then
  . ~/.bash_profile
fi
export LANG=en_US
export ORACLE_HOME
RMAN=$ORACLE_HOME/bin/rman
RMAN_LOG_FILE=/home/oracle/1.txt
export RMAN
ORACLE_SID=milk1
export ORACLE_SID
ORACLE_USER=oracle
export ORACLE_USER 
chmod 666 $RMAN_LOG_FILE
$RMAN nocatalog TARGET / msglog$RMAN_LOG_FILE append < run
{
allocate channel c1 type disk;
allocate channel c2 type disk;
copy datafile '+VOT_DATA/milk/datafile/milk.257.959209603' to '+data_dg/milk/milk1.dbf';
copy datafile '+VOT_DATA/milk/datafile/milk.264.959209603' to '+data_dg/milk/milk2.dbf';
copy datafile '+VOT_DATA/milk/datafile/milk.265.959209601' to '+data_dg/milk/milk3.dbf';
copy datafile '+VOT_DATA/milk/datafile/milk.256.959209601' to '+data_dg/milk/milk4.dbf';
copy datafile '+VOT_DATA/milk/datafile/milk.266.959209963' to '+data_dg/milk/milk4.dbf';
release channel c2;
release channel c1;
}
EOF
echo >> $RMAN_LOG_FILE
exit

添加可执行权限

chmod 777 milk.sh

操作流程

1、然后关闭所有节点的数据库
su - grid
srvctl stop database -d milk
2、将节点1的实例起到mout状态
su - grid
srvctl start database -d milk -o mount
3、通过RMAN COPY相关数据文件
sh milk.sh
数据库里rename数据文件
su - oracle
sqlplus / as sysdba

alter database rename file '+VOT_DATA/milk/datafile/milk.257.959209603' to '+data_dg/milk/milk1.dbf';
alter database rename file '+VOT_DATA/milk/datafile/milk.264.959209603' to '+data_dg/milk/milk2.dbf';
alter database rename file '+VOT_DATA/milk/datafile/milk.265.959209601' to '+data_dg/milk/milk3.dbf';
alter database rename file '+VOT_DATA/milk/datafile/milk.256.959209601' to '+data_dg/milk/milk4.dbf';

alter database rename file '+VOT_DATA/milk/datafile/milk.266.959209963' to '+data_dg/milk/milk5.dbf';

4、并将数据库open
alter databasse open;

5、最后将其他数据库节点都拉起

重点::::::::

以上是针对12cR1及之前的版本,对于12cR2都可以在线迁移了啦啦啦啦啦啦啦啦啦


你可能感兴趣的:(oracle)