Oracle RAC 将误创建在本地的数据文件移动到ASM

一、普通表空间

1.RMAN方式

需要数据库处于归档模式,且在移动过程中该表空间无法正常访问。

1.1 创建测试表空间

SQL> create tablespace T1 datafile '/home/oracle/T101.dbf' size 20m;

Tablespace created.

1.2 查看要移动数据文件的大小

SQL> set line 200
SQL> col file_name for a50
SQL> select file_id,file_name,bytes/1024/1024 as MB,online_status from dba_data_files;

 FILE_ID    FILE_NAME						                  MB     ONLINE_STATUS
---------- ---------------------------------------------- ---------- -------------
	 4     +DATA/orcl/datafile/users.259.1106062905		        5       ONLINE
	 3     +DATA/orcl/datafile/undotbs1.258.1106062905		  350       ONLINE
	 2     +DATA/orcl/datafile/sysaux.257.1106062905		 2050       ONLINE
	 1     +DATA/orcl/datafile/system.256.1106062903		  750       SYSTEM
	 5     +DATA/orcl/datafile/undotbs2.265.1106063315		  225       ONLINE
	 6     /home/oracle/T101.dbf                               20       ONLINE

这里要移动的数据文件是/home/oracle/T101.dbf,FILE_ID为6,大小为20M,检查+DATA的剩余空间是否满足。

1.3 移动数据文件到ASM

RMAN> copy datafile 6 to '+DATA/orcl/datafile/T101.dbf';

1.4 表空间开始无法访问

RMAN> sql 'alter database datafile 6 offline';

sql statement: alter database datafile 6 offline

1.5 切换数据文件

RMAN> switch datafile 6 to copy;

datafile 6 switched to datafile copy "+DATA/orcl/datafile/T101.dbf"

RMAN> recover datafile 6;

1.6 表空间恢复正常访问

RMAN> sql 'alter database datafile 6 online';

sql statement: alter database datafile 6 online

2.rename datafile方式

2.1 创建测试表空间

SQL> create tablespace T2 datafile '/home/oracle/T201.dbf' size 20m;

Tablespace created.

2.2 查看要移动数据文件的大小

SQL> set line 200
SQL> col file_name for a50
SQL> select file_id,file_name,bytes/1024/1024 as MB,online_status from dba_data_files;

 FILE_ID    FILE_NAME						                  MB     ONLINE_STATUS
---------- ---------------------------------------------- ---------- -------------
	 4     +DATA/orcl/datafile/users.259.1106062905		        5       ONLINE
	 3     +DATA/orcl/datafile/undotbs1.258.1106062905		  350       ONLINE
	 2     +DATA/orcl/datafile/sysaux.257.1106062905		 2050       ONLINE
	 1     +DATA/orcl/datafile/system.256.1106062903		  750       SYSTEM
	 5     +DATA/orcl/datafile/undotbs2.265.1106063315		  225       ONLINE
	 6     /home/oracle/T201.dbf                               20       ONLINE

2.3 将本地数据文件offline

SQL> alter database datafile 6 offline;

Database altered.

2.4 拷贝数据文件到ASM

ASMCMD> cp /home/oracle/T201.dbf +data/orcl/datafile/
copying /home/oracle/T201.dbf -> +data/orcl/datafile/T201.dbf

2.5 rename数据文件

SQL> alter database rename file'/home/oracle/T201.dbf' to '+DATA/orcl/datafile/T201.dbf';

Database altered.

SQL> select file_id,file_name,bytes/1024/1024 as MB,online_status from dba_data_files;

 FILE_ID    FILE_NAME						                  MB     ONLINE_STATUS
---------- ---------------------------------------------- ---------- -------------
	 4     +DATA/orcl/datafile/users.259.1106062905		        5       ONLINE
	 3     +DATA/orcl/datafile/undotbs1.258.1106062905		  350       ONLINE
	 2     +DATA/orcl/datafile/sysaux.257.1106062905		 2050       ONLINE
	 1     +DATA/orcl/datafile/system.256.1106062903		  750       SYSTEM
	 5     +DATA/orcl/datafile/undotbs2.265.1106063315		  225       ONLINE
	 6     +DATA/orcl/datafile/T201.dbf                                RECOVER

SQL> recover datafile 6;

Media recovery complete.

SQL> alter database datafile 6 online;

Database altered.

二、SYSTEM表空间

归档模式和非归档模式都可以,需要将数据库启动到mount状态。然后关闭RAC所有节点相关实例。
因为system数据文件不能再open状态下进行操作,因为不能够将system数据文件offline。

1.归档模式

2.1 创建测试表空间数据文件

SQL> alter tablespace system add datafile '/home/oracle/system02.dbf' size 20m;

2.2 关闭RAC所有节点相关实例

SQL> shutdown immediate

2.3 启动数据文件所在节点的实例到mount

SQL> startup mount

2.4 通过RMAN COPY的方式移动

RMAN> copy datafile 7 to '+DATA/orcl/datafile/system02.dbf';

RMAN> switch datafile 7 to copy;

datafile 7 switched to datafile copy "+DATA/orcl/datafile/system02.dbf"

RMAN> alter database open;

启动所有实例,恢复正常使用。

2.非归档模式

非归档模式下,当数据库处于open状态时,是无法进行rman copy的。
system文件也不能offline。
因此只能通过rename datafile的方式进行操作。

2.1 关闭所有实例,使用asmcmd cp命令创建数据文件副本

ASMCMD> cp /home/oracle/system02.dbf +data/orcl/datafile/

2.2 启动1个实例到mount状态,修改数据文件名称

SQL> alter database rename file'/home/oracle/system02.dbf' to '+DATA/orcl/datafile/system02.dbf';

2.3 打开实例

SQL> alert database open;

之后,启动其他节点实例。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值