迁移控制文件
-
SQL> alter system set control_files='+DATA' scope=spfile;
启动到nomount模式
-
srvctl stop database -d racdb -o immediate
-
srvctl start database -d racdb -o nomount
还原控制文件
-
///dev/raw/raw13是原控制文件路径
-
RMAN> restore controlfile from '/dev/raw/raw13';
启动到mount模式
-
srvctl stop database -d racdb -o immediate
-
srvctl start database -d racdb -o mount
2. 迁移数据文件
-
rman target /
-
RMAN> backup as copy database format='+DATA';
-
RMAN> switch database to copy; //切换数据文件
启动数据库
-
srvctl stop database -d racdb -o immediate
-
srvctl start database -d racdb
3. 迁移日志文件
-
alter database add logfile member '+DATA' to group 1;
-
alter database add logfile member '+DATA' to group 2;
-
alter database add logfile member '+DATA' to group 3;
-
alter database add logfile member '+DATA' to group 4;
-
-
//交替使用以下两条命令,删除旧的redo log
-
alter system switch logfile;
-
alter database drop logfile member '/dev/raw/raw16'
4. 迁移临时表空间
-
#新建临时表空间替换旧的
-
create temporary tablespace temp2 tempfile '+DATA' size 200M;
-
alter database default temporary tablespace temp2;
-
drop tablespace temp;
5. 归档日志迁移
建议指定FRA(db_recovery_file_dest)
6. 迁移spfile
难度颇大,我做的时候发现仅仅迁移spfile后再更改init
.ora中的spfile指向,无法奏效。具体表现为,
当单实例使用常规方式启动,spfile确实使用了新位置的spfile,但使用srvctl启动database,仍然使用原来的
spfile。原因是在创建database资源时,就已指定了spfile参数的路径。如下所示,
-
$ srvctl config database -d racdb -a
-
node1 racdb1 /u01/app/oracle/product/10.2.0/db_1
-
node2 racdb2 /u01/app/oracle/product/10.2.0/db_1
-
DB_UNIQUE_NAME: racdb
-
DB_NAME: racdb
-
ORACLE_HOME: /u01/app/oracle/product/10.2.0/db_1
-
SPFILE: /dev/raw/raw3
-
DOMAIN: null
-
DB_ROLE: null
-
START_OPTIONS: null
-
POLICY: AUTOMATIC
-
ENABLE FLAG: DB ENABLED
正确做法参考这篇文章(感谢作者):http://blog.csdn.net/evils798/article/details/18014645
在open状态下,创建新的spfile
-
#创建新的spfile
-
create pfile='/home/oracle/initracdb.ora' from spfile;
-
create spfile='+DATA' from pfile='/home/oracle/initracdb.ora';
定位到新的spfile
-
找到新的spfile
-
export ORACLE_SID=+ASM2
-
asmcmd
-
-
ASMCMD> pwd
-
+DATA/RACDB/PARAMETERFILE
-
ASMCMD> ls
-
spfile.271.902999477
可以在asmcmd中创建spfile的链接
-
mkalias +DATA/RACDB/PARAMETERFILE/spfile.271.902999477 +DATA/RACDB/spfileracdb.ora
修改RAC资源中的spfile参数
-
$ srvctl modify database -d racdb -p +DATA/RACDB/spfileracdb.ora
-
-
$ srvctl config database -d racdb -a
-
node1 racdb1 /u01/app/oracle/product/10.2.0/db_1
-
node2 racdb2 /u01/app/oracle/product/10.2.0/db_1
-
DB_UNIQUE_NAME: racdb
-
DB_NAME: racdb
-
ORACLE_HOME: /u01/app/oracle/product/10.2.0/db_1
-
SPFILE: +DATA/RACDB/spfileracdb.ora
-
DOMAIN: null
-
DB_ROLE: null
-
START_OPTIONS: null
-
POLICY: AUTOMATIC
-
ENABLE FLAG: DB ENABLED
分别在两节点上修改spfile路径
-
vi $ORACLE_HOME/dbs/initracdb[n].ora
-
-
SPFILE='+DATA/RACDB/spfileracdb.ora'
重启数据库
-
srvctl stop database -d racdb -o immediate
-
srvctl start database -d racdb
确认spfile路径
-
SQL> show parameter spfile;
-
-
NAME TYPE VALUE
-
------------------------------------ ----------- ------------------------------
-
spfile string +DATA/racdb/spfileracdb.ora
阅读(1563) | 评论(0) | 转发(0) |