ORACLE管理员必备手册.ppt
ORACLE DBA,Jan-15-2000,ORACLE数据库培训教材,2,数据库管理员(DBA),预备知识SQL语句PL/SQL关系数据库基本原理相关知识UNIXNT网络,Jan-15-2000,ORACLE数据库培训教材,3,ORACLE数据库简介,当前主流数据库及其简介ORACLESYSBASEINFORMIXSQL SERVERDB2关系数据库概念简介ORACLE数据库结构,Jan-15-2000,ORACLE数据库培训教材,4,关系数据库简介,关系数据库元素实体和联系键(key)数据完整性SQL语言,Jan-15-2000,ORACLE数据库培训教材,5,关系数据库元素,Jan-15-2000,ORACLE数据库培训教材,6,实体和联系,实体(Entity):客观存在的并可相互区分的“事物”实体通常成为表,表由行和列组成,每一行描述实体的一个示例,每一列描述实体的一个特征实体在逻辑数据库设计时被确定联系(Relation):实体之间存在的对应或连接关系一对一关系(1:1):表中的一行与相关表中的零行或多行相关一对多关系(1:n):表中的一行与相关表中的零行或多行相关多对多关系(n:m):表中的多行与相关表中的零行或多行相关联系的实现:在关系数据库设计中,联系通常利用逻辑键来实现。,Jan-15-2000,ORACLE数据库培训教材,7,键(key),主键超键(Super Key):在一个关系中能唯一表示元组的属性集侯选键(Candidate Key):一个属性集能唯一标识元组而又不含多余的属性主键(Primary Key):被选用的侯选键外键公共键(Common Key):两个关系中具有相容(或相同)的属性或属性组外键(Foreign Key):如果公共键是其中一个关系的主键,那么这个公共键在另一个关系中称为外键组合键组合键(Composit Key):由两个或两个以上属性(列)组成的键,Jan-15-2000,ORACLE数据库培训教材,8,数据完整性(Data Intergrity),实体完整性关系中的元组在组成主键的属性上不能有空值,也不能有重复值,否则就不能起到唯一标识元组的作用域完整性关系中的属性取值的正确性限制,包括数据类型、精度、取值范围、是否允许空值等参照完整性反映了实体之间存在的某种约束条件。要求外键的值不允许参照不存在的主键的值,它使主键和外键之间的值保持一致或相容,来维护数据库数据的一致性或相容性业务规则一般包括数据完整性、参照完整性、遵循组织的任一其他需求,以便保证业务的正确运行,Jan-15-2000,ORACLE数据库培训教材,9,SQL 语言(Structure Query Language),数据操纵语言(DML)SELECTDELETEINSERTUPDATE数据定义语言(DDL)CREATE 定义数据库实体结构ALTER 修改数据库实体结构DROP 删除数据库实体GRANT/REVOKE数据库对象的权限管理数据控制语言(DCL)COMMIT/ROLLBACKSAVEPOINT,Jan-15-2000,ORACLE数据库培训教材,10,SQL*PLUS,SQL*NET字符集SQL*PLUS数据库对象介绍,Jan-15-2000,ORACLE数据库培训教材,11,TNSTNS是Transparent Network Substrate(透明网络层)的缩写如何配置TNS使CLIENT同SERVER建立联系服务器上监听进程与listener.ora文件客户机上tnsnames.ora文件如何配置BDE使DELPHI同ORACLE建立联系,Jan-15-2000,ORACLE数据库培训教材,12,listener.ora,LISTENER=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=100.100.100.100)(PORT=1521)SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(SID_NAME=ora1)(ORACLE_HOME=/oracle/app/oracle/product/8.0.5),Jan-15-2000,ORACLE数据库培训教材,13,tnsnames.ora,yy1=(description=(address=(protocol=tcp)(host=100.100.100.100)(port=1521)(connect_data=(sid=ora1),Jan-15-2000,ORACLE数据库培训教材,14,SQL*PLUS,SQL*PLUS常用命令介绍DUAL空表的作用SQL 语句SQL常用函数介绍SQL*PLUS使用常用技巧,Jan-15-2000,ORACLE数据库培训教材,15,SQL*PLUS常用命令介绍,SET(设置当前的SQL*PLUS的系统环境):ECHO,HEADING,SERVEROUPUT,TIMING,TIME,LONG,LINESIZE,ARRAYSIZE,AUTOCOMMIT,COPYCOMMIT,PAUSESHOW(显示当前的系统环境):USERSAVE存储当前的内容到某一文件:SAVE 文件名GET读取某一文件的内容:GET 文件名RUN和/(运行当前的文件或某一特定的文件):RUN可运行当前缓冲区中的内容也可运行某一特定的文件。CONN连接某一用户:CONN username/passwordalias,Jan-15-2000,ORACLE数据库培训教材,16,SQL*PLUS常用命令介绍,DISC从某一连接中退出:DISCCOLUMN格式化某一列的显示格式:COLUMN COLUMN_NAME FORMAT AXXXDESC查看某一对象的描述:DESC OBJECT_NAMEEDIT编辑当前缓冲区中的内容或某一特定的文件:EDIT 或EDLIST显示当前缓冲区中的内容:LIST或LSPOOL把运行结果重定向:SPOOL 某一文件,结束SPOOL OFF,默认的扩展名为LST,Jan-15-2000,ORACLE数据库培训教材,17,SQL*PLUS常用命令,EXIT:退出当前的连接和:运行单独的脚本和在脚本中运行脚本cre.sqlcre.sqlAPPEND:在当前的语句的末尾增加内容append 或 aCHANGE:改变当前最后一行的内容,用特定的内容替换指定的内容。C/student/teacher清屏命令:SHIFT+DEL(clear scr),Jan-15-2000,ORACLE数据库培训教材,18,SQL 语句,SELECT:作用:根据WHERE条件从表,视图,SNAPSHOT中获取数据。语法:select distinct(all default)column_name(expt,*)from table(view,snapshot,subqueryselect list)dblink where(start with condition)(connect by condition)group by expr(having condition)union(union all,minus,intersect)order by(expr,position,c_alias)asc(desc)for update of(table,view snapshot)column nowait,Jan-15-2000,ORACLE数据库培训教材,19,SQL 语句,UPDATE:作用:该语句用于修改表或基表的VIEW中的已存在的数据,如果要执行该语句必须拥有UPDATE PRIVILEGE。语法:update table(view,snapshot)dblink t_alias set(column_arraay)=subquery2 or column=value or=subquery3 where condition,Jan-15-2000,ORACLE数据库培训教材,20,SQL 语句,INSERT:作用:该语句用于插入单条或一组记录到相应的表和基于单表的VIEW,如果要执行该语句必须拥有INSERT PRIVILEGE。语法:insert into schema.table(view or subquery1)dblink(column_name)values(column_values)(or subquery2)(as select from),Jan-15-2000,ORACLE数据库培训教材,21,SQL 语句,DELETE:作用:该命令用于从表或基于单表的VIEW中删除一些记录,如果要执行该语句必须拥有DELETE PRIVELEGE。语法:delete from table(view)dblink alias where conditionCOMMIT:ROLLBACK:,Jan-15-2000,ORACLE数据库培训教材,22,SQL 语句,CREATE TABLE:CREATE TABLE(COLUMN NAME)CREATE TABLE AS SELECT COLUMN NAME(*)FROM TABLE_NAMECOPY FROM TO REPLACE(CREATE)ALTER TABLE:DROP TABLE:CREATE(ALTER/DROP)INDEX:,Jan-15-2000,ORACLE数据库培训教材,23,常用SQL函数,NVL:把空值用某一特定值进行替换DECODE:作用是对特定的值进行选择,并指定一默认值TO_CHAR:把某一数据类型转换成CHAR型TO_DATE:把某一数据类型转换成DATE型,须考虑特定的数据格式TO_NUMBER:把某一数据类型转换成NUMBER型LTRIM:把某一CHAR型数据的左边空格删除RTRIM:把某一CHAR型数据的右边空格删除INSTR:获取某些字符在某一字符串中的位置SUBSTR:把某一字符串截取特定长度,得到另一字符串,Jan-15-2000,ORACLE数据库培训教材,24,常用SQL函数,LPAD:把某一字符串按照一定位数进行特定字符的左扩展RPAD:把某一字符串按照一定位数进行特定字符的右扩展CHR:把某一10进制的的NUMBER转换成相应的CHARREPLACE:把某一字符串的内容用某一特定的字符进行替换ADD_MONTHS:把某一日期进行加一个月处理COUNT:对某一数据进行个数统计SUM:对某一NUMBER型数据进行相加处理MAX:提取某一NUMBER型数据的最大值MIN:提取某一NUMBER型数据的最小值,Jan-15-2000,ORACLE数据库培训教材,25,其他,通配符:完全通配符:%可匹配任意各字符。部分通配符:_可匹配单个字符伪列类型:CURRVAL和 NEXTVAL:提取SEQUENCE中的当前值和下一值。在使用时应先使用NEXTVAL,才能使用CURRVALLEVEL:对于SELECT语句中的层次查询返回的层次ROWID:数据的物理地址,类似于指针,由18位组成,BLOCKID(8位).COLUMNID(4位).FILEID(4位)ROWNUM:得到返回的行的个数,Jan-15-2000,ORACLE数据库培训教材,26,SQL*PLUS使用常用技巧,在SQL*PLUS环境中如何进行交互式输入:利用替代符&如何利用SQL生成SQL脚本:SPOOL的功能如何在两个数据库中进行数据的复制:COPY FROM TO APPEND,CREATE,INSERT,REPLACE,Jan-15-2000,ORACLE数据库培训教材,27,数据库对象介绍,CLUSTERDATABASE LINKFUNCTIONINDEXTABLEPROCEDUREPACKAGEPACKAGE BODYSEQUENCESYNONYMTRIGGERVIEW,Jan-15-2000,ORACLE数据库培训教材,28,DBA日常工作,数据库管理员(DBA)职责:数据库物理设计数据库启动/关闭数据库安装,配置数据库存储管理数据库安全管理数据库故障检测网络管理数据库性能检测及优化数据库备份与恢复,Jan-15-2000,ORACLE数据库培训教材,29,定时检查alert.log文件用utlbstat/utlestat产生数据库性能报告对应用进行跟踪分析*对OPS定时检测冲突情况定时对数据库中的表和索引进行统计和分析数据库用户和安全管理数据库表空间管理协助应用开发人员进行设计和分析数据库故障处理(数据库补丁).,Jan-15-2000,ORACLE数据库培训教材,30,ORACLE数据库结构,SGA(System Global Area),Database buffer,Share pool,Redo buffer,用户进程,DBWR,SMON,PMON,LGWR,ARCH,RECO,Lckn,Dnnn,CKPT,Data files,Control files,Redo log files,Jan-15-2000,ORACLE数据库培训教材,31,ORACLE实例(instance),DBWR,LGWR,CKPT,SMON,PMON,instance,SGA,Data buffer,Redo Logbuffer,Librarycache,Data dictionarycache,Shared pool,Controlfiles,Controlfiles,Controlfiles,datafiles,Controlfiles,Redo logfiles,ALTERfile,Parameterfile,Passwordfile,UserProcess,ServerProcess,PGA,Background process,ARCH,Archivedlog files,Jan-15-2000,ORACLE数据库培训教材,32,Oracle Server,Controlfiles,Controlfiles,UserProcess,ServerProcess,Client,Server,PGA,Jan-15-2000,ORACLE数据库培训教材,33,User process,Serverprocess,SELECT*FROM emp ORDER BY ename;,statement,handle,handle,results,OK,OK,parse,Execute,Fetch,DML语句执行过程,Jan-15-2000,ORACLE数据库培训教材,34,DBWR,LGWR,CKPT,SMON,PMON,instance,SGA,Data buffer,Redo Logbuffer,Librarycache,Data dictionarycache,Shared pool,ARCH,Controlfiles,Controlfiles,Controlfiles,datafiles,Controlfiles,Redo logfiles,ServerProcess,UPDATE empSET sal=sal*2WHERE empname=王海,1,3,4,5,2,DML语句执行过程,COMMIT 语句执行过程,DBWR,LGWR,CKPT,SMON,PMON,instance,SGA,Data buffer,Redo Logbuffer,Librarycache,Data dictionarycache,Shared pool,ARCH,Controlfiles,Controlfiles,Controlfiles,datafiles,Controlfiles,Redo logfiles,ServerProcess,UserProcess,1,2,3,4,Jan-15-2000,ORACLE数据库培训教材,36,系统管理工具,svrmgrl/svrmgrmsqldbaorapwdSQL*LoaderExport/ImportOEM,Jan-15-2000,ORACLE数据库培训教材,37,svrmgrl常用命令,Jan-15-2000,ORACLE数据库培训教材,38,启动与关闭数据库步骤,SHUTDOWN,NOMOUNT,MOUNT,OPEN,实例启动,打开实例所需要的控制文件,打开控制文件中定义的所有文件,1,2,Jan-15-2000,ORACLE数据库培训教材,39,ORACEL数据库启动,启动命令STARTUP FORCE RESTRICT PFILE=filename EXCLUSIVE|PARALLEL|SHARED OPEN RECOVER database|MOUNT|NOMOUNT并行数据库启动步骤-启动DLM锁-startup parallel-启动监听进程,Jan-15-2000,ORACLE数据库培训教材,40,ORACLE数据库关闭,关闭数据库命令 shutdown normal|transactional|immediate|abort 关闭数据库步骤-停止监听进程-查看系统中是否存在活动进程-用normal方式或shutdown immediate关闭数据库,Jan-15-2000,ORACLE数据库培训教材,41,SHUTDOWN方式,Jan-15-2000,ORACLE数据库培训教材,42,ORACLE安装配置,设置环境变量NTORADMIN80-NEW-SID TEST-INTPWD password-STARTMODE auto-PFILE inittest.oraUNIXORACLE_HOMEORACLE_SID.数据库安装参数设置,Jan-15-2000,ORACLE数据库培训教材,43,创建数据库,spool crdbtest.lststartup nomount pfile=inittest.oraCreate database test maxlogfiles 10maxlogmembers 5maxdatafiles 100maxloghistory 100logfilegroup 1(/dev/rdrd/drd4,/dev/rdrd/drd5)size 10m,group 2(/dev/rdrd/drd6,/dev/rdrd/drd7)size 10mdatafile/dev/rdrd/drd10 size 100m character set zhs16cgb231280;,Jan-15-2000,ORACLE数据库培训教材,44,创建数据库-创建数据字典,sql.bsq创建数据库基表catalog.sql数据字典视图catproc.sqlPL/SQLdbms*.sql&prvt*.plb数据库包体/包头pupbld.sql,Jan-15-2000,ORACLE数据库培训教材,45,创建数据库-故障处理,监控日志文件install.logmake.logholdfile.log常见安装问题解决,Jan-15-2000,ORACLE数据库培训教材,46,控制文件管理,控制文件作用控制文件信息数据库名称数据文件定位重做日志文件定位表空间名称当前sequence号checkpoint信息备份信息.控制文件管理备份重建保持控制文件的多个复本,Jan-15-2000,ORACLE数据库培训教材,47,V$CONTROLFILENAMEV$PARAMETERNAME(control_file)V$CONTROLFILE_RECORD_SECTIONTYPERECORDS_SIZERECORDS_TOTALRECORDS_USED,控制文件,Jan-15-2000,ORACLE数据库培训教材,48,数据库逻辑结构,Database,Tablespace,Segment,Extent,OracleBlock,O/S Block,Data file,Logical,Physical,Jan-15-2000,ORACLE数据库培训教材,49,数据库表空间管理,表空间管理Create tablespacealter tablespacedrop tablespace回滚段管理create rollback segmentalter rollback segmentdrop rollback segment,Jan-15-2000,ORACLE数据库培训教材,50,表空间管理,DBA_TABLESPACEDBA_DATA_FILESDBA_SEGMENTSDBA_EXTENTSDBA_FREE_SPACEDBA_FREE_SPACE_COALESCED,Jan-15-2000,ORACLE数据库培训教材,51,重做日志(redo log)文件,重做日志文件作用归档模式重做日志文件管理-ALTER SYSTEM SWITCH LOGFILE;-ALTER SYSTEM CHECKPOINT;-ALTER DATABASE ADD LOGFILE-ALTER DATABASE ADD LOGFILE MEMBER-ALTER DATABASE RENAME FILE-ALTER DATABASE DROP LOGFILE-ALTER DATABASE DROP LOGFILE MEMBER-ALTER DATBASE CLEAR LOGFILE-ARCHIVE LOG LIST,Jan-15-2000,ORACLE数据库培训教材,52,归档模式,datafiles,50,51,controlfile,100,101,t1,t2,Without archiving,With archiving,datafiles,50,51,controlfile,100,101,t1,t2,51,51,51,51,51,51,99,52,Jan-15-2000,ORACLE数据库培训教材,53,重做日志(redolog)文件,V$DATABASEV$INSTANCEV$THREADV$LOGV$LOGFILE,Jan-15-2000,ORACLE数据库培训教材,54,数据库用户管理,用户管理create user alter userdrop user用户权限.profile,Jan-15-2000,ORACLE数据库培训教材,55,数据库备份方案,数据库的备份方案有以下几种:全部或部分卸出备份(exp)增量卸出备份冷备份热备份归档备份整个文件系统的复制,Jan-15-2000,ORACLE数据库培训教材,56,卸出备份(exp),exp help=yExample:exp scott/tiger file=exp.dmp log=exp.log buffer=4096000 full=y/n indexes=y/n rows=y/n compress=y/n OWNER list of owner usernamesTABLES list of table namesGRANTS export grants(Y)INCTYPE incremental export typeINDEXES export indexes(Y)CONSTRAINTS export constraints(Y)CONSISTENT cross-table consistencySTATISTICS analyze objects(ESTIMATE),Jan-15-2000,ORACLE数据库培训教材,57,归档备份(必须和冷/热备份结合使用),1.数据库必须运行在archive模式下svrmgrl startup mountsvrmgrl alter database archivelog;2.冷/热备份3.数据库控制文件备份,Jan-15-2000,ORACLE数据库培训教材,58,数据库恢复,数据库恢复:数据表空间/数据恢复控制文件恢复根据备份方案的不同,恢复也有以下两种方法:1.数据imp(倒入)2.表空间recover,Jan-15-2000,ORACLE数据库培训教材,59,imp help=yExample:imp scott/tiger file=exp.dmp full=y rows=y index=y log=imp.log 注意:由于在imp的过程中,部分约束及角色将由于对象倒入的先后顺序而丢失,必须用手工重新创建或进行第二次imp(不倒入数据)对比imp.log和exp.log文件,观察是否存在数据未倒入,Jan-15-2000,ORACLE数据库培训教材,60,表空间恢复,临时表空间:临时表空间并不包含真正的数据,恢复的方法是删除临时表空间并重建即可系统表空间:系统处于noarchivelog模式下或备份不可用,重建数据库系统处于archivelog模式下,恢复步骤同用户表空间回滚表空间:删除回滚段,删除回滚表空间,重建回滚表空间及回滚段,Jan-15-2000,ORACLE数据库培训教材,61,用户表空间:错误现象:在启动数据库时出现ORA-01157,ORA-01110或操作系统级错误如ORA-07360;在关闭数据库(使用shutdown 或shutdown immediate)时出现错误ORA-01116,ORA-01110及操作系统级错误ORA-073681.用户的表空间可以被轻易地重建 最近导出的对象是可用的或表空间中的对象可以被轻易地重建等.在这种情况下,最简单的方法是offline并删除该数据文件,删除表空间并重建表空间以及所有的对象并重建表空间及所有对象.2.数据库运行在archivemode下,恢复步骤为:将备份回拷覆盖被损坏的数据文件;回拷(冷/热)备份后生成的所有日志文件svrmgrl recover datafile filename;svrmgrl alter database open resetlogs;,Jan-15-2000,ORACLE数据库培训教材,62,控制文件的恢复:1.存在一个或多个控制文件可用关闭数据库,复制可用的控制文件2.所有的控制文件均被破坏重建控制文件:svrmgrl startup nomountsvrmgrl cre.sql-重建控制文件脚本,Jan-15-2000,ORACLE数据库培训教材,63,CREATE CONTROLFILE REUSE DATABASE YY1 NORESETLOGS NOARCHIVELOG MAXLOGFILES 32 MAXLOGMEMBERS 2 MAXDATAFILES 256 MAXINSTANCES 8 MAXLOGHISTORY 800LOGFILE GROUP 1/dev/rdrd/drd1 SIZE 10M,GROUP 2/dev/rdrd/drd2 SIZE 10M,GROUP 3/dev/rdrd/drd6 SIZE 10M,DATAFILE/usr/ora/db/system.dbf,/usr/ora/db/rbs.dbf,.;RECOVER DATABASEALTER DATABASE OPEN;,Jan-15-2000,ORACLE数据库培训教材,64,数据库优化,数据库优化工作重要性数据库优化过程数据库优化基础知识数据库优化内容数据库性能诊断工具优化技巧及脚本ORACLE技术热线,Jan-15-2000,ORACLE数据库培训教材,65,数据库基础知识,ORACLE数据库系统数据存储的物理结构和逻辑结构模式对象的组成ORACLE数据库系统的进程以及内存结构构成ORACLE锁的概念介绍二阶段提交的概念用户、角色、权限的概念的介绍举例介绍ORACLE是如何处理一个事务,Jan-15-2000,ORACLE数据库培训教材,66,ORACLE事务处理过程,首先必须有一台主机或数据库服务器运行一个ORACLE INSTANCE工作站运行一个应用,它试图通过适当的SQL*NET驱动同服务器取得联系如果该服务器也正在运行适当的SQL*NET驱动。服务器检测到应用的连接请求,开始为此用户进程创建一个专用的服务器进程客户端的用户执行一个SQL语句并提交此进程服务器进程收到此SQL语句,并开始检验在ORACLE的共享池中是否存在同样的SQL语句。如果在共享池中发现该SQL语句,服务器进程开始检验该用户是否对请求的数据有操作的权限,然后使用在共享池中的SQL语句去执行该语句。如果该SQL语句在共享池中不存在,就为此语句分配一个新的共享池区以便它能够被解析、执行服务器进程从实际的数据文件或共享池中取回必须的数据服务器进程在在共享池中修改数据。在上述所作的生效之后,DBWR后台进程把修改后的数据块永久的写入硬盘。在此事务提交成功之后,LGWR进程立即把此事务记录到在线的redo log file如果此事务成功,服务器进程通过网络返回一个成功的信息给应用程序。如果该事务不成功,将返回一个适当的信息在上述的事务过程中,其余的后台进程同样在运行,等待着条件符合而被触发。此外,数据库服务器还管理着其他用户的事务,并且在不同事务之间提供数据一致性,防止不同事务对相同数据操作,Jan-15-2000,ORACLE数据库培训教材,67,数据库优化内容,数据库建库优化数据库初始化文件数据库空间优化系统设计优化SQL语句优化SGA优化I/O、CPU优化系统性能瓶颈分析常见问题分析,Jan-15-2000,ORACLE数据库培训教材,68,数据库空间设计优化,表空间设计的原则为:把由用户创建的其余表空间同SYSTEM表空间进行分离把系统的数据表空间同索引表空间分离把操作频繁和不经常操作的表划分在不同的表空间中分离用户数据和回滚段的数据以防止某个磁盘出现故障丢失数据为特殊类型的数据库使用保留某个表空间回滚表空间分配原则临时表空间分配原则,Jan-15-2000,ORACLE数据库培训教材,69,回滚段空间分配原则,一个事务的回退信息可以写到当前例程中正在被使用的任何的一个回滚段中一个事务的所有回退信息只能写入一个回滚段中多个事务的回退信息可以同时写入同一个回滚段中,甚至可以同时写入一个EXTENT中当回滚段的EXTENT中的所有事务都被提交或回退了,此EXTENT就可以被重新使用一旦回滚段的某个EXTENT被重新使用,在此EXTENT中的所有信息都不在可用在系统需要更多的空间时,如果回滚段的下一个EXTENT中有活动事务,例程就会扩展此回滚段select、insert、update、delete语句都可能会使数据库从多个回滚段去读数据回滚段的头永远不会移入当前被rollback的事务为所占用的extent中当回滚段的头进行扩展时,他是按顺序的,不会跳过环中的EXTENT如果回滚段的头不能使用下一个extent,它就会另外分配一个extent,并把它插入环中,Jan-15-2000,ORACLE数据库培训教材,70,系统设计时作的优化,ORACLE 存储基本单位-BLOCK建表参数建索引参数索引结构,Jan-15-2000,ORACLE数据库培训教材,71,系统设计时作的优化-建表参数,Jan-15-2000,ORACLE数据库培训教材,72,SQL语句优化,ORACLE优化方式COST_BASED(基于代价)RULE_BASED(基于规则)索引的使用如何写高效的SQL语句写相同的SQL语句,保证程序能够利用共享池的内容,加快程序的执行速度写能够利用索引并且能够符合基于代价的优化条件的SQL语句尽量利用PL/SQL的特性减少网络的传输使用存储过程,以减少网络的传输和提高系统的编译速度,Jan-15-2000,ORACLE数据库培训教材,73,无法使用到索引的SQL语句,COLUMN1(=,=)COLUMN2其中COLUMN1和COLUMN2在同一张表中COLUMN IS(IS NOT)NULLCOLUMN NOT INCOLUMN!=EXPRCOLUMN LIKE%ANYTHING在上述条件中不管COLUMN上是否有建索引,SQL语句都不会利用索引。EXPR是一个表达式,它用运算符或函数操作在该列上例如:EXPR*COLUMN=ANYTHINGNOT EXISTS SUBQUERY不包含未被索引的列的任何条件在LIKE表达式中如果模糊的列为数字或日期的话在ORACLE内部的本身的数据转换,Jan-15-2000,ORACLE数据库培训教材,74,数据库常见性能分析,表空间的剩余空间的问题表的锁的问题表的链接问题索引的查找速度降慢问题表操作速度降慢的问题,Jan-15-2000,ORACLE数据库培训教材,75,性能检测工具,EXPLAIN的使用介绍EXPLAIN PLAN的加强版TKPROF的使用介绍UTLBSTAT/UBLESTAT使用介绍第三方产品,Jan-15-2000,ORACLE数据库培训教材,76,EXPLAIN,EXPLIAN PLAN作用执行EXPLAIN PLAN前期准备工作EXPLAIN 语法 explain plan(set statement id=text)for statementPLAN_TABLE结构,Jan-15-2000,ORACLE数据库培训教材,77,EXPLAIN PLAN,Select id,parent_id,position,operation,options,object_name,object_type,cost from plan_table;PLAN_TABLE表的主要字段介绍:Statement_id该值由系统在执行EXPLAIN PLAN时进行赋值Operation表示该语句每一步要进行的操作Options表示该语句每一步要进行的动作Object_name表示语句中涉及到的数据库对象名Object_type表示语句中涉及到的数据库对象类别Id执行计划数的节点值Parent_id执行计划的节点值的父节点值Position表示对具有相同 parent_id的执行顺序Cost执行该语句的代价,Jan-15-2000,ORACLE数据库培训教材,78,TKPROF,使用TKPROF工具步骤:1.svrmgrl utlxplan.sql 修改init.ora文件,设置TIMED_STATISTICS=TRUE2.sql execute dbms_system.set_sql_trace_in_session(sid,serial#,true)3.sql execute dbms_system.set_sql_trace_in_session(sid,serial#,false)4.tkprof trc_file text_file sys=y/n explain=user/passwd,Jan-15-2000,ORACLE数据库培训教材,79,TKPROF,TKPROF输出的文件中关键字含义:count一个语句被语法分析、执行和取数的次数cpu对语句的所有语法分析,执行或取数调用的总CPU时间(以秒计)elapsed对语句的所有语法分析,执行或取数调用的总耗费时间(以秒计)disk对所有语法分析,执行或取数调用的,从磁盘数据文件上数据块物理读的总数query对所有语法分析,执行或取数调用的,以一致方式检索的缓冲区总数,对查询来说,通常用一致性方式检索缓冲区current以当前方式检索的缓冲区总数。对INSERT,UPDATE和DELETE语句通常用当前方式检索缓冲区Query和current的和是存取的缓冲区的总数rows由SQL语句处理的总行数。对于SELECT语句而言,返回的行数出现在取数的步骤,对UPDATE、DELETE和INSERT语句而言,处理的行数出现在执行步骤,Jan-15-2000,ORACLE数据库培训教材,80,Example:在执行tkprof ora_1000.trc out.txt explain=sys/sys sys=no后输出如下:.SELECT WORK_TYPE_ID FROM WORK_AREA W,STAFF_MEMBER S WHERE W.WORK_AREA_ID=:b1 AND S.WORK_AREA_ID=:b1