ORACLE数据库跨平台迁移windows到linux.docx
- 文档编号:3572599
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:14
- 大小:137.29KB
ORACLE数据库跨平台迁移windows到linux.docx
《ORACLE数据库跨平台迁移windows到linux.docx》由会员分享,可在线阅读,更多相关《ORACLE数据库跨平台迁移windows到linux.docx(14页珍藏版)》请在冰豆网上搜索。
ORACLE数据库跨平台迁移windows到linux
ORACLE数据库跨平台迁移(Windows→Linux)
Bill_lee作品qq:
284562599
实验环境
WINDOWS平台:
操作系统:
WindowsServer200864位企业版
数据库版本:
11.2.0.1.0(64位)
LINUX平台:
操作系统:
RHEL5.5_x64
数据库版本:
11.2.0.1.0(64位)
实验简介
利用RMANConvertdatabase特性,将WINDOWS平台上的oracle数据库跨平台迁移到LINUX平台,当前LINUX平台只装数据库软件,不建库。
Convertdatabase具体如下特性:
1、只能传输数据表空间的数据文件。
临时表空间将不会被传输,如果临时表空间是本地管理的话,那么传输数据库完成后将会自动在目标数据库创建临时表空间。
2、假如源主数据库使用PFILE,那么PFILE也会被传输。
如果源数据库使用的是SPFILE,那么将会自动产生一个PFILE进行传输,并在目标数据库生成SPFILE。
3、控制文件和联机日志文件将不会被传输。
在目标数据库openresetlogs的过程中,将会自动创建控制文件和联机日志文件。
4、BFILE、外部表和directory将不会被传输。
RMAN检查的时候将会把这些对象列出,用户可以手工创建这些对象。
5、密码文件将不会被传输,用户必须在目标数据库手工创建密码文件。
实验步骤
一:
将源数据库置于READONLY模式:
SYS@CTY>shutdownimmediate;
数据库已经关闭。
已经卸载数据库。
ORACLE例程已经关闭。
SYS@CTY>startupmount;
ORACLE例程已经启动。
…………………………..
数据库装载完毕。
SYS@CTY>alterdatabaseopenreadonly;
数据库已更改。
二:
利用dbms_tdb包检查数据库能否被传输以及列出外部表和DIRECTORY等无法传输的对象信息
SYS@CTY>setserveroutputon
SYS@CTY>declare
db_readyboolean;
begin
/*db_readyisignored,butwithSERVEROUTPUTsettoONany
*conditionspreventingtransportwillbeoutputtoconsole*/
db_ready:
=dbms_tdb.check_db('LinuxIA(64-bit)',
dbms_tdb.skip_none);
end;
/
PL/SQLproceduresuccessfullycompleted.
SYS@CTY>declare
externalboolean;
begin
/*valueofexternalisignored,butwithSERVEROUTPUTsettoON
*dbms_tdb.check_externaldisplaysreportofexternalobjects
*onconsole*/
external:
=dbms_tdb.check_external;
end;
/
Thefollowingexternaltablesexistinthedatabase:
SH.SALES_TRANSACTIONS_EXT
Thefollowingdirectoriesexistinthedatabase:
SYS.ORACLE_OCM_CONFIG_DIR,SYS.DATA_PUMP_DIR,SYS.XMLDIR,SYS.DATA_FILE_DIR,SYS.LOG_FILE_DIR,SYS.MEDIA_DIR,
SYS.SS_OE_XMLDIR,SYS.SUBDIR
ThefollowingBFILEsexistinthedatabase:
PM.PRINT_MEDIA
PL/SQLproceduresuccessfullycompleted.
三:
环境检查完毕后就可以利用RMAN的convertdatabase命令在源数据库进行转换
新建文件夹D:
\bak\CTY
C:
\Users\Administrator>rmantarget/
恢复管理器:
Release11.2.0.1.0-Productionon星期三8月2816:
57:
562013
Copyright(c)1982,2009,Oracleand/oritsaffiliates.Allrightsreserved.
连接到目标数据库:
CTY(DBID=1506780604)
RMAN>CONVERTDATABASENEWDATABASE'CTY'
transportscript'D:
\bak\CTY\transport_linux64.sql'
toplatform'LinuxIA(64-bit)'
db_file_name_convert'D:
\app\Administrator\oradata\CTY\''D:
\bak\CTY\';
*******************************************************************************命令解释:
'CTY'是目标数据库的名字,'D:
\bak\CTY\transport_linux64.sql'是命令结束后生成的脚本名,用来在目标平台建库,'LinuxIA(64-bit)'是目标数据库的操作系统平台(固定写法)'D:
\app\Administrator\oradata\CTY\'是源库的数据文件所在路径,可以通过selectfile#,namefromv$datafile;查询,'D:
\bak\CTY\'是转换后的数据文件输出的路径,需要提前手动创建(注意权限,属主和属组是oracle.oinstall)。
需要注意的是,在这条命令中,2个路径的后面一定要有“\”不能写成'D:
\bak\CTY'不然会报错。
*******************************************************************************
启动conversionatsource于28-8月-13
使用目标数据库控制文件替代恢复目录
分配的通道:
ORA_DISK_1
通道ORA_DISK_1:
SID=26设备类型=DISK
在数据库中找到外部表SH.SALES_TRANSACTIONS_EXT
在数据库中找到目录SYS.ORACLE_OCM_CONFIG_DIR
在数据库中找到目录SYS.DATA_PUMP_DIR
在数据库中找到目录SYS.XMLDIR
在数据库中找到目录SYS.DATA_FILE_DIR
在数据库中找到目录SYS.LOG_FILE_DIR
在数据库中找到目录SYS.MEDIA_DIR
在数据库中找到目录SYS.SS_OE_XMLDIR
在数据库中找到目录SYS.SUBDIR
在数据库中找到BFILEPM.PRINT_MEDIA
在口令文件中找到用户SYS(具有SYSDBAandSYSOPER权限)
通道ORA_DISK_1:
启动数据文件转换
输入数据文件:
文件号=00001名称=D:
\APP\ADMINISTRATOR\ORADATA\CTY\SYSTEM01.DBF
已转换的数据文件=D:
\BAK\CTY\SYSTEM01.DBF
通道ORA_DISK_1:
数据文件转换完毕,经过时间:
00:
00:
07
通道ORA_DISK_1:
启动数据文件转换
输入数据文件:
文件号=00002名称=D:
\APP\ADMINISTRATOR\ORADATA\CTY\SYSAUX01.DBF
已转换的数据文件=D:
\BAK\CTY\SYSAUX01.DBF
通道ORA_DISK_1:
数据文件转换完毕,经过时间:
00:
00:
07
通道ORA_DISK_1:
启动数据文件转换
输入数据文件:
文件号=00005名称=D:
\APP\ADMINISTRATOR\ORADATA\CTY\EXAMPLE01.DBF
已转换的数据文件=D:
\BAK\CTY\EXAMPLE01.DBF
通道ORA_DISK_1:
数据文件转换完毕,经过时间:
00:
00:
01
通道ORA_DISK_1:
启动数据文件转换
输入数据文件:
文件号=00003名称=D:
\APP\ADMINISTRATOR\ORADATA\CTY\UNDOTBS01.DBF
已转换的数据文件=D:
\BAK\CTY\UNDOTBS01.DBF
通道ORA_DISK_1:
数据文件转换完毕,经过时间:
00:
00:
01
通道ORA_DISK_1:
启动数据文件转换
输入数据文件:
文件号=00004名称=D:
\APP\ADMINISTRATOR\ORADATA\CTY\USERS01.DBF
已转换的数据文件=D:
\BAK\CTY\USERS01.DBF
通道ORA_DISK_1:
数据文件转换完毕,经过时间:
00:
00:
01
编辑init.ora文件D:
\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\DATABASE\INIT_00OIEN2D_1_0.ORA。
此PFILE将用于在目标平台上创建数据库
在目标平台上运行SQL脚本D:
\BAK\CTY\TRANSPORT_LINUX64.SQL以创建数据库
要重新编译所有PL/SQL模块,请在目标平台上运行utlirp.sql和utlrp.sql
要更改内部数据库标识符,请使用DBNEWID实用程序
完成conversionatsource于28-8月-13
RMAN>
四:
修改PFILE
如上,过程中会生成一个PFILED:
\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\DATABASE\INIT_00OIEN2D_1_0.ORA,
为了便于辨认,将其拷贝到D:
\bak\CTY路径下,并更名为initCTY.ora,然后手动修改一下内容,才能在目标库使用,修改后内容如下:
(注意,刚生成时,PFILE里面格式很乱,其实直接把里面内容都删掉,然后复制源库PFILE的内容,修改路径相关的参数即可,至于其他的参数,则根据实际情况修改。
)
手动编辑initCTY.ora,内容如下:
CTY.__db_cache_size=96468992
CTY.__java_pool_size=4194304
CTY.__large_pool_size=4194304
CTY.__oracle_base='/u01/app/oracle'#ORACLE_BASEsetfromenvironment
CTY.__pga_aggregate_target=146800640
CTY.__sga_target=272629760
CTY.__shared_io_pool_size=0
CTY.__shared_pool_size=155189248
CTY.__streams_pool_size=4194304
*.audit_file_dest='/u01/app/oracle/admin/CTY/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='/u01/app/oracle/oradata/CTY/control01.ctl','/u01/app/oracle/flash_recovery_area/CTY/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='CTY'
*.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=4070572032
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP)(SERVICE=CTYXDB)'
*.memory_target=419430400
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'
*.undo_management='AUTO'
保存退出
五:
修改transport_linux64.sql,主要修改路径相关参数即可,改后内容如下:
--Thefollowingcommandswillcreateanewcontrolfileanduseit
--toopenthedatabase.
--DatausedbyRecoveryManagerwillbelost.
--Thecontentsofonlinelogswillbelostandallbackupswill
--beinvalidated.Usethisonlyifonlinelogsaredamaged.
--Aftermountingthecreatedcontrolfile,thefollowingSQL
--statementwillplacethedatabaseintheappropriate
--protectionmode:
--ALTERDATABASESETSTANDBYDATABASETOMAXIMIZEPERFORMANCE
STARTUPNOMOUNTPFILE='/u01/app/oracle/product/11.2.0/db_1/dbs/initCTY.ora'
CREATECONTROLFILEREUSESETDATABASE"CTY"RESETLOGSARCHIVELOG
MAXLOGFILES16
MAXLOGMEMBERS3
MAXDATAFILES100
MAXINSTANCES8
MAXLOGHISTORY292
LOGFILE
GROUP1'/u01/app/oracle/oradata/CTY/redo01.log'SIZE50MBLOCKSIZE512,
GROUP2'/u01/app/oracle/oradata/CTY/redo02.log'SIZE50MBLOCKSIZE512,
GROUP3'/u01/app/oracle/oradata/CTY/redo03.log'SIZE50MBLOCKSIZE512
DATAFILE
'/u01/app/oracle/oradata/CTY/system01.dbf',
'/u01/app/oracle/oradata/CTY/sysaux01.dbf',
'/u01/app/oracle/oradata/CTY/undotbs01.dbf',
'/u01/app/oracle/oradata/CTY/users01.dbf',
'/u01/app/oracle/oradata/CTY/example01.dbf'
CHARACTERSETAL32UTF8
;
--Databasecannowbeopenedzeroingtheonlinelogs.
ALTERDATABASEOPENRESETLOGS;
--Commandstoaddtempfilestotemporarytablespaces.
--Onlinetempfileshavecompletespaceinformation.
--Othertempfilesmayrequireadjustment.
ALTERTABLESPACETEMPADDTEMPFILE'/u01/app/oracle/oradata/CTY/temp01.dbf'
SIZE30408704AUTOEXTENDONNEXT655360MAXSIZE32767M;
--Endoftempfileadditions.
--
setechooff
prompt~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
prompt*Yourdatabasehasbeencreatedsuccessfully!
prompt*Therearemanythingstothinkaboutforthenewdatabase.Here
prompt*isachecklisttohelpyoustayontrack:
prompt*1.Youmaywanttoredefinethelocationofthedirectoryobjects.
prompt*2.Youmaywanttochangetheinternaldatabaseidentifier(DBID)
prompt*ortheglobaldatabasenameforthisdatabase.Usethe
prompt*NEWDBIDUtility(nid).
prompt~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SHUTDOWNIMMEDIATE
STARTUPUPGRADEPFILE='/u01/app/oracle/product/11.2.0/db_1/dbs/initCTY.ora'
@@?
/rdbms/admin/utlirp.sql
SHUTDOWNIMMEDIATE
STARTUPPFILE='/u01/app/oracle/product/11.2.0/db_1/dbs/initCTY.ora'
--ThefollowingstepwillrecompileallPL/SQLmodules.
--Itmaytakeserveralhourstocomplete.
@@?
/rdbms/admin/utlrp.sql
setfeedback6;
保存退出
六:
将转换后的数据文件和PFILE拷贝至目标数据库的相应目录中。
需要手动创建下列目录:
/u01/app/oracle/oradata/CTY
/u01/app/oracle/flash_recovery_area/CTY
/u01/app/oracle/admin/CTY/adump
/u01/app/oracle/admin/CTY/dpdump
/u01/app/oracle/admin/CTY/pfile
创建完后,把源库D:
\bak\CTY目录中的所有文件拷贝到目标库
/u01/app/oracle/oradata/CTY目录中。
把源库D:
\bak\CTY目录中的initCTY.ora拷贝到目标库
/u01/app/oracle/product/11.2.0/db_1/dbs目录中。
把源库D:
\bak\CTY目录中的transport_linux64.sql拷贝到目标库
/tmp目录中。
(这个位置随意)
拷贝完后,一定要记得修改一下这些文件的属主、属组和权限
所有文件的属主和属组都改为oracle.oinstall,保证transport_linux64.sql有可执行权限,权限给高点也无所谓!
******特别需要注意的就是这些文件的大小写,一定要跟脚本中所写的完全一致!
不然就各种报错!
******
七:
在目标数据库运行建库脚本:
[oracle@CTY~]$vim.bash_profile编辑环境变量,设置$ORACLE_SID=CTY
[oracle@CTY~]$source.bash_profile
[oracle@CTY~]$sqlplus/assysdba
SQL*Plus:
Release11.2.0.1.0ProductiononThuAug2910:
26:
072013
Copyright(c)1982,2009,Oracle.Allrightsreserved.
Connectedtoanidleinstance.
SYS@CTY>@/tmp/transport_linux64.sql
………………………..
………………………..
………………………..
过程很长,注意有没有报错,通常报错都是由于所需的文件夹不存在,或者脚本里面关于路径的参数有错误,仔细排查即可。
SQL>setfeedback6;
若中间无报错,并最后显示这个setfeedback6;的话,则代表脚本执行成功
八:
收尾工作
1:
登录数据库:
先用netca配置一下监听和网络服务名文件(过程略)
然后登陆数据库,查看状态:
[oracle@CTY~]$sqlplus/assysdba
Connectedto:
OracleDatabase11gEnterpriseEditionRelease11.2.0.1.0-64bitProduction
WiththePartitioning,OLAP,DataMiningandRealApplicationTestingoptions
SYS@CTY>selectopen_modefromv$database;
OPEN_MODE
--------------------
READWRITE
2:
处理外部表、目录对象、BFILE
虽然此时数据库已能登录,但是根据实验简介第四条:
“BFILE、外部表和directory将不会被传输。
RMAN检查的时候将会把这些对象列出,用户可以手工创建这些对象。
”所以我们还要对外部表、目录对象、BFILE进行一些处理,这些相关信息是之前在第二步收集的:
Thefollowingexternaltablesexistinthedatabase:
SH.SALES_TRANSACTIONS_EXT
Thefol
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ORACLE 数据库 平台 迁移 windows linux