|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
“MySQL实际上是一个数据库家族,你可以从选择一个并将其配置成可以满足你的大多数情况,”开源顾问公司Ethiqa的总裁如此表示,“因此,你可以在开始的时候选择一个小巧的版本产品,以后再根据需要来对其进行性能或大小上的扩展。”在Oracle9i呈现之前,你只能经由过程导出和导进的体例来举行表格重界说,因而表格重界说的历程是一个离线历程。乃至在线变更(“ALTERTABLEADDNEW_COLNUMBER(3)”)也会招致独有性逝世锁(exclusivelocks),这就必要在DDL完成之前避免一切DML(拔出、更新)的运转。
为懂得决这个成绩,Oracle9i在其DBMS_REDEFINITION软件包中引进了在线表格重界说功效。有了DBMS_REDEFINITION软件包,你就能够:
1.拷贝表格(用CTAS)
2.创立表格的快照(snapshot)
3.把重界说表格的过程当中所产生的变更举行列队
4.并用变更行列来同步重界说后的表格。
这个特征对24/7Oracle数据库来讲十分主要,这是因为DBA如今能够在坚持表格的可更新性的同时从头构造表格的布局。
我们以上面的剧本为例来讲明从头构造表格布局的完全历程。
execdbms_redefinition.abort_redef_table(PUBS,TITLES,TITLES2);
altertabletitlesaddconstraintpk_titlesprimarykey(title_id);
execdbms_redefinition.can_redef_table(PUBS,TITLES);
createtabletitles2
as
select*fromtitles;
execdbms_redefinition.start_redef_table(PUBS,TITLES,TITLES2,title_idtitle_id,titletitle,typetype,pub_idpub_id,priceprice,advanceadvance,royalty*1.1royalty,ytd_salesytd_sales,notesnotes,pubdatepubdate);
execdbms_redefinition.sync_interim_table(PUBS,TITLES,TITLES2);
execdbms_redefinition.finish_redef_table(PUBS,TITLES,TITLES2);
droptabletitles2;
假如重构造失利,那末你就必需接纳特别的步骤来让它从头入手下手。因为重界说历程必要创立表格的快照,因而为了从头入手下手这一历程,你必需挪用DBMS_REDEFINITION.ABORT_REDEF_TABLE来开释快照。
DBMS_REDEFINITION.ABORT_REDEF_TABLE历程有三个参数,即纲目(schema)、原始表格(originaltablename)称号和持有表格称号(holdingtablename)。它“出栈”并同意你入手下手重构造表格。
dbms_redefinition.abort_redef_table(PUBS,TITLES,TITLES2);
但是,在线表格重界说也不是十全十美的。上面列出了Oracle9i重界说历程的部分限定。
你必需有足以保护两份表格拷贝的空间。
你不克不及变动主键栏。
表格必需有主键。
必需在统一个纲目中举行表格重界说。
在重界说操纵完成之前,你不克不及对新加栏加以NOTNULL束缚。
表格不克不及包括LONG、BFILE和用户范例(UDT)。
不克不及重界说链表(clusteredtables)。
不克不及在SYS和SYSTEM纲目中重界说表格。
不克不及器具体化视图日记(materializedviewlogs)来重界说表格;不克不及重界说含有详细化视图的表格。
不克不及在重界说过程当中举行横向分集(horizontalsubsetting)。
越来越多的开发者将继续选择MySQL。Evans的总裁JohnAndrews表示,MySQL学习教程用户对MySQL和其他开源数据库的评价正在赶上甚至超过很多专有商业数据库软件。 |
|