DB:Oracle 10.2.0.5
1. 迁移控制文件
点击(此处)折叠或打开
- SQL> alter system set control_files='+DATA' scope=spfile;
点击(此处)折叠或打开
-
srvctl stop database -d racdb -o immediate
- srvctl start database -d racdb -o nomount
点击(此处)折叠或打开
-
///dev/raw/raw13是原控制文件路径
- RMAN> restore controlfile from '/dev/raw/raw13';
点击(此处)折叠或打开
-
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
点击(此处)折叠或打开
-
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;
建议指定FRA(db_recovery_file_dest)
6. 迁移spfile
难度颇大,我做的时候发现仅仅迁移spfile后再更改init
当单实例使用常规方式启动,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
在open状态下,创建新的spfile
点击(此处)折叠或打开
-
#创建新的spfile
-
create pfile='/home/oracle/initracdb.ora' from spfile;
- create spfile='+DATA' from pfile='/home/oracle/initracdb.ora';
点击(此处)折叠或打开
-
找到新的spfile
-
export ORACLE_SID=+ASM2
-
asmcmd
-
-
ASMCMD> pwd
-
+DATA/RACDB/PARAMETERFILE
-
ASMCMD> ls
- spfile.271.902999477
点击(此处)折叠或打开
- mkalias +DATA/RACDB/PARAMETERFILE/spfile.271.902999477 +DATA/RACDB/spfileracdb.ora
点击(此处)折叠或打开
-
$ 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
点击(此处)折叠或打开
-
vi $ORACLE_HOME/dbs/initracdb[n].ora
-
- SPFILE='+DATA/RACDB/spfileracdb.ora'
重启数据库
点击(此处)折叠或打开
-
srvctl stop database -d racdb -o immediate
- srvctl start database -d racdb
点击(此处)折叠或打开
-
SQL> show parameter spfile;
-
-
NAME TYPE VALUE
-
------------------------------------ ----------- ------------------------------
- spfile string +DATA/racdb/spfileracdb.ora
完成!