XTTS数据迁移方案V3_第1页
XTTS数据迁移方案V3_第2页
XTTS数据迁移方案V3_第3页
XTTS数据迁移方案V3_第4页
XTTS数据迁移方案V3_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据驱动成就未来密级:商密云和恩墨(北京)信息技术有限公司版权所有,严禁翻印3/4Oracle数据迁移增量备份的XTTSXTTSwithCrossPlatformIncrementalBackups

目录1. 概述 51.1.传统的跨平台传输表空间 51.2.跨平台增量备份传输表空间 51.3.跨平台增量备份支持脚本 61.4.限制 62. 迁移前准备 62.1.源数据库检查 102.2.数据库目标端补丁情况检查。 102.3.对比新旧环境用户 102.4.目标数据库表空间检查 112.5.对象的检查 112.6.检查时区 142.7.字符集的检查 152.8.检查目标端补丁情况 162.9.组件安装情况检查 172.10.IOT检查是否使用了KeyCompression的索引组织表 172.11.检查源端是否有Cluster对象 172.12.检查RMAN 182.13.检查源端Compatible参数 182.14.检查表有没有空段 182.15.失效对象检查。 182.16.基于XMLSchema的HMLType对象检查。 192.17.目标端创建检查用DBlink。 192.18.检查源数据库的目标库具有重复名称的表空间。 192.19.检查是否存在应用用户建在system、sysaux、users上的情况。 192.20.SYS、SYSTEM用户是否有对象存在于业务表空间 192.21.表空间自包含的检查 192.22.检查BCT(BlockChangeTracking)功能 202.23.检查目标端的DB_FILES参数 202.24.确认生产库的recyclebin功能是关闭,并手工清空回收站 202.25.数据文件状态检查 202.26.关闭统计信息 212.27.调整job参数(目标端) 212.28.用户测试数据(用户元数据) 212.29.软件包上传 223. 迁移准备 223.1.避免每次恢复都需要重启 223.2.元数据导入提速 233.3.迁移建议:减少批次, 233.4.配置文件说明:xttdriver.pl 233.5.perties 243.6.xttdriver.plOptions 263.7.调试模式 273.8.执行报错 273.9.参考可能的相关BUG 274. 迁移V3(11g从单机迁移到RAC) 274.1.阶段1-初始化设置 274.1.1.安装目标数据库软件和目标数据库 284.1.2.增量转换实例(根据需要) 284.1.3.标识要传输的表空间 284.1.4.配置Directory和DBLINK(DFT) 284.1.5.创建临时区域(RMAN) 294.1.6.在源系统上安装xttconvert

转换脚本 294.1.7.在源系统上配置参数perties 294.1.8.复制配置xtt的转换脚本和perties到目标系统 294.1.9.设置临时目录 304.2.阶段2-准备阶段RMAN(RecoveryManager) 304.2.1.在源系统上运行准备步骤 304.2.2.传输源系统上的副本到目标系统 314.2.3.在目标系统转换数据文件 324.3.阶段2-(推荐)准备阶段DFT(dbms_file_transfer) 324.3.1.在源系统上运行准备步骤 334.3.2.传输数据文件到目标系统 334.4.阶段3-增量阶段(RollForwardPhase) 344.4.1.为源系统上传输的表空间创建增量备份 344.4.2.将增量备份传输到目标系统 354.4.3.转换增量备份并应用到目标系统上的数据文件副本 354.4.4.确定下一次增量备份的起始备份号 364.4.5.重复前滚阶段(阶段3)或进入运输阶段(阶段4) 364.5.阶段4-转换阶段(TransportPhase) 374.5.1.使源数据库中的源表空间为只读 374.5.2.创建最终增量备份、传输、转换并将其应用到目标数据文件 374.5.3.将对象元数据导入目标数据库 374.5.4.使表空间在目标数据库中读写 394.5.5.验证传输的数据 394.6.阶段5-清理(Cleanup) 404.7.目标数据库最后检查调整 404.7.1.恢复自动统计信息收集 404.7.2.恢复job调度任务 414.7.3.恢复用户默认表空间 414.7.4.检查临时表空间、UNDO表空间 414.7.5.导出、导入、检查用户元数据 414.7.6.检查Profile 424.7.7.检查无效对象 435. 手工XTTS迁移(从11204单机迁移到PDB) 435.1.前期准备(重要) 435.1.1.字符集检查 435.1.2.时区检查 435.1.3.db_files参数检查 435.1.4.rman配置检查 435.1.5.平台检查 445.1.6.表空间datafile检查 445.1.7.识别迁移用户 445.1.8.将非系统对象移除system,sysaux表空间 445.1.9.处理系统对象存在于业务表空间 445.1.10.表空间信息采集 445.1.11.temp表空间信息采集 445.1.12.修改BCT加快增量备份 445.1.13.调整job参数(目标端) 445.1.14.清理users表空间(目标端) 445.1.15.创建用户 445.1.16.IOT表检查 455.1.17.dbms_backup_restore.backupBackupPiece包体函数 455.1.18.dbms_backup_restore.applyDatafileTo 495.1.19.dbms_backup_restore.restoreSetPiece 525.2.RMAN备份 525.2.1.查询开始的scn 525.2.2.源端备份数据文件backupcopy 525.2.3.目标端转换数据文件rmanconvert 535.2.4.源端记录scn 545.2.5.源端备份增量备份 555.2.6.目标端增量转换convert 565.2.7.目标端应用convert后的增量备份 575.2.8.可多次重复4,5,6,7步 595.3.正式迁移 595.3.1.源端关闭监听,kill会话,禁用job 595.3.2.表空间只读 595.3.3.检查分布式事物,检查表空间只读 595.3.4.清空回收站 595.3.5.重复RMAN备份4,5,6,7 595.3.6.导出元数据 595.3.7.导入前创建还原点(12.2可pdb闪回) 615.3.8.导入元数据到PDB 615.3.9.表空间读写 625.3.10.导入用户元数据 625.3.11.public对象单独导出导入 635.3.12.修改用户默认的表空间 635.3.13.删除闪回点 63

XTTS操作手册概述KnownIssuesforCrossPlatformTransportableTablespacesXTTS(DocID2311677.1)V4ReduceTransportableTablespaceDowntimeusingCrossPlatformIncrementalBackup(DocID2471245.1)11G-ReduceTransportableTablespaceDowntimeusingCrossPlatformIncrementalBackup(Note1389592.1)12C-ReduceTransportableTablespaceDowntimeusingCrossPlatformIncrementalBackup(Note2005729.1)‘’传统的跨平台传输表空间TraditionalCrossPlatformTransportableTablespacesThehigh-levelstepsinatypicalXTTSscenarioarethefollowing:1MaketablespacesinsourcedatabaseREADONLY2Transferdatafilestodestinationsystem3Convertdatafilestodestinationsystemendianformat4ExportmetadataofobjectsinthetablespacesfromsourcedatabaseusingDataPump5ImportmetadataofobjectsinthetablespacesintodestinationdatabaseusingDataPump6MaketablespacesindestinationdatabaseREADWRITE传统的跨平台传输表空间的停时时间和数据量成正比,如果数据量大,数据文件传输和转换的时间会很长。具有大量元数据库的数据从跨平台增量备份中获益有限;迁移时间由元数据操作决定,而不是数据文件和传输只有那些物理上位于被传输的表空间中的数据库对象才会被复制到目标系统。跨平台增量备份传输表空间Thehigh-levelstepsusingthecrossplatformincrementalbackupcapabilityarethefollowing:1.Preparephase(sourcedataremainsonline)1.1Transferdatafilestodestinationsystem1.2Convertdatafiles,ifnecessary,todestinationsystemendianformat2.RollForwardphase(sourcedataremainsonline-Repeatthisphaseasmanytimesasnecessarytocatchdestinationdatafilecopiesuptosourcedatabase)2.1Createincrementalbackuponsourcesystem2.2Transferincrementalbackuptodestinationsystem2.3Convertincrementalbackuptodestinationsystemendianformatandapplythebackuptothedestinationdatafilecopies3.Transportphase(sourcedataisREADONLY)3.1MaketablespacesinsourcedatabaseREADONLY3.2RepeattheRollForwardphaseonefinaltimeThisstepmakesdestinationdatafilecopiesconsistentwithsourcedatabase.TimeforthisstepissignificantlyshorterthantraditionalXTTSmethodwhendealingwithlargedatabecausetheincrementalbackupsizeissmaller.3.5ExportmetadataofobjectsinthetablespacesfromsourcedatabaseusingDataPump3.6ImportmetadataofobjectsinthetablespacesintodestinationdatabaseusingDataPump3.7MaketablespacesindestinationdatabaseREADWRITE其它对象传输,函数,存储过程,视图,临时表定义,PL/SQL对象?跨平台增量备份支持脚本perties配置文件xttdriver.pl执行XTTS跨平台增量备份过程的主要步骤限制1必须遵循可传输表空间的限制和注意事项。/cd/E11882_01/server.112/e25494/tspaces.htm#i1007169/cd/E11882_01/server.112/e22490/dp_export.htm#i10075242不支持Windows版本3源数据库必须是或更高版本4源数据库的兼容参数必须设置为10.2.0或更高版本。5源数据库的COMPATIBLE参数不能大于目标数据库的COMPATIBLE参数。6源数据库必须处于ARCHIVELOG模式。7目标数据库必须运行或更高版本。8目标系统是Linux系统或者Unix系统9源的Oracle版本必须低于或等于目标。可以作为升级方法使用10RMAN的默认设备类型应配置为磁盘11源系统上的RMAN不能将设备类型磁盘配置为“压缩”。如果是这样,过程可能会返回:ORA-19994:跨平台备份压缩备份的不同端性。12要移动的表空间集必须全部联机,并且不包含脱机数据文件。表空间必须是读写的。只读的表空间可以用普通的XTTS方法移动。不需要合并跨平台增量备份来移动始终为只读的表空间。13不支持对备用数据库或快照备用数据库执行此过程。14如果目标数据库版本为或更低版本,则需要在目标系统上运行实例的包含的单独数据库主目录才能执行增量备份转换。15如果将ASM用于ConvertHome,则ASM必须位于上,否则将引发错误ORA-15295(例如,ORA-15295:ASM实例软件版本.0低于客户端版本.0)迁移前准备迁移检查表配置类型源库source目标库dest说明操作系统1313selectPLATFORM_ID,PLATFORM_NAMEfromv$database;

XTTS不支持Windows版本操作系统版本CentOS7.4OracleLinux6.10cat/etc/*-release

目标系统是Linux系统或者Unix系统/etc/hosts检查1dest

1source1dest

1source配置sourcedest主机名,可以使用主机名解析IP数据库补丁版本.0.0opatchlspatches

select'opatch',commentsfromdba_registry_history;

源数据库必须是或更高版本,目标数据库必须是或更高版本。

源的Oracle版本必须低于或等于目标。

DFT方法建议安装Patch19023822修复目标端使用DBMS_FILE_TRANSFER.GET_FILE包获取源端数据文件出现ORA-03106的情况。Patch22171097:MERGEREQUESTONTOPOFDATABASEPSU.6FORBUGS1753436519023822补丁opatch版本.25.25opatchversion兼容参数检查.0.0showparametercompatible

源数据库的兼容参数必须设置为10.2.0或更高版本。源数据库的不能大于目标数据库的。归档模式检查YESYESarchiveloglist;

源数据库必须处于ARCHIVELOG模式。组件检查通过通过selectcomp_namefromdba_registry;

对于不一样的组件,需要有所标记数据库名称orclorclORACLE_SID数据库字符集AMERICAN_AMERICA.AL32UTF8AMERICAN_AMERICA.AL32UTF8select*fromnls_database_parameterswhereparameterlike'%CHARACTERSET%';国家字符集UTF-8UTF-8(NATIONALCHARACTER)影响NCHARNVARCHARNLOBNCLOB时区检查+08:00+08:00selectsessiontimezone,dbtimezonefromdual;数据库节点单实例RAC1节点DB_FILES参数302000showparameterdb_files

目标端不能小于源端BCT检查未开启(通过)-在源端数据量较大,或者数据改变较大时启用,需要在源库安装补丁Bug16850197,但是目前该补丁只在.8上有提供。经过测试,其余版本没有触发bug。

注意:块跟踪设置的目录大小,避免因块跟踪目录满而导致源数据库hang。

注意:RAC需要放在共享存储上,否则会导致DFSLOCKHANDLE,导致实例异常。select*fromv$BLOCK_CHANGE_TRACKING;ALTERDATABASEENABLEBLOCKCHANGETRACKINGUSINGFILE'/XXX/bct.trace';select*fromv$BLOCK_CHANGE_TRACKING;altersystemset"_bct_bitmaps_per_file"=100sid='*'迁移用户GZGZ9COG创建用户并授权(已创建)setline190pages900

selectusername,account_status,profile,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACEfromdba_userswhereACCOUNT_STATUSnotin('EXPIRED'||chr(38)||'LOCKED','LOCKED');迁移表空间GZ1迁移的表空间

在目标数据库不能存在withtas(selectOWNER,SEGMENT_TYPE,TABLESPACE_NAMEtbs_name,count(1)cnt,round(sum(BYTES/1024/1024),2)sizeMB

fromdba_segmentswhereOWNERin(selectusernamefromsys.t_user)

groupbyOWNER,TABLESPACE_NAME,SEGMENT_TYPE

)selectdistincttbs_namefromt表空间

自包含检查通过-execdbms_tts.transport_set_check('GZ2,GZ1',TRUE,TRUE);

execdbms_tts.transport_set_check('GZ1',TRUE,TRUE);

select*fromtransport_set_violations;表空间

联机检查通过-selectdistinctstatusfromgv$datafile;

selectdistinctc.statusfile_status,d.STATUStbs_statusfromgv$datafilec,v$tablespacea,sys.t_tbsb,dba_tablespacesdwhere=b.tbs_nameandc.ts#=a.ts#andb.tbs_name=d.TABLESPACE_NAME;

要移动的表空间集必须全部联机,并且不包含脱机数据文件。表空间必须是读写的。RMAN检查DISKDISKRMAN的默认设备类型应配置为磁盘,源系统上不能将设备类型磁盘配置为“压缩”。统计信息-提前关闭execDBMS_AUTO_TASK_ADMIN.DISABLE(client_name=>'autooptimizerstatscollection',operation=>NULL,window_name=>NULL);JOB参数-提前关闭altersystemsetjob_queue_processes=0sid='*';

防止job调度任务,修改迁移后的数据。默认1000回收站检查关闭回收站-showparameterrecyclebin;

purgedba_recyclebin;

altersystemsetrecyclebin=offscope=spfilesid='*';

确认生产库的recyclebin功能是关闭,并手工清空回收站失效对象检查无失效对象-检查源库失效对象,迁移前后对比Cluster对象无cluster对象-selectowner,CLUSTER_NAME,TABLESPACE_NAMEfromDBA_CLUSTERSwhereownerin(selectusernamefromsys.t_user);

源库有CLUSTER对象需要安装补丁17866999,or重建cluster对象IOT压缩检查无压缩IOT-selectindex_name,table_namefromdba_indexeswherecompression='ENABLED'

andOWNERin(selectusernamefromsys.t_user);

selectowner,table_namefromdba_tableswhereiot_typeisnotnull

andOWNERin(selectusernamefromsys.t_user);

如果存在,目标数据库需要安装Patch14835322,否则索引组织表的对象无法导入到目标端。临时目录TMPDIR/home/oracle/xtt/home/oracle/xttecho"exportTMPDIR=/home/oracle/xtt">>~/.bash_profile;source~/.bash_profile

TMPDIR为支持脚本所在的路径,使用shell运行perl脚本xttdriver.pl,如果未设置TMPDIR,输出文件和输入文件都创建中/tmp中创建临时区域backupformat=/u01/stage_sourcebackupondest=/u02/rman_incrbackupformat--源系统上增量备份目录

backupondest--目录系统增量转换目录

配置perties准备阶段-DFTcreateorreplacedirectorySRCas'/u11/app/oracle/oradata/ORCL/datafile';createdirectoryDSTas'+DATA/ORCL/datafile';select*fromdba_directories;

配置Directory和DBLINK准备阶段-DFT-创建DBLinkcreatepublicdatabaselinkttslink

connecttosystemidentifiedby"oracle"using

'(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=1)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)))';

select*fromdual@ttslink;准备阶段-RMANdfcopydir=/u01/stage_sourcestageondest=/u02/stage_destdfcopydir--源系统上RMAN-p阶段生成文件目录

stageondest--目标系统目录,MRAN手动从源系统上传输文件

配置pertie暂存区安装xttconvert源系统上安装配置好之后copy到目录系统unziprman_xttconvert_pertie配置

-RMANtablespaces=GZ1

platformid=13

dfcopydir=/u01/stage_source

backupformat=/u01/stage_source

stageondest=/u02/stage_dest

storageondest=+DATA/ORCL/DATAFILE

backupondest=/u02/rman_incrtablespaces=GZ1

platformid=13

srcdir=SRC

dstdir=DST

srclink=TTSLINK

dfcopydir=/u01/stage_source

backupformat=/u01/stage_source

stageondest=/u02/stage_dest

storageondest=+DATA/ORCL/DATAFILE

backupondest=/u02/rman_incrcatperties|grep-Ev"^$|^#"

scp-r/home/oracle/xttoracle@dest:/home/oracle源数据库检查2不支持Windows版本3源数据库必须是或更高版本4源数据库的兼容参数必须设置为10.2.0或更高版本。5源数据库的COMPATIBLE参数不能大于目标数据库的COMPATIBLE参数。6源数据库必须处于ARCHIVELOG模式。showparametercomparchiveloglist;数据库目标端补丁情况检查。select'opatch',commentsfromdba_registry_history对比新旧环境用户@show_create_profile@show_create_user对比role,对比新旧环境profile,在新环境当中对比并创建用户创建非默认的temp表空间在目录端创建用户,并授权目标数据库表空间检查如果存在空格或者换行符数据文件,需要将该数据文件rename,否则在传输过程中会报错终止。如果存在同名表空间,而且该表空间中的对象需要传输,建议将目标端中的表空间rename,以避免冲突。检查相同表空间下是否存在不同目录下的同名数据文件。使用dbms_file_transfer方式进行XTTS数据迁移,需要通过修改准备阶段的getfile.SQL和xttnewdatafile文件来调整数据文件生成的路径。select

substr(file_name,-6,2)

from

dba_data_files

where

tablespace_name='TBS_NAME'

order

by

1;

如果目标端有多个目录,指定数据文件生成在不同的目录,可以避免冲突。如果准备阶段使用rman方式进行同步,则所有的数据文件会转换为xtf结尾的文件,文件名会重新命名,所以不需要提前修改。对象的检查对象的统计,跟业务确认需要传输哪一些数据,哪一些表空间是迁移的对象创建模式用户检查1传输的表空间只包含要传输的用户的对象,传输的表空间不包含其它用户的对象检查2目标数据库中存在表空间传输所需的模式用户及表空间名称。#确定用户及表空间自包含--确定要迁移的用户和表空间在目录端创建用户并授权setline190pages900selectusername,account_status,profile,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACEfromdba_userswhereACCOUNT_STATUSnotin('EXPIRED'||chr(38)||'LOCKED','LOCKED');--1.1查看当前使用的用户--createtablesys.t_userasselectusername,account_status,profile,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACEfromdba_userswhereACCOUNT_STATUSnotin('EXPIRED'||chr(38)||'LOCKED','LOCKED')andusernamenotin('SYS','SYSTEM');--1.2查看当前用户使用的默认表空间(如果使用了SYSTEM,SYSAUX表空间,需要迁移到其它表空间)--目录表空间--createtablesys.t_tbsaswithtas(selectOWNER,SEGMENT_TYPE,TABLESPACE_NAMEtbs_name,count(1)cnt,round(sum(BYTES/1024/1024),2)sizeMBfromdba_segmentswhereOWNERin(selectusernamefromsys.t_user)groupbyOWNER,TABLESPACE_NAME,SEGMENT_TYPE)selectdistincttbs_namefromt--wheretbs_namein('GZ1');select*fromsys.t_tbs;--修改USERS表空间为gz1表空间(如果使用到了USERS表空间,判断是否需要修改)altertablespaceusersrenametogz2;--重新新建USERS表空间createtablespaceUSERSdatafilesize10Mautoextendonnext5Mmaxsize30G;--修改默认用户表空间以及用户表空间(使用要迁移的表空间作为默认表空间的其它用户)alterdatabasedefaulttablespaceusers;--检查是否有使用了要迁移的表空间用为默认表空间的其它用户(如果存在,需要调整为其它表空间)select'alteruser'||username||'defaulttablespaceUSERS;'alert_sqlfromdba_userswhereusernamenotin(selectusernamefromsys.t_user)andDEFAULT_TABLESPACEin(selecttbs_namefromsys.t_tbs);--2迁移在其它表空间的用户的表,到迁移的表空间--判断是否需要迁移表数据--2.1查看用户使用了其它表空间(SYSTEM,SYSAUX)的对象明细–指定表空间selectOWNER,SEGMENT_NAME,SEGMENT_TYPE,TABLESPACE_NAME,round(BYTES/1024/1024,2)sizeMBfromdba_segmentswhereOWNERin(selectusernamefromsys.t_user)andTABLESPACE_NAMEnotin(selecttbs_namefromsys.t_tbs);--altertablegz9.t1movetablespacegz1;--2.11把处于SYSTEM,SYSAUS表空间的对象迁称到用户表空间select'alter'||SEGMENT_TYPE||''||OWNER||'.'||SEGMENT_NAME||''||decode(SEGMENT_TYPE,'TABLE','move','rebuild')||'tablespace&usrtbs;'alert_sqlfromdba_segmentswhereOWNERin(selectusernamefromsys.t_user)andTABLESPACE_NAMEnotin(selecttbs_namefromsys.t_tbs)andSEGMENT_TYPEin('TABLE','INDEX');#2.2查看LOB对象selectowner,TABLE_NAME,COLUMN_NAME,SEGMENT_NAME,TABLESPACE_NAME,INDEX_NAMEfromDBA_LOBSwhereOWNERin(selectusernamefromsys.t_user)andTABLESPACE_NAMEnotin(selecttbs_namefromsys.t_tbs);#2.21迁移(迁入)LOB对象select'altertable'||OWNER||'.'||TABLE_NAME||'movelob('||COLUMN_NAME||')storeas(tablespace&usrtbs);'alert_sqlfromDBA_LOBSwhereOWNERin(selectusernamefromsys.t_user)andTABLESPACE_NAMEnotin(selecttbs_namefromsys.t_tbs);#3.1查看其它用户在使用了需要迁移的用户表空间的其它用户对象selectOWNER,TABLESPACE_NAME,SEGMENT_TYPE,count(1),round(sum(BYTES/1024/1024),2)sizeMBfromdba_segmentswhereOWNERnotin(selectusernamefromsys.t_user)andTABLESPACE_NAMEin(selectdistincttbs_namefromsys.t_tbs)groupbyOWNER,TABLESPACE_NAME,SEGMENT_TYPE;#3.11在用户表空间的其它用户对象明细selectOWNER,TABLESPACE_NAME,SEGMENT_TYPE,SEGMENT_NAME,round(BYTES/1024/1024,2)sizeMBfromdba_segmentswhereOWNERnotin(selectusernamefromsys.t_user)andTABLESPACE_NAMEin(selectdistincttbs_namefromsys.t_tbs);#3.12迁移(迁出)表空间select'alter'||SEGMENT_TYPE||''||OWNER||'.'||SEGMENT_NAME||''||decode(SEGMENT_TYPE,'TABLE','move','rebuild')||'tablespace&&othtbs;'alert_sqlfromdba_segmentswhereOWNERnotin(selectusernamefromsys.t_user)andTABLESPACE_NAMEin(selectdistincttbs_namefromsys.t_tbs)andSEGMENT_TYPEin('TABLE','INDEX');其它表空间的LOB对象迁移处理,#3.21查看LOB对象selectowner,TABLE_NAME,COLUMN_NAME,SEGMENT_NAME,TABLESPACE_NAME,INDEX_NAMEfromDBA_LOBSwhereOWNERnotin(selectusernamefromsys.t_user)andTABLESPACE_NAMEin(selectdistincttbs_namefromsys.t_tbs);#3.22迁移(迁出)LOB对象select'altertable'||OWNER||'.'||TABLE_NAME||'movelob('||COLUMN_NAME||')storeas(tablespace&&othtbs);'alert_sqlfromDBA_LOBSwhereOWNERnotin(selectusernamefromsys.t_user)andTABLESPACE_NAMEin(selectdistincttbs_namefromsys.t_tbs);--删除临时表droptablesys.t_userpurge;droptablesys.t_tbspurge分区LOB迁移处理--查看segment类型selectOWNER,SEGMENT_NAME,SEGMENT_TYPE,TABLESPACE_NAME,round(BYTES/1024/1024,2)sizeMBfromdba_segmentswhereOWNERin(selectusernamefromsys.t_user)andTABLESPACE_NAMEnotin(selecttbs_namefromsys.t_tbs);--LOB分区DBA_LOB_PARTITIONSselecttable_owner||'.'||table_nametable_name,column_name,lob_name,partition_name,lob_partition_name,tablespace_namefromDBA_LOB_PARTITIONSwheretable_ownerin(selectusernamefromsys.t_user)andTABLESPACE_NAMEnotin(selecttbs_namefromsys.t_tbs);--锁定表locktablecog.test_rangeinexclusivemode;--普通的方式插入数据insertintocog.test_range2Aselect*fromcog.test_rangeB;--在并发INSERT的时候,数据是被使用APPEND方式插入到表中,如果需要常规方式插入,需要加上noappend提示.ALTERSESSIONENABLEPARALLELDML;ALTERSESSIONDISABLEPARALLELDML;insertinto/*+parallel(A,3)*/cog.test_range2ASELECT/*+parallel(B,3)*/*FROMcog.test_rangeB;--验证数据selectcount(1)fromcog.test_range2;--修改表名altertablecog.test_rangerenametotest_range3;altertablecog.test_range2renametotest_range;droptablecog.test_range3purge;altertable"COG".test_rangemovetablespacegz1;altertable"COG".test_rangemovePARTITION"P0"tablespacegz2;altertable"COG".test_rangemovepartition"P0"tablespacegz1lob(RANDOM_STRING2)storeasBASICFILE(tablespaceGZ1);altertable"COG".test_rangemovepartition"P0"LOB("RANDOM_STRING2")STOREASBASICFILE(TABLESPACE"GZ1");altertablecog.test_rangemodifydefaultattributestablespacegz1;--创建HASH分区表修改调表空间createtablecog.hash(idint,random_string1varchar2(100),msgclob)partitionbyhash(id)(partitionp1,partitionp2,partitionp3,partitionp4);--插入数据insertintocog.hashselectrownum,'123','abc'fromdualconnectbyrownum<=500;--查看分配置的空间undefinetable_namewithtas(selecta.*,rank()over(partitionbysegment_nameorderbyextent_iddesc)numfromdba_extentsawhereOWNER=upper('&&owner')andSEGMENT_NAMEin(selectSEGMENT_NAMEfromDBA_LOBSwhereOWNER=upper('&&owner')andTABLE_NAME=upper('&&table_name')unionselectindex_namefromdba_indexeswhereTABLE_OWNER=upper('&&owner')andtable_name=upper('&&table_name')unionselectupper('&&table_name')fromdual))selectOWNER,SEGMENT_NAME,PARTITION_NAME,SEGMENT_TYPE,TABLESPACE_NAME,EXTENT_ID,FILE_ID,BLOCK_ID,BYTES,BLOCKS,RELATIVE_FNOfromtwherenum<=50/--修改分区表(HASH)的表空间altertablecog.hashmovetablespacegz1;--分区表不能这样直接修改定义的默认表空间altertablecog.hashmodifydefaultattributestablespacegz1;--要这样altertablecog.hashmovePARTITIONP4tablespacegz1;altertablecog.hashmovepartitionP1lob(msg)STOREASBASICFILE(tablespaceGZ1);--HASH分区不支持BASICFILEaltertablecog.hashmovepartitionP1lob(msg)STOREASSECUREFILE(tablespaceGZ1);--HASH分区可以使用SECUREFILEaltertablecog.hashmovepartitionP1lob(msg)storeas(tablespacegz1);altertablecog.hashmovepartitionP1tablespacegz1lob(msg)storeas(tablespacegz1);altertablecog.hashdeallocateunused;altertablecog.hashmodifypartitionp4lob(msg)(deallocateunusedkeep8K);altertablecog.hashmovepartitionP1lob(msg)storeas(tablespacegz1);检查时区确保目标数据库和时间一致,--源端时区,字符集的检查selectsessiontimezone,dbtimezonefromdual;--会话时区,世界时区selectdbtimezonefromdual;--数据库时区--修改时区ALTERDATABASESETTIME_ZONE='+08:00';--修改好了之后需要重启修改好后需要重启pdb--检查数据库是否有这样的字段类型TIMESTAMPWITHLOCALTIMEZONE--如果有需要转换成timestamp--createtablegz1.tm1(idnumber(10),dtTIMESTAMPWITHLOCALTIMEZONE);--insertallintogz1.tm1values(3,sysdate)intogz1.tm1values(4,sysdate)select1fromdual;selectc.owner||'.'||c.table_name||'('||c.column_name||')-'||c.data_type||''colfromdba_tab_colsc,dba_objectsowherec.data_typelike'%WITHLOCALTIMEZONE'andc.owner=o.ownerandc.table_name=o.object_nameando.object_type='TABLE'orderbycol/--查看时区依赖的表(根据对象ID)select||'.'||||'.'||TSLTZcolumnfromsys.obj$o,sys.col$c,sys.user$uwherec.type#=231ando.obj#=c.obj#andu.user#=o.owner#;--查看时区依赖表结构descgz1.tm1;--###处理时区依赖表也可以使用重建整个表CTAS,orcreateandinsertselectcreatetablegz1.tm1_tmp(idnumber(10)primarykey,dttimestamp);locktablegz1.tm1inexclusivemodenowait;--锁整个表insertintogz1.tm1_tmpselectid,dtfromgz1.tm1;commit;altertablegz1.tm1dropcolumndt;altertablegz1.tm1addid2number(10);altertablegz1.tm1adddttimestamp;mergeintogz1.tm1gusinggz1.tm1_tmpton(g.id=t.id)WHENMATCHEDTHENupdatesetg.dt=t.dt;droptablegz1.tm1_tmppurge;#修改表中的ID顺序(若无必要,不必修改)需要重启数据库#查看表对应的idselectobject_idfromdba_objectswhereowner=upper('&&owner')andobject_name=upper('&&table_name');#查看表中各字段的顺序:#填上刚刚查到的表idselectobj#,col#,namefromsys.col$whereobj#=&&obj_idorderbycol#;#修改顺序undefinenew_numundefinecolumn_nameupdatesys.col$setcol#=&&new_numwherename=upper('&&column_name')andobj#=&&obj_id;updatesys.col$setcol#=col#+1wherename<>upper('&&column_name')andobj#=&&obj_idandcol#>=&&new_num;selectobj#,col#,namefromsys.col$whereobj#=&&obj_idorderbycol#;#值得注意的一点是,更新完字段顺序后,若直接插入数据,还是按旧的字段顺序插入的,需要指定插入的字段或者重启oracle。(需要根据情况验证)字符集的检查若无必要,目标端字符集和源数据库字符集应当一致#为什么不用gbk的字符集:因为有些汉字gbk中没有编码,而utf8包容性最大--检测当前前字符序COLUMNPLATFORM_NAMEFORMATA36SELECT*FROMV$TRANSPORTABLE_PLATFORMORDERBYPLATFORM_NAME;selectPLATFORM_ID,PLATFORM_NAMEfromv$database;--检测当前字符集select*fromnls_database_parameterswhereparameterlike'%CHARACTERSET%';#客户端字符集!env|grep-ilangNLS_LANG=AMERICAN_AMERICA.AL32UTF8NLS_LANG="SIMPLIFIEDCHINESE_CHINA.ZHS16GBK"LANG=en_US.UTF-8--操作系统--检查字符集设置select*fromnls_database_parameterswhereparameterlike'%CHARACTERSET%';select*fromv$nls_parameterswhereparameterlike'%CHARACTERSET%';PARAMETERVALUENLS_CHARACTERSETAL32UTF8NLS_NCHAR_CHARACTERSETUTF8--server端字符集AMERICAN_AMERICA.AL32UTF8selectuserenv('language')fromdual;--client端字符集!echo$NLS_LANG--评估一下是否要做字符集更改将数据库启动到RESTRICTED模式下做字符集更改startupmountforceALTERSYSTEMENABLERESTRICTEDSESSION;ALTERSYSTEMSETJOB_QUEUE_PROCESSES=0;ALTERSYSTEMSETAQ_TM_PROCESSES=0;alterdatabaseopen;ALTERDATABASECHARACTERSETZHS16GBK;--修改时可能会遇到以下错误ORA-12712:newcharactersetmustbeasupersetofoldcharacterset--这时我们可以跳过超集的检查做更改--修改字符集ZHS16GBKAL32UTF8ALTERDATABASEcharactersetINTERNAL_USEAL32UTF8;--修改国家字符集ALTERDATABASENATIONALCHARACTERSETINTERNAL_USEUTF8;shutdownimmediate--启动数据库,修改参数为原来的值startupALTERSYSTEMSETJOB_QUEUE_PROCESSES=1000;ALTERSYSTEMSETAQ_TM_PROCESSES=4;select*fromv$nls_parameters;修改国家字符集-步骤:1.在SQL*PLUS中,以DBA登录conn用户名assysdba2.执行转换语句:altersystemsetcluster_database=FALSEscope=spfilesid='*';SHUTDOWNIMMEDIATE;STARTUPMOUNTEXCLUSIV;ALTERSYSTEMENABLERESTRICTEDSESSION;ALTERSYSTEMSETJOB_QUEUE_PROCESSES=0;ALTERSYSTEMSETAQ_TM_PROCESSES=0;ALTERDATABASEOPEN;ALTERDATABASENATIONALCHARACTERSETUTF8;altersystemsetcluster_database=TRUEscope=spfilesid='*';SHUTDOWNimmediate;startup;--修改国家字符集可能会报错ALTERDATABASENATIONALCHARACTERSETUTF8;ORA-12717:CannotALTERDATABASENATIONALCHARACTERSETwhenNCLOBdataexists--使用INTERNAL_USE的方法ALTERDATABASENATIONALCHARACTERSETINTERNAL_USEUTF8;检查目标端补丁情况opatchlspatchesselect'opatch',commentsfromdba_registry_history;如果准备阶段使用DBMS_FILE_TRANSFER方法,目标端建议安装的补丁如下:Patch19023822,修复目标端使用DBMS_FILE_TRANSFER.GET_FILE包获取源端数据文件出现ORA-03106的情况。Patch22171097:MERGEREQUESTONTOPOFDATABASEPSU.6FORBUGS1753436519023822如果准备阶段使用RMAN方法,目标端没有小补丁安装需求。组件安装情况检查对于不一样的组件,需要有所标记selectcomp_namefromdba_registry;IOT检查是否使用了KeyCompression的索引组织表selectindex_name,table_namefromdba_indexeswherecompression='ENABLED'andOWNERin(selectusernamefromsys.t_user);selectowner,table_namefromdba_tableswhereiot_typeisnotnullandOWNERin(selectusernamefromsys.t_user);如果存在,目标数据库需要安装Patch14835322,否则索引组织表的对象无法导入到目标端。目前该补丁只在版本下提供,针对其他版本,如果IOT表或者键值压缩索引无法导入时,建议在元数据导入完成后,将该类对象传输过去。$ORACLE_HOME/OPatch/opatchlsinv|grep14835322IfthesourcedatabasecontainsnestedIOTswithkeycompression,thenthefixfor

Bug14835322

mustbeinstalledinthedestinationdatabasehome(wherethetablespaceplugoperationoccurs).检查源端是否有Cluster对象selectowner,CLUSTER_NAME,TABLESPACE_NAMEfromDBA_CLUSTERSwhereownerin(selectusernamefromsys.t_user);analyzecluster&cluster_namevalidatestructurecascadeBug17866999

-ORA-1499byAnalyzeClusterFollowingRMANConvert.ClusterInconsistencymayleadtoORA-600[6711]ORA-600[6722]Thisdocumentcanbereferredaswellforknownissues:Note17866999.8&Ifthesourcecontainsclusterobjects,thenrun"analyzecluster&cluster_namevalidatestructurecascade"afterXTTShasbeencompletedinthetargetdatabaseandifitreportsanORA-1499openthetracefileandreviewifithasentrieslike:kdcchk:indexpointstoblock0x01c034f2slot0x1chainlengthis256kdcchk:chaincountwrong0x01c034f2.1chainis1indexsays256lastentry0x01c034f2.1blockcount=1kdavls:kdcchkreturns3whencheckingclusterdba0x01c034a1objn90376Thentorepairthisinconsistencyeither:1.rebuildtheclusterindex.or2.Installfixbug17866999andrundbms_repair.repair_cluster_index_keycountIfafterrepairingtheinconsistencythe"analyzecluster&cluster_namevalidatestructurecascade"stillreportsissuesthenrecreatetheaffectedclusterwhichinvolvesrecreatingitstables.Notethatthefixofbug17866999isaworkaroundfixtorepairtheindexcluster;itwillnotavoidtheproblem.Oracledidnotfindavalidfixforthissituationsoitwillaffectanyrdbmsversions.如果修复Bug之后还是一直报错,重建cluster对象检查RMANRMAN的默认设备类型应配置为磁盘源系统上的RMAN不能将设备类型磁盘配置为“压缩”。如果是这样,过程可能会返回:ORA-19994:跨平台备份压缩备份的不同端性。开启并行提高性能rmantarget/<<EOFshowall;exit;EOFCONFIGUREDEVICETYPEDISKPARALLELISM1BACKUPTYPETOBACKUPSET;CONFIGUREDEVICETYPEDISKPARALLELISM2BACKUPTYPETOBACKUPSET;配置压缩会导致以上报错,Iftherollforwardphase(xttdriver.pl-r)failswiththefollowingerrors,thenverifyRMANDEVICETYPEDISKis

not

configuredCOMPRESSED.EnteringRollForward

AfterapplySetDataFile

Done:applyDataFileTo

Done:RestoreSetPiece

DECLARE

*

ERRORatline1:

ORA-19624:operationfailed,retrypossible

ORA-19870:errorwhilerestoringbackuppiece

/dbfs_direct/FS1/xtts/incrementals/xtts_incr_backup

ORA-19608:/dbfs_direct/FS1/xtts/incrementals/xtts_incr_backupisnotabackup

piece

ORA-19837:invalidblocksize0inbackuppieceheader

ORA-06512:at"SYS.X$DBMS_BACKUP_RESTORE",line2338

ORA-06512:atline40检查源端Compatible参数showparametercompatiblesource端的COMPATIBLE.RDBMS必须大于10.2.0,且不大于目标端COMPATIBLE.RDBMS如果目标端数据库版本是或更低。那么需要在目标端装并创建实例,然后用来进行备份集转换。如果中转实例使用ASM。那么ASM版本也必须是,否则报错ORA-15295。检查表有没有空段失效对象检查。@chk_inivalid_object@?/rdbms/admin/utlrp基于XMLSchema的HMLType对象检查。目标端创建检查用DBlink。检查源数据库的目标库具有重复名称的表空间。目录数据库应当不存在源库导出的表空间名称检查是否存在应用用户建在system、sysaux、users上的情况。SYS、SYSTEM用户是否有对象存在于业务表空间如数据库用户

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论