博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用传输表空间迁移数据
阅读量:7221 次
发布时间:2019-06-29

本文共 7589 字,大约阅读时间需要 25 分钟。

一、检查是否满足传输表空间的条件

1、检查源库与目标库的平台支持

源库:SQL> select d.name,i.version,d.platform_name,endian_format from v$transportable_platform tp,v$database d,v$instance i  2  where tp.PLATFORM_NAME=d.platform_name;  NAME      VERSION           PLATFORM_NAME                                                                    ENDIAN_FORMAT--------- ----------------- -------------------------------------------------------------------------------- --------------ORCL      11.2.0.1.0        Microsoft Windows x86 64-bit                                                     Little目标库:SQL> select d.name,i.version,d.platform_name,endian_format from v$transportable_platform tp,v$database d,v$instance i  2  where tp.PLATFORM_NAME=d.platform_name;NAME      VERSION           PLATFORM_NAME                                                                    ENDIAN_FORMAT--------- ----------------- -------------------------------------------------------------------------------- --------------ORCL      11.2.0.1.0        Linux x86 64-bit                                                                 Little

查看哪些平台支持跨平台的传输表空间特性:

SQL> select * from v$transportable_platform order by platform_id;PLATFORM_ID PLATFORM_NAME                                                                    ENDIAN_FORMAT----------- -------------------------------------------------------------------------------- --------------          1 Solaris[tm] OE (32-bit)                                                          Big          2 Solaris[tm] OE (64-bit)                                                          Big          3 HP-UX (64-bit)                                                                   Big          4 HP-UX IA (64-bit)                                                                Big          5 HP Tru64 UNIX                                                                    Little          6 AIX-Based Systems (64-bit)                                                       Big          7 Microsoft Windows IA (32-bit)                                                    Little          8 Microsoft Windows IA (64-bit)                                                    Little          9 IBM zSeries Based Linux                                                          Big         10 Linux IA (32-bit)                                                                Little         11 Linux IA (64-bit)                                                                Little         12 Microsoft Windows x86 64-bit                                                     Little         13 Linux x86 64-bit                                                                 Little         15 HP Open VMS                                                                      Little         16 Apple Mac OS                                                                     Big         17 Solaris Operating System (x86)                                                   Little         18 IBM Power Based Linux                                                            Big         19 HP IA Open VMS                                                                   Little         20 Solaris Operating System (x86-64)                                                Little         21 Apple Mac OS (x86-64)                                                            Little20 rows selected

结论:虽然操作系统平台不同,但是数据库版本相同,字节顺序也相同(不需要转换字节),并且支持跨平台传输。

2、检查自包含的表空间集

SQL> exec dbms_tts.transport_set_check('tts',true);
PL/SQL procedure successfully completed

SQL> select * from transport_set_violations;

VIOLATIONS
----------------------------------------------

结果返回0行记录,说明满足自包含条件。即tts表空间中的对象未引用其它未传输表空间中的对象(非严格方式)

SQL> exec dbms_tts.transport_set_check('tts',true,true); --严格方式

PL/SQL 过程已成功完成。

SQL> select * from transport_set_violations;

未选定行

结果返回0行记录,说明待默认的tts表空间中的对象未引用其它未传输表空间中的对象,而且tts表空间中的对象也未被其它未传输的表空间中的对象引用。

二、执行表空间的传输

1、源数据库将要传输的表空间生成可传输表空间集
1.1 将待传输的表空间置为read only状态
SQL> alter tablespace tts read only;

表空间已更改。

1.2 执行data pump export 命令导出表空间集元数据

C:\Users\Administrator>expdp system/RUSKY@orcl dumpfile=tbs_tts.dmp directory=test_tts_dump transport_tablespaces=tts nologfile=y;Export: Release 11.2.0.1.0 - Production on 星期二 4月 28 00:02:40 2015Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing options启动 "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01":  system/********@orcl dumpfile=tbs_tts.dmp directory=test_tts_dump transport_tablespaces=tts nologfile=y;处理对象类型 TRANSPORTABLE_EXPORT/PLUGTS_BLK处理对象类型 TRANSPORTABLE_EXPORT/TABLE处理对象类型 TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK已成功加载/卸载了主表 "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01"******************************************************************************SYSTEM.SYS_EXPORT_TRANSPORTABLE_01 的转储文件集为:  E:\DUMPDIRECORY\TBS_TTS.DMP******************************************************************************可传输表空间 TTS 所需的数据文件:  G:\TESTDATA\TTS.DBF作业 "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01" 已于 00:03:38 成功完成

1.3 转换字节顺序

两个平台字节顺序一致,不需要转换

1.4 复制传输集到目标数据库

源数据库tts表空间对应的数据文件和expdp生成的该表空间的元数据文件TBS_TTS.DMP
可传输表空间 TTS 所需的数据文件:
G:\TESTDATA\TTS.DBF
转储文件集为:
E:\DUMPDIRECORY\TBS_TTS.DMP

此处将这TBS_TTS.DMP文件上传到目标数据库的/home/oracle/dump_dir/目录

SQL> select * from dba_directories; --目标数据库的dump_dir如下:
OWNER DIRECTORY_NAME DIRECTORY_PATH
------------------------------ ------------------------------ -----------------------
SYS DUMP_DIR /home/oracle/dump_dir

将源数据文件G:\TESTDATA\TTS.DBF上传到目标数据库的/u01/app/oracle/oradata/orcl/目录

1.5 将源数据库中的表空间tts状态设置为read,write

SQL> alter tablespace tts read write;

表空间已更改。

2、在目标数据库导入表空间集

2.1 检查源数据库和目标数据库的blocksize
SQL> select block_size from dba_tablespaces where tablespace_name='TTS'; --源数据库
BLOCK_SIZE
----------
8192
SQL> show parameter block_size; --目标数据库

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------
db_block_size integer 8192
SQL>

两都相同,不需要设置。如果两者不同,则必须设置相关的DB_nK_CACHE_SIZE初始化参数,否则导入时会报错。

如:ALTER SYSTEM SET DB_8K_CACHE_SIZE=20M;

2.2 目标数据库上导入源数据

[oracle@rhel201 VH-share]$ impdp system/rusky dumpfile=TBS_TTS.DMP directory=dump_dir nologfile=y transport_datafiles=/u01/app/oracle/oradata/orcl/TTS.DBF REMAP_SCHEMA=RUSKY2:RUSKYImport: Release 11.2.0.1.0 - Production on Mon Apr 27 09:37:38 2015Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsMaster table "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" successfully loaded/unloadedStarting "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01":  system/******** dumpfile=TBS_TTS.DMP directory=dump_dir nologfile=y transport_datafiles=/u01/app/oracle/oradata/orcl/TTS.DBF REMAP_SCHEMA=RUSKY2:RUSKY Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLKProcessing object type TRANSPORTABLE_EXPORT/TABLEProcessing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLKJob "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" successfully completed at 09:37:46

导入命令中的remap_schema=rusky2:rusky是指在源数据库中的用户rusky2,导入到目标数据库中变为rusky。

因为目标数据库中没有rusky2及rusky用户,所以使用remap_schema来转换。导入完成后新创建的用户rusky需要修改密码,否则无法使用。
transport_datafiles:被传输表空间对应的数据文件新路径,如果需要指定多个数据文件,相互之间以逗号做分隔。

2.3 将刚导入的表空间状态置为read write
alter tablespace tts read write; --在11g,导入的表空间会自动置为read write,10g需要手动修改。

2.4 修改rusky用户的密码及测试

SQL> alter user rusky identified by rusky;

User altered.

SQL> conn rusky/rusky;

Connected.

转载于:https://www.cnblogs.com/rusking/p/4461888.html

你可能感兴趣的文章
网络工程师的面试题
查看>>
nginx启动脚本
查看>>
常用输入法框架简介
查看>>
记录新机房建设。20130629
查看>>
安装ntop
查看>>
ssh远程登录讲解
查看>>
mysql的备份脚本
查看>>
linux下mysql的root密码忘记解决方法
查看>>
7.索引的性能分析
查看>>
在 Delphi 下使用 DirectSound (17): 频率均衡效果器 IDirectSoundFXParamEq8
查看>>
文件操作命令一cp 2
查看>>
Multi-Mechanize工程目录结构说明
查看>>
halt
查看>>
标准ACL+扩展ACL+命名ACL
查看>>
Meteor应用的启动过程分析
查看>>
九曲黄河万里沙,浪淘风簸自天涯 — 正则表达式
查看>>
欲哭无泪,联想笔记本性价比
查看>>
很简单的在Ubuntu系统下安装字体和切换默认字体的方法
查看>>
我的友情链接
查看>>
dojo框架用hitch实现函数与上下文的绑定
查看>>