MSSQL网页编程之座谈数据库的启动和封闭
其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。数据|数据库关于DBA们来讲,封闭和从头启动数据库以便优化、调剂使用的运转是常常碰着的事变。假如用户已log进如了数据库,你用SHUTDOWNIMMEDIATE或SHUTDOWNABORT命令来实行封闭数据库,那用户将不克不及毗连,直到数据库从头启动,用户经常会埋怨:怎样又要重起。实在,每次如许的启动封闭都是为了数据库能更好的运做。这篇文章将详细先容shutdown/startup操纵时应想到的步骤和很多注重事项,也许这些能对你有所匡助。NOTE:在实行第一步前,SHUTDOWN数据库,不要提早封闭SQL*NET,直到你确认封闭了SERVER上的数据库后再封闭SQL*NET。由于一旦你封闭了SQL*NET,用户将将得到和数据库的会话。第一步---存档或删除老的tracefiles和logs当你启动ORACLE的一个实例(INSTANCE)时,ORACLE把关于该实例的诊断信息写进指定的trace和log文件。每一个背景历程都增添一个TRACE文件,它被存储在指定的目次(该路径由INIT.ORA或CONFIG.ORA文件中的BACKGROUND_DUMP_DEST参数指定)。用户在数据库中碰到一个外部毛病时也增添USERSTRACE文件,该文件的地位由INIT.ORA或CONFIG.ORA文件中的USER_DUMP_DEST参数指定。TRACE文件的个数和称号情势由你的操纵体系决意。比方在UNIX下,文件名是一个数字加下画线加背景历程号,相似3_12345.trc,当你下一次启动实例时,一个新的文件将被发生,由于历程号的分歧,文件名多是3_13245.trc。因为每次启动和封闭数据库时,ORACLE其实不主动删除TRACE文件,以是假如疏忽这个步骤,那这些没有效的文件将占有大批的自在空间。以是DBA应当自动的办理这些文件,或删除或存档在其余指定目次下,怎样办理次要是依据你本人的开辟情况必要而订了。SQL*NET也发生LOG文件,一样平常叫LISTENER.LOG,为了能晓得他的地位,能够键进命令lsnrctlstatusLISTENER.LOG文件巨细也跟着启动的次数不休的变年夜,以是经由过程妥帖办理它也能无效的使用空间。第二步---更名ALERTLOG文件ALERTLOG文件也是用来纪录INSTANCE的诊断信息的。它的寄存目次也经由过程BACKGROUND_DUMP_DEST参数来指定。一样平常情形下ALERTLOG文件定名体例为:ALERT_.LOG。ALTERLOG文件包含了一些数据库次要事务信息,比方:startup,dhutdown,redolog的利用,tablespace的改动,文件的改动,外部毛病信息,tablespace-backup的形态的改动等。ALTERLOG文件是主要的,同时该文件的巨细增加的速率也很惊人,假如你不反省他,一段工夫后你想看看它将是很费力,由于它已很年夜了,查起来也费力。为了既能留下这些有效的信息,同时不至于华侈很年夜的空间,能够用更名的办法。你能够在任什么时候候变动ALTERLOG文件名,乃至在DATABASEOPEN时。当ORACLE不克不及找到被BACKGROUND_DUMP_DESC指定的文件时,他将增添一个新的ALTERLOG文件。固然更名不请求SHUTDOW,但选择在SHUTDOWN/STARTUP数据库时变动名字是一个好的主张。NOTE:上面的几步是在restart数据库时做的。第三步---发生一个增添把持文件(CREATECONGROLFILE)命令的文件为了recover一个被损坏的数据库,你不能不用CREATECONTROLFILE命令来重修controlfiles。CREATECONTROLFILE命令有两个利用:1、在你的现有CONTROLFILES文件破化后重修它2、在ALTERDATABASE级其余参数时,如:MAXDATAFILES你能够手输出命令,但最幸亏STARTUP前发送一命令,以便你具有最新版本的CREATECONTROLFILE命令。从进进SQLDBA,SERVERMANAGER大概SQL*PLUS,输出:alterdatabasebackupcontrolfiletotrace;该命令在USER_DUMP_DESC参数指定的路径发生一个TRACE文件,名字多是SIDNAME_PROCESSID.TRC,该文件将包括针对你的数据库的完全的CREATECONTROLFILE语法。第四步--把PACKAGES和PROCEDURES驻留SGA区尽人皆知,当PL/SQLOBJECTS被一个用户挪用时,它将被存储在SGA区的SQL共享池中,当他人再度挪用该OBJECT时间接从SGA区读取,能感觉到分明的速率提拔。以是,把经常使用的PACKAGES和PROCEDURES在STARTUP时就载进并驻留SGA,将进步使用的全体功能。经由过程重新编译、挪用等办法能够挪用OBJECT(PROCEDURES或CURSORS)进SGA,然后用DBMS_SHARED_POOL.KEEP来驻留SGA。以下:alterpackageAPPOWNER.ADD_CLIENTcompile;executeDBMS_SHARED_POOL.KEEP(APPOWNER.ADD_CLIENT,P);(P代表PROCEDURES,C代表CURSORS)一样平常每一个数据库包含两类驻留程序:1、数据库的中心PACKAGES2、用户自界说的PACKAGES中心PACKAGES包含SYS一切的PACKAGES,STANDARD,DBMS_SQL,DBMS_UTILITY,DIUTIL,为了检察你的INSTANCE中那些被驻留了,查询DBA_OBJECT_SIZE,用上面的语句:selectOwner,Name,Type,Source_Size+Code_Size+Parsed_Size+Error_SizeTotal_BytesfromDBA_OBJECT_SIZEwhereType=PACKAGEBODYorderby4desc;
恢复到之前的某个状态,是需要数据的。这数据可以是a)回滚步骤或者b)操作之前的数据状态原文。 原来的计算字段其实和虚拟字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了计算字段的持久化,这就提高了查询的性能,但是会加重insert和update的负担。OLTP慎用。OLAP可以大规模使用。 可以动态传入参数,省却了动态SQL的拼写。 你可以简单地认为适合的就是好,不适合就是不好。 备份方面可能还是一个老大难的问题。不能单独备份几个表总是感觉不爽。灵活备份的问题不知道什么时候才能解决。 在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。 现在是在考虑:如果写到服务器端,我一下搞他个10个存储过程导过去,那久之服务器不就成垃圾箱了吗?即便优化了我的中间层. 如安全管理、备份恢复、性能监控和调优等,SQL只要熟悉基本操作就可以,只要程序设计部分只要稍加了解即可(如存储过程、触发器等)。
页:
[1]