Welcome 微信登录

首页 / 数据库 / MySQL / RAC本地数据文件迁移至ASM的方法

一、        概述
  目前在各个行业业务中存在大量的Oracle RAC环境,尤其对于中小型企业及一些管理不规范的环境中,对数据库的操作也就显得杂乱无章了,它不是核心系统,但有问题也够运维人员喝一壶的。下面说一个常见的问题,就是在RAC环境中,往往会遇到本地数据文件,也就是只能在一个节点访问,出现这样的状况,主要有两个原因,命名不规范,造成Oracle自动创建到DBS目录下,再个对RAC系统不了解,按照之前方式创建。那么在出现这个问题时怎么解决呢,下面我们简单学习一下。二、操作过程
    本次操作对象为非系统表空间,环境rhel6.3_x64+Oracle RAC11g
 1、 RAC为归档模式,不停库,通过Oracle11g asmcmd 中cp命令,操作。
    首先模拟环境:SQL> create tablespace firsoul datafile "firsoul01.dbf" size 10m;Tablespace created.SQL> select file_name from dba_data_files;FILE_NAME--------------------------------------------------------------------------------+DATA/racdb/datafile/system.293.859438573………………………………
/oracle/app/oracle/product/11.2.0/dbs/firsoul01.dbf
 节点1,查看数据文件状态、信息SQL> set lines 150                                                                       SQL> col file_name for a55                                                               SQL> select file_name,file_id,ONLINE_STATUS,tablespace_name from dba_data_files;                                                                                                FILE_NAME                                              FILE_ID ONLINE_ TABLESPACE_NAME   -------------------------------------------------------------- ------- ---------------- +DATA/racdb/datafile/system.293.859438573                    1 SYSTEM  SYSTEM           +DATA/racdb/datafile/sysaux.288.859438589                    2 ONLINE  SYSAUX           +DATA/racdb/datafile/undotbs1.287.859438601                  3 ONLINE  UNDOTBS1         +DATA/racdb/datafile/undotbs2.285.859438615                  4 ONLINE  UNDOTBS2         +DATA/racdb/datafile/users.278.859438619                    5 ONLINE  USERS             +DATA/racdb/datafile/test1.261.859451689                    6 ONLINE  TEST1             /oracle/app/oracle/product/11.2.0/dbs/firsoul01.dbf        11 ONLINE  FIRSOUL           
 
节点2,查看数据文件状态,信息SQL> set lines 200SQL> col file_name for a50SQL> col tablespace_name for a10SQL> select file_name,file_id,ONLINE_STATUS,tablespace_name from dba_data_files;ERROR:ORA-01157: cannot identify/lock data file 11 - see DBWR trace fileORA-01110: data file 11: "/oracle/app/oracle/product/11.2.0/dbs/firsoul01.dbf "
 
将本地数据文件OFFLINE,或可以将整个表空间OFFLINESQL> alter database datafile 11 offline;Database altered.
 
通过ASMCMD CP命令拷贝数据文件ASMCMD> cp /oracle/app/oracle/product/11.2.0/dbs/firsoul01.dbf .copying /oracle/app/oracle/product/11.2.0/dbs/firsoul01.dbf -> +data/racdb/datafile/firsoul01.dbfASMCMD> ls -lrtWARNING:option "r" is deprecated for "ls"please use "reverse"Type      Redund  Striped  Time            Sys  Name                                            N    firsoul01.dbf => +DATA/ASM/DATAFILE/firsoul01.dbf.260.882071123DATAFILE  UNPROT  COARSE  JUN 11 09:00:00  Y    SYSAUX.288.859438589DATAFILE  UNPROT  COARSE  JUN 11 09:00:00  Y    SYSTEM.293.859438573DATAFILE  UNPROT  COARSE  JUN 11 09:00:00  Y    TEST1.261.859451689DATAFILE  UNPROT  COARSE  JUN 11 09:00:00  Y    UNDOTBS1.287.859438601DATAFILE  UNPROT  COARSE  JUN 11 09:00:00  Y    UNDOTBS2.285.859438615DATAFILE  UNPROT  COARSE  JUN 11 09:00:00  Y    USERS.278.859438619
 
rename数据文件,并查看信息SQL> alter database rename file "/oracle/app/oracle/product/11.2.0/dbs/firsoul01.dbf" to "+data/racdb/datafile/firsoul01.dbf"; Database altered.
 SQL> select file_name,file_id,ONLINE_STATUS,tablespace_name from dba_data_files  2  ;FILE_NAME                                                  FILE_ID ONLINE_ TABLESPACE_NAME------------------------------------------------------- ---------- ------- ------------------------------+DATA/racdb/datafile/system.293.859438573                        1 SYSTEM  SYSTEM+DATA/racdb/datafile/sysaux.288.859438589                        2 ONLINE  SYSAUX……………………+DATA/racdb/datafile/firsoul01.dbf                              11 RECOVER FIRSOUL
 我们可以看到,数据文件已移植到ASM中,但需要recover。SQL> alter database datafile 11 online;alter database datafile 11 online*ERROR at line 1:ORA-01113: file 11 needs media recoveryORA-01110: data file 11: "+DATA/racdb/datafile/firsoul01.dbf"
 
recover数据文件,再次将数据文件onlineSQL> recover datafile  11;Media recovery complete.SQL> alter database datafile 11 online;Database altered.SQL> set lines 150SQL> col file_name for a55SQL> select file_name,file_id,ONLINE_STATUS,tablespace_name from dba_data_files;FILE_NAME                                                  FILE_ID ONLINE_ TABLESPACE_NAME------------------------------------------------------- ---------- ------- ------------------------------+DATA/racdb/datafile/system.293.859438573                        1 SYSTEM  SYSTEM+DATA/racdb/datafile/sysaux.288.859438589                        2 ONLINE  SYSAUX…………
+DATA/racdb/datafile/firsoul01.dbf                              11 ONLINE  FIRSOUL
 
两个节点查看,都正常。三、        总结
  在Oracle RAC操作过程中,我们更需要严谨,对于非系统表空间可以不用启停数据库,不过需要查看数据库系统是是否归档模式,数据库版本,选择更合理的迁移方式。如何将ASM中的数据文件复制到操作系统中 http://www.linuxidc.com/Linux/2013-08/88418.htmOracle 11g RAC ASM磁盘全部丢失后的恢复 http://www.linuxidc.com/Linux/2013-07/87000.htmOracle 11g从入门到精通 PDF+光盘源代码 http://www.linuxidc.com/Linux/2013-06/85670.htmRHEL6 ASM方式安装Oracle 11g R2 http://www.linuxidc.com/Linux/2013-06/86002.htmOracle 10g 手工创建ASM数据库 http://www.linuxidc.com/Linux/2013-01/78229.htmOracle 10g R2创建ASM实例Step By Step http://www.linuxidc.com/Linux/2014-05/101821.htm更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12本文永久更新链接地址