本文的环境都使用相同的操作系统:Oracle Linux 7.5。11g数据文件存放在文件系统上,而19c的数据文件存放在ASM上,中间使用NFS暂存数据文件,然后通过rman的可传输表空间特性进行迁移。
1、源端检查
由于rman不能自动迁移目录、外部表以及BFILEs,所以必须使用下面的命令进行检查,然后手工在目标端创建:
[oracle@rhndb ~]$ sqlplus "/as sysdba"
SQL> set serveroutput on;
SQL> declare x boolean;begin x:=dbms_tdb.check_external;end;
2 /
The following directories exist in the database:
SYS.DMP, SYS.XMLDIR, SYS.ORACLE_OCM_CONFIG_DIR2, SYS.ORACLE_OCM_CONFIG_DIR,
SYS.DATA_PUMP_DIR
PL/SQL procedure successfully completed.
SQL> set linesize 300
SQL> col directory_name for a25
SQL> col directory_path for a70
SQL> select directory_name,directory_path from dba_directories;
2、重启数据库至只读状态
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 3206836224 bytes
Fixed Size 2257520 bytes
Variable Size 738200976 bytes
Database Buffers 2449473536 bytes
Redo Buffers 16904192 bytes
Database mounted.
SQL> alter database open read only;
Database altered.
3、DBMS_TDB.CHECK_DB检查数据库状态
SQL> set serveroutput on;
SQL> declare db_ready boolean;
2 begin
3 db_ready :=dbms_tdb.check_db('Linux x86 64-bit',dbms_tdb.skip_none);
4 end;
5 /
PL/SQL procedure successfully completed.
4、列出需要转换和不需要转换的数据文件
SQL> select file_name "Datafiles requiring Conversion" from dba_data_files where tablespace_name in (select distinct tablespace_name from dba_rollback_segs);
Datafiles requiring Conversion
------------------------------------------------------------
/u02/oradata/rhndb/undotbs01.dbf
/u02/oradata/rhndb/system01.dbf
SQL> select file_name "Files NOT requiring Conversion" f