|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
这类操作的执行过程是,1)按照新的表定义建立一个临时表tmpa,2)将原表数据拷贝到临时表,3)将原始表改名tmpb,4)将tmpa改名为原表名,5)将tmpb删除。数据|数据库
关于克隆数据库的办法,比来一向在研讨,偶然在cnoug上闲逛,发明了两篇帖子不错,现作为今后事情中的参考:
办法一:
怎样利用RMAN在两呆板间克隆数据库
原文摘自:www.cnoug.org
关头字:方针、目次、克隆、日记、
方针数据库和克隆数据库分离在两台呆板,其情况都一样:
WINDOWS2000SERVERSP4、IE6.1,ORACLE9205
在本文中,利用的是方针数据库上的RMAN,目次数据库在第3台呆板上,
操纵步骤:
1、毗连方针数据库,对方针数据库做全库备份
D:ORACLEBIN>rman
恢复办理器:版本9.2.0.5.0-Production
Copyright(c)1995,2002,OracleCorporation.Allrightsreserved.
RMAN>connectcatalogrman/rman@187
毗连到恢复目次数据库
RMAN>connecttarget/
毗连到方针数据库:ENCORE(DBID=3146513770)
RMAN>run
2>{allocatechanneld1typediskmaxpiecesize=500m;
3>backupfulldatabase
4>formatE:manbakdb_%d_%s_%p_%t;
5>releasechanneld1;
6>}
分派的通道:d1
通道d1:sid=16devtype=DISK
启动backup于2004-06-2821:03:31
通道d1:正在启动full数据文件备份集
通道d1:正在指定备份会合的数据文件
在备份会合包括以后的SPFILE
备份会合包含以后把持文件
输出数据文件fno=00001name=D:ORACLEORADATAENCOREYSTEM01.DBF
输出数据文件fno=00002name=D:ORACLEORADATAENCOREUNDOTBS01.DBF
输出数据文件fno=00005name=D:ORACLEORADATAENCOREEXAMPLE01.DBF
输出数据文件fno=00008name=D:ORACLEORADATAENCORETOOLS01.DBF
输出数据文件fno=00010name=D:ORACLEORADATAENCOREXDB01.DBF
输出数据文件fno=00006name=D:ORACLEORADATAENCOREINDX01.DBF
输出数据文件fno=00009name=D:ORACLEORADATAENCOREUSERS01.DBF
输出数据文件fno=00003name=D:ORACLEORADATAENCORECWMLITE01.DBF
输出数据文件fno=00004name=D:ORACLEORADATAENCOREDRSYS01.DBF
输出数据文件fno=00007name=D:ORACLEORADATAENCOREODM01.DBF
通道d1:正在启动段1于2004-06-2821:03:37
通道d1:已完成段1于2004-06-2821:05:02
段handle=E:RMANBAKDB_ENCORE_1_1_530053412comment=NONE
通道d1:正在启动段2于2004-06-2821:05:02
通道d1:已完成段2于2004-06-2821:06:07
段handle=E:RMANBAKDB_ENCORE_1_2_530053412comment=NONE
通道d1:备份集已完成,经由工夫:00:02:35
完成backup于2004-06-2821:06:07
开释的通道:d1
RMAN>
2、备份方针数据库的参数文件
SQL>createpfilefromspfile;
文件已创立
SQL>
3、--将方针数据库的参数文件(第2步创立)拷贝到克隆呆板上,修正响应的参数(次要是实例名和
数据库名,和bdump、udump、cdump等背景历程的跟踪文件寄存的路径,本文中,克隆数据库
的实例名为CLONE,数据库名为CLONE_DB),然后在克隆呆板上创立实例
D:oraclein>oradim-new-sidclone-PFILED:ORACLEdatabaseINITCLONE.ORA-INTPWDSYS1
D:oraclein>
4、--修正克隆数据库的监听器,增添对克隆数据库的监听(第3段)
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=PLSExtProc)
(ORACLE_HOME=D:ORACLE)
(PROGRAM=extproc)
)
(SID_DESC=
(GLOBAL_DBNAME=ORACLE)
(ORACLE_HOME=D:ORACLE)
(SID_NAME=ORACLE92)
)
(SID_DESC=
(GLOBAL_DBNAME=clone_db)
(ORACLE_HOME=D:ORACLE)
(SID_NAME=clone)
)
)
5、修正RMAN呆板上的TNSNAMES.ORA文件,增添此毗连串,包管RMAN利用此毗连串可以毗连到
克隆数据库的实例
CLONE=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.194)(PORT=1521))
)
(CONNECT_DATA=
(SERVICE_NAME=CLONE_DB)
)
)
5、将方针数据库的备份集拷贝到克隆数据库呆板的统一地位,并启动克隆数据库(nomount形态)
6、因为第1步骤中没有备份日记,在利用
RMAN>run
2>{allocateauxiliarychanneld1typedisk;
3>setnewnamefordatafile1toF:CLONEdataYSTEM01.DBF;
剧本克隆数据库时,呈现NOBACKUPCOPY之类的毛病,
以后增补备份方针数据库的日记,
RMAN>run
2>{allocatechanneld1typediskmaxpiecesize=500m;
3>backuparchivelogall
4>formatE:manbaklog_%d_%s_%p_%t;
5>releasechanneld1;
6>}
分派的通道:d1
通道d1:sid=11devtype=DISK
启动backup于2004-06-2821:42:18
以后日记已存档
通道d1:正在启动存档日记备份集
通道d1:正在指定备份会合的存档日记
输出存档日记线程=1序列=107纪录ID=107工夫戳=528371132
输出存档日记线程=1序列=108纪录ID=108工夫戳=530053839
输出存档日记线程=1序列=109纪录ID=109工夫戳=530054855
输出存档日记线程=1序列=110纪录ID=110工夫戳=530055437
输出存档日记线程=1序列=111纪录ID=111工夫戳=530055540
输出存档日记线程=1序列=112纪录ID=112工夫戳=530055739
通道d1:正在启动段1于2004-06-2821:42:23
通道d1:已完成段1于2004-06-2821:42:26
段handle=E:RMANBAKLOG_ENCORE_2_1_530055742comment=NONE
通道d1:备份集已完成,经由工夫:00:00:04
完成backup于2004-06-2821:42:26
开释的通道:d1
7、将日记备份集拷贝到克隆呆板的统一目次后,回到RMAN处,毗连帮助(克隆)数据库,
实行剧本,剩下的RMAN本人会做
RMAN>connectauxiliarysys/sys1@clone
已毗连到备用数据库:CLONE_DB(未安装)
RMAN>run
2>{allocateauxiliarychanneld1typedisk;
3>setnewnamefordatafile1toF:CLONEdataYSTEM01.DBF;
4>setnewnamefordatafile2toF:CLONEdataUNDOTBS01.DBF;
5>setnewnamefordatafile3toF:CLONEdataCWMLITE01.DBF;
6>setnewnamefordatafile4toF:CLONEdataDRSYS01.DBF;
7>setnewnamefordatafile5toF:CLONEdataEXAMPLE01.DBF;
8>setnewnamefordatafile6toF:CLONEdataINDX01.DBF;
9>setnewnamefordatafile7toF:CLONEdataODM01.DBF;
10>setnewnamefordatafile8toF:CLONEdataTOOLS01.DBF;
11>setnewnamefordatafile9toF:CLONEdataUSERS01.DBF;
12>setnewnamefordatafile10toF:CLONEdataXDB01.DBF;
13>DUPLICATETARGETDATABASETOCLONE_DB
14>LOGFILE
15>GROUP1(F:clonedataREDO01.DBF)SIZE10M,
16>GROUP2(F:clonedataREDO02.DBF)SIZE10M,
17>GROUP3(F:clonedataREDO03.DBF)SIZE10M;
18>}
分派的通道:d1
通道d1:sid=8devtype=DISK
正在实行命令:SETNEWNAME
正在实行命令:SETNEWNAME
正在实行命令:SETNEWNAME
正在实行命令:SETNEWNAME
正在实行命令:SETNEWNAME
正在实行命令:SETNEWNAME
正在实行命令:SETNEWNAME
正在实行命令:SETNEWNAME
正在实行命令:SETNEWNAME
正在实行命令:SETNEWNAME
启动DuplicateDb于2004-06-2821:43:51
正在打印存储的剧本:MemoryScript
{
setuntilscn261688166;
setnewnamefordatafile1to
"F:CLONEDATAYSTEM01.DBF";
setnewnamefordatafile2to
"F:CLONEDATAUNDOTBS01.DBF";
setnewnamefordatafile3to
"F:CLONEDATACWMLITE01.DBF";
setnewnamefordatafile4to
"F:CLONEDATADRSYS01.DBF";
setnewnamefordatafile5to
"F:CLONEDATAEXAMPLE01.DBF";
setnewnamefordatafile6to
"F:CLONEDATAINDX01.DBF";
setnewnamefordatafile7to
"F:CLONEDATAODM01.DBF";
setnewnamefordatafile8to
"F:CLONEDATATOOLS01.DBF";
setnewnamefordatafile9to
"F:CLONEDATAUSERS01.DBF";
setnewnamefordatafile10to
"F:CLONEDATAXDB01.DBF";
restore
checkreadonly
clonedatabase
;
}
正在实行剧本:MemoryScript
正在实行命令:SETuntilclause
正在实行命令:SETNEWNAME
正在实行命令:SETNEWNAME
正在实行命令:SETNEWNAME
正在实行命令:SETNEWNAME
正在实行命令:SETNEWNAME
正在实行命令:SETNEWNAME
正在实行命令:SETNEWNAME
正在实行命令:SETNEWNAME
正在实行命令:SETNEWNAME
正在实行命令:SETNEWNAME
启动restore于2004-06-2821:43:54
通道d1:正在入手下手恢单数据文件备份集
通道d1:正在指定从备份集恢复的数据文件
正将数据文件00001恢复到F:CLONEDATAYSTEM01.DBF
正将数据文件00002恢复到F:CLONEDATAUNDOTBS01.DBF
正将数据文件00003恢复到F:CLONEDATACWMLITE01.DBF
正将数据文件00004恢复到F:CLONEDATADRSYS01.DBF
正将数据文件00005恢复到F:CLONEDATAEXAMPLE01.DBF
正将数据文件00006恢复到F:CLONEDATAINDX01.DBF
正将数据文件00007恢复到F:CLONEDATAODM01.DBF
正将数据文件00008恢复到F:CLONEDATATOOLS01.DBF
正将数据文件00009恢复到F:CLONEDATAUSERS01.DBF
正将数据文件00010恢复到F:CLONEDATAXDB01.DBF
通道d1:已恢复备份段1
段handle=E:RMANBAKDB_ENCORE_1_1_530053412tag=TAG20040628T210331params=NULL
通道d1:已恢复备份段2
段handle=E:RMANBAKDB_ENCORE_1_2_530053412tag=TAG20040628T210331params=NULL
通道d1:恢复完成
完成restore于2004-06-2821:46:35
sql语句:CREATECONTROLFILEREUSESETDATABASE"CLONE_DB"RESETLOGSARCHIVELOG
MAXLOGFILES50
MAXLOGMEMBERS5
MAXDATAFILES100
MAXINSTANCES1
MAXLOGHISTORY226
LOGFILE
GROUP1(F:clonedataREDO01.DBF)SIZE10485760,
GROUP2(F:clonedataREDO02.DBF)SIZE10485760,
GROUP3(F:clonedataREDO03.DBF)SIZE10485760
DATAFILE
F:CLONEDATAYSTEM01.DBF
CHARACTERSETZHS16GBK
正在打印存储的剧本:MemoryScript
{
switchclonedatafileall;
}
正在实行剧本:MemoryScript
数据文件2已转换成数据文件正本
输出数据文件正本recid=1stamp=530056505文件名=F:CLONEDATAUNDOTBS01.DBF
数据文件3已转换成数据文件正本
输出数据文件正本recid=2stamp=530056505文件名=F:CLONEDATACWMLITE01.DBF
数据文件4已转换成数据文件正本
输出数据文件正本recid=3stamp=530056505文件名=F:CLONEDATADRSYS01.DBF
数据文件5已转换成数据文件正本
输出数据文件正本recid=4stamp=530056505文件名=F:CLONEDATAEXAMPLE01.DBF
数据文件6已转换成数据文件正本
输出数据文件正本recid=5stamp=530056505文件名=F:CLONEDATAINDX01.DBF
数据文件7已转换成数据文件正本
输出数据文件正本recid=6stamp=530056505文件名=F:CLONEDATAODM01.DBF
数据文件8已转换成数据文件正本
输出数据文件正本recid=7stamp=530056505文件名=F:CLONEDATATOOLS01.DBF
数据文件9已转换成数据文件正本
输出数据文件正本recid=8stamp=530056505文件名=F:CLONEDATAUSERS01.DBF
数据文件10已转换成数据文件正本
输出数据文件正本recid=9stamp=530056505文件名=F:CLONEDATAXDB01.DBF
正在打印存储的剧本:MemoryScript
{
setuntilscn261688166;
recover
clonedatabase
deletearchivelog
;
}
正在实行剧本:MemoryScript
正在实行命令:SETuntilclause
启动recover于2004-06-2821:46:37
正在入手下手介质的恢复
通道d1:正在启动到默许方针的存档日记恢复
通道d1:正在恢复存档日记
存档日记线程=1序列=108
通道d1:正在恢复存档日记
存档日记线程=1序列=109
通道d1:正在恢复存档日记
存档日记线程=1序列=110
通道d1:正在恢复存档日记
存档日记线程=1序列=111
通道d1:正在恢复存档日记
存档日记线程=1序列=112
通道d1:已恢复备份段1
段handle=E:RMANBAKLOG_ENCORE_2_1_530055742tag=TAG20040628T214221params=NULL
通道d1:恢复完成
存档日记文件名=F:CLONELOGARC00108.001线程=1序列=108
通道clone_default:正在删除存档日记
存档日记文件名=F:CLONELOGARC00108.001纪录ID=3工夫戳=530056510
存档日记文件名=F:CLONELOGARC00109.001线程=1序列=109
通道clone_default:正在删除存档日记
存档日记文件名=F:CLONELOGARC00109.001纪录ID=4工夫戳=530056510
存档日记文件名=F:CLONELOGARC00110.001线程=1序列=110
通道clone_default:正在删除存档日记
存档日记文件名=F:CLONELOGARC00110.001纪录ID=5工夫戳=530056510
存档日记文件名=F:CLONELOGARC00111.001线程=1序列=111
通道clone_default:正在删除存档日记
存档日记文件名=F:CLONELOGARC00111.001纪录ID=2工夫戳=530056510
存档日记文件名=F:CLONELOGARC00112.001线程=1序列=112
通道clone_default:正在删除存档日记
存档日记文件名=F:CLONELOGARC00112.001纪录ID=1工夫戳=530056510
完成介质的恢复
完成recover于2004-06-2821:46:47
正在打印存储的剧本:MemoryScript
{
shutdownclone;
startupclonenomount;
}
正在实行剧本:MemoryScript
数据库已卸载
Oracle例程已封闭
已毗连到备用数据库(未启动)
Oracle例程已启动
体系全局地区总计319889436字节
FixedSize454684字节
VariableSize109051904字节
DatabaseBuffers209715200字节
RedoBuffers667648字节
sql语句:CREATECONTROLFILEREUSESETDATABASE"CLONE_DB"RESETLOGSARCHIVELOG
MAXLOGFILES50
MAXLOGMEMBERS5
MAXDATAFILES100
MAXINSTANCES1
MAXLOGHISTORY226
LOGFILE
GROUP1(F:clonedataREDO01.DBF)SIZE10485760,
GROUP2(F:clonedataREDO02.DBF)SIZE10485760,
GROUP3(F:clonedataREDO03.DBF)SIZE10485760
DATAFILE
F:CLONEDATAYSTEM01.DBF
CHARACTERSETZHS16GBK
正在打印存储的剧本:MemoryScript
{
catalogclonedatafilecopy"F:CLONEDATAUNDOTBS01.DBF";
catalogclonedatafilecopy"F:CLONEDATACWMLITE01.DBF";
catalogclonedatafilecopy"F:CLONEDATADRSYS01.DBF";
catalogclonedatafilecopy"F:CLONEDATAEXAMPLE01.DBF";
catalogclonedatafilecopy"F:CLONEDATAINDX01.DBF";
catalogclonedatafilecopy"F:CLONEDATAODM01.DBF";
catalogclonedatafilecopy"F:CLONEDATATOOLS01.DBF";
catalogclonedatafilecopy"F:CLONEDATAUSERS01.DBF";
catalogclonedatafilecopy"F:CLONEDATAXDB01.DBF";
switchclonedatafileall;
}
正在实行剧本:MemoryScript
已将数据文件正本列进目次
数据文件正本filename=F:CLONEDATAUNDOTBS01.DBFrecid=1stamp=530056530
已将数据文件正本列进目次
数据文件正本filename=F:CLONEDATACWMLITE01.DBFrecid=2stamp=530056530
已将数据文件正本列进目次
数据文件正本filename=F:CLONEDATADRSYS01.DBFrecid=3stamp=530056531
已将数据文件正本列进目次
数据文件正本filename=F:CLONEDATAEXAMPLE01.DBFrecid=4stamp=530056531
已将数据文件正本列进目次
数据文件正本filename=F:CLONEDATAINDX01.DBFrecid=5stamp=530056531
已将数据文件正本列进目次
数据文件正本filename=F:CLONEDATAODM01.DBFrecid=6stamp=530056531
已将数据文件正本列进目次
数据文件正本filename=F:CLONEDATATOOLS01.DBFrecid=7stamp=530056532
已将数据文件正本列进目次
数据文件正本filename=F:CLONEDATAUSERS01.DBFrecid=8stamp=530056532
已将数据文件正本列进目次
数据文件正本filename=F:CLONEDATAXDB01.DBFrecid=9stamp=530056532
数据文件2已转换成数据文件正本
输出数据文件正本recid=1stamp=530056530文件名=F:CLONEDATAUNDOTBS01.DBF
数据文件3已转换成数据文件正本
输出数据文件正本recid=2stamp=530056530文件名=F:CLONEDATACWMLITE01.DBF
数据文件4已转换成数据文件正本
输出数据文件正本recid=3stamp=530056531文件名=F:CLONEDATADRSYS01.DBF
数据文件5已转换成数据文件正本
输出数据文件正本recid=4stamp=530056531文件名=F:CLONEDATAEXAMPLE01.DBF
数据文件6已转换成数据文件正本
输出数据文件正本recid=5stamp=530056531文件名=F:CLONEDATAINDX01.DBF
数据文件7已转换成数据文件正本
输出数据文件正本recid=6stamp=530056531文件名=F:CLONEDATAODM01.DBF
数据文件8已转换成数据文件正本
输出数据文件正本recid=7stamp=530056532文件名=F:CLONEDATATOOLS01.DBF
数据文件9已转换成数据文件正本
输出数据文件正本recid=8stamp=530056532文件名=F:CLONEDATAUSERS01.DBF
数据文件10已转换成数据文件正本
输出数据文件正本recid=9stamp=530056532文件名=F:CLONEDATAXDB01.DBF
正在打印存储的剧本:MemoryScript
{
Alterclonedatabaseopenresetlogs;
}
正在实行剧本:MemoryScript
数据库已翻开
RMAN>
--实行此步骤必要注重:制止毗连克隆数据库,不然,RMAN将没法一般封闭克隆数据库
(shutdownclone),剩下的步骤没法持续实行。
8、测试克隆数据库
D:oraclein>sqlplus
SQL*Plus:Release9.2.0.5.0-ProductiononMonJun2822:01:462004
Copyright(c)1982,2002,OracleCorporation.Allrightsreserved.
Enteruser-name:sys/sys1@cloneassysdba
Connectedto:
Oracle9iEnterpriseEditionRelease9.2.0.5.0-Production
WiththePartitioning,OracleLabelSecurity,OLAPandOracleDataMiningoptions
JServerRelease9.2.0.5.0-Production
SQL>selectstatusfromv$instance;
STATUS
------------
OPEN
SQL>archiveloglist;
DatabaselogmodeArchiveMode
AutomaticarchivalEnabled
ArchivedestinationF:CLONElog
Oldestonlinelogsequence0
Nextlogsequencetoarchive1
Currentlogsequence1
SQL>
总结:在两台呆板间用RMAN克隆数据库,团体以为,有两点必要注重:
1、在对方针数据库做全库备份时,要注重同时备份日记,短少此步骤,RMAN在克隆时将报NOBACKUPCOPY之类的毛病.
2、要将方针数据库备份的备份集拷贝到克隆呆板的统一个目次(同备份方针数据库时备份集寄存的目次)下,不然,RMAN将报:找不到XXXX备份集.
DBCA是一款能够设置、办理和创建数据库的工具。在初始数据库安装过程当中,假如你选择“创建一个数据库选项(CreateADatabaseoption)”,这一工具就会启动并运转。你能够创建一个基于模板的数据库,也能够从先前的典范中导进一个新的模板。
良多办理职员其实不晓得,只需在命令行中键进dbca这能够进进到DBCA情况。一旦这一工具启动,你能够创建一个新的数据库,设置数据库的INIT.ORA选项,删除一个现有的数据库,大概办理数据库模板。这些数据库模板与安装时天生的模板相似(好比GeneralPurpose,DataWarehouse,和TransactionProcessing)。
在安装过程当中,呈现一个警示对话框以扣问是不是必要保留你的模板。你能够点击No,大概能够在安装时就野生界说你的数据库。DBCA工具可以反省数据库设置并天生一个基于以后操纵体系的模板,乃至能够有选择性地输入以后数据。这一特征就使得它成为将一个数据库转移到另外一呆板大概将一个数据库嵌进到别的有代价产物的优异工具。
DBCA工具将模板存储在一个以.dbc扩大名的文件。一个.dbc文件包括init.ora参数、地位数据文件、日记文件、和数据库中以XML格局的把持文件的列表。假如你选择包括你的数据库数据,这一工具也会天生一个扩大名为.dbj的文件,即一个包括你的数据文件的图象的ZIP紧缩文件。有些用户会想到创建一切这些设置的一个备份,以免在一个新呆板上从头创建一个数据库的需要。
办法二:
利用DBCA克隆一个数据库
有良多变量同意DBCA为Oracle软件将文件安装到符合的路径,好比{ORACLE_BASE}和{DB_NAME}。因为这些只是复杂的XML,可使用一个diff函数疾速检察这些模板之间的不同。比方,GeneralPurpose和DataWarehouse数据库模板之间的不同是在于Oracle9i9.2.0.0的DataWarehouse模板:
TEMPtablespace小于1M.
init.ora参数包含:
star_transformation_enabled被激活。
pga_aggregate_target对照在。
query_rewrite_enabled被激活。
db_file_multiblock_read_count为双倍。
sort_area_size为双倍。
hash_area_size没有被设置。
db_cache_size对照小。
关于TransactionProcessing模板,不同在于:
OracleOLAP选项没有被激活。
init.ora参数包含:
db_block_size为一半。
undo_retention对照小。
pga_aggregate_target对照小。
db_file_multiblock_read_count为一半。
hash_join_enabled被封闭。
db_cache_size对照年夜。
无需创建一个CWMLITEtablespace(由于OLAP选项已被封闭)。
EXAMPLE和SYSTEMtablespaces对照小。
TEMPtablespace为双倍巨细。
当你利用DBCA工具从数据库中输入数据时,DBCA将天生一个以.dfj扩大名的文件,即一个包括每数据文件的源图象的ZIP紧缩文件。这就意味着这些数据在转移过程当中包管了平安性。但是,这些文件并没有很好被EXP和IMP文档化和撑持。一样,这些图象尽年夜多半间接写进到磁盘,而不是相似于IMP的经由过程SQL写进。
支持大型的数据库。可以处理拥有上千万条记录的大型数据库。 |
|