ITPub博客

首页 > 数据库 > Oracle > 【RAC】RAC本地数据文件迁移至ASM的方法(3)

【RAC】RAC本地数据文件迁移至ASM的方法(3)

原创 Oracle 作者:xysoul_云龙 时间:2015-06-12 10:12:05 0 删除 编辑
一、         概述 

   目前在各个行业业务中存在大量的Oracle RAC环境,尤其对于中小型企业及一些管理不规范的环境中,对数据库的操作也就显得杂乱无章了,它不是核心系统,但有问题也够运维人员喝一壶的。下面说一个常见的问题,就是在RAC环境中,往往会遇到本地数据文件,也就是只能在一个节点访问,出现这样的状况,主要有两个原因,命名不规范,造成Oracle自动创建到DBS目录下,再个对RAC系统不了解,按照之前方式创建。那么在出现这个问题时怎么解决呢,下面我们简单学习一下。

二、操作过程
    
本次操作对象为非系统表空间,环境rhel6.3_x64+Oracle RAC11g
1
、 RAC为非归档模式,裸设备迁移到ASM。不停库,通过RMAN中copy命令,操作。
   
首先模拟环境,节点2操作:

SQL> alter tablespace firsoul add datafile '/dev/raw/raw9' size 40m;

 

Tablespace altered.

 

SQL> create table firsoul.test (id int,name varchar2(40));

 

Table created.

 

SQL> insert into firsoul.test values(1,'firsoul');

 

1 row created.

 

SQL> commit;

SQL> col file_name for a50

SQL> col tablespace_name for a10

SQL> select file_name,file_id,ONLINE_STATUS,tablespace_name from dba_data_files;

 

FILE_NAME                                             FILE_ID ONLINE_ TABLESPACE

-------------------------------------------------- ---------- ------- ----------

+DATA/racdb/datafile/system.293.859438573                   1 SYSTEM  SYSTEM

+DATA/racdb/datafile/sysaux.288.859438589                   2 ONLINE  SYSAUX

……………………

+DATA/racdb/datafile/firsoul.259.882071697                  7 ONLINE  FIRSOUL

/dev/raw/raw9                                               8 ONLINE  FIRSOUL

+DATA/racdb/datafile/firsoul01.dbf                         11 ONLINE  FIRSOUL


节点1,查看数据文件状态,信息

SQL> set lines 200

SQL> col file_name for a50

SQL> col tablespace_name for a10

SQL> select file_name,file_id,ONLINE_STATUS,tablespace_name from dba_data_files;

ERROR:

ORA-01157: cannot identify/lock data file 8 - see DBWR trace file

ORA-01110: data file 8: '/dev/raw/raw9'


将需要变更数据文件所属表空间OFFLINE,非归档模式下单个数据文件在数据库OPEN状态下无法OFFLINE。

SQL> alter database datafile 8 offline;

alter database datafile 8 offline

*

ERROR at line 1:

ORA-01145: offline immediate disallowed unless media recovery enabled

    SQL>alter tablespace firsoul offline;

 

Tablespace altered.
SQL> set lines 200

SQL> col file_name for a50

SQL> col tablespace_name for a10

SQL> select file_name,file_id,ONLINE_STATUS,tablespace_name from dba_data_files;

 

FILE_NAME                                             FILE_ID ONLINE_ TABLESPACE

-------------------------------------------------- ---------- ------- ----------

+DATA/racdb/datafile/system.293.859438573                   1 SYSTEM  SYSTEM

……………………

+DATA/racdb/datafile/firsoul.259.882071697                   7  OFFLINE   FIRSOUL

/dev/raw/raw9                                           8  OFFLINE   FIRSOUL

+DATA/racdb/datafile/firsoul01.dbf                         11   OFFLINE   FIRSOUL


通过RMAN CP命令拷贝数据文件

RMAN> copy datafile '/dev/raw/raw9' to '+DATA';

 

Starting backup at 2015-06-11 10:02:28

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=45 instance=racdb2 device type=DISK

channel ORA_DISK_1: starting datafile copy

input datafile file number=00008 name=/dev/raw/raw9

output file name=+DATA/racdb/datafile/firsoul.263.882093749 tag=TAG20150611T100229 RECID=2 STAMP=882093752

channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03

Finished backup at 2015-06-11 10:02:32


rename数据文件,并查看信息

SQL> alter database rename file '/dev/raw/raw9' to '+DATA/racdb/datafile/firsoul.263.882093749';

 

Database altered.

 

SQL> set lines 200

SQL> col file_name for a50

SQL> col tablespace_name for a10

SQL> select file_name,file_id,ONLINE_STATUS,tablespace_name from dba_data_files;

 

FILE_NAME                                             FILE_ID ONLINE_ TABLESPACE

-------------------------------------------------- ---------- ------- ----------

+DATA/racdb/datafile/system.293.859438573                   1 SYSTEM  SYSTEM

………………

+DATA/racdb/datafile/firsoul.259.882071697                  7 OFFLINE FIRSOUL

+DATA/racdb/datafile/firsoul.263.882093749                  8 OFFLINE FIRSOUL

+DATA/racdb/datafile/firsoul01.dbf                         11 OFFLINE FIRSOUL

 

我们可以看到,数据文件已移植到ASM中,下面将offline表空间修改为online。

SQL> alter tablespace firsoul online;

 

Tablespace altered.

 

SQL> set lines 200

SQL> col file_name for a50

SQL> col tablespace_name for a10

SQL> select file_name,file_id,ONLINE_STATUS,tablespace_name from dba_data_files;

 

FILE_NAME                                             FILE_ID ONLINE_ TABLESPACE

-------------------------------------------------- ---------- ------- ----------

+DATA/racdb/datafile/system.293.859438573                   1 SYSTEM  SYSTEM

……

+DATA/racdb/datafile/firsoul.259.882071697                  7 ONLINE  FIRSOUL

+DATA/racdb/datafile/firsoul.263.882093749                  8 ONLINE  FIRSOUL

+DATA/racdb/datafile/firsoul01.dbf                         11 ONLINE  FIRSOUL

两个节点查看,都正常。
附:SYSTEM数据文件移植步骤(过程说明):

1. Stop DB.
2. Move the datafile using asmcmd.
3. Mount the DB.
4. Rename the datafile.
5. Open the DB.
6. On other RAC nodes you still need to bounce the database because it is SYSTEM tablespace, otherwise you will keep getting errors ORA-01516 or original error ORA-01157: cannot identify/lock data file.

 

三、         总结
  
在Oracle RAC操作过程中,我们更需要严谨,对于非系统表空间可以不用启停数据库,不过需要查看数据库系统是是否归档模式,数据库版本,选择更合理的迁移方式。对于系统数据文件则需要数据库为MOUNT状态进行操作,并且其他恢复完成且需要其他节点实例重启。Oracle11g ascmd中有cp命令,相对更简单一点,在Oracle10g RAC方式下,需要通过rman copy命令进行文件复制,总之,我们需要根据现场环境做出更合理的方式进行操作。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29487349/viewspace-1696511/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
主要从事Oracle数据库 DBA相关工作,其他操作系统、中间件等也有涉及,热衷分享。岁月老将至,如有幸在江湖中留点踪迹,也是欣慰。 【文盲筱烨】好读书爱运动的IT技术爱好者 微博:文盲筱烨 微信公众号:筱烨视点

注册时间:2014-02-15

  • 博文量
    412
  • 访问量
    1104610