Oracle数据库19c管理之,Oracle

文件 1
数据库19c管理之DataPump LingMeiSEHubDataManagementChinaTeam2021-07 Oracle免责申明 以下内容旨在概述Oracle产品的总体发展方向。
该内容仅供参考,不可纳入任何合同。
本文档不承诺提供任何材料、代码或功能,也不应将其作为购买决策的依据。
此处所述有关Oracle产品任何特性或功能的开发、发布、时间安排和定价可能会发生变更,且均由甲骨文公司自行决定。
议程 OracleDataPump介绍DB19c中DataPump新特性DataPump最佳实践与性能优化DataPump用户案例Demo演示 3Copyright©2020,Oracleand/oritsaffiliates OracleDataPump概述 基于服务器端的高速数据/元数据移动工具 Oracle数据泵由三个不同的组件组成: •命令行客户端、expdp和impdp•DBMS_DATAPUMPPL/SQL包(也称为数据泵API)•DBMS_METADATAPL/SQL包(也称为元数据API) 提供五种数据迁移方式 •DatafileCopying•Convetntional•DirectPath•ExternalTables•Networklinksupport
4 OracleDataPump概述 DataPumpExport&Import接口 •命令行方式•参数文件方式•交互命令方式•GUI界面方式 DataPumpExport&Import模式 •Full•Table•Schema•Tablespace•TransportableTable•TransportableTablespace•TransportableDatabase
5 Oracle逻辑备份与恢复 DataPump 使用场景 不同字节序源库版本为10g及其以上不同数据库版本 迁移过程:•准备好新的目标PDB•使用expdp导出数据•复制dumpfiles到目标端•用impdp导入到目标库 从非CDB到PDB 可能更改数据库架构 注:9i及其以前版本的源库要使用exp/imp
6 Non-CDBCDB_OnPrem PDB$SEEDPDB1CDB 使用DataPump进行数据迁移场景
1 通过DataPump将数据迁移到OracleDB19c:Step1:从源库导出数据;Step2:安装DB19c并创建目标数据库; Step3:将数据导入到新的19c数据库中。
源数据库11g/12c/18c/19c
7 目标数据库19c 使用DataPump进行数据迁移场景
2 通过NetworkLink 通过DataPump进行全库导入时,可以通过databaselink进行跨库导入。
用户在进行导出操作时需要有DATAPUMP_EXP_FULL_DATABASErole;用户在进行导入操作时需要有DATAPUMP_IMP_FULL_DATABASErole。
源数据库11g/12c/18c/19c
8 目标数据库19c 数据泵与RMAN相关特性对比 特性 脱机备份联机备份增量备份坏块检测 备份资料库备份到介质管理器备份初始化参数文件备份密码文件以及网络相关文件 RMAN 支持。
实例需要到Mount状态支持支持支持,识别坏块并记录在V$database_block_corruption支持。
支持支持不支持 DataPump 不支持支持不支持支持。
在导出日志中标识损坏的块不支持不支持不支持不支持 议程 OracleDataPump概述DB19c中DataPump新特性DataPump最佳实践与性能优化DataPumpUserCaseDemo演示 10Copyright©2020,Oracleand/oritsaffiliates DB19c中DataPump新特性 支持云对象存储作为数据加载的存储目标可移动表空间的测试模式允许表空间在TTS导入期间保持只读状态支持资源使用限制在导入操作时排除ENCRYPTION子句支持对象存储文件的通配符 11 DataPump|NewinOracle19c 支持云对象存储作为数据加载的存储目标 •该特性将REST客户端API支持添加到Oracle数据库,支持客户端API从对象存储区读取Datapump转储文件•使用expdp导出时直接将dump文件加载到对象存储上;使用impdp导入时从对象存储直接将数据加载到数据库中。
•引入该特性的好处 •在受管理的云服务中(如EECS和DWCS)用户不能访问操作系统,只能访问数据库服务。
•加载数据并将客户从本地迁移到云服务是一项艰巨的任务。
如果能够直接访问对象存储中的文件,客户可以将他们的 Datapump转储文件上传到对象存储中,方便使用新的对象存储RESTAPI将它们加载到数据库中。
使用该特性 Impdp客户端CLI现在接受一个名为“credential”的新命令行参数。
该参数为访问对象存储桶所需的用户名和密码的凭据对象的名称。
当用户连接到数据库来运行impdp时,Datapump层将验证凭据是否存在,并且用户是否有权读取凭据。
如果有任何错误,则向impdp客户端返回一个错误。
凭据验证是通过查询SYS.USER_CREDENTIALS表。
示例:impdpsystem/managertable_exists_action=replacecredential=TESTdumpfile=/v1/odbstestusoracleinterxxxx/dnfs/dump.dattrace=1800300logfile=work_import.log 12 NEWIN c DataPump|NewinOracle19c 支持云对象存储作为数据加载的存储目标 •PDB引入了一个名为default_credential的新PDB属性,可以为指定的PDB设置此属性。
•如果impdp命令行没有指定身份认证凭证名,Datapump和对象存储模块可以使用default_credential对象检索 用户名和密码,以访问对象存储桶。
•当使用默认身份凭据运行impdp时,credential参数不需要指定。
Example:SQL>alterdatabasepropertysetdefault_credential='SYSTEM.OPCTEST';impdpsystem/managertable_exists_action=replacelogfile=work_import4.logdumpfile=DEFAULT_CREDENTIAL:/v1/odbstestusoracleinterxxxx/dnfs/testdump.dat 13 DataPump|NewinOracle19c 支持云对象存储作为数据加载的存储目标 相关注意点•新的impdp参数:credential•识别新的凭据对象。
云对象存储的凭据将使用凭据对象进行管理。
可以使用DBMS_CREDENTIAL创建凭据对象。
CREATE_CREDENTIAL过程。
此过程接受用户名和密码。
数据被加密保存在PDB字典中,拥有访问权限的用户和PDB的用户才能查询凭据。
MOSNote2457398.1 示例:BEGIN DBMS_CREDENTIAL.CREATE_CREDENTIAL(credential_name=>'TEST',username=>'*****',password=>'*****');END; 14 DataPump|NewinOracle19c 可移动表空间的测试模式 •可迁移表空间的测试模式支持下面两种场景下的只导出元数据的测试。
•可迁移表空间(Transportabletablespace)•完全可迁移(FullTransportable) •修复Bug21471988-FORCEOPTIONforDATAPUMP来支持TTS和全传输的测试。
DataPump通过这个特性为可传输操作提供了一个测试模式;该模式下不需要将所有表空间设置为只读,就可以执行元数据导出,以获得如下感知: a)需要多长时间b)是否存在关闭检查未发现的不可预见的问题;•解决的问题消除了源数据库表空间为只读模式的限制;DataPump要求在导出可传输表空间操作之前将表空间设置为只读。
将支持当前隐藏的仅用于API的PataPump参数TTS_CLOSURE_CHECK作为命令行参数。
将表空间设置为只读可确保数据处于一致状态;此外可传输表空间导出操作将对可传输表空间集进行闭包检查。
实际上有些客户的表空间在只读模式下的时间是有限的。
这些客户要求能够限制表空间处于只读模式的时间长度,并能够获得datapump可传输导出操作的时间估计。
15 DataPump|NewinOracle19c 可移动表空间的测试模式 如何使用该特性 可以在datapumpexpdp命令行通过设置以下参数值,来指定要作为可传输导出操作的一部分执行的闭包检查级别。
语法和描述TTS_CLOSURE_CHECK=[ON|OFF|FULL|TEST_MODE] ON–指示执行闭包检查,以确保可传输表空间集不包含集合外的引用。
OFF–指示执行无闭包检查。
用户负责验证可传输表空间集的包容性。
FULL–指示执行完整的多向闭包检查(仍然支持TTS_FULL_CHECK和TRANSPORT_FULL_CHECK参数), 以确保可传输表空间集中没有远程引用TEST_MODE–表示表空间不需要处于只读模式。
此选项仅用于测试目的;提供可传输表空间导出操作的计时要求。
数据泵导入无法使用生成的导出转储文件。
注意:参数值ON,OFF,FULL是互斥的。
TEST_MODE仅仅是expdp的一个选项。
16 DataPump|NewinOracle19c 可移动表空间的测试模式 •可以使用现有过程DBMS_DATAPUMP.SET_PARAMETER设置TTS_CLOSURE_CHECK参数值。
TTS_CLOSURE_CHECK选项使用数字位掩码值设置: DBMS_DATAPUMP.KU$_TTS_CLOSURE_CHECK_ONisthevalue1DBMS_DATAPUMP.KU$_TTS_CLOSURE_CHECK_OFFisthevalue2DBMS_DATAPUMP.KU$_TTS_CLOSURE_CHECK_FULListhevalue4DBMS_DATAPUMP.KU$_TTS_CLOSURE_CHECK_TESTisthevalue8 下面的命令禁用所有闭包检查并启用测试模式: SYS.DBMS_DATAPUMP.SET_PARAMETER(jobhdl,‘TTS_CLOSURE_CHECK’,DBMS_DATAPUMP.KU$_TTS_CLOSURE_CHECK_OFF+DBMS_DATAPUMP.KU$_TTS_CLOSURE_CHECK_TEST); DataPump执行闭包检查的时间可能很长,有时是不必要的,特别是当客户知道包含可传输表空间集时。

使用TTS_CLOSURE_CHECKOFF选项运行数据泵可传输操作将减少数据泵可传输操作完成所需的时间。
17 DataPump|NewinOracle19c 可移动表空间的测试模式 关于错误ORA-39050:不兼容的参数异常有两个现有的DataPump命令行参数用来控制多向闭包检查: •TTS_FULL_CHECK=[YES|NO]YES–indicatesfullmulti-directionalclosurecheckNO–indicatescontainmentclosurecheck •TRANSPORT_FULL_CHECK=[YES|NO]YES–indicatesfullmulti-directionalclosurecheckNO–indicatescontainmentclosurecheck 这两个参数在19C中仍继续支持,但和TTS_CLOSURE_CHECK对应值使用是冲突的(报告ORA-39050)。
TTS_FULL_CHECK=YESorTRANSPORT_FULL_CHECK=YESconflictswithTTS_CLOSURE_CHECK=ON|OFF TTS_FULL_CHECK=NOorTRANSPORT_FULL_CHECK=NOconflictswithTTS_CLOSURE_CHECK=FULL 18 DataPump|NewinOracle19c NEWIN 允许表空间在TTS导入期间保持只读状态 c TRANSPORTABLE=NEVER|ALWAYS|KEEP_READ_ONLY|NO_BITMAP_REBUILD 重复执行TTS操作,而无需再次还原文件
在多个数据库之间共享表空间示例: impdpsystemDIRECTORY=dpump_dirDUMPFILE=dumpfile_nameTRANSPORT_DATAFILES=datafile_nameTRANSPORTABLE=KEEP_READ_ONLY表空间已安装并且可用于只读访问 19 DataPump|NewinOracle19c 允许表空间在TTS导入期间保持只读状态 该特性通过在DataPump导入命令行上的TRANSPORTABLE参数添加新选项实现。
impdp的TRANSPORTABLE参数有两个新选项: TRANSPORTABLE
=[NEVER|ALWAYS|KEEP_READ_ONLY|NO_BITMAP_REBUILD]KEEP_READ_ONLY 表空间在导入更新期间和导入完成后保持只读状态;可传输数据文件将保持只读模式;该模式下允许将数据文件插入到其他兼容给的数据库中进行只读访问。
NO_BIRTMAP_REBUILD允许表空间变为读/写状态;不为表空间重新生成空闲空间位图;不回收未使用的数据段,减少导入操作时间;可以使用dbms_space_admin.tablespace_rebuild_bitmaps重新构建位图映射。
20 备注:12cR1开始,Oracle使用FULLTTS,自动在导入期间/导入时将表空间设置为读写模式。
DataPump|NewinOracle19c 允许表空间在TTS导入期间保持只读状态 适用场景:•部分用户希望在TTS导入期间保持表空间只读的能力,因为这允许他们在两个不同的数据库上挂载相同的表空间数据文 件,需要这些文件保持只读状态。
•某些大型表空间重新构建空闲空间所花费的时间可能较长,尤其是对服务级别有严格要求的客户。
或者如果暂时不需要 重新计算位图。
添加不重新生成位图的选项将减少大规模迁移的停机时间。
注意事项:•当TRANSPORTABLE=KEEP_READ_ONLY指定时,由于数据文件处于只读模式,包含TSTZ列数据的表无法更新,将从 导入中删除。
此外,数据文件位图无法重建。
•当TRANSPORTABLE=NO_BITMAP_REBUILD被指定时,如果有必要数据文件可能被置于读写模式,以便更新包含TSTZ 列数据的表。
21 DataPump|NewinOracle19c 支持资源使用限制 这个特性引入了两个新的数据库参数: MAX_DATAPUMP_JOBS_PER_PDB在容器多租户数据库环境中,PDB并行数据泵的最大数目 MAX_DATAPUMP_PARALLEL_PER_JOB 每个Oracle数据泵作业允许的并行进程的最大数目 该特性也可以在非多租户环境中使用。
•对在DataPump中实现资源使用策略的改进;•解决了在PDB中无法杀死DataPumpworkerslave的问题(ReferenceBug27457666-UNABLETOKILLDATAPUMPWORKERSESSIONS).•当多个用户可能在给定的数据库环境中执行DataPump作业时,这些参数使DBA能够更好地控制资源的使用。
22 DataPump|NewinOracle19c NEWIN 在导入操作时的ENCRYPTION子句 c 在导入操作时启用列加密 TRANSFORM=OMIT_ENCRYPTION_CLAUSE:[Y|N]适用场景:引入此新的转换参数是为了方便从具有TDE的任何源数据库迁移到不具有TDE的目标数据库。
例如当源数据库有加密的列时,迁移到没有启用TDE的目标库 示例:impdphrDIRECTORY=dpump_dir1DUMPFILE=hr.dmpSCHEMAS=hrTRANSFORM=OMIT_ENCRYPTION_CLAUSE:
Y 描述:该特性适用与表/表空间/物化视图对象类型;可用于任何不可传输(non-transportableimport)的导入作业类型对应值含义如下Y:源库中的加密列不会在导入的表中加密N:列加密子句和源库中的创建代码一致 23 DataPump|NewinOracle19c 在导入操作时的ENCRYPTION子句 在导入时使用排除加密子句。
该特性仅允许用户在DataPump生成createobjectddl时抑制加密ddl,没有影响或问题。
当要迁移的对象涉及加密的列时,它使从TDE环境迁移到非TDE环境变得更容易。
在现有的命令行参数TRANSFORM指定该值: TRANSFORM=OMIT_ENCRYPTION_CLAUSE:
[Y|N]N-生成的createobjectddl将包括相关的加密属性子句(默认)。
Y–生成的createobjectddl将不包括任何加密属性子句。
这个转换参数的值也可以通过DBMS包的对应接口进行设置:DBMS_METADATA.SET_TRANSFORM_PARAM. Example:DBMS_METADATA.SET_TRANSFORM_PARAM(job_handle,‘OMIT_ENCRYPTION_CLAUSE’,true); 24 DataPump|NewinOracle19c 支持对象存储中的dumpfile通配符 适用场景:当需要从对象存储服务中导入多个转储文件时,可以使用基于url的转储文件名通配符简化Oracle自治数据库的导入命令,简化导入多个转储文件。
•可以在URL的文件名中指定通配符•不支持bucket-name组件中的通配符。
>impdpadmin/password@ATPC1_highdirectory=data_pump_dircredential=my_cred_namedumpfile=/v1/atpc/atpc_user/exp%u.dmp" 25 DataPump|NewinOracle21c •通过Checksum校验Dumpfileexpdp:CHECKSUM,CHECKSUM_ALGORITMimpdp:VERIFY_CHECKSUM,VERIFY_ONLY •在同一个导出或导入操作中包含和排除对象expdpinclude=tableexclude=statistics •在导入时支持可选的索引压缩,包括Oracle自治数据库TRANSFORM=INDEX_COMPRESSION_CLAUSE:COMPRESSADVANCEDLOW •支持从Oracle自治数据库导出dump文件到云对象存储•支持TTS(可传输表空间)元数据并行导出•可恢复已停止的TTS表空间的导出和导入作业•导出和导入操作支持原生JSON数据类型 26 议程 OracleDataPump概述DB19c中DataPump新特性DataPump最佳实践与性能优化DataPumpUserCaseDemo演示 27Copyright©2021,Oracleand/oritsaffiliates DataPump|最佳实践#
1 始终使用par参数文件 听起来奇怪,但是许多问题都是因为人们在命令行输入很长的DataPump命令出错。
例: DIRECTORY=my_data_pump_dirDUMPFILE=dumpfile.dmpLOGFILE=logfile.logSCHEMAS=HREXCLUDE=STATISTICSLOGTIME=ALLMETRIC=YESFLASHBACK_TIME=SYSTIMESTAMPexpdpparfile=my_data_pump_parfile.par 28 DataPump|最佳实践#
2 一致的数据泵导出(数据一致性): FLASHBACK_SCN=<>FLASHBACK_TIME=SYSTIMESTAMP 这两个参数不能同时使用;如果使用了Network_link,SCN参数值为源库的对应SCN值;Flashback_仅适用于数据库的闪回查询,不适用于闪回数据库,闪回Drop以及闪回数据归档功能;对于不支持大SCN的版本,不能为网络导出或网络导入指定大SCN。
或者: CONSISTENT=
Y [sinceOracle11.2–LegacyInterface] 实际导出时取决于当前时间并使用FLASHBACK_TIME;这会增加导出数据期间的UNDO量; 29 DataPump|最佳实践#
3 在导出过程中始终使用: EXCLUDE=STATISTICS 重新创建新的统计信息或使用DBMS_STATSstagingtable进行统计信息迁移 LOGTIME=ALL 从OracleDatabase12.1开始 METRICS=YES 对象数和时间记录在数据泵日志文件中 在导入过程中始终使用: LOGTIME=ALL 从OracleDatabase12.1开始 METRICS=YES 30 DataPump|最佳实践#
4 并行 使用PARALLEL=n 11g之后的企业版export/import均可设置;通常,n=2x,但可能需要调整注意在RAC环境使用并行时,Directory需要指向所有实例都能访问的共享存储Trigger/View/Sequence/Constraint/Object_grant/REF_constraint导出时不能并行PARALLEL还定义了并行创建多少索引 11.2.0.4and12.1.0.2:applypatchforbug22273229toenableparallelimportofconstraints/indexes 12.2新特性:并行Export/Import元数据 但不适用于TransportableTablespaces,FullTransportableExport/Import能及通过NETWORK_LINK 31 DataPump|最佳实践#5和#
6 将STREAMS_POOL_SIZE设置为合理的值(64MB 256MB) 当服务器位于不同的操作系统和存储/SAN上时,请使用NETWORK_LINK 在目标数据库上通过databaselink启动impdp 不会生成dumpfile 从Oracle12.2开始:支持通过dblink进行直接路径加载(包括LONG数据)使用:ACCESS_METHOD=DIRECT_PATH 限制: 不支持并行导元数据在Oracle12.2之前不支持LONG和LAW格式数据并行性仅限于多个分区或表;在一个大的非分区表上没有PQ并行 32 DataPump|最佳实践#
7 BasicFile(old)LOBs总是很慢SecureFileLOBs快一些 •特别是与分区结合使用•使用DBMS_REDEFINITION或ONLINETABLEMOVE(18c)将Basic转换为SecureFileLOB•在导入操作时,使用DBMS_DATAPUMP或者DBMS_METADATA的LOB_STORAGE参数,强 制将旧的LOB转换为SecureFiles 33 DataPump|最佳实践#
8 关于数据库字符集 建议源库和目标库字符集一致隐式字符集转换以目标库字符集为准,可能会导致报错 关于Version,尤其是在数据库升级降级时 注意参考数据库的Compatible参数设置设置version参数时要慎重 34 DataPump性能优化 不建议使用传统的IMP/EXP 和DataPump性能相关的参数设置•DISK_ASYNCH_IO=TRUE •DB_BLOCK_CHECKING=FALSE •DB_BLOCK_CHECKSUM=FALSE 相关需要调整的初始化参数•Processes•Sessions•Parallel_max_servers•Shared_pool_size•Undo_tablespace 35 多个用户DataPump作业的资源管理调度•Max_datapump_jobs_per_pdb•Value:0-250,default100•Auto:50%oftheseseionsvalue •Max_datapump_parallel_per_job•Value:0-1024,default1024•Auto:25%ofthesessionsvalue 议程 OracleDataPump概述DB19c中DataPump新特性DataPump最佳实践与性能优化DataPumpUserCaseDemo演示 36Copyright©2020,Oracleand/oritsaffiliates DataPump用户场景介绍 案例1:ADWInstanceMigrationbyDataPump 背景:客户需要将当前用户报表系统所使用ADW实例迁移至另外一个 租户的准生产环境。
数据迁移验证后,准生产切换为新的生产系统。
环境:ADWonOracleOCI(DB19c)Storage:ObjectStorageonOCI 数据迁移方式:Datapump数据量:5T Expdpusername/password@adwsourcefilesize=10000MBdumpfile=default_credential:/xxxxxxx/dmpfile/o/exp2019%L.dmpparallel=xxencryption_pwd_prompt=yeslogfile=exp2019.logdirectoty=datapumpdir…. 迁移时间窗口:一周关键词:Parallel objectstorage通配符 Impdpusername/password@adwtargetdirectory=datapumpdirdumpfile=default_credential:/xxxxxxx/dmpfile/o/exp2019%L.dmpparallel=xxExclude=xxxxxx….. 37 Demo演示 1可移动表空间的测试模式(TestModeforTransportableTablespaces) TTS_CLOSURE_CHECK=test_mode 2允许表空间在TTS导入期间保持只读状态(AllowtablespacestostayRead-Onlyduring TTSimport) TRANSPORTABLE=KEEP_READ_ONLYTRANSPORTABLE=NO_BITMAP_REBUILD 38 Q&AThankyou

标签: #怎么做 #文件 #乱码 #怎么改 #文件 #数据线 #全屏 #文件夹