仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1009|回复: 8
打印 上一主题 下一主题

[学习教程] MSSQL网页设计字符集成绩的开端切磋(七)----关于字符...

[复制链接]
因胸联盟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:36:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
先说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中包含了插入/删除的记录的所有字段的值(太爽了。。)
沙发
发表于 2015-1-19 18:26:35 | 只看该作者
可能有的朋友会抱怨集成的orderby,其实如果使用ranking函数,Orderby是少不了的。如果担心Orderby会影响效率,可以为orderby的字段建立聚集索引,查询计划会忽略orderby操作(因为本来就是排序的嘛)。
精灵巫婆 该用户已被删除
板凳
发表于 2015-1-28 07:58:25 | 只看该作者
groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。
飘灵儿 该用户已被删除
地板
发表于 2015-2-5 14:13:51 | 只看该作者
你可以简单地认为适合的就是好,不适合就是不好。
小女巫 该用户已被删除
5#
发表于 2015-2-12 03:46:37 | 只看该作者
代替了原来VB式的错误判断。比Oracle高级不少。
深爱那片海 该用户已被删除
6#
发表于 2015-3-2 22:17:22 | 只看该作者
Mirror可以算是SQLServer的Dataguard了。但是能不能被大伙用起来就不知道了。
再现理想 该用户已被删除
7#
发表于 2015-3-11 06:58:49 | 只看该作者
我们学到了什么?思考问题的时候从表的角度来思考问
愤怒的大鸟 该用户已被删除
8#
发表于 2015-3-17 23:07:56 | 只看该作者
sqlserver的痛苦之处在于有用文档的匮乏,很多只是表明的东西
小妖女 该用户已被删除
9#
发表于 2015-3-25 05:45:52 | 只看该作者
如果,某一版本可以提供强大的并发响应,但是没有Oracle的相应版本稳定,或者价格较贵,那么,它就是不适合的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-3 16:20

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表