共计 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 的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!