Oracle-RAC中误建本地数据文件问题处理

概述

  1. 对数据库服务器管理操作不规范,容易被非专业技术人员,特别是对RAC不熟悉人员,在添加数据文件或创建表空间时,往往容易创建数据文件到本节点主机上,此时仅能被当前节点访问
  2. 认为不小心添加的数据文件漏写+号,导致自动创建到dbs目录上

处理过程

非系统表空间本地数据文件(归档模式)

可以不停库处理

确定本地数据文件编号

col file_name for a80
col tablespace_name for a32
select file_name,file_id,ONLINE_STATUS,tablespace_name from dba_data_files;

将本地数据文件offline处理

将本地数据文件OFFLINE,或可以将整个表空间OFFLINE。这里假设本地数据文件号为11

alter database datafile 11 offline;

拷贝本地磁盘文件到ASM

asmcmd方式
asmcmd
cd +DATA/orcl/datafile
cp /oradata/orcl/datafile/test01.dbf .
rman方式
rman target /
copy datafile 11 to '+DATA'

rename数据文件

-- sqlplus "/ as sysdba"
alter database rename file '/oradata/orcl/datafile/test01.dbf' to '+data/orcl/datafile/test01.dbf';

-- 查看文件状态为RECOVER
select file_name,file_id,ONLINE_STATUS,tablespace_name from dba_data_files;

recover数据文件并online

sqlplus "/ as sysdba"
alter database recover datafile 11;
alter database datafile 11 online;
select file_name,file_id,ONLINE_STATUS,tablespace_name from dba_data_files;

非系统表空间本地数据文件(非归档模式)

将对应的表空间offline

非归档模式下单个数据文件在数据库OPEN状态下无法OFFLINE

alter tablespace test offline;

拷贝本地数据文件到ASM

rman target /
copy datafile 11 to '+data';

rename数据文件

-- sqlplus "/ as sysdba"
alter database rename file '/oradata/orcl/datafile/test01.dbf' to '+data/orcl/datafile/test01.dbf';

-- 查看文件状态为RECOVER
select file_name,file_id,ONLINE_STATUS,tablespace_name from dba_data_files;

将offline表空间修改为online

alter tablespace test online;

系统表空间(SYSTEM)本地数据文件

停数据库

shutdown immediate;

移动数据文件到ASM

asmcmd方式
asmcmd
cp 
rman方式
report schema;
backup as copy datafile 11 format '+data';
switch datafile 11 to copy;

数据库启动到mount状态

startup mount;

rename数据文件

-- sqlplus "/ as sysdba"
alter database rename file '/oradata/orcl/datafile/system02.dbf' to '+data/orcl/datafile/system02.dbf';

打开数据库

alter database open;

重启数据库

可能出现errors ORA-01516 or original error ORA-01157: cannot identify/lock data file错误,需要重启其它DB实例

shutdown immediate;
startup;

12C 环境可以在线移动数据文件

alter database move datafile 12 to '+data/O12C/datafile/test02.dbf';

不需区分系统表空间还是非系统表空间数据文件

附录

使用rman backup as copy方式

不需要执行rename数据文件

# sqlplus offline数据文件
alter database datafile 8 offline;

# rman 
report schema;
backup as copy datafile 8 format '+data';
switch datafile 8 to copy;

# sqlplus
recover datafile 8;
alter database datafile 8 online;

How to move a datafile from a file system to ASM (Doc ID 390274.1)

How to Move a Datafile from Filesystem to ASM Using ASMCMD CP Command. (Note 1610615.1)

上一篇:Oracle常用命令


下一篇:Linux shell 知识心得10 三剑客之awk