Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3396665
  • 博文数量: 631
  • 博客积分: 10716
  • 博客等级: 上将
  • 技术积分: 8397
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-01 22:35
文章分类

全部博文(631)

文章存档

2020年(2)

2019年(22)

2018年(4)

2017年(37)

2016年(22)

2015年(1)

2013年(12)

2012年(20)

2011年(19)

2010年(20)

2009年(282)

2008年(190)

分类: Oracle

2017-01-09 11:17:33

迁移控制文件

点击(此处)折叠或打开

  1. SQL> alter system set control_files='+DATA' scope=spfile;
启动到nomount模式

点击(此处)折叠或打开

  1. srvctl stop database -d racdb -o immediate
  2. srvctl start database -d racdb -o nomount
还原控制文件

点击(此处)折叠或打开

  1. ///dev/raw/raw13是原控制文件路径
  2. RMAN> restore controlfile from '/dev/raw/raw13';
启动到mount模式

点击(此处)折叠或打开

  1. srvctl stop database -d racdb -o immediate
  2. srvctl start database -d racdb -o mount

2. 迁移数据文件

点击(此处)折叠或打开

  1. rman target /
  2. RMAN> backup as copy database format='+DATA';
  3. RMAN> switch database to copy; //切换数据文件
启动数据库

点击(此处)折叠或打开

  1. srvctl stop database -d racdb -o immediate
  2. srvctl start database -d racdb
3. 迁移日志文件

点击(此处)折叠或打开

  1. alter database add logfile member '+DATA' to group 1;
  2. alter database add logfile member '+DATA' to group 2;
  3. alter database add logfile member '+DATA' to group 3;
  4. alter database add logfile member '+DATA' to group 4;

  5. //交替使用以下两条命令,删除旧的redo log
  6. alter system switch logfile;
  7. alter database drop logfile member '/dev/raw/raw16'

4. 迁移临时表空间

点击(此处)折叠或打开

  1. #新建临时表空间替换旧的
  2. create temporary tablespace temp2 tempfile '+DATA' size 200M;
  3. alter database default temporary tablespace temp2;
  4. drop tablespace temp;
5. 归档日志迁移

建议指定FRA(db_recovery_file_dest)

6. 迁移spfile

难度颇大,我做的时候发现仅仅迁移spfile后再更改init.ora中的spfile指向,无法奏效。具体表现为,
当单实例使用常规方式启动,spfile确实使用了新位置的spfile,但使用srvctl启动database,仍然使用原来的
spfile。原因是在创建database资源时,就已指定了spfile参数的路径。如下所示,


点击(此处)折叠或打开

  1. $ srvctl config database -d racdb -a
  2. node1 racdb1 /u01/app/oracle/product/10.2.0/db_1
  3. node2 racdb2 /u01/app/oracle/product/10.2.0/db_1
  4. DB_UNIQUE_NAME: racdb
  5. DB_NAME: racdb
  6. ORACLE_HOME: /u01/app/oracle/product/10.2.0/db_1
  7. SPFILE: /dev/raw/raw3
  8. DOMAIN: null
  9. DB_ROLE: null
  10. START_OPTIONS: null
  11. POLICY: AUTOMATIC
  12. ENABLE FLAG: DB ENABLED
正确做法参考这篇文章(感谢作者):http://blog.csdn.net/evils798/article/details/18014645

在open状态下,创建新的spfile

点击(此处)折叠或打开

  1. #创建新的spfile
  2. create pfile='/home/oracle/initracdb.ora' from spfile;
  3. create spfile='+DATA' from pfile='/home/oracle/initracdb.ora';
定位到新的spfile

点击(此处)折叠或打开

  1. 找到新的spfile
  2. export ORACLE_SID=+ASM2
  3. asmcmd

  4. ASMCMD> pwd
  5. +DATA/RACDB/PARAMETERFILE
  6. ASMCMD> ls
  7. spfile.271.902999477
可以在asmcmd中创建spfile的链接

点击(此处)折叠或打开

  1. mkalias +DATA/RACDB/PARAMETERFILE/spfile.271.902999477 +DATA/RACDB/spfileracdb.ora
修改RAC资源中的spfile参数

点击(此处)折叠或打开

  1. $ srvctl modify database -d racdb -p +DATA/RACDB/spfileracdb.ora

  2. $ srvctl config database -d racdb -a
  3. node1 racdb1 /u01/app/oracle/product/10.2.0/db_1
  4. node2 racdb2 /u01/app/oracle/product/10.2.0/db_1
  5. DB_UNIQUE_NAME: racdb
  6. DB_NAME: racdb
  7. ORACLE_HOME: /u01/app/oracle/product/10.2.0/db_1
  8. SPFILE: +DATA/RACDB/spfileracdb.ora
  9. DOMAIN: null
  10. DB_ROLE: null
  11. START_OPTIONS: null
  12. POLICY: AUTOMATIC
  13. ENABLE FLAG: DB ENABLED
分别在两节点上修改spfile路径


点击(此处)折叠或打开

  1. vi $ORACLE_HOME/dbs/initracdb[n].ora

  2. SPFILE='+DATA/RACDB/spfileracdb.ora'

重启数据库

点击(此处)折叠或打开

  1. srvctl stop database -d racdb -o immediate
  2. srvctl start database -d racdb
确认spfile路径


点击(此处)折叠或打开

  1. SQL> show parameter spfile;

  2. NAME TYPE VALUE
  3. ------------------------------------ ----------- ------------------------------
  4. spfile string +DATA/racdb/spfileracdb.ora
阅读(1563) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~