




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Oracle数据库学习笔记1. oracle的特点?(选择记忆,理解) ORACLE7.X以来引入了共享SQL和多线索服务器体系结构。这减少了ORACLE的资源占用,并增强了ORACLE的能力,使之在低档软硬件平台上用较少的资源就可以支持更多的用户,而在高档平台上可以支持成百上千个用户。 提供了基于角色(ROLE)分工的安全保密管理。在数据库管理功能、完整性检查、安全性、一致性方面都有良好的表现。 支持大量多媒体数据,如二进制图形、声音、动画以及多维数据结构等。 提供了与第三代高级语言的接口软件PRO*系列,能在C,C+等主语言中嵌入SQL语句及过程化(PL/SQL)语句,对数据库中的数据进行操纵。加上它有许多优秀的前台开发工具如 POWER BUILD、SQL*FORMS、VISIA BASIC 等,可以快速开发生成基于客户端PC 平台的应用程序,并具有良好的移植性。 提供了新的分布式数据库能力。可通过网络较方便地读写远端数据库里的数据,并有对称复制的技术。支持各种分布式功能,特别是支持Internet应用。 功能强大,层次清晰,安全机制好,跨平台,数据操作,系统管理,安全性,集群技术,分布式应用,商业智能 具有完整的数据管理功能。 作为一个应用开发环境,Oracle提供了一套界面友好、功能齐全的数据库开发工具。 Oracle使用PL/SQL语言执行各种操作,具有可开放性、可移植性、可伸缩性等功能。 可用性强 可扩展性强 数据安全性强 稳定性强 无范式要求,可根据实际系统需求构造数据库。 采用标准的SQL结构化查询语言。 具有丰富的开发工具,覆盖开发周期的各阶段。 支持大型数据库,数据类型支持数字、字符、大至4GB的二进制数据,为数据库的面向存储提供数据支持。 具有第四代语言的开发工具(SQL*formS、SQL*REPORTS、SQL*MENU等)。 具有字符界面和图形界面,易于开发。 通过SQL*DBA控制用户权限,提供数据保护功能,监控数据库的 运行状态,调整数据缓冲区的大小。 分布优化查询功能。 具有数据透明、网络透明,支持异种网络、异构数据库系统。并行 处理采用动态数据分片技术。 支持客户机/服务器体系结构及混合的体系结构(集中式、分布式、 客户机/服务器)。 实现了两阶段提交、多线索查询手段。 支持多种系统平台(HPUX、SUNOS、OSF/1、VMS、 WINDOWS、WINDOWS/NT、OS/2)。 .数据安全保护措施:没有读锁,采取快照SNAP方式完全消除了分布读写冲突。自动检测死锁和冲突并解决。 数据安全级别为C2级(最高级)。 数据库内模支持多字节码制,支持多种语言文字编码。 具有面向制造系统的管理信息系统和财务系统应用系统。 在中国的销售份额占50%以上。2. 一个完整的数据库系统包括哪几个方面?包括以下三个方面:数据库管理系统(DBMS)、数据库、数据库服务器(database management system)是一种操纵和管理数据库的大型软件,是用于建立、使用和维护数据库,简称dbms。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过dbms访问数据库中的数据,数据库管理员也通过dbms进行数据库的维护工作。它提供多种功能,可使多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。它使用户能方便地定义和操纵数据,维护数据的安全性和完整性,以及进行多用户下的并发控制和恢复数据库。3. oracle数据库进程分为哪几种,分别是什么?它们中都包括哪些进程?oracle数据库进程分为用户进程和服务器进程。用户进程是在客户机内存上运行的程序,比如“企业管理器”和“SQL Plus”。用户进程向服务器进程提出操作请求。服务器进程包括:系统监控进程SMON(数据库系统启动时执行恢复性工作,对有故障数据库进行恢复)。进程监控进程PMON(用于恢复失败的用户进程)数据库写入进程DBWR(将修改后的数据块内容写回数据库)日志写入进程LGWR(将内存中的日志内容写入日志文件)归档进程ARCH(当数据库服务器以归档方式运行时调用该进程完成日志归档)检查点进程CKPT(标识检查点,用于减少数据库恢复所需要的时间)恢复进程RECO(用于分布式数据库中的失败处理)锁进程LCKn(在并行服务器模式下确保数据的一致性)快照进程SNPn(进行快照刷新)调度进程Dnnn(负责把用户进程路由到可用的服务器进程进行处理)4. 通过本机访问他人的数据库,如何配置?有两种方式:第一种,通过企业管理器。右键“数据库”节点 “将数据库添加到树” 选择“手动添加数据库” 输入需要访问数据库服务器的IP地址 、端口号和SID(即数据库服务器的数据库名称),网络服务名可以任意取。 “确定”。第二种:通过数据库服务器暴露监听端口,然后客户端配置命名方法配置和本地Net服务名配置。开始 程序 Oracle configuration and Migration Tools Net Configuration Assistant 然后分别配置数据库服务器的监听程序配置,客户端的命名方法配置和本地Net服务名配置。(详细配置请参考Oracle 9i基础的第二章)5. oracle的默认表空间有哪些,它们的作用分别是?默认的大小?oracle的默认表空间有以下几种:CWMLITE(用于联机分析处理OLAP,20MB)DRSYS(用于存放与工作区间设置有关的信息,20MB)EXAMPLE(实例表空间,存放实例信息,150MB左右)INDEX(索引表空间,存放数据库索引信息,25MB)ODM(数据挖掘用户,20MB)XDB(XML数据库,39MB左右)SYSTEM(系统表空间,存放表空间名称,所包含数据文件等管理信息,400MB)TEMP(临时表空间,存储临时表,40MB)TOOLS(工具表空间,存放数据库工具软件所需要的数据库对象,10MB)UNDOTBS1(回滚表空间,存放数据库恢复信息,200MB)USERS(用户表空间,存放用户私有信息,25MB)新建一个表空间它的默认大小是5M。6. oracle下有几种文件,每种文件的作用分别是什么,它们的存放路径?oracle下有三种文件,分别是:数据文件,用于存放所有的数据,以DBF为扩展名。日志文件,记录了对数据库进行的所有操作,以LOG为扩展名。控制文件,记录了数据库所有文件的控制信息,以CTL为扩展名。存放路径:数据库安装路径oradata文件夹下。7. oracle下有几种日志文件,它们的作用分别是?Oracle数据库有两种日志工作模式,它们分别是非归档(联机)日志,归档日志数据库有联机重做日志,这个日志是记录对数据库所做的修改,比如插入,删除,更新数据等,对这些操作都会记录在联机重做日志里。一般数据库至少要有2个联机重做日志组。当一个联机重做日志组被写满的时候,就会发生日志切换,这时联机重做日志组2成为当前使用的日志,当联机重做日志组2写满的时候,又会发生日志切换,去写联机重做日志组1,就这样反复进行。基本情况和上面是一致的,唯一不同在于,当发生日志切换的时候,被切换的日志会进行归档。比如,当前在使用联机重做日志1,当1写满的时候,发生日志切换,开始写联机重做日志2,这时联机重做日志1的内容会被拷贝到另外一个指定的目录下。这个目录叫做归档目录,拷贝的文件叫归档重做日志。他们的区别在于一个归档,一个不归档。数据库使用归档方式运行时才可以进行灾难性恢复。8.如何在unix下安装oracle?参照老师给的Oracle9i在linux下的安装.docx9.sql语句分为几大类?DML(data manipulation language):它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言DDL(data definition language):DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用DCL(Data Control Language)是数据库控制功能。是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权力执行DCL。10.管理用户sys、system和sysman的区别?sysman一般是OMS时的管理员用户,如果不使用OMS的话,可以不用11.Oracle数据库服务器启动和关闭的方式都有哪些,分别有什么特点?12.Oracle数据库服务都有哪些?13.哪个初始化参数可是使oracle数据库的默认连接数更改为200?Oracle 9i中默认的连接数为150,要修改这个配置文件,需要修改SPFILEORCL.ORA文件中的processes的值。 14.什么是事务,事务的特征是?事务是当前主流数据库系统普遍采用的并发控制机制。事务是oracle9i中进行数据库操作的基本单位,在pl/sql程序中有三个事务处理命令Commit命令 rollback命令 savepoint命令为了保证数据完整性,数据库系统要求事务具有以下四个特征:原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability),简称为ACID特征。15.什么是锁,锁机制有哪几种,分别说明?数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。 加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作。锁的机制分为两种:乐观锁和悲观锁悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系统不会修改数据)。相对悲观锁而言,乐观锁机制采取了更加宽松的加锁机制。16.Oracle中的锁有几类?分别是什么?根据保护的对象不同,Oracle数据库锁可以分为以下几大类:DML锁(data locks,数据锁),用于保护数据的完整性;DDL锁(dictionary locks,字典锁),用于保护数据库对象的结构,如表、索引等的结构定义;内部锁和闩(internal locks and latches),保护数据库的内部结构。DML锁的目的在于保证并发情况下的数据完整性。在Oracle数据库中,DML锁主要包括TM锁和TX锁,其中TM锁称为表级锁,TX锁称为事务锁或行级锁。17.Oracle数据方案对象有哪几种?作用分别是?18.表按功能可以分为哪几类?系统表:用于存储和管理数据库字典表,用户数据和数据库本身的数据。用户表:用于存放用户的数据信息。默认简历的数据表就是用户表。19.Oracle的数据类型有哪些?数据类型 含义 char 定长的字符型数据,最大长度可达2KB nchar 存储Unicode字符集的定长字符型数据,最大长度为2KB Varchar2 可变长的字符型数据,最大长度可达4000个字符 Nvarchar2 存储Unicode字符集的变长字符型数据,最大长度为4KB number 存储整型或浮点型数据 Date 存储日期数据 Long 存储最大长度为2GB的变长字符数据 Raw 存储非结构化数据的变长字符数据,最长为2KB Long Raw 存储非结构化数据的变长字符数据,最长为2GB Rowid 存储表中列的物理地址的二进制数据,占用固定的10个字节 Blob二进制大对象,最大长度为4GB Clob 字符大对象,最大长度为4GB Nclob 存储多达4GB的Unicode字符数据 Bfile 把非结构化的二进制数据存储在数据库以外的操作系统文件中 Urowid 存储表示任何类型列地址的二进制数据 float 存储浮点数20.Oracle中有几种约束条件?分别描述。NOT NULL (非空)-防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值.CHECK (检查)-检查在约束中指定的条件是否得到了满足.UNIQUE (唯一)-保证在指定的列中没有重复值.在该表中每一个值或者每一组值都将是唯一的.PRIMARY KEY (主键)-用来唯一的标识出表的每一行,并且防止出现NULL值,一个表只能有一个主键约束.POREIGN KEY (外部键)-通过使用公共列在表之间建立一种父子(parent-child)关系,在表上定义的外部键可以指向主键或者其他表的唯一键.21.Oracle的安全机制有哪两类?系统安全机制:是指在整个的数据库系统级控制数据库的存取和使用的机制;数据安全机制:是指在对象级控制数据库的存取和使用的机制。22.Oracle预定义的角色有哪些?1. CONNECT2. RESOURCE3. DBA4. EXP_FULL_DATABASE5. IMP_FULL_DATABASE6. DELETE_CATALOG_ROLE7. EXECUTE_CATALOG_ROLE8. SELECT_CATALOG_ROLE说明:1-3是为了同ORACLE老版本中的概念相兼容而提供的,不能只依赖于这些ROLE 4-5是为了使用Import和Export实用程序的方便而提供的 6-8是为了数据字典视图和包的卸载而提供的CONNECT角色: -是授予最终用户的典型权利,最基本的ALTER SESSION -修改会话CREATE CLUSTER -建立聚簇CREATE DATABASE LINK -建立数据库链接CREATE SEQUENCE -建立序列CREATE SESSION -建立会话CREATE SYNONYM -建立同义词CREATE VIEW -建立视图RESOURCE角色: -是授予开发人员的CREATE CLUSTER -建立聚簇CREATE PROCEDURE -建立过程CREATE SEQUENCE -建立序列CREATE TABLE -建表CREATE TRIGGER -建立触发器CREATE TYPE -建立类型DBA角色:拥有系统所有系统级权限IMP_FULL_DATABASE角色、EXP_FULL_DATABASE角色:BACKUP ANY TABLE -备份任何表EXECUTE ANY PROCEDURE -执行任何操作SELECT ANY TABLE -查询任何表DELETE_CATALOG_ROLE角色:这个角色是Oracle8新增加的,如果授予用户这个角色,用户就可以从表sys.aud$中删除记录,sys.aud$表中记录着审计后的记录,使用这个角色可以简化审计踪迹管理。SELECT_CATALOG_ROLE角色、EXECUTE_CATALOG_ROLE角色:SELECT_CATALOG_ROLE角色具有从数据字典查询的权利,EXECUTE_CATALOG_ROLE角色具有从数据字典中执行部分过程和函数的权利。 23.Oracle中用户和角色之间的关系?Oracle使用角色的方法来限定各种用户的权力,在系统中可以有许多用户,各种用户有各种不同的角色,拥有不同的权力。实践表明与其很明确的赋一组权限给一个角色,不如赋给一个角色,然后把这个角色赋给一组用户。这样就可以实现动态的权限管理,当这组用户的权限必须改变时,只需改变角色的权限就可以了。 24.Oracle数据库常见的故障有?25.Oracle数据库备份和恢复的内容为?1.初始化参数文件2.控制文件3.数据文件4.联机重做日志文件5归档日志文件26.Oracle如何进行备份和恢复,自动和定时的备份/恢复应该怎么做?(1)表方式(T方式),将指定表的数据导出。 (2)用户方式(U方式),将指定用户的所有对象及数据导出。 (3)全库方式(Full方式),将数据库中的所有对象导出。自动和定时可以在任务计划里设置27.Truncate与delete的区别?(重点:性能上的区别)1、TRUNCATE在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令DELETE将被撤销,而TRUNCATE则不会被撤销。2、TRUNCATE是一个DDL语言,向其他所有的DDL语言一样,他将被隐式提交,不能对TRUNCATE使用ROLLBACK命令。3、TRUNCATE将重新设置高水平线和所有的索引。在对整个表和索引进行完全浏览时,经过TRUNCATE操作后的表比DELETE操作后的表要快得多。4、TRUNCATE不能触发任何DELETE触发器。5、不能授予任何人清空他人的表的权限。6、当表被清空后表和表的索引讲重新设置成初始大小,而delete则不能。7、不能清空父表。 TRUNCATE TABLE (schema)table_name DROP(REUSE) STORAGE 在默认是 DROP STORAGE 当使用DROP STORAGE时将缩短表和表索引,将表收缩到最小范围,并重新设置NEXT参数。REUSE STORAGE不会缩短表或者调整NEXT参数在特殊情况下使用 REUSE STDELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的的删除操作作为事务记录在日志中保存以便进行进行回滚操作。TRUNCATE TABLE 则一次性地从表中删除所有的数据页并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。并且在删除的过程中不会激活与表有关的删除触发器。执行速度快。28.数据库设计的目标是什么?(1)实现数据共享。数据共享包含所有用户可同时存取数据库中的数据,也包括用户可以用各种方式通过接口使用数据库,并提供数据共享。 (2)减少数据的冗余度。同文件系统相比,由于数据库实现了数据共享,从而避免了用户各自建立应用文件。减少了大量重复数据,减少了数据冗余,维护了数据的一致性。 (3)数据的独立性。数据的独立性包括数据库中数据库的逻辑结构和应用程序相互独立,也包括数据物理结构的变化不影响数据的逻辑结构。 (4)数据实现集中控制。文件管理方式中,数据处于一种分散的状态,不同的用户或同一用户在不同处理中其文件之间毫无关系。利用数据库可对数据进行集中控制和管理,并通过数据模型表示各种数据的组织以及数据间的联系。 (5)数据一致性和可维护性,以确保数据的安全性和可靠性。主要包括:安全性控制:以防止数据丢失、错误更新和越权使用;完整性控制:保证数据的正确性、有效性和相容性;并发控制:使在同一时间周期内,允许对数据实现多路存取,又能防止用户之间的不正常交互作用;故障的发现和恢复:由数据库管理系统提供一套方法,可及时发现故障和修复故障,从而防止数据被破坏29.数据库设计的步骤?(1)需求分析(2)概念设计(3)逻辑设计(4)物理设计(5)验证设计 (1)需求分析;调查和分析用户的业务活动和数据的使用情况,弄清所用数据的种类、范围、数量以及它们在业务活动中交流的情况,确定用户对数据库系统的使用要求和各种约束条件等,形成用户需求规约。(2)概念设计;对用户要求描述的现实世界(可能是一个工厂、一个商场或者一个学校等),通过对其中住处的分类、聚集和概括,建立抽象的概念数据模型。这个概念模型应反映现实世界各部门的信息结构、信息流动情况、信息间的互相制约关系以及各部门对信息储存、查询和加工的要求等。所建立的模型应避开数据库在计算机上的具体实现细节,用一种抽象的形式表示出来。以扩充的实体(E-R模型)联系模型方法为例,第一步先明确现实世界各部门所含的各种实体及其属性、实体间的联系以及对信息的制约条件等,从而给出各部门内所用信息的局部描述(在数据库中称为用户的局部视图)。第二步再将前面得到的多个用户的局部视图集成为一个全局视图,即用户要描述的现实世界的概念数据模型。(3)逻辑设计;主要工作是将现实世界的概念数据模型设计成数据库的一种逻辑模式,即适应于某种特定数据库管理系统所支持的逻辑数据模式。与此同时,可能还需为各种数据处理应用领域产生相应的逻辑子模式。这一步设计的结果就是所谓“逻辑数据库”。(4)物理设计;根据特定数据库管理系统所提供的多种存储结构和存取方法等依赖于具体计算机结构的各项物理设计措施,对具体的应用任务选定最合适的物理存储结构(包括文件类型、索引结构和数据的存放次序与位逻辑等)、存取方法和存取路径等。这一步设计的结果就是所谓“物理数据库”。(5)验证设计;在上述设计的基础上,收集数据并具体建立一个数据库,运行一些典型的应用任务来验证数据库设计的正确性和合理性。一般,一个大型数据库的设计过程往往需要经过多次循环反复。当设计的某步发现问题时,可能就需要返回到前面去进行修改。因此,在做上述数据库设计时就应考虑到今后修改设计的可能性和方便性。30.简述数据库设计的三大范式,并举例说明。第一范式(1NF):在关系模式R中的每一个具体关系r中,如果每个属性值都是不可再分的最小数据单位,则称R是第一范式的关系。第二范式(2NF):要求实体的属性完全依赖于主关键字。所谓“完全依赖”是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。简而言之,第二范式就是非主属性非部分依赖于主关键字。第三范式(3NF):要求一个数据库表中不包含已在其他表中包含的非主关键字信息。如果关系模式R(U,F)中的所有非主属性对任何候选关键字都不存在传递信赖,则称关系R是属于第三范式的。31.什么是PL/SQL,PL/SQL的运行环境?PL/SQL的程序结构?在甲骨文数据库管理方面,plsql是对结构化查询语言(SQL)的过程语言扩展。plsql的目的是联合数据库语言和过程语言。plsql的基本单位叫做一个区段,由三个部份组成:一个申明部份,一个可运行部份,和排除构建部分。因为plsql允许混合SQL申明和过程结构,因此可以在将申明发送到甲骨文系统去执行之前使用plsql区段和副程序来组合SQL申明,没有plsql,甲骨文需要就每次处理SQL申明,在网络环境中,这将影响交通流量,而且增加响应时间。plsql区段只被编译一次并且以可运行的形式储存,以降低响应时间。PL/SQL块结构PL/SQL是一种块结构的语言,组成PL/SQL程序的单元是逻辑块,一个PL/SQL 程序包含了一个或多个逻辑块,每个块都可以划分为三个部分。与其他语言相同,变量在使用之前必须声明,PL/SQL提供了独立的专门用于处理异常的部分,下面描述了PL/SQL块的不同部分:声明部分(Declaration section)声明部分包含了变量和常量的数据类型和初始值。这个部分是由关键字DECLARE开始,如果不需要声明变量或常量,那么可以忽略这一部分;需要说明的是游标的声明也在这一部分。执行部分(Executable section)执行部分是PL/SQL块中的指令部分,由关键字BEGIN开始,所有的可执行语句都放在这一部分,其他的PL/SQL块也可以放在这一部分。异常处理部分(Exception section)这一部分是可选的,在这一部分中处理异常或错误,对异常处理的详细讨论我们在后面进行。PL/SQL块语法DECLARE-declaration statementsBEGIN-executable statementsEXCEPTION-exception statementsEND32.什么是游标?游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果每个游标区都有一个名字用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理主语言是面向记录的,一组主变量一次只能存放一条记录仅使用主变量并不能完全满足SQL语句向应用程序输出数据的要求33.什么是存储过程?它的语法?sql语句执行的时候要先编译,然后执行。存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。CREATE PROCEDURE 拥有者.存储过程名;程序编号(参数#1,参数#1024)WITHRECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTIONFOR REPLICATIONAS 程序行其中存储过程名不能超过128个字。每个存储过程中最多设定1024个参数(SQL Server 7.0以上版本),参数的使用方法如下:参数名 数据类型 VARYING =内定值 OUTPUT每个参数名前要有一个“”符号,每一个存储过程的参数仅为该程序内部使用,参数的类型除了IMAGE外,其他SQL Server所支持的数据类型都可使用。=内定值相当于我们在建立数据库时设定一个字段的默认值,这里是为这个参数设定默认值。OUTPUT是用来指定该参数是既有输入又有输出值的,也就是在调用了这个存储过程时,如果所指定的参数值是我们需要输入的参数,同时也需要在结果中输出的,则该项必须为OUTPUT,而如果只是做输出参数用,可以用CURSOR,同时在使用该参数时,必须指定VARYING和OUTPUT这两个语句。例子:CREATE PROCEDURE order_tot_amt o_id int,p_tot int output ASSELECT p_tot = sum(Unitprice*Quantity)FROM orderdetailsWHERE ordered=o_id例子说明:该例子是建立一个简单的存储过程order_tot_amt,这个存储过程根据用户输入的定单ID号码(o_id),由定单明细表 (orderdetails)中计算该定单销售总额单价(Unitprice)*数量(Quantity),这一金额通过p_tot这一参数输出给调用这一存储过程的程序。34.Oracle中异常处理分为哪几部分?在设计PL/SQL程序时,经常会发生这样或那样的错误,异常处理就是针对错误进行处理的程序段,Oracle 9i中的异常处理分为系统预定义异常处理和自定义异常处理两部分。系统预定义异常处理系统预定义异常处理是针对PL/SQL程序编译、执行过程中发生的问题进行处理的程序。 下列代码为正确代码,在【SQLPlus Worksheet】中能够顺利执行。 set serveroutput on declare tempno integer:=90; begin tempno:=tempno+1; end; 【配套程序位置】:第9章 correctplsql.sql。下列代码为错误代码,在【SQLPlus Worksheet】中的执行结果如图9.56所示。【配套程序位置】:第9章 wrongplsql.sql。由于代码有错误,因此将激活系统预定义的异常处理,并得出如下提示信息。Oracle 9i提供了很多异常处理,读者可以尝试修改可以正常运行的程序,并执行修改后的程序,就可以发现调用了哪些异常处理,下面着重介绍如何自定义异常处理。自定义异常处理1. 定义异常处理定义异常处理的语法如下:declare异常名 exception;2. 触发异常处理触发异常处理的语法如下:raise 异常名;3. 处理异常触发异常处理后,可以定义异常处理部分,语法如下:ExceptionWhen 异常名1 then异常处理语句段1;When 异常名2 then异常处理语句段2;35.PLSQL复合数据类型有哪些?在pl/sql 中复合数据类型的声明共有5种方式!下面分别阐述其特点:一、%type属性让变量与相应数据表中字段的类型一致。如: 在表xs中包含xh列,声明一个变量my_xh与xh列具有相同的数据类型。 my_xh xs.xh%type;优点: 不必知道xh列的确切数据类型。 xh列的数据类型的改变,my_xh列的数据类型自动改变。二、%rowtype属性(隐式申明记录)声明一个记录类型的变量,与与对应表的行数据具有相同的名称和数据类型。例子如下: 声明一个记录名为cj_rec,与xs_kc表具有相同的名称和数据类型。DECLARE cj_rec XS_KC%ROWTYPE;三、记录类型(显示申明记录)显式定义记录是在PL/SQL程序块中创建记录变量之前在声明部分定义。语法如下:TYPE record_type IS RECORD( Field1 type1 NOT NULL := exp1 , Field2 type2 NOT NULL := exp2 , . . . . . . Fieldn typen NOT NULL := expn ) ; 例子如下TYPE xs_rec IS RECORD(xh number(2) NOT NULL:=1,xm char(8) );四、定义一维表类型 Type 要定义的类型的名字 is table of type index by binary_integer例:定义名为tabletype1和tabletype2的两个一维数组,table1 和table2 分别是两种表类型变量。 Declare type tabletype1 is table of varchar2(4) index by binary_integer; type tabletype2 is table of scott.testtable.recordnumber%type index by binary_integer; table1 tabletype1; table2 tabletype2;begin table1(1):=大学; table1(2):=大专; table2(1):=88; table2(2):=55; dbms_output.put_line(table1(1)|table2(1); dbms_output.put_line(table1(2)|table2(2);end;五、定义多维表类型Type 要定义的类型的名字 is table of %rowtype index by binary_integer例Declare type tabletype1 is table of testtable%rowtype index by binary_integer; table1 tabletype1;begin select * into table1(1) from scott.testtable where recordnumber=60;dbms_output.put_line(table1(1).recordnumber|table1(1).currentdate);end;36.Oracle性能优化点有哪些?1.应用程序优化(主要是SQL优化)。 2.共享池区优化。 3.数据库缓冲区高速缓存优化。 4.重做日志缓冲区及杂项优化。 5.数据库优化。 6.并行查询优化。 7.争用优化。 8.I/O优化 9.操作系统优化。 37.常用SQL优化技巧有哪些?1.建议不用“*”来代替所有列名。 SELECT语句中可以用“*”来列出某个表的所有列名,但是这样的写法对Oracle系统来说会存在解析的动态问题。Oracle系统会通过查询数据字典来将“*”转换成表的所有列名,这自然会消耗系统时间。建议在写SELECT语句时,采用与访问表有关的实际列名。 2.在全表进行删除时,用TRUNCATE代替DELETE。 当用DELETE语句删除表中的数据行时,Oracle会使用撤销表空间来存放恢复的信息。在这期间,如果用户没有发出COMMIT语句,而是发出ROLLBACK语句,Oracle系统会将数据恢复到删除之前的状态。当用户使用TRUNCATE语句对表的数据进行删除时,系统不会将被删除的数据写到回滚段中,速度明显比DELETE快。所以当希望对全局进行删除时,采用TRUNCATE命令更加有效。3.在确保完整性的情况下多用COMMIT语句。 COMMIT所释放的资源如下: l 回滚段上用于恢复数据的信息,撤销表空间也只做短暂的保留。 l 被程序语句获得的锁。 l Redo log buffer中的空间。 l Oracle为管理上述资源的内部花费。 4.尽量减少表的查询次数。 5.EXISTS代替IN,NOT EXISTS代替NOT IN。 . where column in(select * from . where .); . where exists (select X from .where .); 通过使用EXISTS,Oracle系统会首先检查主查询,然后运行子
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 济宁市2024-2025学年八年级上学期语文期中测试试卷
- 高速公路档案培训课件
- 高血压因素课件
- 高能相机基础知识培训课件
- 建设工程压覆矿产资源评估服务合同
- QMS考试试题及答案
- 电网知识新员工培训课件
- 【Nox聚星】2025年欧洲网红营销生态报告
- 高考加油课件app
- 电瓶车充电安全知识培训课件
- 铁路监理培训考试试题及答案
- 2025年毕节市农业发展集团有限公司招聘考试笔试试题(含答案)
- 供应链安全管理知识培训课件
- 供应链与贸易安全培训课件
- 牛鼻子引流技术
- 严禁燃放烟花炮竹课件
- 宫颈息肉课件
- (2025年标准)班组承包协议书
- 人工智能多智能体课件
- 2024年云南地质工程勘察设计研究院有限公司招聘笔试真题及答案
- 2025秋苏教版科学三年级上册教学设计(附目录)
评论
0/150
提交评论