MSSQL网页设计字符集成绩的开端切磋(七)----关于字符...
先说DDL的分类。有一类DDL,是不需要重建表的,比如加非聚簇索引。这类操作其实不会丢数据,也是在原表上直接操作,对于我们“以恢复数据为目的”的闪回,是可以先忽略的。另外一类,则是会影响到表数据的操作。成绩原文链接:http://www.eygle.com/special/NLS_CHARACTER_SET_07.htm
后面我们提到,经由过程修正props$的体例变动字符集在Oracle7以后是一种极为伤害的体例,应当只管制止。
我们又晓得,经由过程ALTERDATABASECHARACTERSET变动字符集固然平安牢靠,可是有严厉的子集和超集的束缚,实践上我们很少可以
用到这类办法。
实践上Oracle还存在别的一种变动字符集的体例.
假如你注重过的话,在Oracle的alert<sid>.log文件中,你大概看到过如许的日记信息:
alterdatabasecharactersetINTERNAL_CONVERTZHS16GBKUpdatingcharactersetincontrolfiletoZHS16GBKSYS.SNAP$(REL_QUERY)-CLOBrepresentationalteredSYS.METASTYLESHEET(STYLESHEET)-CLOBrepresentationalteredSYS.EXTERNAL_TAB$(PARAM_CLOB)-CLOBrepresentationalteredXDB.XDB$RESOURCE(SYS_NC00027$)-CLOBrepresentationalteredODM.ODM_PMML_DTD(DTD)-CLOBrepresentationalteredOE.WAREHOUSES(SYS_NC00003$)-CLOBrepresentationalteredPM.ONLINE_MEDIA(SYS_NC00042$)-CLOBrepresentationalteredPM.ONLINE_MEDIA(SYS_NC00062$)-CLOBrepresentationalteredPM.ONLINE_MEDIA(PRODUCT_TEXT)-CLOBrepresentationalteredPM.ONLINE_MEDIA(SYS_NC00080$)-CLOBrepresentationalteredPM.PRINT_MEDIA(AD_SOURCETEXT)-CLOBrepresentationalteredPM.PRINT_MEDIA(AD_FINALTEXT)-CLOBrepresentationalteredCompleted:alterdatabasecharactersetINTERNAL_CONVERTZHS1
在这内里,我们看到如许一条主要的,Oracle非公然的命令:
alterdatabasecharactersetINTERNAL_CONVERT/INTERNAL_USEZHS16GBK
这个命令是当你选择了利用典范体例创立了种子数据库今后,Oracle会依据你选择的字符集设置,把以后种子数据库的字符集变动为希冀字符
集,这就是这条命令的感化.
在利用这个命令时,Oracle会跳过一切子集及超集的反省,在恣意字符集之间举行强迫转换,以是,利用这个命令时你必需非常当心,你必需
分明这一操纵会带来的风险.
我们之前讲过的内容仍旧无效,你可使用csscan扫描全部数据库,假如在转换的字符集之间确认没有严峻的数据破坏,大概你可使用无效
的体例变动,你就能够利用这类体例举行转换.
我们来看一下详细的操纵历程及Oracle的外部操纵:
这是alert.log文件中的纪录信息:
TueOct1916:26:302004
DatabaseCharactersetisZHS16GBK
replication_dependency_trackingturnedoff(noasyncmultimasterreplicationfound)
Completed:ALTERDATABASEOPEN
TueOct1916:27:072004
alterdatabasecharactersetINTERNAL_USEZHS16CGB231280
UpdatingcharactersetincontrolfiletoZHS16CGB231280
TueOct1916:27:152004
Thread1advancedtologsequence118
Currentlog#2seq#118mem#0:/opt/oracle/oradata/primary/redo02.log
TueOct1916:27:152004
ARC0:Evaluatingarchivelog3thread1sequence117
ARC0:Beginningtoarchivelog3thread1sequence117
CreatingarchivedestinationLOG_ARCHIVE_DEST_1:/opt/oracle/oradata/primary/archive/1_117.dbf
ARC0:Completedarchivinglog3thread1sequence117
TueOct1916:27:202004
Completed:alterdatabasecharactersetINTERNAL_USEZHS16CGB231280
Shuttingdowninstance:furtherlogonsdisabled
Shuttingdowninstance(immediate)
Licensehighwatermark=1
TueOct1916:29:062004
ALTERDATABASECLOSENORMAL
...
...
格局化10046跟踪文件,失掉以下信息(择要):
altersessionsetevents10046tracenamecontextforever,level12alterdatabasecharactersetINTERNAL_USEZHS16CGB231280callcountcpuelapseddiskquerycurrentrows-----------------------------------------------------------------------Parse10.000.000000Execute14.886.0491016825180990Fetch00.000.000000-----------------------------------------------------------------------total24.886.0491016825180990Missesinlibrarycacheduringparse:1Optimizergoal:CHOOSEParsinguserid:SYSElapsedtimesincludewaitingonfollowingevents:EventwaitedonTimesMax.WaitTotalWaited----------------------------------------Waited----------------------controlfilesequentialread40.000.00controlfileparallelwrite20.050.08logfilesync20.080.08SQL*Netmessagetoclient10.000.00SQL*Netmessagefromclient118.0618.06********************************************************************************....updatecol$setcharsetid=:1wherecharsetform=:2....updateargument$setcharsetid=:1wherecharsetform=:2....updatecollection$setcharsetid=:1wherecharsetform=:2....updateattribute$setcharsetid=:1wherecharsetform=:2....updateparameter$setcharsetid=:1wherecharsetform=:2....updateresult$setcharsetid=:1wherecharsetform=:2....updatepartcol$setspare1=:1wherecharsetform=:2....updatesubpartcol$setspare1=:1wherecharsetform=:2....updateprops$setvalue$=:1wherename=:2....update"SYS"."KOTAD$"setSYS_NC_ROWINFO$=:1whereSYS_NC_OID$=:2....updateseq$setincrement$=:2,minvalue=:3,maxvalue=:4,cycle#=:5,order$=:6,cache=:7,highwater=:8,audit$=:9,flags=:10whereobj#=:1....updatekopm$setmetadata=:1,length=:2wherename=DB_FDO....ALTERDATABASECLOSENORMAL
此处天生的日记你能够在这里下载(供参考):
http://www.eygle.com/special/primary_ora_13730.zip
http://www.eygle.com/special/primary_ora_13730.tkf.log
我们看到这个历程和之前ALTERDATABASECHARACTERSET操纵的外部历程是完整不异的,也就是说INTERNAL_USE供应的匡助就是使
Oracle数据库绕过了子集与超集的校验.
这一办法在某些方面是有效处的,好比测试;使用于产物情况人人应当分外当心,除你之外,没有人会为此带来的成果卖力:
结语(我们无妨再说一次):
关于DBA来讲,有一个很主要的准绳就是:不要把你的数据库置于伤害的地步!
这就请求我们,在举行任何大概对数据库布局产生改动的操纵之前,先做无效的备份,良多DBA没有备份的操纵中失掉了凄惨的教导。
本文作者:
eygle,Oracle手艺存眷者,来自中国最年夜的Oracle手艺论坛itpub.
www.eygle.com是作者的团体站点.你可经由过程Guoqiang.Gai@gmail.com来接洽作者.接待手艺切磋交换和链接互换.
原文出处:
http://www.eygle.com/special/NLS_CHARACTER_SET_07.htm
对于insert和delete,event中包含了插入/删除的记录的所有字段的值(太爽了。。) 可能有的朋友会抱怨集成的orderby,其实如果使用ranking函数,Orderby是少不了的。如果担心Orderby会影响效率,可以为orderby的字段建立聚集索引,查询计划会忽略orderby操作(因为本来就是排序的嘛)。 groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。 你可以简单地认为适合的就是好,不适合就是不好。 代替了原来VB式的错误判断。比Oracle高级不少。 Mirror可以算是SQLServer的Dataguard了。但是能不能被大伙用起来就不知道了。 我们学到了什么?思考问题的时候从表的角度来思考问 sqlserver的痛苦之处在于有用文档的匮乏,很多只是表明的东西 如果,某一版本可以提供强大的并发响应,但是没有Oracle的相应版本稳定,或者价格较贵,那么,它就是不适合的。
页:
[1]