这篇文章主要为大家展示了“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>connsys/xxzx7817600@jypdbassysdbaConnected.SQL>createpublicdatabaselinkjyrac_link2connecttojyidentifiedby"jy"3using'(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)';Databaselinkcreated.

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

SQL>selecttablespace_name,statusfromdba_tablespaces;TABLESPACE_NAMESTATUS---------------------------------------SYSTEMONLINESYSAUXONLINEUNDOTBS1ONLINETEMPONLINEUSERSONLINEUNDOTBS2ONLINEEXAMPLEONLINETESTONLINE8rowsselected.SQL>altertablespacetestreadonly;Tablespacealtered.SQL>altertablespaceusersreadonly;Tablespacealtered.SQL>altertablespaceexamplereadonly;Tablespacealtered.SQL>selecttablespace_name,statusfromdba_tablespaces;TABLESPACE_NAMESTATUS---------------------------------------SYSTEMONLINESYSAUXONLINEUNDOTBS1ONLINETEMPONLINEUSERSREADONLYUNDOTBS2ONLINEEXAMPLEREADONLYTESTREADONLY8rowsselected.

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

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

SQL>createorreplacedirectorytts_datafileas'+datadg/jyrac/datafile/';Directorycreated.SQL>grantexecute,read,writeondirectorytts_datafiletopublic;Grantsucceeded.

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

SQL>createorreplacedirectorytts_datafileas'+DATA/JY/4B2C6373AE2547CCE053AB828A0A7CA3/DATAFILE/';Directorycreated.SQL>grantexecute,read,writeondirectorytts_datafiletopublic;Grantsucceeded.

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

SQL>execdbms_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/SQLproceduresuccessfullycompleted.SQL>execdbms_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/SQLproceduresuccessfullycompleted.SQL>execdbms_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/SQLproceduresuccessfullycompleted.

ASMCMD[+data/jy/4B2C6373AE2547CCE053AB828A0A7CA3/datafile]>ls-ltTypeRedundStripedTimeSysNameDATAFILEUNPROTCOARSEJUN0216:00:00Nusers01.dbf=>+DATA/jy/4B2C6373AE2547CCE053AB828A0A7CA3/DATAFILE/FILE_TRANSFER.298.945620417DATAFILEUNPROTCOARSEJUN0216:00:00Ntest01.dbf=>+DATA/jy/4B2C6373AE2547CCE053AB828A0A7CA3/DATAFILE/FILE_TRANSFER.300.945620337DATAFILEUNPROTCOARSEJUN0216:00:00Nexample01.dbf=>+DATA/jy/4B2C6373AE2547CCE053AB828A0A7CA3/DATAFILE/FILE_TRANSFER.299.945620391DATAFILEUNPROTCOARSEJUN0216:00:00YFILE_TRANSFER.300.945620337DATAFILEUNPROTCOARSEJUN0216:00:00YFILE_TRANSFER.299.945620391DATAFILEUNPROTCOARSEJUN0216:00:00YFILE_TRANSFER.298.945620417DATAFILEUNPROTCOARSEJUN0200:00:00Ntesttb01.dbf=>+DATA/jy/4B2C6373AE2547CCE053AB828A0A7CA3/DATAFILE/TESTTB.295.944828399DATAFILEUNPROTCOARSEJUN0200:00:00YUNDO_2.277.939167063DATAFILEUNPROTCOARSEJUN0200:00:00YUNDOTBS2.278.945029905DATAFILEUNPROTCOARSEJUN0200:00:00YUNDOTBS1.273.939167015DATAFILEUNPROTCOARSEJUN0200:00:00YTESTTB.295.944828399DATAFILEUNPROTCOARSEJUN0200:00:00YSYSTEM.274.939167015DATAFILEUNPROTCOARSEJUN0200:00:00YSYSAUX.275.939167015

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

[oracle@jytest1tts]$impdpsystem/xxzx7817600@JYPDB_175full=ynetwork_link=jyrac_linktransportable=alwaystransport_datafiles='+data/jy/4B2C6373AE2547CCE053AB828A0A7CA3/datafile/test01.dbf','+data/jy/4B2C6373AE2547CCE053AB828A0A7CA3/datafile/example01.dbf','+data/jy/4B2C6373AE2547CCE053AB828A0A7CA3/datafile/users01.dbf'version=12directory=TTS_DUMP_LOGlogfile=import.logImport:Release12.2.0.1.0-ProductiononFriJun216:30:402017Copyright(c)1982,2017,Oracleand/oritsaffiliates.Allrightsreserved.Connectedto:OracleDatabase12cEnterpriseEditionRelease12.2.0.1.0-64bitProductionStarting"SYSTEM"."SYS_IMPORT_FULL_01":system/********@JYPDB_175full=ynetwork_link=jyrac_linktransportable=alwaystransport_datafiles=+data/jy/4B2C6373AE2547CCE053AB828A0A7CA3/datafile/test01.dbf,+data/jy/4B2C6373AE2547CCE053AB828A0A7CA3/datafile/example01.dbf,+data/jy/4B2C6373AE2547CCE053AB828A0A7CA3/datafile/users01.dbfversion=12directory=TTS_DUMP_LOGlogfile=import.logEstimateinprogressusingBLOCKSmethod...ProcessingobjecttypeDATABASE_EXPORT/PLUGTS_FULL/FULL/PLUGTS_TABLESPACEProcessingobjecttypeDATABASE_EXPORT/PLUGTS_FULL/PLUGTS_BLKProcessingobjecttypeDATABASE_EXPORT/EARLY_OPTIONS/VIEWS_AS_TABLES/TABLE_DATAProcessingobjecttypeDATABASE_EXPORT/NORMAL_OPTIONS/TABLE_DATAProcessingobjecttypeDATABASE_EXPORT/NORMAL_OPTIONS/VIEWS_AS_TABLES/TABLE_DATA.......ProcessingobjecttypeDATABASE_EXPORT/SCHEMA/DIMENSIONProcessingobjecttypeDATABASE_EXPORT/END_PLUGTS_BLKProcessingobjecttypeDATABASE_EXPORT/FINAL_POST_INSTANCE_IMPCALLOUT/MARKERProcessingobjecttypeDATABASE_EXPORT/SCHEMA/TABLE/POST_INSTANCE/PROCACT_INSTANCEProcessingobjecttypeDATABASE_EXPORT/SCHEMA/TABLE/POST_INSTANCE/PROCDEPOBJProcessingobjecttypeDATABASE_EXPORT/SCHEMA/POST_SCHEMA/PROCOBJProcessingobjecttypeDATABASE_EXPORT/SCHEMA/POST_SCHEMA/PROCACT_SCHEMAProcessingobjecttypeDATABASE_EXPORT/AUDITProcessingobjecttypeDATABASE_EXPORT/POST_SYSTEM_IMPCALLOUT/MARKERORA-39082:ObjecttypePROCEDURE:"APEX_030200"."F"createdwithcompilationwarningsORA-39082:ObjecttypePROCEDURE:"APEX_030200"."APEX_ADMIN"createdwithcompilationwarningsORA-39082:ObjecttypePROCEDURE:"APEX_030200"."HTMLDB_ADMIN"createdwithcompilationwarningsJob"SYSTEM"."SYS_IMPORT_FULL_01"completedwith1689error(s)atFriJun216:43:472017elapsed000:13:03

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

源数据库

SQL>connsys/xxzx7817600@jyracassysdbaConnected.SQL>selectcount(*)fromjy.dba_tables;COUNT(*)----------2141

目标数据库

SQL>connsys/xxzx7817600@jypdbassysdbaConnected.SQL>selectcount(*)fromjy.dba_tables;COUNT(*)----------2141

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

SQL>selecttablespace_name,statusfromdba_tablespaces;TABLESPACE_NAMESTATUS---------------------------------------SYSTEMONLINESYSAUXONLINEUNDOTBS1ONLINETEMPONLINEUNDO_2ONLINEUSERSONLINETESTTBONLINETEMP2ONLINETEMP3ONLINEEXAMPLEONLINETESTONLINEUNDOTBS2ONLINE12rowsselected.

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

SQL>altertablespacetestreadwrite;Tablespacealtered.SQL>altertablespaceexamplereadwrite;Tablespacealtered.SQL>altertablespaceusersreadwrite;Tablespacealtered.SQL>selecttablespace_name,statusfromdba_tablespaces;TABLESPACE_NAMESTATUS---------------------------------------SYSTEMONLINESYSAUXONLINEUNDOTBS1ONLINETEMPONLINEUSERSONLINEUNDOTBS2ONLINEEXAMPLEONLINETESTONLINE8rowsselected.

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

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