XTTS使用限制较多,V3版本按照本节逐项检查
源库:redhut 7.9
目标库:redhut 7.9
| SQL> select dbtimezone from dual;
|
检查结果两边都一致
| SQL> select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') from dual;
|
检查结果两边都一致
| SQL> set linesize 120 SQL> select * from nls_database_parameters where parameter like '%CHARACTERSET%';
|
检查结果两边都一致
| select 'opatch',comments from dba_registry_history;
|
目标库需要比源库补丁高
| SQL> Select comp_name from dba_registry;
|
如果两边安装了不一样的组件,请注意。
| Select index_name,table_name from dba_indexes where compression='ENABLED'; |
| SQL> select table_name, owner, tablespace_name from dba_tables where tablespace_name not in('SYSTEM','SYSAUX') and owner in ('SYS','SYSTEM');
|
如果数据库用户 SYS、SYSTEM 在业务表空间上创建有对象,则这些对象不能通过 XTTS 迁移,需要在目标库手工创建。
| SQL> show parameter compatible;
|
如果目标端数据库版本是 19.0.0 或更低。那么需要在目标端装 19.0.0以上版本 并创建实例,然后用来进行备份集转换。如果 19.0.0以上版本 中转实例使用 ASM。那么 ASM 版本也必须是 19.0.0以上版本,否则报错 ORA-15295
| SQL> show parameter recyclebin;
|
如果数据库这个功能没有关闭,我们需要去关闭一些
| SQL> alter system set recyclebin='off' scope=spfile;
|
| SQL> Select distinct status from v$datafile;
|
正常返回应为:ONLINE、SYSTEM
| SQL> col PLATFORM_NAME format a50 SQL> select * from v$transportable_platform;
|
可以查看《oracle数据库验证数据构造方案》
| pwd
mkdir xtts ls cd xtts/ ll
mkdir source_back mkdir source_incr_back mkdir target_data mkdir target_back mkdir target_incr_back
|
| unzip rman_xttconvert_v3.zip
[oracle@source xtts]$ ls
su chmod -R 775 xtts/ ll
|
| tablespaces=MYTBS # 表示需要迁移的表空间 platformid=13 # 表示源OS平台ID #srclink=TTSLINK #表示从目标库指向源库的db_link,由于这里采用的是rman方式,所以不需要db_link dfcopydir=/u01/app/oracle/xtts/source_back #表示源库备份文件存放目录 backupformat=/u01/app/oracle/xtts/source_incr_back #表示源库增备文件存放目录 stageondest=/u01/app/oracle/xtts/target_back #表示目标库备份文件存放目录 storageondest=/u01/app/oracle/xtts/target_data #表示目标库正式文件存放目录 backupondest=/u01/app/oracle/xtts/target_incr_back #表示目标库增备文件存放目录 parallel=3 #表示备份转化并行度 rollparallel=2 #表示增备的并行度 getfileparallel=4 #表示使用 dbms_file_transfer 方式的并行度 |
| scp -rp /u01/app/oracle/xtts/ root@192.168.238.21:/u01/app/oracle/xtts
|
| su - oracle vi .bash_profile export TMPDIR=/u01/app/oracle/xtts source .bash_profile |
| SQL> archive log list
目标端修改为归档模式 SQL> alter system switch logfile;
SQL> archive log list
|
| cd /u01/app/oracle/xtts/ $ORACLE_HOME/perl/bin/perl /u01/app/oracle/xtts/xttdriver.pl -p
|
| [oracle@oramig source_back]$ scp -p /u01/app/oracle/xtts/source_back/* root@192.168.238.21:/u01/app/oracle/xtts/target_back、
目标端给权限
|
| scp -p rmanconvert.cmd root@192.168.238.21:/u01/app/oracle/xtts/
|
| $ORACLE_HOME/perl/bin/perl /u01/app/oracle/xtts/xttdriver.pl -c
转换成功之后会生成 xttnewdatafiles.txt文件。
|
| SQL> alter tablespace MYTBS read only;
|
| Pwd
$ORACLE_HOME/perl/bin/perl /u01/app/oracle/xtts/xttdriver.pl -i cd source_incr_back/ Ls
scp -p 0f2ntcso_1_1 root@192.168.238.21:/u01/app/oracle/xtts/target_back
|
| cd .. scp -p xttplan.txt tsbkupmap.txt root@192.168.238.21:/u01/app/oracle/xtts
目标端修改权限 |
| $ORACLE_HOME/perl/bin/perl /u01/app/oracle/xtts/xttdriver.pl -r |
| mkdir -p /u01/app/oracle/data SQL> create directory source_dbdata as '/u01/app/oracle/data'; SQL> grant read,write on directory source_dbdata to system; SQL> select * from dba_directories;
|
| SQL> EXECUTE DBMS_TTS.TRANSPORT_SET_CHECK('MYTBS', TRUE);
SQL> SELECT * FROM TRANSPORT_SET_VIOLATIONS;
|
| cd //u01/app/oracle/data expdp system/123456 directory=source_dbdata dumpfile=MYTBS.dmp transport_tablespaces=MYTBS transport_full_check=y
ls
|
| scp -p /u01/app/oracle/data/MYTBS.dmp root@192.168.238.21:/u01/app/oracle/data |
| 创建zgc用户,但是不要创建表空间 SQL> create user zgc identified by 123456;
SQL> grant dba to zgc;
SQL> create directory t_dbdata as '/u01/app/oracle/data';
SQL> grant read,write on directory t_dbdata to zgc; SQL> grant exp_full_database,imp_full_database to zgc;
|
| 目标端导入元数据 pwd
impdp zgc/123456 DUMPFILE=MYTBS.dmp DIRECTORY=t_dbdata TRANSPORT_DATAFILES=/u01/app/oracle/xtts/target_data/MYTBS_8.dbf ,/u01/app/oracle/xtts/target_data/MYTBS_9.dbf 、
|
| SQL> alter user zgc default tablespace MYTBS;
|
| 更改表空间zgc状态为读写 SQL> ALTER TABLESPACE MYTBS read write;
|
| 源端
目标端
|
| system 用户没设置密码 设置一下就行了 |
| 目标端创建zgc用户时 SELECT DEFAULT_TABLESPACE FROM USER_TABLESPACES WHERE USERNAME = ‘zgc’; 说无效的用户名 解决方法: ALTER SESSION SET "_oracle_script"=true; |













































