表空间迁移.docx
- 文档编号:30178709
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:12
- 大小:18.98KB
表空间迁移.docx
《表空间迁移.docx》由会员分享,可在线阅读,更多相关《表空间迁移.docx(12页珍藏版)》请在冰豆网上搜索。
表空间迁移
表空间迁移
5.检测测试表空间是否是自包含
executedbms_tts.transport_set_check('ZHJS_LIST_CTJS_200801',true);
若报过程dbms_tts.transport_set_check不存在,则用sys的数据库用户执行脚本"$ORACLE_HOME/rdbms/admin/dbmsplts.sql"建立之。
SELECT*FROMTRANSPORT_SET_VIOLATIONS;
若查询结果为空,说明表空间是自包含的;否者查询结果说明哪些地方违反了自包含。
关于自包含的相关定义,参见ORACLE相关文档。
6.将要测试的表空间改为只读
altertablespaceZHJS_LIST_CTJS_200801readonly;
7.导出元数据
expPARFILE='exppar.f'
exppar.f内容:
TRANSPORT_TABLESPACE=y
TABLESPACES=ZHJS_LIST_CTJS_200801
TRIGGERS=y
CONSTRAINTS=n
GRANTS=n
FILE=test200801.dmp
LOG=testexp200801.log
exp需要有SYSDBA权限的用户进行连接(username/passwordassysdba)。
8.使用dd命令拷贝出裸设备的数据
ddif=/dev/vgnewzhjsdb2/rlvnewzhjs_zlist300of=300ibs=102400obs=102400
ddif=/dev/vgnewzhjsdb2/rlvnewzhjs_zlist301of=301ibs=102400obs=102400
9.删除测试的表空间
droptablespaceZHJS_LIST_CTJS_200801includingcontents;
10.使用dd命令将8中拷贝出的文件重新拷到其他裸设备中
ddif=300of=/dev/vgnewzhjsdb2/rlvnewzhjs_zlist302ibs=102400obs=102400
ddif=301of=/dev/vgnewzhjsdb2/rlvnewzhjs_zlist303ibs=102400obs=102400
11.使用imp导入测试表空间
impPARFILE='imppar.f'
imppar.f内容:
TRANSPORT_TABLESPACE=y
FILE=test200801.dmp
DATAFILES=('/dev/vgnewzhjsdb/rlvnewzhjs_zlist302','/dev/vgnewzhjsdb/rlvnewzhjs_zlist303')
TABLESPACES=ZHJS_LIST_CTJS_200801
TTS_OWNERS=test
FROMUSER=test
TOUSER=test
LOG=testimp200801.log
imp需要有SYSDBA权限的用户进行连接(username/passwordassysdba)。
12.将测试表空间改为可读写
ALTERTABLESPACEZHJS_LIST_CTJS_200801READWRITE;
跨平台的迁移
我在这次迁移用的是传输表空间技术。
1、检查需要传输的用户对应的表空间
SQL>SELECTDISTINCTTABLESPACE_NAMEFROMDBA_SEGMENTSWHEREOWNER='NDMAIN';
TABLESPACE_NAME
------------------------------
NDMAIN
SQL>SELECTDISTINCTTABLESPACE_NAMEFROMDBA_SEGMENTSWHEREOWNER='ZHEJIANG';
TABLESPACE_NAME
------------------------------
ZHEJIANG
2、查询是否满足传输表空间的条件
1)查询是否支持平台转换
--查询源库的平台信息
SQL>SELECTd.PLATFORM_NAME,ENDIAN_FORMATFROMV$TRANSPORTABLE_PLATFORMtp,V$DATABASEdWHEREtp.PLATFORM_NAME=d.PLATFORM_NAME;
PLATFORM_NAMEENDIAN_FORMAT
------------------------------------------------------
Solaris[tm]OE(64-bit)Big
--查询目标库的平台信息
SQL>SELECTd.PLATFORM_NAME,ENDIAN_FORMATFROMV$TRANSPORTABLE_PLATFORMtp,V$DATABASEdWHEREtp.PLATFORM_NAME=d.PLATFORM_NAME;
PLATFORM_NAMEENDIAN_FORMAT
------------------------------------------------------
LinuxIA(32-bit)Little
--从v$transportable_platform视图查询以上两个平台的备份集是否可以转换
SQL>select*fromv$transportable_platformwherePLATFORM_NAMEin('Solaris[tm]OE(64-bit)','LinuxIA(32-bit)');
PLATFORM_IDPLATFORM_NAMEENDIAN_FORMAT
-----------------------------------------------------------------
2Solaris[tm]OE(64-bit)Big
10LinuxIA(32-bit)Little
有两个记录,表示这两种平台下的备份集可以互相转换称对应的平台备份集。
2)查看表空间集是否是子包含
如果某个表空间集引用了其他表空间的对象(如外键引用的表在其他表空间、表空间包含物化视图等),则这个表空间不是自包含的;否则就是自包含。
只有自包含的表空间集才可以用表空间传输技术。
oracle提供dbms_tts.transport_set_check过程来帮助我们判断某个表空间集是否是自包含的:
SQL>executedbms_tts.transport_set_check('NDMAIN,ZHEJIANG',TRUE);
PL/SQLproceduresuccessfullycompleted.
SQL>SELECT*FROMTRANSPORT_SET_VIOLATIONS;
norowsselected
如果查询TRANSPORT_SET_VIOLATIONS有记录返回,则表示表空间集不是自包含的,无法对这些表空间使用表空间传输技术;反之,则表示表空间集是自包含的,可以对这些表空间使用表空间传输技术。
注意:
1)使用dbms_tts.transport_set_check时,要把需要表空间传输的表空间列表都写上,用都好分割,不要每一个表空间执行一次dbms_tts.transport_set_check,这样可能会引起误解:
例如:
A表在表空间T1上,
B表在表空间T2上,并且B表上有一个外键引用A表。
如果要迁移A、B两个表空间,如果分别执行:
executedbms_tts.transport_set_check('T1',TRUE);
executedbms_tts.transport_set_check('T2',TRUE);
则在检查T2时TRANSPORT_SET_VIOLATIONS肯定会有记录,因为B表引用了A表,两个表不在一个表空间上。
但实际上,A、B两个表的表空间都在我们要迁移的范围内,所以迁移后数据的完整性也是有保证的,这个问题就在于我们把T1、T2分别检验造成了误解。
正确的方法应该是:
executedbms_tts.transport_set_check('T1,T2',TRUE);
2)TRANSPORT_SET_VIOLATIONS是一个临时表,必须在执行dbms_tts.transport_set_check同一个会话中查询这个表。
3、在源库导出数据
1)创建directory
SQL>createdirectorytranas'/backup/dmp';
Directorycreated.
2)把对应表空间置于只读模式
SQL>altertablespacendmainreadonly;
Tablespacealtered.
SQL>altertablespacezhejiangreadonly;
Tablespacealtered.
3)用数据泵导出
指定了transport_tablespaces后,数据泵导出的只是一些结构方面的信息,所以导出文件会比较小。
bash-3.00$expdpsystem/testdirectory=trantransport_tablespaces=ndmain,zhejiang
Export:
Release10.2.0.3.0-64bitProductionon星期二,2310月,20071:
21:
36
Copyright(c)2003,2005,Oracle.Allrightsreserved.
Connectedto:
OracleDatabase10gEnterpriseEditionRelease10.2.0.3.0-64bitProduction
WiththePartitioning,RealApplicationClusters,OLAPandDataMiningoptions
Starting"SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01":
system/********directory=trantransport_tablespaces=ndmain,zhejiang
ProcessingobjecttypeTRANSPORTABLE_EXPORT/PLUGTS_BLK
ProcessingobjecttypeTRANSPORTABLE_EXPORT/TABLE
ProcessingobjecttypeTRANSPORTABLE_EXPORT/GRANT/OWNER_GRANT/OBJECT_GRANT
ProcessingobjecttypeTRANSPORTABLE_EXPORT/INDEX
ProcessingobjecttypeTRANSPORTABLE_EXPORT/CONSTRAINT/CONSTRAINT
ProcessingobjecttypeTRANSPORTABLE_EXPORT/INDEX_STATISTICS
ProcessingobjecttypeTRANSPORTABLE_EXPORT/COMMENT
ProcessingobjecttypeTRANSPORTABLE_EXPORT/CONSTRAINT/REF_CONSTRAINT
ProcessingobjecttypeTRANSPORTABLE_EXPORT/TRIGGER
ProcessingobjecttypeTRANSPORTABLE_EXPORT/INDEX/FUNCTIONAL_AND_BITMAP/INDEX
ProcessingobjecttypeTRANSPORTABLE_EXPORT/INDEX/STATISTICS/FUNCTIONAL_AND_BITMAP/INDEX_STATISTICS
ProcessingobjecttypeTRANSPORTABLE_EXPORT/TABLE_STATISTICS
ProcessingobjecttypeTRANSPORTABLE_EXPORT/MATERIALIZED_VIEW
ProcessingobjecttypeTRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
Mastertable"SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01"successfullyloaded/unloaded
******************************************************************************
DumpfilesetforSYSTEM.SYS_EXPORT_TRANSPORTABLE_01is:
/backup/dmp/expdat.dmp
Job"SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01"successfullycompletedat01:
24:
55
4、转换数据文件格式
由于源数据库和目标数据库所在平台不同,所以要把要传输的表空间对应的数据文件转换为目标平台的格式。
10g下rman提供这一功能,你可以选择在源数据库或者目标数据库进行转换:
1)在源数据库转换:
convertablespace...toplatform
2)在目标数据库转换:
converdatafile...fromfplatform
在这里选择第一种方式:
bash-3.00$exportORACLE_SID=prerac1
bash-3.00$rmantarget/
RecoveryManager:
Release10.2.0.3.0-Productionon星期二10月2301:
26:
012007
Copyright(c)1982,2005,Oracle.Allrightsreserved.
connectedtotargetdatabase:
PRETRADE(DBID=3201410814)
RMAN>run{
2>allocatechannelc1devicetypediskconnect'sys/testrac@pre1';
3>converttablespacendmain,zhejiangtoplatform'LinuxIA(32-bit)'Format'/backup/dmp/%U';
4>releasechannelc1;
5>}
--这段脚本的意思是把ndmain、zhejiang这两个表空间对应的数据文件转换成LinuxIA(32-bit),并把转换后的数据文件放在/backup/dmp下
allocatedchannel:
c1
channelc1:
sid=316instance=prerac1devtype=DISK
Startingbackupat23-10月-07
channelc1:
startingdatafileconversion
inputdatafilefno=00014name=+DATA/datafile/ndmain1.ora
converteddatafile=/backup/dmp/data_D-PRETRADE_I-3201410814_TS-NDMAIN_FNO-14_64iv64lb
channelc1:
datafileconversioncomplete,elapsedtime:
00:
05:
06
......
channelc1:
startingdatafileconversion
inputdatafilefno=00038name=+DATA/datafile/zhejiang18.ora
converteddatafile=/backup/dmp/data_D-PRETRADE_I-3201410814_TS-ZHEJIANG_FNO-38_6oiv6bac
channelc1:
datafileconversioncomplete,elapsedtime:
00:
05:
45
Finishedbackupat23-10月-07
releasedchannel:
c1
5、传送文件到目标数据库
[oracle@tdatadmp]$sftp172.0.2.1
Password:
sftp>cd/backup
sftp>ls
dmplost+foundsoft
sftp>cddmp
sftp>mget*
6、在目标数据库创建对应的用户及授权
在导入数据时,对应的用户必须已经存在,并有合适的权限,否则会报错。
[oracle@tdatadmp]$sqlplus"/assysdba"
SQL*Plus:
Release10.2.0.3.0-Productionon星期二10月2309:
32:
002007
Copyright(c)1982,2006,Oracle.AllRightsReserved.
Connectedto:
OracleDatabase10gEnterpriseEditionRelease10.2.0.3.0-Production
WiththePartitioningandDataMiningoptions
SQL>createuserndmainidentifiedbytestndmain202;
Usercreated.
SQL>createuserzhejiangidentifiedbytestzj202;
Usercreated.
SQL>createuserZHEJIANG_OPERATORidentifiedbytestzjop202;
Usercreated.
SQL>createuserZHEJIANG_KHDidentifiedbytestzjkhd202;
Usercreated.
SQL>grantconnect,resourcetondmain;
Grantsucceeded.
SQL>grantconnect,resourcetozhejiang;
Grantsucceeded.
SQL>grantconnect,resourcetoZHEJIANG_OPERATOR;
Grantsucceeded.
SQL>grantconnect,resourcetoZHEJIANG_KHD;
Grantsucceeded.
SQL>grantcreatematerializedviewtozhejiang;
Grantsucceeded.
SQL>grantcreatematerializedviewtondmain;
Grantsucceeded.
SQL>grantcreatesynonymtozhejiang;
Grantsucceeded.
SQL>grantcreatesynonymtondmain;
Grantsucceeded.
SQL>grantcreatematerializedviewtoZHEJIANG_KHD;
Grantsucceeded.
SQL>grantcreatematerializedviewtoZHEJIANG_OPERATOR;
Grantsucceeded.
SQL>grantcreatesynonymtoZHEJIANG_KHD;
Grantsucceeded.
SQL>grantcreatesynonymtoZHEJIANG_OPERATOR;
Grantsucceeded.
--创建directory
SQL>createdirectorytranas'/oradata/dmp';
Directorycreated.
7、在目标库转换文件路径和名称
在目标数据库以rman执行:
run{
convertdatafile'/oradata/dmp/data_D-PRETRADE_I-3201410814_TS-NDMAIN_FNO-14_64iv64lb'db_file_name_convert'/oradata/dmp/data_D-PRETRADE_I-3201410814_TS-NDMAIN_FNO-14_64iv64lb','/oradata/oradata/testzj/ndmain1.dbf';
convertdatafile'/oradata/dmp/data_D-PRETRADE_I-3201410814_TS-NDMAIN_FNO-15_65iv64ut'db_file_name_convert'/oradata/dmp/data_D-PRETRADE_I-3201410814_TS-NDMAIN_FNO-15_65iv64ut','/oradata/oradata/testzj/ndmain2.dbf';
convertdatafile'/oradata/dmp/data_D-PRETRADE_I-3201410814_TS-NDMAIN_FNO-16_66iv658p'db_file_name_convert'/oradata/dmp/data_D-PRETRADE_I-3201410814_TS-NDMAIN_FNO-16_66iv658p','/oradata/oradata/testzj/ndmain3.dbf';
......
convertdatafile'/oradata/dmp/data_D-PRETRADE_I-3201410814_TS-ZHEJIANG_FNO-36_6miv6ald'db_file_name_convert'/oradata/dmp/data_D-PRETRADE_I-3201410814_TS-ZHEJIANG_FNO-36_6miv6ald','/oradata/oradata/testzj/zhejiang16.dbf';
convertdatafile'/oradata/dmp/data_D-PRETRADE_I-3201410814_TS-ZHEJIANG_FNO-37_6niv6b06'db_file_name_convert'/oradata/dmp/data_D-PRETRADE_I-32014108
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 空间 迁移