电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

NC技术及其他相关-NC数据库日常维护.docVIP免费

NC技术及其他相关-NC数据库日常维护.doc_第1页
1/23
目录一.日常操作..................................................................................................................................2(一)Oracle数据库...................................................................................................................21.数据库的启动:...........................................................................................................22.用户口令的修改:.......................................................................................................23.数据库参数文件SPFILE与PFILE...........................................................................2(二).DB2数据库的常用操作.................................................................................................3二.备份与恢复................................................................................................................................3(一)Oracle的逻辑备份与恢复...............................................................................................31.逻辑备份....................................................................................................................32.逻辑恢复....................................................................................................................4(二)DB2的备份与恢复..........................................................................................................41.备份............................................................................................................................42.恢复............................................................................................................................5三.执行统计分析更新....................................................................................................................5(一)Oracle:...............................................................................................................................5(二)DB2..................................................................................................................................5(三)SQLServer........................................................................................................................6四.重建索引..................................................................................................................................6(一)oracle.................................................................................................................................6(二)db2.....................................................................................................................................6(三)sqlserver:..........................................................................................................................7附件一.纠正oracle临时表统计信息的方案.................................................................................8附件二.Oracle客户端连接服务器的出错处理..........................................................................13附件三.Oracle优化说明...............................................................................................................14一.日常操作(一)Oracle数据库1.数据库的启动:(1)启动数据库实例(Unix/Linux系统需切换到Oracle用户下):sqlplus“/assysdba”startup(启动数据库实例)shutdownimmediate(关闭数据库实例)(2)启动/关闭数据库监听进程.lsnrctlLSNRCTL>start(启动监听)LSNRCTL>stop(关闭监听)2.用户口令的修改:SQL>ALTERUSER“用户名”IDENTIFIEDBY“新口令”如果数据库管理员的口令丢失,可执行如下步骤:sqlplus“/assysdba”SQL>ALTERUSER“sys”IDENTIFIEDBY“新口令”SQL>ALTERUSER“system”IDENTIFIEDBY“新口令”3.数据库参数文件SPFILE与PFILE(假设Oracle安装在D:\Oracle目录下)(1)SPFILE文件:存储在D:\Oracle\ora92\database目录下,为二进制的参数文件,无法直接编辑.文件名为”SPFILE+例程名.ora”(2)PFILE文件:存储在D:\Oracle\ora92\database目录下,为文本的参数文件,可直接修改.文件名为”init+例程名.ora”,打开此文件,内容为”IFILE=’d:\oracle\admin\实例名\pfile\init.ora’”,也就是说真正的参数文件为init.ora,此文件为文本文件,可直接编辑.(3)数据库启动所使用的参数文件.数据库启动时,首先寻找”SPFILE+例程名.ora”文件,若文件存在,就按照文件设置的参数启动例程;若”SPFILE+例程名.ora”文件不存在,转向寻找”init+例程名.ora”文件,按照”init+例程名.ora”文件里指定的实际参数文件init.ora的参数启动例程.(4)SPFILE和PFILE的相互转换.a)用SPFILE文件创建PFILE文件.Createspfile=’spfile路径’frompfile=’pfile路径’;b)用PFILE文件创建SPFILE文件.Createpfile=’pfile路径’fromspfile=’spfile路径’;(二).DB2数据库的常用操作1.启动数据库db2start2.停止数据库db2stop3.连接数据库db2connecttoo_yduserdb2usingpwd4.读数据库管理程序配置db2getdbmcfg5.写数据库管理程序配置db2updatedbmcfgusing参数名参数值6.读数据库的配置db2connectto数据库名userdb2usingpwddb2getdbcfgfor数据库名7.写数据库的配置db2connectto数据库名userdb2usingpwddb2updatedbcfgfor数据库名using参数名参数值8.关闭所有应用连接db2forceapplicationall9.执行一个sql文件db2–tfsql文件名(文件中每一条命令用;结束)10.列出所有的系统表listtablesforsystem二.备份与恢复(一)Oracle的逻辑备份与恢复1.逻辑备份使用EXP命令,exphelp=y得到所有关于exp命令的参数例:将nc30用户的所有数据备份到nc30bak.dmp文件中.expnc30/1@ncdbowner=nc30file=nc30bak.dmplog=exp.log其中:nc30/1:nc的Oracle用户名与密码ncdb:Oracle的实例名nc30bak.dmp:为导出文件exp.log:导出过程的log文件.2.逻辑恢复使用IMP命令,用imphelp=y得到所有关于exp命令的参数例:将nc30bak.dmp文件中的nc30用户的所有数据恢复到nc30new用户下.impnc30new/1@ncdbfromuser=nc30touser=nc30newfile=nc30bak.dmplog=imp.log其中:nc30/1:要导入的Oracle用户名与密码ncdb:Oracle的实例名nc30:导出时的Oracle用户名nc30new:要导入数据到此Oracle用户下nc30bak.dmp:为导出文件imp.log:导入过程的log文件.(二)DB2的备份与恢复1.备份通过DB2控制中心图形界面备份,右键点击选中的数据库,选择备份数据库,根据提示操作即可;命令行操作db2backupdbdbnametobackupdir注释:该命令有丰富参数,可以使用命令db2?backupdb查看。在命令行下输入db2?msg,msg可以是错误提示信息如SQL1013N,也可以是某个命令如backupdb。注意事项windows服务器的备份文件放在一个较深的目录结构下,注意复制时要保留目录结构,例:C:\MYDB.0\DB2\NODE0000\CATN0000\20030401\120001.001备份如果提示有活动应用程序连接,则在确认事务都已经提交后,断调连接后再备份db2forceapplicationall对于用于不同操作系统下数据库恢复目的的数据库备份:假如,你的数据库在AIX平台上,你想在WIN平台上来恢复数据环境,可用dbmove来做。dbmove只导出了表结构与表数据,而其他如视图等对象并没有被创建,所以还要用db2look做一个库结构的备份。操作步骤如下所示:db2look–ddbname–udb2inst1–e–od:\credb.sql–idb2inst1–wdb2inst1db2movedbnameexport–tcdb2inst1–udb2inst1–pdb2inst12.恢复通过控制中心图形界面恢复,右键点击指定实例下面的数据库,选择“根据备份创建数据库”,根据提示操作;命令行操作db2restoredbdbnamefrombackupdir对于通过dbmove来的数据我们如何做恢复呢?步骤如下:dbmovedbnameimport–tcdb2inst1–udb2inst1–pdb2inst1db2connecttodbnameuserdb2inst1usingdb2inst1db2–tvfd:\credb.sql>credb.log执行以上步骤后打开credb.log文件查看有哪些异常,在日志文件中前半部份涉及到创建表的语句会报错,因为通过dbmove后表已创建起来,我们把他当做正常错误来看待。关键是要看后面的涉及到表的约束条件及索引、视图、触发器的建立是否正常。三.执行统计分析更新作用:保证统计信息的最新与准确性最好每周做一下统计信息更新:(一)Oracle:使用sqlplus以要更新的用户身份登陆到数据库,执行:begindbms_stats.gather_schema_stats(ownname=>‘(用户名)’,cascade=>TRUE);end;上述语句会把该用户模式下的所有表、索引的统计信息更新。如果只想更新其中某个对象的统计信息,可执行analyzetable表名computestatisticsanalyzetable表名computestatisticsforallindexes;analyzetable表名computestatisticsforallcolumns;(二)DB2以表的所有者的用户权限登陆数据库,执行:reorgchkupdatestatisticsontableall上述语句会更新该数据库内该用户所拥有的所有表、索引的统计信息如果只想更新其中某个对象的统计信息,可执行RUNSTATSONTABLE(表名)andindexesall(三)SQLServer使用QueryAnalyzer登陆到SQLServer,执行:use用户数据库名称sp_updatestats上述语句会把该数据库内的所有表、索引的统计信息更新。如果只想更新其中某个对象的统计信息,可执行:UPDATESTATISTICS表名四.重建索引如果系统已经运行三月以上,并且数据变化很大,可以考虑重建索引.(一)oracle执行:setpagesize20000spoolc:\index.sql;select‘alterindex‘||index_name||’rebuildonline;’fromuser_indexes;spooloff;编辑c:\index.sql文件,删除除’alterindex......’外的其他内容。运行:@@c:\index.sql;(二)db2在用户数据库先执行:select‘REORGTABLE‘||rtrim(TBCREATOR)||’.’||TBNAME||’INDEX‘||rtrim(CREATOR)||’.’||NAMEfromsysibm.sysindexes然后把运行结果执行(三)sqlserver:在用户数据库先执行:select‘dbccdbreindex(‘+name+’)’fromsysobjectswherextype=’u’然后把运行结果执行附件一.纠正oracle临时表统计信息的方案针对NC产品版本:1.NC产品230打过临时表patch的用户2.NC产品V30用户1.问题描述nc产品运行中,当遇到多表关联查询包含临时表的时候,往往会出现执行时间较长的效率问题。2.问题原因这是因为oracle的cost优化器,在处理没有统计信息的临时表时,经常会选择不良的执行计划,导致一个查询耗时很长的显像。3.解决方法根据nc产品的sql特征,认为,手工对临时表指定统计信息,是对于这个问题较好的解决方案。为了避免复杂手工命令步骤,提供以下存储过程来统一实现多个临时表的统计信息指定。请大家务必严格按步骤执行。4.结果描述避免了oracle在有关临时表查询是选择不良的执行计划,提高了类似查询的执行效率.5.执行步骤(1)创建procudure:在sqlplus中以在nc的用户下执行以下创建procedure的脚本:CREATEORREPLACEPROCEDUREINRT_STATISTICSASV_TABLENAMEVARCHAR2(50);--table的名称V_USERNAMEVARCHAR2(50);V_SQLVARCHAR2(500);V_SQL1VARCHAR2(500);--游标CURSORCUR_TABLEISSELECTTABLE_NAMEFROMUSER_TABLESWHERETABLESPACE_NAMEISNULL;BEGINSELECTUSERINTOV_USERNAMEFROMDUAL;OPENCUR_TABLE;LOOPFETCHCUR_TABLEINTOV_TABLENAME;EXITWHENCUR_TABLE%NOTFOUND;V_SQL:='analyzetable'||V_TABLENAME||'deletestatistics';V_SQL1:='BEGINdbms_stats.set_table_stats(ownname=>'''||V_USERNAME||''',tabname=>'''||V_TABLENAME||''',numrows=>2000,numblks=>70);END;';EXECUTEIMMEDIATEV_SQL;EXECUTEIMMEDIATEV_SQL1;ENDLOOP;V_SQL:='BEGINdbms_stats.set_table_stats(ownname=>'''||V_USERNAME||''',tabname=>''IA_ENDHANDLE'',numrows=>1000,numblks=>15);END;';EXECUTEIMMEDIATEV_SQL;V_SQL:='BEGINdbms_stats.set_table_stats(ownname=>'''||V_USERNAME||''',tabname=>''FA_TEMP_DEP_N'',numrows=>10000,numblks=>100);END;';EXECUTEIMMEDIATEV_SQL;--关闭游标CLOSECUR_TABLE;EXCEPTIONWHENOTHERSTHENIFCUR_TABLE%ISOPENTHENCLOSECUR_TABLE;ENDIF;ENDINRT_STATISTICS;/如果得到以下提示,表示创建成功:Procedurecreated(或同意的中文提示)。如:MicrosoftWindows2000[Version5.00.2195](C)版权所有1985-2000MicrosoftCorp.C:\DocumentsandSettings\duanl>sqlplusSQL*Plus:Release8.1.7.0.0-Productionon星期一9月2713:05:532004(c)Copyright2000OracleCorporation.Allrightsreserved.请输入用户名:NCUSER请输入口令:连接到:Oracle8iEnterpriseEditionRelease8.1.7.4.1-ProductionWiththePartitioningoptionJServerRelease8.1.7.4.1-ProductionSQL>CREATEORREPLACEPROCEDUREINRT_STATISTICS2AS3V_TABLENAMEVARCHAR2(50);--table的名称4V_USERNAMEVARCHAR2(50);5V_SQLVARCHAR2(500);6V_SQL1VARCHAR2(500);78--游标910CURSORCUR_TABLEIS11SELECTTABLE_NAMEFROMUSER_TABLESWHERETABLESPACE_NAMEISNULL;1213BEGIN14SELECTUSERINTOV_USERNAMEFROMDUAL;1516OPENCUR_TABLE;17LOOP18FETCHCUR_TABLEINTOV_TABLENAME;1920EXITWHENCUR_TABLE%NOTFOUND;2122V_SQL:='analyzetable'||V_TABLENAME||'deletestatistics';23V_SQL1:='BEGINdbms_stats.set_table_stats(ownname=>'''||V_USERNAME||''',tabname=>'''||V_TABLENAME||''',numrows=>2000,numblks=>70);END;';2425EXECUTEIMMEDIATEV_SQL;26EXECUTEIMMEDIATEV_SQL1;2728ENDLOOP;2930V_SQL:='BEGINdbms_stats.set_table_stats(ownname=>'''||V_USERNAME||''',tabname=>''IA_ENDHANDLE'',numrows=>1000,numblks=>15);END;';31EXECUTEIMMEDIATEV_SQL;3233V_SQL:='BEGINdbms_stats.set_table_stats(ownname=>'''||V_USERNAME||''',tabname=>''FA_TEMP_DEP_N'',numrows=>10000,numblks=>100);END;';34EXECUTEIMMEDIATEV_SQL;3536--关闭游标37CLOSECUR_TABLE;3839EXCEPTION40WHENOTHERSTHEN41IFCUR_TABLE%ISOPENTHEN42CLOSECUR_TABLE;43ENDIF;44ENDINRT_STATISTICS;45/过程已创建。(2)执行该存储过程:a.如(1)得到成功提示后,在nc用户下执行:execINRT_STATISTICS;指定临时表统计信息。SQL>execINRT_STATISTICS;PL/SQL过程已成功完成。b.如(1)返回有错误提示,执行:showerror并把显示结果发回NC本部设计部。SQL>showerrorPROCEDUREINRT_STATISTICS出现错误:LINE/COLERROR-------------------------------------------------------------------------30/73PLS-00103:出现符号"',tabname=>'IA_ENDHANDLE',numrows=>1000,numblks=>15);END;"在需要下列之一时:.(*@%&=-+;atinmodnotrem<>or!=or~=>=<=<>andorlikebetweenisnullisnot||isdangling符号"."被替换为"',tabname=>'IA_ENDHANDLE',numrows=>1000,numblks=>15);END;"后继续。6.另外提供定制job定时完成这个功能的脚本,将存储过程定时job:variablejobnonumber;variableinstnonumber;beginselectinstance_numberinto:instnofromv$instance;dbms_job.submit(:jobno,'BEGININRT_STATISTICS;END;',trunc(trunc(sysdate)+23/24,'HH'),'trunc(SYSDATE+1,''HH'')',TRUE,:instno);commit;end;/SQL>variablejobnonumber;SQL>variableinstnonumber;SQL>begin2selectinstance_numberinto:instnofromv$instance;3dbms_job.submit(:jobno,'BEGININRT_STATISTICS;END;',trunc(trunc(sysdate)+23/24,'HH'),'trunc(SYSDATE+1,''HH'')',TRUE,:instno);4commit;5end;6/PL/SQL过程已成功完成。这个可代替上述步骤5-(2)a时间定制为每天晚上11点.要执行这个job,必须先确定数据库参数:job_queue_processes在sqlplus中用这个命令来查看参数:showparameterjob_queue_processes如果该参数值为0,在sqlplus中用以下命令先进行修改:altersystemsetjob_queue_processes=10;SQL>showparameterjob_queue_processesNAMETYPEVALUE-------------------------------------------------------------------------job_queue_processesinteger4SQL>altersystemsetjob_queue_processes=10;系统已更改。7.相关说明以上提供的方案,对数据库系统资源消耗较小,可以在业务使用的时候执行.附件二.Oracle客户端连接服务器的出错处理一.ORA-12560:TNS:协议适配器错误造成ORA-12560:TNS:协议适配器错误的问题的原因有三个:1.监听服务没有起起来。windows平台个一如下操作:开始---程序---管理工具---服务,打开服务面板,启动oraclehome92TNSlistener服务。2.databaseinstance没有起起来。windows平台如下操作:开始---程序---管理工具---服务,打开服务面板,启动oracleserviceXXXX,XXXX就是你的databaseSID.3.注册表问题。regedit,然后进入HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0将该环境变量ORACLE_SID设置为XXXX,XXXX是你的databaseSID.或者右击我的电脑,属性—高级—环境变量---系统变量—新建,变量名=oracle_sid,变量值=XXXX,XXXX是你的databaseSID.或者进入sqlplus前,在commandline下输setoracle_sid=XXXX,XXXX是你的databaseSID.经过以上步骤,一般可以解决问题。二.Ora-12638错误:错误含义:凭证检索失败的错误原因:如果用户登陆到域,或者是域服务器,可能出现此错误解决办法:修改$Oracle_Home\network\admin\sqlnet.ora文件将SQLNET.AUTHENTICATION_SERVICES=(NTS)改为:SQLNET.AUTHENTICATION_SERVICES=(NONE)附件三.Oracle优化说明ora_perform.sql脚本是用来监测oracle数据库性能的工具。(该脚本附录在最后面)使用方法:将ora_perform.sql文件放入某一磁盘,如c:;启动SQLPLUS,输入用户名/口令及连接名与你将要监测的数据库建立起连接;执行命令:@c:\ora_perform.sql(注意文件所在位置)。需要输入参数:loops,interval的值。Loops指要做多少次监测操作;interval指定每次监测之间所间隔的时间,单位为秒。在监测过程中SQLPLUS呈现一种停止状态。你不用去管它,监测结束后结果后会被输出到SQLPLUS界面及c:\ora_perform_result.txt文件中。建议在业务操作较为频繁的时候来做监测。loops的值大一些,如10次左右或更大;interval的值建议为900,也就是间隔时间为15分钟。这样整个监测过程需要花费大约10*900(秒),即2.5个小时左右。结果输出后,取结果重覆出现频率较高的几组值进行分析。结果说明:BufferCacheHitRatio说明:数据缓冲区的命中率。SQL语句执行时,Server进程首先会去数据缓冲区中找返回给用户的数据值,当缓冲区中没有所要的数据时通过DBWR进程将数据从数据文件中读取写入数据冲区再传给用户。命中率是指未发生物理文件读取的数据请求在所有数据请求中所占比例。正常值:>=90%优化方法:增加初始化参数:db_block_buffers的值。增加的前提是目前有足够的剩余物理内存。设置多缓冲池。将缓冲池分为keep区,recycle区,default区,三个区的大小总合为db_block_buffers的值,修改init.ora文件加入设置,例如下:...DB_BLOCK_BUFFERS=20000DB_BLOCK_LRU_LATCHES=6BUFFER_POOL_KEEP=(BUFFERS:14000,LRU_LATCHES:1)BUFFER_POOL_RECYCLE=(BUFFERS:2000,LRU_LATCHES:3)...注:buffer_pool_buffers=2000*3+14000*1=20000keep区用于保留会再一次使用的对象;recycle区用于存放很少被重复使用的对象。所以我们可以指定经常重复使用的表、索引等对象的缓存区域为keep区,以减少I/O操作。指定方法如下:altertablebd_accsubjstorage(buffer_poolkeep);LibraryCacheHitRatio;LibraryCacheReloadRatio说明:librarycache用于存放SQL、PLSQL及其分析树及他们的执行方案。Librarycachehitratio指所发送的SQL语句在librarycache中能找到它的执行方案的机率;librarycachereload指所发送的SQL语句在librarycache曾经有过同样的语句及它的执行方案,但被移出了librarycache,这些语句所占的比率即为librarycachereloadratio。正常值:LibraryCacheHitRatio>=90%LibraryCacheReloadRatio<=1%(最好为0)优化方法:增加初始化参数:shared_pool_size的值。DictionaryCacheGetmissesRatio说明:dictionarycache用于存放数据库对象如表、视图等的结构定义。当SQL语句中用到数据库对象时,server进程要去dictionarycache中对比该对象的定义,当找不到时会从数据文件中读取入dictionarycache,dictionarycachegetmissesratio反映的就是找不到的比率。正常值:<15%优化方法:增加初始化参数:shared_pool_size的值RollbackSegmentWaitRatio说明:事务在请求回滚段时发生等待的比率。正常值:<1%优化方法:增加新的回滚段。所有回滚段的存储参数应一致。对于我们的应用建多少个回滚段合适呢?最大并发用户数除以4或除以2即可。对于oracle9i系统可自动管理回滚段,建库后无需建立新的回滚段。SortstoDiskRatio说明:当创建索引;SQL语句中含有orderby,groupby子句;SQL语句中含有distinct,union,intersect,minus等操作时均会用到sort(排序),这些排序会在SGA区中的sortarea中进行。当sortarea不够大时会将排序移入临时表空间文件中进行,这就会因发生了I/O操作而带来处理速度的降低。Sortstodiskratio指进入临时表空间文件的排序占整个排序操作的比率。正常值:<5%优化方法:增加初始化参数sort_area_size及sort_area_retained_size的值。这两个参数的默认值为65536(字节),应在监控过程中逐步增加这两个参数的值。CursorUsageRatio说明:该值是指监控过程中获得的数据库实际打开的游标数与初始化参数open_coursors值的比率。正常值:<95%优化方法:增加初始化参数open_cursors的值。调整应用代码及时关闭cursors来有效利用内存TransactionUsageRatio说明:该值是指监控过程中获得的实际活动的事务数与初始化参数transactions值的比率。正常值:<95%优化方法:增加初始化参数transactions的值Numberofusersawaitinglock说明:反映了发生锁定等待的session(会话)数。正常值:=0解决办法:当遇到锁定等待时只能将产生锁定的session杀掉。可用dbastudio工具中的“例程”->“会话”工具来做,也可用命令:altersystemkillsession‘sid,serial#’;来做。我们如何知道产生锁定的session的sid及serial#值呢?用以下命令来获得。SELECTS.SIDSESSION_ID,S.SERIAL#,S.USERNAME,DECODE(L.LMODE,0,‘None’,1,‘Null’,2,‘Row-S(SS)’,3,‘Row-X(SX)’,4,‘Share’,5,‘S/Row-X(SSX)’,6,‘Exclusive’,TO_CHAR(L.LMODE))MODE_HELD,DECODE(L.REQUEST,0,‘None’,1,‘Null’,2,‘Row-S(SS)’,3,‘Row-X(SX)’,4,‘Share’,5,‘S/Row-X(SSX)’,6,‘Exclusive’,TO_CHAR(L.REQUEST))MODE_REQUESTED,O.OWNER||’.’||O.OBJECT_NAME||’(‘||O.OBJECT_TYPE||’)’,S.TYPELOCK_TYPE,L.ID1LOCK_ID1,L.ID2LOCK_ID2FROMV$LOCKL,SYS.DBA_OBJECTSO,V$SESSIONSWHEREL.SID=S.SIDANDL.ID1=O.OBJECT_ID;RedoLogSpaceWaittime说明:该值是指用户进程等待使用日志缓冲区空间的等待时间。正常值:=0优化方法:增加初始化参数log_buffer的值。SGAFreeSpaceRatio说明:该值显示了当前SGA区的空闲空间占SGA区的比率。正常值:约为5%优化方法:当该值大于10%以上时,可将数据库SGA区释放出一部份供其它应用追加内存;当该值小于5%时,说明SGA区较小。此时我们要结合上面提到的buffercache、librarycache、dictionarycache、redologspace项目来看哪些区上需要增加值。性能监控ora_perform.sql脚本(winddows版本):remremProcedureperform.sqlremremDescriptionThisPL/SQLscriptmonitorsadatabase.remThefollowingaremonitored:-remremBufferCacheremLibraryCacheremDictionaryCacheremRollbackSegmentWaitsremSortstodiskremCursorUsageremNumberofLocksremRedoLogSpaceWaitsremsessionwaitremSGAFreeSpaceRatioremremremArgument(s)Numberofloopsandintervalsecondsremrem(Suggestedloops>5interval900).remremAuthorwangshu,28/03/2003setechooff;setserveroutputonsize10000;spoolc:\ora_perform_result.txt;declare/*Fetchedfromdatabase*/v_fetch_consistent_getsnumber:=0;v_fetch_db_block_getsnumber:=0;v_fetch_physical_readsnumber:=0;v_fetch_rollback_getsnumber:=0;v_fetch_rollback_waitsnumber:=0;v_fetch_sorts_disknumber:=0;v_fetch_sorts_memorynumber:=0;v_fetch_redo_space_waittimenumber:=0;v_fetch_enqueue_waitsnumber:=0;v_fetch_library_pinsnumber:=0;v_fetch_library_pinhitsnumber:=0;v_fetch_library_reloadsnumber:=0;v_fetch_dictionary_getsnumber:=0;v_fetch_dictionary_missesnumber:=0;/*parametersfromINIT.ORA*/v_open_cursors_parameternumber;v_transactions_parameternumber;/*Calculatedvalues*/v_logical_readsnumber;v_consistent_getsnumber;v_db_block_getsnumber;v_physical_readsnumber;v_rollback_getsnumber;v_rollback_waitsnumber;v_sorts_disknumber;v_sorts_memorynumber;v_redo_space_waittimenumber;v_enqueue_waitsnumber;v_library_pinsnumber;v_library_pinhitsnumber;v_library_reloadsnumber;v_dictionary_getsnumber;v_dictionary_missesnumber;/*Fetchedfromdatabase*/v_open_cursors_currentnumber;v_transactionsnumber;v_total_locksnumber;v_sga_freenumber;v_sga_totalnumber;/*Storelastvaluesforcalculations*/v_last_consistent_getsnumber;v_last_db_block_getsnumber;v_last_physical_readsnumber;v_last_rollback_getsnumber;v_last_rollback_waitsnumber;v_last_sorts_disknumber;v_last_sorts_memorynumber;v_last_redo_space_waittimenumber;v_last_enqueue_waitsnumber;v_last_library_pinsnumber;v_last_library_pinhitsnumber;v_last_library_reloadsnumber;v_last_dictionary_getsnumber;v_last_dictionary_missesnumber;/*Ratio*/v_buffer_cache_hit_ratiointeger;v_rollback_wait_ratiointeger;v_sorts_disk_ratiointeger;v_open_cursors_ratiointeger;v_library_pinhits_ratiointeger;v_library_reloads_ratiointeger;v_dictionary_cache_ratiointeger;v_transactions_ratiointeger;v_sga_free_ratiointeger;/*General*/v_counterinteger;v_intervalinteger;v_date_timevarchar2(20);proceduredb_output(messageinvarchar)isbegindbms_output.put_line(message);end;procedureget_paramisbeginselectvalueintov_open_cursors_parameterfromv$parameterwherename=‘open_cursors’;selectvalueintov_transactions_parameterfromv$parameterwherename=‘transactions’;end;procedureget_statsisbeginv_last_consistent_gets:=v_fetch_consistent_gets;v_last_db_block_gets:=v_fetch_db_block_gets;v_last_physical_reads:=v_fetch_physical_reads;v_last_library_pins:=v_fetch_library_pins;v_last_library_pinhits:=v_fetch_library_pinhits;v_last_library_reloads:=v_fetch_library_reloads;v_last_dictionary_gets:=v_fetch_dictionary_gets;v_last_dictionary_misses:=v_fetch_dictionary_misses;v_last_rollback_gets:=v_fetch_rollback_gets;v_last_rollback_waits:=v_fetch_rollback_waits;v_last_sorts_disk:=v_fetch_sorts_disk;v_last_sorts_memory:=v_fetch_sorts_memory;v_last_enqueue_waits:=v_fetch_enqueue_waits;v_last_redo_space_waittime:=v_fetch_redo_space_waittime;selectvalueintov_fetch_consistent_getsfromv$sysstatwherename=‘consistentgets’;selectvalueintov_fetch_db_block_getsfromv$sysstatwherename=‘dbblockgets’;selectvalueintov_fetch_physical_readsfromv$sysstatwherename=‘physicalreads’;selectsum(pinhits),sum(pins),sum(reloads)intov_fetch_library_pinhits,v_fetch_library_pins,v_fetch_library_reloadsfromv$librarycache;selectsum(gets),sum(getmisses)intov_fetch_dictionary_gets,v_fetch_dictionary_missesfromv$rowcache;selectsum(waits),sum(gets)intov_fetch_rollback_waits,v_fetch_rollback_getsfromv$rollstat;selectvalueintov_fetch_sorts_diskfromv$sysstatwherename=‘sorts(disk)’;selectvalueintov_fetch_sorts_memoryfromv$sysstatwherename=‘sorts(memory)’;selectvalueintov_open_cursors_currentfromv$sysstatwherename=‘openedcursorscurrent’;selectvalueintov_fetch_redo_space_waittimefromv$sysstatwherename=‘redologspacewaittime’;selectvalueintov_fetch_enqueue_waitsfromv$sysstatwherename=‘enqueuewaits’;selectsum(xacts)intov_transactionsfromv$rollstat;selectcount(lockwait)intov_total_locksfromv$sessionwherelockwaitisnotnull;selectsum(bytes)intov_sga_totalfromv$sgastat;selectsum(bytes)intov_sga_freefromv$sgastatwherename=’freememory’;end;beginget_param;/*GetFixedparameters*/get_stats;/*GetInitialValuesofstatistics*/v_counter:=&loops;v_interval:=&interval;whilev_counter>0loop/*Sleepformore*/db_output(‘********************************************************’);v_date_time:=to_char(sysdate,’dd-mon-yyhh24:mi’);db_output(‘Sleepingat‘||v_date_time||’...’);v_counter:=v_counter-1;dbms_lock.sleep(v_interval);/*Getstatistics*/get_stats;/*CheckBufferCacheHitRatio*/v_consistent_gets:=v_fetch_consistent_gets-v_last_consistent_gets;ifv_consistent_gets<0thenv_consistent_gets:=v_fetch_consistent_gets;endif;v_db_block_gets:=v_fetch_db_block_gets-v_last_db_block_gets;ifv_db_block_gets<0thenv_db_block_gets:=v_fetch_db_block_gets;endif;v_physical_reads:=v_fetch_physical_reads-v_last_physical_reads;ifv_physical_reads<0thenv_physical_reads:=v_fetch_physical_reads;endif;v_logical_reads:=v_consistent_gets+v_db_block_gets;ifv_logical_reads<1thenv_logical_reads:=1;endif;v_buffer_cache_hit_ratio:=(1-(v_physical_reads/v_logical_reads))*100;db_output(‘BufferCacheHitRatiois‘||to_char(v_buffer_cache_hit_ratio)||’%’);/*CheckLibraryCache*/v_library_pinhits:=v_fetch_library_pinhits-v_last_library_pinhits;ifv_library_pinhits<0thenv_library_pinhits:=v_fetch_library_pinhits;endif;v_library_pins:=v_fetch_library_pins-v_last_library_pins;ifv_library_pins<0thenv_library_pins:=v_fetch_library_pins;endif;ifv_library_pins<1thenv_library_pins:=1;endif;v_library_reloads:=v_fetch_library_reloads-v_last_library_reloads;ifv_library_reloads<0thenv_library_reloads:=v_fetch_library_reloads;endif;v_library_pinhits_ratio:=((v_library_pinhits*100)/v_library_pins);db_output(‘LibraryCacheHitRatiois‘||to_char(v_library_pinhits_ratio)||’%’);v_library_reloads_ratio:=((v_library_reloads*100)/v_library_pins);db_output(‘LibraryCacheReloadRatiois‘||to_char(v_library_reloads_ratio)||’%’);/*CheckLibraryCache*/v_dictionary_misses:=v_fetch_dictionary_misses-v_last_dictionary_misses;ifv_dictionary_misses<0thenv_dictionary_misses:=v_fetch_dictionary_misses;endif;v_dictionary_gets:=v_fetch_dictionary_gets-v_last_dictionary_gets;ifv_dictionary_gets<0thenv_dictionary_gets:=v_fetch_dictionary_gets;endif;ifv_dictionary_gets<1thenv_dictionary_gets:=1;endif;v_dictionary_cache_ratio:=((v_dictionary_gets*100)/(v_dictionary_misses+v_dictionary_gets));db_output(‘DictionaryCacheHitRatiois‘||to_char(v_dictionary_cache_ratio)||’%’);/*CheckforRollbacksegmentwaits*/v_rollback_waits:=v_fetch_rollback_waits-v_last_rollback_waits;ifv_rollback_waits<0thenv_rollback_waits:=v_fetch_rollback_waits;endif;v_rollback_gets:=v_fetch_rollback_gets-v_last_rollback_gets;ifv_rollback_gets<0thenv_rollback_gets:=v_fetch_rollback_gets;endif;ifv_rollback_gets<1thenv_rollback_gets:=1;endif;v_rollback_wait_ratio:=(v_rollback_waits*100)/(v_rollback_gets);db_output(‘RollbackSegmentWaitRatiois‘||to_char(v_rollback_wait_ratio)||’%’);/*Checksortstodisk*/v_sorts_disk:=v_fetch_sorts_disk-v_last_sorts_disk;ifv_sorts_disk<0thenv_sorts_disk:=v_fetch_sorts_disk;endif;v_sorts_memory:=v_fetch_sorts_memory-v_last_sorts_memory;ifv_sorts_memory<0thenv_sorts_memory:=v_fetch_sorts_memory;endif;ifv_sorts_memory<1thenv_sorts_memory:=1;endif;v_sorts_disk_ratio:=(v_sorts_disk*100)/(v_sorts_disk+v_sorts_memory);db_output(‘SortstoDiskRatiois‘||to_char(v_sorts_disk_ratio)||’%’);/*Checkcursorusage*/v_open_cursors_ratio:=(v_open_cursors_current*100)/(v_open_cursors_parameter);db_output(‘CursorUsageRatiois‘||to_char(v_open_cursors_ratio)||’%’);/*Checktransactionusage*/v_transactions_ratio:=(v_transactions*100)/(v_transactions_parameter);db_output(‘TransactionUsageRatiois‘||to_char(v_transactions_ratio)||’%’);/*Checknumberoflocks*/db_output(‘Numberofusersawaitinglockis‘||to_char(v_total_locks));/*Checkforredologspacewaits*/v_redo_space_waittime:=v_fetch_redo_space_waittime-v_last_redo_space_waittime;ifv_redo_space_waittime<0thenv_redo_space_waittime:=v_fetch_redo_space_waittime;endif;db_output(‘RedoLogSpaceWaittimeis‘||to_char(v_redo_space_waittime));/*CheckforSGA*/v_sga_free_ratio:=round((v_sga_free*100)/(v_sga_total),0);db_output(‘SGAFreeSpaceRatiois‘||to_char(v_sga_free_ratio)||’%’);endloop;end;/spooloff;

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

NC技术及其他相关-NC数据库日常维护.doc

您可能关注的文档

管理软件+ 关注
实名认证
内容提供者

管理软件资料分享

确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信