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; |