使用11G的方式修改12C数据文件路径

环境:

OS:Centos 7

DB:12.2.0.1

从12C之后我们可以使用如下方式在线迁移数据文件
alter database move datafile '/path/A' to '/path/B'
但是使用原11G之前的方法迁移也是可以的,迁移例子如下,system文件比较特殊,需要关闭pdb,其他的数据文件offline即可

 

1.迁移系统文件system01

##查看数据文件

SQL> select file#,name from v$datafile;
 
        18 /u01/app/oracle/oradata/slnngk/pdb02/SLNNGK/F4536337D4BF5829E055CEFFD4D56E1F/datafile/o1_mf_system_kycz8o2p_.dbf
        19 /u01/app/oracle/oradata/slnngk/pdb02/SLNNGK/F4536337D4BF5829E055CEFFD4D56E1F/datafile/o1_mf_sysaux_kycz8o2s_.dbf
        20 /u01/app/oracle/oradata/slnngk/pdb02/SLNNGK/F4536337D4BF5829E055CEFFD4D56E1F/datafile/o1_mf_undotbs1_kycz8o2s_.dbf

 

##关闭pdb
SQL> alter session set container=pdb02;
SQL> shutdown immediate
Pluggable Database closed.

 

##拷贝文件到新目录
RMAN>copy datafile 18 to '/u01/app/oracle/oradata/slnngk/pdb02/system01.dbf';

 

##更新控制文件(sql模式下执行)
SQL> alter database rename file '/u01/app/oracle/oradata/slnngk/pdb02/SLNNGK/F4536337D4BF5829E055CEFFD4D56E1F/datafile/o1_mf_system_kycz8o2p_.dbf' to '/u01/app/oracle/oradata/slnngk/pdb02/system01.dbf';

 

##恢复文件
RMAN>recover datafile 18;

##启动数据库
SQL> alter session set container=pdb02;
SQL> startup
Pluggable Database opened.

 

2.普通文件sysaux01
##数据文件offline
SQL> alter session set container=pdb02;
SQL> alter database datafile 19 offline;
##拷贝数据文件
RMAN>copy datafile 19 to '/u01/app/oracle/oradata/slnngk/pdb02/sysaux01.dbf';
##这个时候数据库控制文件字典信息还没有修改,需要执行如下命令修改控制文件信息
RMAN> switch datafile 19 to copy;
datafile 19 switched to datafile copy "/u01/app/oracle/oradata/slnngk/pdb02/sysaux01.dbf
##这个时候查询数据字典,发现数据文件已经改变

SQL> select file#,name from v$datafile;

     FILE# NAME
---------- ------------------------------------------------------------------------------------------------------------------------
        18 /u01/app/oracle/oradata/slnngk/pdb02/system01.dbf
        19 /u01/app/oracle/oradata/slnngk/pdb02/sysaux01.dbf
        20 /u01/app/oracle/oradata/slnngk/pdb02/SLNNGK/F4536337D4BF5829E055CEFFD4D56E1F/datafile/o1_mf_undotbs1_kycz8o2s_.dbf

##或者使用rename的方式更新控制文件
SQL> alter database rename file '/u01/app/oracle/oradata/slnngk/pdb02/SLNNGK/F4536337D4BF5829E055CEFFD4D56E1F/datafile/o1_mf_sysaux_kycz8o2s_.dbf' to '/u01/app/oracle/oradata/slnngk/pdb02/sysaux01.dbf';
然后恢复数据文件并online

##恢复数据文件并进行online
RMAN> recover datafile 19;
SQL> alter database datafile 19 online;

 

3.普通文件undotbs1

SQL> alter session set container=pdb02;
SQL> alter database datafile 20 offline;
alter database datafile 20 offline
*
ERROR at line 1:
ORA-00603: ORACLE server session terminated by fatal error
ORA-00376: file 20 cannot be read at this time
ORA-01110: data file 20: '/u01/app/oracle/oradata/slnngk/pdb02/SLNNGK/F4536337D4BF5829E055CEFFD4D56E1F/datafile/o1_mf_undotbs1_kycz8o2s_.dbf'
ORA-00376: file 20 cannot be read at this time
ORA-01110: data file 20: '/u01/app/oracle/oradata/slnngk/pdb02/SLNNGK/F4536337D4BF5829E055CEFFD4D56E1F/datafile/o1_mf_undotbs1_kycz8o2s_.dbf'
ORA-00376: file 20 cannot be read at this time
ORA-01110: data file 20: '/u01/app/oracle/oradata/slnngk/pdb02/SLNNGK/F4536337D4BF5829E055CEFFD4D56E1F/datafile/o1_mf_undotbs1_kycz8o2s_.dbf'
Process ID: 22569
Session ID: 75 Serial number: 27145

这个时候当前会话已经中断了,退出重新登录查看数据文件状态

SQL> alter session set container=pdb02;
SQL> set linesize 1000;
column file# format 99;
column name format a100;
column status format a10;
SQL> select file#,name,status from v$datafile;

     FILE# NAME                                                                                                          STATUS
---------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------
        18 /u01/app/oracle/oradata/slnngk/pdb02/system01.dbf                                                             SYSTEM
        19 /u01/app/oracle/oradata/slnngk/pdb02/sysaux01.dbf                                                             ONLINE
        20 /u01/app/oracle/oradata/slnngk/pdb02/SLNNGK/F4536337D4BF5829E055CEFFD4D56E1F/datafile/o1_mf_undotbs1_kycz8o2s_.dbf                                                                                                                 RECOVER

 

RMAN>copy datafile 20 to '/u01/app/oracle/oradata/slnngk/pdb02/undotbs01.dbf';
这个时候数据库控制文件字典信息还没有修改,需要执行如下命令修改控制文件信息
RMAN> switch datafile 20 to copy;

这个时候查询数据字典,发现数据文件已经改变

 

SQL> select file#,name from v$datafile;

     FILE# NAME
---------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
        18 /u01/app/oracle/oradata/slnngk/pdb02/system01.dbf
        19 /u01/app/oracle/oradata/slnngk/pdb02/sysaux01.dbf
        20 /u01/app/oracle/oradata/slnngk/pdb02/undotbs01.dbf

或者
SQL> alter database rename file '/u01/app/oracle/oradata/slnngk/pdb02/SLNNGK/F4536337D4BF5829E055CEFFD4D56E1F/datafile/o1_mf_undotbs1_kycz8o2s_.dbf' to '/u01/app/oracle/oradata/slnngk/pdb02/undotbs01.dbf';
然后恢复数据文件并online
RMAN> recover datafile 20;
SQL> alter database datafile 20 online;

再次查看数据库文件状态

SQL> select file#,name,status from v$datafile;

FILE# NAME                                                                                                 STATUS
----- ---------------------------------------------------------------------------------------------------- ----------
   18 /u01/app/oracle/oradata/slnngk/pdb02/system01.dbf                                                    SYSTEM
   19 /u01/app/oracle/oradata/slnngk/pdb02/sysaux01.dbf                                                    ONLINE
   20 /u01/app/oracle/oradata/slnngk/pdb02/undotbs01.dbf                                                   ONLINE

 

 

 

-- The End --

 

posted @ 2023-02-13 09:43  slnngk  阅读(51)  评论(0编辑  收藏  举报