您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 新致讲坛oracle
讲课题目Oracle精简教程部门:FBD3姓名:李俊华S.T.A.N.D.A.R.D.2讲师个人介绍S.T.A.N.D.A.R.D.3课程目标S.T.A.N.D.A.R.D.4议程1两大开发阵营及Oracle技术和认证考试简介2Oracle10g体系结构(基础版)3OracleSQL编码规范4SQL调优基础(基于索引)5Oracle常用函数/*6Linux上的oracle安装*/S.T.A.N.D.A.R.D.5一、两大开发阵营及Oracle认证考试简介1.1两大开发阵营简述S.T.A.N.D.A.R.D.6S.T.A.N.D.A.R.D.71.2各主流数据库市场份额Oracle:53%DB2:17%MicrosoftSQLServer:13%MySql,Sybase,informax…:27%S.T.A.N.D.A.R.D.81.3Oracle认证考试简介:Oracle9i认证课程:Oracle9I007(IntroductiontoOracle9iSQL)Oracle9I031(Oracle9iDBAFundamentals1)Oracle9I032(Oracle9iDBAFundamentals2)Oracle9I033(Oracle9iDBAPerformanceTunning)Oracle10g认证课程:Oracle10g(047):IntroductiontoSQLOracle10g(042):Oracle10gDBAAdministrator1Oracle10g(043):Oracle10gDBAAdministrator2S.T.A.N.D.A.R.D.9OracleDBA认证考试级别有3种:OracleCertifiedAssociate(OCA):Oracle认证技术员9i(007,031),10g(047,042)OracleCertifiedProfessional(OCP):Oracle认证专业人员9iOCA+(032,033),10gOCA+(043)+一门原厂培训OracleCertifiedMaster(OCM):Oracle认证专家OCP+二门高级原厂培训+二天OCM实践考试通过S.T.A.N.D.A.R.D.10OCM考试内容:1.Creaetdatabasebymanual2.BackupandRecovery[Rman,Flashback]3.DatawareHouse(patition,paraller,sqlloader,MaterializedView,bitmap)4.PerformaceMangement5.RealApplicationClusters(RAC)6.DataGuard7.EnterpriseManagerGridControlS.T.A.N.D.A.R.D.11二、Oracle10g体系结构S.T.A.N.D.A.R.D.12S.T.A.N.D.A.R.D.13数据库(database):物理操作系统文件或磁盘(disk)的集合。实例(instance):一组Oracle后台进程/线程以及一个共享内存区,这些内存由同一个计算机上运行的线程/进程所共享。这两个词有时可互换使用,不过二者的概念完全不同。实例和数据库之间的关系是:S.T.A.N.D.A.R.D.14。实例就是一组操作系统进程(或者是一个多线程的进程)以及一些内存。这些进程可以操作数据库;而数据库只是一个文件集合(包括数据文件、临时文件、重做日志文件和控制文件)。在任何时刻,一个实例只能有一组相关的文件(与一个数据库关联)。大多数情况下,反过来也成立:一个数据库上只有一个实例对其进行操作。不过,Oracle的真正应用集群(RealApplicationClusters,RAC)是一个例外,这是Oracle提供的一个选项,允许在集群环境中的多台计算机上操作,这样就可以有多台实例同时装载并打开一个数据库(位于一组共享物理磁盘上)。由此,我们可以同时从多台不同的计算机访问这个数据库。OracleRAC能支持高度可用的系统,可用于构建可扩缩性极好的解决方案。S.T.A.N.D.A.R.D.15实例是一组后台进程和共享内存。数据库是磁盘上存储的数据集合。实例“一生”只能装载并打开一个数据库。数据库可以由一个或多个实例(使用RAC)装载和打开。前面提到过,大多数情况下,实例和数据库之间存在一种一对一的关系。如果有人谈到实例,他指的就是Oracle的进程和内存。提到数据库时,则是说保存数据的物理文件。可以从多个实例访问一个数据库,但是一个实例一次只能访问一个数据库。S.T.A.N.D.A.R.D.16S.T.A.N.D.A.R.D.17S.T.A.N.D.A.R.D.18S.T.A.N.D.A.R.D.191.数据文件:用来记录用户数据的文件,也是消耗存储最大的部分。一个数据文件只能属于一个数据库,并且一个数据文件只能属于一个表空间,一个或者多个数据文件构成一个逻辑存储结构。2.控制文件:用来管理数据库的状态,是数据库中最重要的辅助文件。每个数据库至少有一个控制文件。一般记录着数据库的名称,数据库的物理布局:包括数据文件的位置、联机日志文件的位置、备份文件,以及数据库当前的SCN等重要信息。3.日志文件:就像一笔“流水账”,它是按照时间顺序记录数据库内发生的所有改变,这些“流水账”对于数据恢复非常重要。包括联机日志文件和归档日志文件,前者是所有数据库都必须的,后者是“归档模式”的数据库才会产生。S.T.A.N.D.A.R.D.204.联机日志(组):是以组为单位进行管理的,每一个组就叫做一个联机日志组。每个联机日志组可以包含多个成员,同一组里的每个成员的内容是相同的,其实就是多个成员互为镜像。每个数据库必须要有两个联机日志组,联机日志是以一种循环的方式写入的。5.归档日志:Oracle根据是否启用了“归档”而把数据库分成两种模式:归档模式和非归档模式。所谓“归档”就是一组联机日志文件被写满后,在触发日志切换的同时,还要触发ARCn进程的工作,这个进程的工作就是把之前写满的联机日志做一份拷贝保存到另外一个位置,这份拷贝就叫做“归档日志”。S.T.A.N.D.A.R.D.216.日志线程:一个数据库实例使用的联机日志就叫做一个日志线程。Oracle实例和数据库之间可以有两种对应关系,如果“实例:数据库=1:1”,这种环境就是所谓的“单实例”。如果“实例:数据库=n:1(n=2)”,这种就是所谓的RAC。即便是在RAC环境下,对每个日志线程的要求也是一样的。即每个实例或每个线程至少两个“联机日志组”,每个联机日志组又至少要有一个“日志成员”。7.参数文件(spfile和pfile):spfile是二进制文件,不能手工编辑。pfile是文本文件,可以手工编辑。用来存放数据库初始参数配置,比如SGA的大小,控制文件的位置等,每个数据库启动时都要读取两个文件中的一个,根据内容对实例进行初始化。S.T.A.N.D.A.R.D.228.Alert日志文件:每一个数据库都需要一个Alert日志文件,位于参数文件BACKGROUP_DUMP_DEST指定的目录下,文件名的格式为alert_dbname.log。Oracle使用这个文件来记录数据库运行过程中发生的重大事件,比如启动、关闭、日志切换。。。S.T.A.N.D.A.R.D.23S.T.A.N.D.A.R.D.24S.T.A.N.D.A.R.D.25S.T.A.N.D.A.R.D.26S.T.A.N.D.A.R.D.27S.T.A.N.D.A.R.D.28S.T.A.N.D.A.R.D.29S.T.A.N.D.A.R.D.30S.T.A.N.D.A.R.D.31S.T.A.N.D.A.R.D.32三、OracleSQL编码规范1注释1.1注释方式可采用单行/多行注释--或/**/方式,对较为复杂的SQL语句加上注释;对主要的实现算法加注释,说明算法功能;应对不易理解的分支条件表达式加注释;1.2注释风格注释单独成行放在SQL语句前面。2命名和格式约定所有表名、字段名遵照数据字典的定义,系统保留字、内置函数名、PL/SQL保留字大写。S.T.A.N.D.A.R.D.332.1变量名小写;普通变量名使用“v_”开头;游标标变量以“cur_”开头;输入参数以“i_”开头;输出参数以“o_”开头;输入输出参数以“io_”2.2PL/SQL中的子程序命名,使用小写;函数以“fn_”开始;过程以“sp_“开始;触发器以“tr_b[a]dmltype_”;--b:beforea:afterdmltype:insert,update,delete类型声明以“tp_”开始;包以“pkg_”开始;S.T.A.N.D.A.R.D.343缩进与断行风格3.1、低级别语句在高级别语句后的,缩进一个制表符3.2、同一语句不同部分的缩进,如果为substatement,则为2个空格,如果与上一句某部分有密切联系的,则缩至与其对齐3.3、一行有多列,超过80个字符时,基于列对齐原则,采用下行缩进。3.4、WHERE子句书写时,每个条件占一行,语句令起一行时,以保留字或者连接符开始,连接符右对齐。S.T.A.N.D.A.R.D.35例如:语句另起一行时以保留字开始(如and)左对齐可以和where对齐。wheref1=1andf2=2orf3=33.5连接符OR、IN、AND、以及=、=、=等前后加上一个空格。3.6INSERT语句,尽量书写字段,字段可5个或6个一组。例如:S.T.A.N.D.A.R.D.36INSERTINTOT_MemberCapital(memberID,accountType,available,lastBalance,lastOccupied,todayBalance,todayOccupied,profit,todayIn,todayOut,payment,received,miscFee,frozen,basefund)SELECTmemberID,accountType,available,todayBalance,todayOccupied,0,0,0,0,0,0,0,0,paltFrozen+Frozen,basefundFROMT_HisMemberCapitalWHEREeffectDate=i_lastday;4编写规范4.1、SQL语句中除字符串中必须大写的内容外,全部小写,包括关键字,因为大小写结合S.T.A.N.D.A.R.D.37需要输入大写字母速度慢。(相同的SQL语句是在SQL缓冲区中读取,SQL分析器不用对SQL语句重新分析产生执行计划,系统响应时间大大减少)。4.2一行不要超过80个字符,在1024*768分辨率下只能显示这么110字符。4.3多表连接时要使用表的别名来引用,并把别名前缀于每个Column上.4.4不要用SELECT‘*’,当你想在SELECT子句中列出所有的COLUMN时,使用动态SQL列引用‘*'是一个方便的方法。不幸的是,这是一个非常低效的方法.实际上,ORACLE在解析的过程中,会将'*'依次转换成所有的列名,这个工作是通过查询数据字典完成的,这意味着将耗费更多的时间。S.T.A.N.D.A.R.D.384.5不要依赖任何隐式的数据类型转换。例如,不能为数字变量赋予字符值,而假定SQL会进行必要的转换。相反,在为变量赋值或比较值之前,应使用适当的CONVERT函数使数据类型相匹配。隐式转换可能带来的问题:性能和版本升级的问题.隐式转换的例子:declarecchar(1);beginc:=24;--隐式转换c:=’23’;--没有隐式转换end;S.T.A.N.D.A.R.D.394.6不要将空的变量值直接与比较运算符(符号)比较。如果变量可能为空,应使用ISNULL或ISNOTNULL进行比较,或者使用ISNULL函数。4.7当删除全表记录时,用TRUNCATE替代
本文标题:新致讲坛oracle
链接地址:https://www.777doc.com/doc-14099 .html