oracle可传输表空间TTS的示例分析

87次阅读
没有评论

共计 6307 个字符,预计需要花费 16 分钟才能阅读完成。

这篇文章给大家分享的是有关 oracle 可传输表空间 TTS 的示例分析的内容。丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,一起跟随丸趣 TV 小编过来看看吧。

oracle 加载数据最快的方式

限制

Source/target 数据库的字符集必须兼容,target 字符集要么和 source 相同,要么为 source 的超集;database/national character set

加密表空间不能跨 endian 平台传输;

包含加密列的表不可支持传输;

不可传输 system 表空间 /sys 用户下的 object;

Target 版本不能低于 source;

  时区文件要求一致

步骤

1 检查 target/source endian 是否一致

Windows/linux 均为 little,其余为 big

SELECT d.PLATFORM_NAME, ENDIAN_FORMAT FROM V$TRANSPORTABLE_PLATFORM. tp, V$DATABASE d WHERE tp.PLATFORM_NAME = d.PLATFORM_NAME;

–source

PLATFORM_NAME  ENDIAN_FORMAT

———————————- ————–

Solaris[tm] OE (32-bit)  Big

–target

PLATFORM_NAME  ENDIAN_FORMAT

———————————- ————–

Microsoft Windows IA (32-bit)  Little

 

2 检查表空间是否自包含

基表所属的索引 / 表分区 / 物化视图必须位于同一表空间

EXECUTE DBMS_TTS.TRANSPORT_SET_CHECK(sales_1,sales_2 , TRUE);

 

SQL SELECT * FROM TRANSPORT_SET_VIOLATIONS;

 

VIOLATIONS

—————————————————————————

Constraint DEPT_FK between table JIM.EMP in tablespace SALES_1 and table

JIM.DEPT in tablespace OTHER

Partitioned table JIM.SALES is partially contained in the transportable set

 

3 复制数据文件并导出其 metadata—先将表空间设为只读

SQL ALTER TABLESPACE sales_1 READ ONLY;

Tablespace altered.

SQL ALTER TABLESPACE sales_2 READ ONLY;

Tablespace altered.

 

expdp system dumpfile=expdat.dmp directory=data_pump_dir  transport_tablespaces=sales_1,sales_2transport_full_check=y logfile=tts_export.log

– 参数 transport_full_check 用于确认表空间为自包含,如果验证失败则 expdp 会终止

******************************************************************************

Dump file set for SYSTEM.SYS_EXPORT_TRANSPORTABLE_01 is:

  /u01/app/oracle/admin/salesdb/dpdump/expdat.dmp

******************************************************************************

Datafiles required for transportable tablespace SALES_1:

  /u01/app/oracle/oradata/salesdb/sales_101.dbf

Datafiles required for transportable tablespace SALES_2:

  /u01/app/oracle/oradata/salesdb/sales_201.dbf

 

导出完毕后即可恢复表空间为读写模式

 

如果 target 为 exadata 且与 source endian 不同,oracle 推出 cross platform. incremental backup 用于减少对 source db 的影响,详情见 1389592.1

在线复制数据文件,然后不断对其增量备份并应用到 target,直至与 source 接近同步为止;

最后一步才将 source tb 设为 read only,对其做最后一次增量备份,这种方式可将 source tb 的不可用时间减为最小;

 

4 将数据集传输到 target

如果 source/target 使用了 ASM,可使用 dbms_file_transfer/rman 进行传输

 

第 4 / 5 步根据实际情况可互换

 

5  转换 endianness

在 source/target 端均可执行

–source

RMAN CONVERT TABLESPACE sales_1,sales_2

2 TO PLATFORM. Microsoft Windows IA (32-bit)

3 FORMAT /tmp/%U

 

Starting conversion at source at 30-SEP-08

using channel ORA_DISK_1

channel ORA_DISK_1: starting datafile conversion

input datafile file number=00007name=/u01/app/oracle/oradata/salesdb/sales_101.dbf

converteddatafile=/tmp/data_D-SALESDB_I-1192614013_TS-SALES_1_FNO-7_03jru08s

channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:45

channel ORA_DISK_1: starting datafile conversion

input datafile file number=00008 name=/u01/app/oracle/oradata/salesdb/sales_201.dbf

converted datafile=/tmp/data_D-SALESDB_I-1192614013_TS-SALES_2_FNO-8_04jru0aa

channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:25

Finished conversion at source at 30-SEP-08

 

–target

Dumpfile 位于 DATA_PUMP_DIR 目录,而数据文件位于 C:\TEMP

RMAN CONVERT DATAFILE   C:\Temp\sales_101.dbf , C:\Temp\sales_201.dbf

1 TO PLATFORM= Microsoft Windows IA (32-bit)

2 FROM PLATFORM= Solaris[tm] OE (32-bit)

3 DB_FILE_NAME_CONVERT= C:\Temp\ , C:\app\orauser\oradata\orawin\

4 PARALLELISM=4;

注:如果 source/target 都没有使用 ASM,可以不指定 source/target platform,RMAN 通过检查数据文件可获知 source platform,而 target platform 默认为当前主机;

 

6 导入 target

如果表空间数据块不是 target db 的标准块,则需设置 target db 的 db_nk_cache_size;

impdp system dumpfile=expdat.dmp directory=data_pump_dir transport_datafiles=c:\app\orauser\oradata\orawin\sales_101.dbf,c:\app\orauser\oradata\orawin\sales_201.dbf

remap_schema=sales1:crm1  remap_schema=sales2:crm2 logfile=tts_import.log

 

 

 

在 standby 上执行 TTS 788176.1

物理备库可以执行 TTS,但首先需要将其 activate,大致步骤

1 确保其与主库同步,停止 log 传输和 MRP

2 创建 restore point,执行 TTS 后回滚

3 激活备库 alter database activate standby database,并将保护模式设为 maximize performance—alter database set standby database to maximize performance

4 执行 TTS

5 闪回至 restore point 并重新转换为物理备库 flashback database to restore point b/alter database convert to physical standby

 

 

TTS 单个表分区 731559.1

利用交换分区将单个分区置换到新表,然后删除该分区,将该表空间传输即可;

 

 

基于 ASM 存储的 TTS ID 394798.1

使用 dbms_file_transfer 传输 dump/data file,需要 dblink 协助;

1 创建指向 target 的 dblink:create database link db2 connect to system identified by manager1 using db2

2 在 source/target 创建基于 ASM 的 directory,create directory tts_dump as +DATA

3 导出 metadata

ora10g@host1]$ expdp system/manager1 directory=tts_dump dumpfile=tts1_db1.dmp logfile=tts_dump_log:tts.log transport_tablespaces=tts_1,tts_2 transport_full_check=y

Starting SYSTEM . SYS_EXPORT_TRANSPORTABLE_02 : system/******** directory=tts_datafile dumpfile=tts1.dmp logfile=tts_dump_log:tts.log transport

_tablespaces=tts_1,tts_2 transport_full_check=y

Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK

Processing object type TRANSPORTABLE_EXPORT/TABLE

Processing object type TRANSPORTABLE_EXPORT/INDEX

Processing object type TRANSPORTABLE_EXPORT/INDEX_STATISTICS

Processing object type TRANSPORTABLE_EXPORT/TABLE_STATISTICS

Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK

Master table SYSTEM . SYS_EXPORT_TRANSPORTABLE_02 successfully loaded/unloaded

****************************************Dump file set for SYSTEM.SYS_EXPORT_TRANSPORTABLE_02 is:+DATA/tts1.dmp

Job SYSTEM . SYS_EXPORT_TRANSPORTABLE_02 successfully completed at 14:00:34

4 将 dump/data 文件传送至 target

SQL begin

2 dbms_file_transfer.put_file

3 (source_directory_object = tts_dump ,

4 source_file_name = tts1_db1.dmp ,

5 destination_directory_object = tts_dump ,

6 destination_file_name = tts1_db1.dmp ,

7 destination_database = db2

8 end;

9 /

SQL begin

2 dbms_file_transfer.put_file

3 (source_directory_object = tts_datafile ,

4 source_file_name = tts_1.294.570721319 ,

5 destination_directory_object = tts_datafile ,

6 destination_file_name = tts1_db1.dbf ,

7 destination_database = db2

8 end;

9 /

 

5 导入 target

impdp directory=tts_dump dumpfile=tts1_db1.dmp logfile=tts_dump_log:tts1.log TRANSPORT_DATAFILES= +DATA1/tts1_db1.dbf , +DATA1/tts2_db1.dbf keep_master=y

Master table SYSTEM . SYS_IMPORT_TRANSPORTABLE_03 successfully loaded/unloaded

Starting SYSTEM . SYS_IMPORT_TRANSPORTABLE_03 : system/******** parfile=impdp.par

Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK

Processing object type TRANSPORTABLE_EXPORT/TABLE

Processing object type TRANSPORTABLE_EXPORT/INDEX

Processing object type TRANSPORTABLE_EXPORT/INDEX_STATISTICS

Processing object type TRANSPORTABLE_EXPORT/TABLE_STATISTICS

Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK

Job SYSTEM . SYS_IMPORT_TRANSPORTABLE_03 successfully completed at 15:05:00

感谢各位的阅读!关于“oracle 可传输表空间 TTS 的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计6307字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)