千家信息网

Oracle 12C如何实现跨网络传输数据库

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这篇文章主要为大家展示了"Oracle 12C如何实现跨网络传输数据库",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Oracle 12C如何实现跨网络传输
千家信息网最后更新 2025年01月23日Oracle 12C如何实现跨网络传输数据库

这篇文章主要为大家展示了"Oracle 12C如何实现跨网络传输数据库",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Oracle 12C如何实现跨网络传输数据库"这篇文章吧。

前言

跨网络传输数据库,可以通过使用network_link参数来执行导入操作,导入操作将使用数据库链路,不需要生成dump文件。

操作步骤如下:

1、在目标数据库中创建链接到源数据库的数据链路。执行导入操作的用户必须要有datapump_imp_full_database权限,并且连接到源数据库的数据链路也必须连接到一个有datapump_exp_full_database角色的用户。在源数据库中用户不能有sysdba管理权限。

2、在源数据库上将所有用户表空间置为只读模式

3、将源数据库中所有用户表空间相关的数据文件传输到目标数据库。如果源平台与目标平台的字节编码不同,那么查询v$transportable_platform视图来进行查看。并且将可以使用以下一种方法来转换数据文件:
.使用dbms_file_transfer包中的get_file或put_file过程来传输数据文件。这些过程会自动将数据文件的字节编码转换为目标平台的字节编码。

.使用rman的convert命令来将数据文件的字节编码转换为目标平台的字节编码。

4、在目标数据库上执行导入操作。使用Data Pump工具来导入所有用户表空间的元数据与管理表空间的元数据与真实数据。

确保以下参数正确设置:

.transportable=always.transport_datafiles=list_of_datafiles.full=y.network_link=database_link.version=12

如果源数据库为11.2.0.3或11g之后的版本,那么必须设置version=12。如果源数据库与目标数据库都是12c,那么version参数不用设置。

如果源数据库包含任何加密表空间或表空间包含加密列,那么你必须指定encryption_pwd_prompt=yes或指定encryption_password参数。

Data Pump跨网络导入将会复制所有用户表空间所存储对象的元数据与管理表空间中的元与用户对象的真实数据。当导入完成后,用户表空间将会置于读写模式。

5、可选操作将源数据库中的所有用户表空间置为读写模式。

下面的例子是将源数据库jyrac传输到目标数据库jypdb

1.在目标数据库中以sys用户来创建链接到源数据库的数据链路。源数据库中的用户为jy

SQL> conn sys/xxzx7817600@jypdb as sysdbaConnected.SQL> create public database link jyrac_link 2  connect to jy identified by "jy" 3  using '(DESCRIPTION = 4   (ADDRESS_LIST = 5    (ADDRESS = (PROTOCOL = TCP)(HOST =10.138.130.153)(PORT = 1521)) 6   ) 7   (CONNECT_DATA = 8    (SERVER = DEDICATED) 9    (SERVICE_NAME =jyrac) 10   ) 11  )';Database link created.

2.在源数据库上将所有用户表空间置为只读模式

SQL> select tablespace_name,status from dba_tablespaces;TABLESPACE_NAME    STATUS------------------------------ ---------SYSTEM       ONLINESYSAUX       ONLINEUNDOTBS1      ONLINETEMP       ONLINEUSERS       ONLINEUNDOTBS2      ONLINEEXAMPLE      ONLINETEST       ONLINE8 rows selected.SQL> alter tablespace test read only;Tablespace altered.SQL> alter tablespace users read only;Tablespace altered.SQL> alter tablespace example read only;Tablespace altered.SQL> select tablespace_name,status from dba_tablespaces;TABLESPACE_NAME    STATUS------------------------------ ---------SYSTEM       ONLINESYSAUX       ONLINEUNDOTBS1      ONLINETEMP       ONLINEUSERS       READ ONLYUNDOTBS2      ONLINEEXAMPLE      READ ONLYTEST       READ ONLY8 rows selected.

3.在目标数据库中使用dbms_file_transfer包中的get_file过程将源数据库中所有用户表空间相关的数据文件传输到目标数据库上

在源数据库中创建目录tts_datafile(存储数据文件)

SQL> create or replace directory tts_datafile as '+datadg/jyrac/datafile/';Directory created.SQL> grant execute,read,write on directory tts_datafile to public;Grant succeeded.

在目标数据库中创建目录tts_datafile(存储数据文件)

SQL> create or replace directory tts_datafile as '+DATA/JY/4B2C6373AE2547CCE053AB828A0A7CA3/DATAFILE/';Directory created.SQL> grant execute,read,write on directory tts_datafile to public;Grant succeeded.

在目标数据库中执行dbms_file_transfer.get_file过程将源数据库中所有用户表空间所相关的数据文件传输到目标数据库中

SQL> exec dbms_file_transfer.get_file(source_directory_object =>'TTS_DATAFILE',source_file_name => 'test01.dbf',source_database =>'jyrac_link',destination_directory_object => 'TTS_DATAFILE',destination_file_name => 'test01.dbf');PL/SQL procedure successfully completed.SQL> exec dbms_file_transfer.get_file(source_directory_object =>'TTS_DATAFILE',source_file_name => 'example.260.930413057',source_database =>'jyrac_link',destination_directory_object => 'TTS_DATAFILE',destination_file_name => 'example01.dbf');PL/SQL procedure successfully completed.SQL> exec dbms_file_transfer.get_file(source_directory_object =>'TTS_DATAFILE',source_file_name => 'users.263.930413057',source_database =>'jyrac_link',destination_directory_object => 'TTS_DATAFILE',destination_file_name => 'users01.dbf');PL/SQL procedure successfully completed.
ASMCMD [+data/jy/4B2C6373AE2547CCE053AB828A0A7CA3/datafile] > ls -ltType  Redund Striped Time    Sys NameDATAFILE UNPROT COARSE JUN 02 16:00:00 N users01.dbf => +DATA/jy/4B2C6373AE2547CCE053AB828A0A7CA3/DATAFILE/FILE_TRANSFER.298.945620417DATAFILE UNPROT COARSE JUN 02 16:00:00 N test01.dbf => +DATA/jy/4B2C6373AE2547CCE053AB828A0A7CA3/DATAFILE/FILE_TRANSFER.300.945620337DATAFILE UNPROT COARSE JUN 02 16:00:00 N example01.dbf => +DATA/jy/4B2C6373AE2547CCE053AB828A0A7CA3/DATAFILE/FILE_TRANSFER.299.945620391DATAFILE UNPROT COARSE JUN 02 16:00:00 Y FILE_TRANSFER.300.945620337DATAFILE UNPROT COARSE JUN 02 16:00:00 Y FILE_TRANSFER.299.945620391DATAFILE UNPROT COARSE JUN 02 16:00:00 Y FILE_TRANSFER.298.945620417DATAFILE UNPROT COARSE JUN 02 00:00:00 N testtb01.dbf => +DATA/jy/4B2C6373AE2547CCE053AB828A0A7CA3/DATAFILE/TESTTB.295.944828399DATAFILE UNPROT COARSE JUN 02 00:00:00 Y UNDO_2.277.939167063DATAFILE UNPROT COARSE JUN 02 00:00:00 Y UNDOTBS2.278.945029905DATAFILE UNPROT COARSE JUN 02 00:00:00 Y UNDOTBS1.273.939167015DATAFILE UNPROT COARSE JUN 02 00:00:00 Y TESTTB.295.944828399DATAFILE UNPROT COARSE JUN 02 00:00:00 Y SYSTEM.274.939167015DATAFILE UNPROT COARSE JUN 02 00:00:00 Y SYSAUX.275.939167015

4.在目标数据库上执行导入操作。使用Data Pump工具来导入所有用户表空间的元数据与管理表空间的元数据与真实数据。

[oracle@jytest1 tts]$ impdp system/xxzx7817600@JYPDB_175 full=y network_link=jyrac_link transportable=always transport_datafiles='+data/jy/4B2C6373AE2547CCE053AB828A0A7CA3/datafile/test01.dbf','+data/jy/4B2C6373AE2547CCE053AB828A0A7CA3/datafile/example01.dbf','+data/jy/4B2C6373AE2547CCE053AB828A0A7CA3/datafile/users01.dbf' version=12 directory=TTS_DUMP_LOG logfile=import.logImport: Release 12.2.0.1.0 - Production on Fri Jun 2 16:30:40 2017Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit ProductionStarting "SYSTEM"."SYS_IMPORT_FULL_01": system/********@JYPDB_175 full=y network_link=jyrac_link transportable=always transport_datafiles=+data/jy/4B2C6373AE2547CCE053AB828A0A7CA3/datafile/test01.dbf,+data/jy/4B2C6373AE2547CCE053AB828A0A7CA3/datafile/example01.dbf,+data/jy/4B2C6373AE2547CCE053AB828A0A7CA3/datafile/users01.dbf version=12 directory=TTS_DUMP_LOG logfile=import.logEstimate in progress using BLOCKS method...Processing object type DATABASE_EXPORT/PLUGTS_FULL/FULL/PLUGTS_TABLESPACEProcessing object type DATABASE_EXPORT/PLUGTS_FULL/PLUGTS_BLKProcessing object type DATABASE_EXPORT/EARLY_OPTIONS/VIEWS_AS_TABLES/TABLE_DATAProcessing object type DATABASE_EXPORT/NORMAL_OPTIONS/TABLE_DATAProcessing object type DATABASE_EXPORT/NORMAL_OPTIONS/VIEWS_AS_TABLES/TABLE_DATA.......Processing object type DATABASE_EXPORT/SCHEMA/DIMENSIONProcessing object type DATABASE_EXPORT/END_PLUGTS_BLKProcessing object type DATABASE_EXPORT/FINAL_POST_INSTANCE_IMPCALLOUT/MARKERProcessing object type DATABASE_EXPORT/SCHEMA/TABLE/POST_INSTANCE/PROCACT_INSTANCEProcessing object type DATABASE_EXPORT/SCHEMA/TABLE/POST_INSTANCE/PROCDEPOBJProcessing object type DATABASE_EXPORT/SCHEMA/POST_SCHEMA/PROCOBJProcessing object type DATABASE_EXPORT/SCHEMA/POST_SCHEMA/PROCACT_SCHEMAProcessing object type DATABASE_EXPORT/AUDITProcessing object type DATABASE_EXPORT/POST_SYSTEM_IMPCALLOUT/MARKERORA-39082: Object type PROCEDURE:"APEX_030200"."F" created with compilation warningsORA-39082: Object type PROCEDURE:"APEX_030200"."APEX_ADMIN" created with compilation warningsORA-39082: Object type PROCEDURE:"APEX_030200"."HTMLDB_ADMIN" created with compilation warningsJob "SYSTEM"."SYS_IMPORT_FULL_01" completed with 1689 error(s) at Fri Jun 2 16:43:47 2017 elapsed 0 00:13:03

传输完成后我们抽查用户jy的dba_tables表的数据在传输后是否与源数据库中的数据一致。

源数据库

SQL> conn sys/xxzx7817600@jyrac as sysdbaConnected.SQL> select count(*) from jy.dba_tables; COUNT(*)----------  2141

目标数据库

SQL> conn sys/xxzx7817600@jypdb as sysdbaConnected.SQL> select count(*) from jy.dba_tables; COUNT(*)----------  2141

查询传输后用户表空间的状态是否为online,可以看到test,example,users表空间状态为online

SQL> select tablespace_name,status from dba_tablespaces;TABLESPACE_NAME    STATUS------------------------------ ---------SYSTEM       ONLINESYSAUX       ONLINEUNDOTBS1      ONLINETEMP       ONLINEUNDO_2       ONLINEUSERS       ONLINETESTTB       ONLINETEMP2       ONLINETEMP3       ONLINEEXAMPLE      ONLINETEST       ONLINEUNDOTBS2      ONLINE12 rows selected.

5.将源数据库中的所有用户表空间设置为读写模式

SQL> alter tablespace test read write;Tablespace altered.SQL> alter tablespace example read write;Tablespace altered.SQL> alter tablespace users read write;Tablespace altered.SQL> select tablespace_name,status from dba_tablespaces;TABLESPACE_NAME    STATUS------------------------------ ---------SYSTEM       ONLINESYSAUX       ONLINEUNDOTBS1      ONLINETEMP       ONLINEUSERS       ONLINEUNDOTBS2      ONLINEEXAMPLE      ONLINETEST       ONLINE8 rows selected.

到此通过网络执行完整数据库传输的操作就完成了。

以上是"Oracle 12C如何实现跨网络传输数据库"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

数据 数据库 用户 空间 目标 传输 用户表 文件 网络 字节 模式 编码 网络传输 参数 平台 过程 链路 管理 内容 篇文章 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 市教育局网络安全周活动方案 改数据库编码 网络安全的指导思想和原则 互联网公司属于高科技产业吗 高速公路服务器管理人员是干嘛的 网络安全生产比赛 企业网络服务器的规划与实现摘要 讯鹰网络技术有限公司 学校实验室服务器 企业软件开发应用等的看法或认识 岁末年初国资企业网络安全总结 自制库存数据库 创意软件开发公司 软件开发服务费进项能抵扣吗 28岁还适合学习软件开发吗 大学中网络安全工程师 数据库书本表的完整步骤 无线网络技术考点 网络安全属于网络公共事件吗 医院网络安全协议书 益阳职业技术学院的软件开发 抖音点赞开会员软件开发 服务器的智能监控管理包括 如何建虚拟数据库 网络安全给我们的警示 虹口区无线网络技术售后保障 方舟生存进化服务器四通配置 大话西游2豪华服务器 网络安全防止远程控制 sql 数据库远程
0