Oracle课程设计 图书管理系统

2024-05-28

Oracle课程设计 图书管理系统(通用10篇)

篇1:Oracle课程设计 图书管理系统

绪论

1.1 课题背景意义

在学校现代化的管理中,图书馆管理系统也是其中非常重要的一部分,然而,用大型软件系统来于小型的图书管理,不啻于“杀鸡用牛刀”,因此小型的的软件对于这种管理自然有十分重要作用。某图书馆需要管理其各种人员信息和图书信息,希望实现办公的信息化,通过建立一个图书管理系统来管理图书馆。

1.2国内外研究的现状

国内在信息化这一方面做的没有国外好,因此现在需要大量这样的程序人员,图书馆管理系统这一块也需要做大量改进。

3共30页

篇2:Oracle课程设计 图书管理系统

[摘要] 2

一 系统概述 ………………………………………………………………………2 1系统分析 …………………………………………………………………………2

1.1图书馆管理信息系统的基本任务 ……………………………………………2

二 系统结构与功能分析……………………………………………………… 3

2.1现行业务描述………………………………………………………………3

2.1.1系统组织结构………………………………………………………………3

2.1.2系统业务流程………………………………………………………………4

2.2可行性分析…………………………………………………………………6

2.2.1技术可能性分析:…………………………………………………………7

2.2.2营运可行性分析:…………………………………………………………7

2.2.3经济可行性分析:…………………………………………………………7

2.3数据流程图 ……………………………………………………………………8

2.4详细设计………………………………………………………………………12

三 系统运行分析…………………………………………………………………15

3.1 系统登录界面…………………………………………………………………15

3.1.1用户登陆界面………………………………………………………………16

3.1.2系统主界面 ………………………………………………………………17

3.1.3图书入库界面………………………………………………………………17

3.1.4图示借阅管理………………………………………………………………18

3.1.5图书查询界面 …………………………………………………………18

3.2系统的维护 ……………………………………………………………………19

篇3:Oracle课程设计 图书管理系统

关键词:行动导向,教学方法,考核方式

0 引言

行动导向教学[1]是近几年来从德国引进的较为先进的一种职业教学模式, 提倡以人为本, 强调学生的主体作用, 教学活动以学生为中心, 在实践中让学生自主学习, 引导其独立思考, 培养创新能力, 协作沟通能力和分析决策能力。将行动导向教学应用到该课程中, 全面提高学生的方法能力, 专业能力和社会能力, 以适应企业一线的技术应用型人才为培养目标。

1 Oracle数据库课程整体设计

1.1 职业岗位和岗位能力分析

通过了解人才市场需求, 对IT企业的走访调研, 并结合学生就业反馈信息, 本专业岗位主要定位为数据库管理工程师 (DBA) , 目标是培养合格的数据库管理员, 从数据库的存储结构开始到客户端的配置和网络配置, 能够启动和关闭数据库实例, 能够进行数据的备份和恢复, 从而保证数据的高可用性和完整性, 合理地设置管理员和用户的权限, 能够保证数据库的高安全性。

1.2 确定典型的工作过程

针对数据库的实施和运行维护这两个阶段的工作任务进行详细的划分, 得出DBA六个典型工作任务以及对他的能力要求和素质要求。

1.3 教学内容设计

基于DBA的典型工作任务, 我们来选取课程的内容[2], 在教学内容的设计当中, 以“一个项目, 六个情景”贯穿教学的始终。一个项目是选择跨国公司人事数据库为载体来进行教学设计, “六个情景”就是对应DBA六个典型工作任务, 一个工作任务对应一个学习情景来进行教学内容的设计, 这六个情景分别是服务器的安装、配置与规划、结构定义、数据装载、故障维护、数据丢失处理, 在这六个学习情景中又可能包含若干个子学习情景, 对子学习情景的描述完成所学的知识, 在每个学习情景中, 对应着不同的知识层, 分配不同的知识模块, 实现知识体系的重组和重构以及续化。

2 教学方法设计

根据DBA职业岗位能力的需求, 以知识和技能的双重循环为主线, 强调学生主体作用与教师辅导作用, 针对不同课程内容采用多种不同教学方法:“项目驱动教学法”、“场景还原教学法”、“引导文教学法”等。完全打破老师一个人在课堂上讲课的格局, 学生在课堂上可以随时发问, 形成以学生为主体、教师为主导的教学模式。

2.1 项目驱动教学法

Oracle数据库课程在教学过程中采用项目驱动教学法[3]来组织教学, 以模拟企业的实际项目为例贯穿教学的始终, 让学生通过一个个典型工作任务的完成, 去亲身感受和体验获得的直接经验, 这样能够培养学生的学习能力、创新能力、分析解决问题能力、团队协作与沟通能力, 也提高了学生的职业素养。

2.2 场景还原教学法

把企业现实的工作场景[4]还原到课堂当中, 让学生真实的感受企业的真实的工作环境。以“故障维护之控制文件损坏”为例设计场景教学, 如表2。

2.3 引导文教学

在项目教学中, 注重学生能力的培养, 强调学生的主体作用, 而弱化老师的主体作用, 让学生或单独或协作完成工作任务, 实现自主学习, 避免老师的不必要的干扰, 因此我们给出了很多的引导性的材料, 简称为引导文, 比如:实训项目、代码库、演示动画等。在实训项目中, 有很多关键性问题, 引导学生独立思考, 培养学生的自主学习能力。

3 课程考核方式

课程考核方式分为两部分:理论考试和实训项目考试。理论考试主要考核学生理论知识的掌握程度;实训项目考试强调学生在完成整个项目过程中的表现, 比如学习习惯、态度及效果等, 主要考核学生实践操作能力、分析解决问题能力、自主创新能力、再学习能力、与人沟通能力以及团队合作能力等方面。这种考核机制能够调动学生学习的积极性与主动性, 使学生动手操作能力大幅度提高, 具有明显的教学效果。

4 结语

通过近几年的探索与实践, 我院已经逐步建立起了基于行动导向的Oracle数据库课程教学体系, 开拓了学生的思维, 培养了学生的自主学习能力和独立创新能力, 使学生在学习过程中掌握了本领域所需的知识与技能, 既提高了学生的学习兴趣, 又提高了教学质量。

参考文献

[1]彭博.软件工程课程实施行动导向式教学法的研究[J].大家, 2009 (11) :263

[2]胡文瑜.数据库开发技术课程建设和教学改革[J].计算机教育, 2010 (20)

[3]强彦.大型关系数据库Oracle教学模式的改进[J].计算机教育, 2010 (6)

篇4:Oracle课程设计 图书管理系统

引言

企业-资源-计划(Enterprise Resource Planning,缩写ERP),是由美国著名管理咨询公司Gartner于1990年提出的企业管理概念。随着国内产业升级的国家需求,传统企业普遍重视企业自身的管理,对企业信息化管理提出了更加全面的需求,极大地推动了ERP的增长和发展[1]。

市场上的ERP、CRM等商品化软件产品,属于通用软件产品,是针对一个或多个行业、多个用户而设计开发的软件系统。软件功能比较标准,流程设置相对规范化,注重的是一种通用性[2]。此时,通过二次开发和客户化的工作,就可以较好的解决这些“特殊需求的问题”。

本文主要针对传统啤酒生产厂商的生产车间ERP系统的设计与开发工作展开研究。国外发达国家的啤酒生产工业发展起步较早,ERP系统在国外啤酒生产中能够与企业有良好的契合度,在先进的管理水平基础上,信息技术和ERP管理系统的整合,很快就能见到明显的效果。而国内啤酒行业ERP虽然起步晚、起点低、规模小、技术落后,仍需通过具体实践提高ERP的应用水平。本文在深入分析基于ERP理念的生产流程需求基础上,提出了基于Oracle ERP的生产管理系统的设计和实现:对车间进行分工处理,不同车间分配自己对应的任务,然后通过OracleERP系统将不同车间整合起来,使之成为一个完整的统一的系统,从而可以提高生产效率,节省生产成本,为企业创造更大的利润并且可以节省大量的资源。

一、啤酒企业车间生产管理ERP需求

传统啤酒公司由于业务的更新以及生产规模的扩大,当前的车间生产管理流程已经不能满足日益增长的生产以及销售需求。车间生产管理的业务需求主要包括以下7类:

(1)车间加工任务的生成:准备车间按包装车间的产品包装计划来安排纸箱和提盒的生产;瓶盖生产任务由包装车间根据产品包装计划和瓶盖库存情况来安排生产;包装车间按计划部下达给各车间的任务来安排车间每天生产;酿造车间按计划部下达的每天成品包装生产计划来安排清酒的过滤;基本按照能力及待滤酒库存比例安排冷麦汁、待滤酒的生产计划。

(2)车间领料:包装车间生产时所需瓶由搬运工运到生产线上,生产完成后再点数结算;商标、瓶盖由综合班根据日计划,车间内部根据各线的产量再重新进行分配,生产任务消耗按实际使用数量计算;生产成品所耗费清酒按生产完成后计量表上读数计算。

(3)车间在制品跟踪:能够及时的查询任务处于哪个加工工序。

(4)车间完工入库分析:凭入库单将加工完后的产成品入到相应的仓库;由于流程行业生产特点,产品每次完工数量与生产任务数量不相符;成品完工后,有些检验指标由于检验时间较长不能及时出结果,无法及时判定该批成品是否合格。

(5)车间不合格品处理:最终成品不合格称副品酒,这些副品酒作报废,记入车间酒损;半成品不合格进行技术处理,最后都可制成合格半成品。不合格麦芽、发酵液、待滤酒主要进行工艺方面的技术处理,不合格清酒可能进行重滤或加入其它半成品生产中作为生产组件。

(6)车间退料:每个任务完成后,该任务已领用但未使用完的某些物料要退回仓库;每月月底车间将已领用未消耗大米、麦芽、酒花作假退货,退回相关仓库;月末时,当月未消耗、下月初用的商标、瓶盖等辅料要办理假退库。

(7)车间报表需求分析:车间纸箱班物料日報表,车间纸箱、提盒付出结存表;生产通知单;制麦生产日报表;酿造生产统计综合日报表;包装车间生产日报表;包装车间生产月报表等。

二、车间生产管理系统实现

根据车间管理系统的需求分析,设计管理数据库。车间、物料和仓库是主要的实体,主要的过程都是围绕着这三个实体进行。首先,物料是存储在仓库中的,车间需要领料来加工物料使之成为产品;其次,加工即完工后产品需要入库;最后,伴随着生产过程,产生了废料、副产品和不合格产品,这些需要再利用,所以也需要入库,主要包括:(1)车间(Workshop)表:主要介绍生产加工任务的,任务编号,任务时间,任务所需物料的仓库等;物料(Material)表:物料主要包括车间加工时需要的材料,主要是由以下字段组成的,物料的编号,物料的类型,物料的数量,任务编号,仓库的编号等:仓库(Warehouse)表:仓库主要是将完成的产品入库,并将不合格和副产品也入库,也是物料的存放地,所以主要包括以下字段:仓库的编号,仓库的类型,任务编号,物料编号,出入库时间等等。

经过前面的需求分析可以看出,车间管理的流程是比较复杂的,但Oracle ERP系统集成了车间管理系统的模块,在此基础上将实际需求转化成Oracle ERP系统中的车间管理系统的具体实现。Oracle ERP将该系统分为4个部分来满足实际的需求:

(1)用户身份认证和授权,包括进入系统,以及对进入系统后该选择什么应用、进入应用后该选择什么模块做了详细的介绍。

(2)Oracle ERP的离散任务模块用于实现需求分析中的车间加工任务、领料及在制品跟踪。

(3)Oracle ERP的事务处理模块用于实现需求分析中所指出的完工入库后退料、不合格处理和副产品处理过程。

(4)Oracle ERP的系统查询模块能满足需求分析中的报表需求。

三、总结

本文针对传统啤酒厂生产车间的业务流程进行详细分析,完成基于ERP系统的生产流程再造的应用需求分析,采用Oracle ERP系统实现了车间管理相关的数据库系统设计;将需求分析的7个任务整合到Oracle ERP的生产管理模块中:(1)离散任务就是对应需求分析中的车间加工任务、领料及在制品跟踪所做的处理。(2)事物处理就是对应需求分析中的完工入库,加工完成后退料、不合格处理和副产品处理。(3)系统查询功能对应需求分析中的报表功能(4)通过整合完成了生产车间ERP系统的设计与开发,应用到了啤酒厂生产车间。

参考文献

[1]步春媛,徐大华. 基于ERP的企业管理信息系统设计[J]. 计算机工程与设计, 2007,(18) .

[2]赵宁.用友ERP生产制造解决方案[J]. 机械管理开发, 2004,(02)

篇5:Oracle课程设计 图书管理系统

一、实验目的和要求

(1)熟练掌握实体关系设计的方法。(2)通过需求分析结果,掌握E-R图。

二、实验内容和原理

实体关系设计是在需求分析的一个环节过程,在这一过程中产生E-R图,该图由实体、属性和联系三个要素构成。逻辑结构设计的任务就是把概念设计阶段建立的基本E-R图按照选定的系统软件支持的数据模型,转换成相应的逻辑模型。这种转换要符合关系数据模型的原则。

E-R图向关系模型转换时要解决如何将实体和实体间的联系转换为关系,并确定这些关系的属性和码,这种转换一般按下面的原则进行。

(1)一个实体转换为一个关系,实体的属性就是关系的属性,实体的码就是关系的码。

(2)一个联系也转换为一个关系,联系的属性及联系所连接的实体的码都转换为关系的属性,但关系的码会根据联系的类型变化。

三、主要仪器设备

计算机一台、Powerdesinger运行环境

四、操作方法与实验步骤

在成绩管理系统中,需要管理学生、课程和成绩,以及它们之间的联系。因此在该系统的E-R图中,实体分别为学生、老师、课程。为了便于掌握,学生实体的属性分别有学号、姓名、性别;课程实体的属性有课程编号、课程名称、学期、课程学分;教师实体的属性有教师编号、姓名、性别。学生实体与课程实体有选课关系,而且一个学生可以选择多门课程,一门课程也可以被多个学生选择,因此学生和课程之间的联系是m:n联系。教师实体与课程实体有教授关系,一名教师可以教多门课程,一门课程也可以被多个教师教授,因此教师和课程之间的联系是m:n联系。学生在选课后会产生成绩,教师授课后会产生授课地点及授课学期。根据上述分析,绘出的E-R图如下图所示。

阶段1.2 成绩管理系统结构设计

一、实验目的和要求

1.了解数据库中列的属性以及各个属性的含义。2.掌握为不同的列选择不同的属性及范围。

二、实验内容和原理

在管理信息系统中,物理结构设计主要是指如何将通过逻辑结构设计所得的系统逻辑结构型转换为物理模型,并明确地指出系统的物理存储结构。本实验主要是利用CASE工具集PowerDesigner对成绩管理系统进行物理结构的设计。

三、主要仪器设备

计算机一台、Powerdesinger 运行环境、Oracle运行环境

四、操作方法与实验步骤

在物理结构设计中需要考虑为每列设计合适的数据类型。成绩管理系统中,学生(学号、姓名、性别)关系里,学号采用int来表示就可以了,而姓名设置成varchar2(20),性别只需要设置为char(2)。因为性别不是男就是女,因此只会占用两个字节。所以最终我们可以将其物理表结构设置为:t_student(stuid int,stuname varchar2(20),sex char(2)。依照上述,课程的物理表结构为:t_course(couid int,couname varchar2(20),term char(2),credit number(3,1))。教师的物理存储表结构为:t_teacher(teaid int,teaname varchar2(20),sex char(2))。选课的物理表结构为:t_selcour(sid int,cid int,score number.(4,2))。教课的物理表结构为:t_teacour(tid int,cid int,teaaddr varchar2(30),term char(2))。

(1)通过手动编写SQL语句方式建立数据库后台

上述创建了代表学生实体的表t_student,其中stuid设置为主键,唯一标识一个学生。

表t_course用来代表课程实体,其中采用couid来标识一门课程。当课程名称的长度大于20个字符时,varchar2可以自动扩展。

物理实体在物理结构中用t_teacher表来表示,teaid用来唯一标识一位教师,因此其不能空

选课表t_selcour中学生编号参考t_student表中的stuid,此时sid为外键,课程编号cid也作为外键参考t_course中的couid(2)通过PowerDesigner建立数据库后台。

第四步:到此,系统的概念模型就全部设计好了。接下来单击菜单“工具”→“生成物理属性模型”选项,就会弹出“物理数据模型生成选项”对话框,如下图:

在“常规”选项卡中选择“生成新的物理模型”单选钮,并选择DBMS为“OPACLE Version 10g”,“名称”文本“MyPhysicalDataModel”,并单击“确认”按钮,在弹出得到路径选择对话框中输入你想要放置生成的物理数据模型文件的位置,系统就会自动在指定的路径下生成一个名为“MyPhysicalDataModal.pdm”的文件,并生成系统的物理模型,如下图

CONGC

从菜单中选择 Database---Generate Database选项。PowerDesigner将会在指定的路径下生成一个名字为*.sql 的文本文件。里面存放可供Oracle 执行的用来建立数据库实体的SQL语句。

阶段1.3 成绩管路系统存储过程设计

一、实验目的和要求

(1)了解存储过程的设计目的以及方法。(2)掌握存储过程的创建。

二、实验内容和原理

存储过程是在数据中定义的程序块,它存放在数据库服务端数据字典里。采用存储过程可以提高过程代码程序的执行速度和代码共享度。具体有以下几个特点。(1)过程存放在服务器端,减少了网络传输的延时,提高了速度。(2)过程在执行一次之后,会驻留内存,后续的执行无需再经编译过程,提高了执行效率。

三、主要仪器设备

计算机一台,Oracle运行环境

四、操作方法与实验步骤

1、创建存储过程先向表t_student中插入数据,具体如下所示

2、每次向表t_student中插入数据时,只需要运行该过程就可以了。具体如下所示。表t_student中的列stuid被设置为主键,因此不可以存在重复值。在第二次运行时,因为输入的第一个参数id与表中已存在的数据相同,所以插入时出现错误。

3、继续向表中插入两条记录,其中当参数id不重复时,过程成功完成。

4、不仅可以通过存储过程向表中插入数据,也可以通过一般的SQL语句向表中插入数据,如下所示。

5、向表中插入数据时,需要注意数据类型以及长度都需要与表中定义的相符,否则会出现错误,具体如下所示。

6、t_course表中列term被定义为char且长度为2,因此在插入数据时该列最大长度为2,超过该值会出现错误。课程表中只有已经存在的课程编号才能被插入到选课表中,否则会出错,这样就保证了数据的一致性。

7、t_selcour表的另外一个外键为第一列sid,在插入时只有当该值存在于学生表中的学生编号时,才能被成功插入,否则也会出现错误,具体如下所示。

8、对于向表t_teacour中插入数据时,同样需要满足外键参考主键的约束条件,具体如下所示。

9、向表t_teacour中插入一行记录,其中tid存在于表t_teacher的列teaid中,cid存在于表t_course列couid中。如果插入的值不符合外键约束条件,会出现错误,具体如下所示。

10、在完成对表插入值后,可以关联表查询记录。比如:查询教师编号为1的教师所带的课程编号、教师姓名、课程名称、课程学分信息,具体如下所示。实现了查询编号为1的老师所带的课程编号、课程名称等信息。在查询时,为表命名别名时为了方便,各个表的连接通过主键外键约束来实现。

查看t_course及t_selcourse中的值

五、实验结果与分析

实验结果如上截图所示。

六、讨论、心得

grant select不支持对表中选定的几列授权,只能将整个表的select权限授权出去。所以实验中先建立了基于选课信息表的视图SelectiveInfo1,视图中包含成绩列,学号列以及班级列(不包含其他的列)再将对视图SelectiveInfo1的select权限授予角色teacher。

不同的用户可以创建相同的表格,teacher用户创建了table1,student用户也创建了table1,且这两个表格式完全相同的,那么其他用户需要用这两个表格时,可以用teacher.table1和student.table1加以区分。

篇6:Oracle课程设计 图书管理系统

介绍了基于中央数据库维修工程管理系统的.功能、网络结构以及系统性能,针对其存在的时效性问题,结合维修工程管理系统实际的运行环境提出了改善和优化的方案,即采用ORACLE高级复制技术重新设计系统的网络结构、数据库对象同步和异常处理机制以及高级复制环境的配置方法.

作 者:孙春林 刘如尧 张东培  作者单位:孙春林,刘如尧(中国民航大学)

张东培(中国国际航空公司工程技术分公司)

刊 名:航空维修与工程  PKU英文刊名:AVIATION MAINTENANCE & ENGINEERING 年,卷(期):2009 “”(1) 分类号:V2 关键词: 

篇7:Oracle课程设计 图书管理系统

oracle的体系很庞大,要学习它,首先让我们了解oracle的框架。在这里,简要的讲一下oracle的架构

1、物理结构(由控制文件、数据文件、重做日志文件、参数文件、归档文件、密码文件组成)

 控制文件:包含维护和验证数据库完整性的必要信息、一个数据库至少需要一

 个控制文件 数据文件:存储数据的文件 重做日志文件:含对数据库所做的更改记录,这样万一出现故障可以启用数据恢复。一个数据库至少需要两个重做日志文件 参数文件:定义Oracle 例程的特性,例如它包含调整SGA 中一些内存结构大小的参数 归档文件:是重做日志文件的脱机副本,这些副本可能对于从介质失败中进行恢复很必要。密码文件:认证哪些用户有权限启动和关闭Oracle例程

2、逻辑结构(表空间、段、区、块)

 表空间:是数据库中的基本逻辑结构,一系列数据文件的集合。

 段:是对象在数据库中占用的空间

 区:是为数据一次性预留的一个较大的存储空间 块:ORACLE最基本的存储单位,在建立数据库的时候指定

3、内存分配(SGA和PGA)

 SGA:是用于存储数据库信息的内存区,该信息为数据库进程所共享。它包含Oracle 服务器的数据和控制信息,它是在Oracle 服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写。

 PGA:包含单个服务器进程或单个后台进程的数据和控制信息,与几个进程共享的SGA 正相反PGA 是只被一个进程使用的区域,PGA 在创建进程时分配在终止进程时回收

4、后台进程(数据写进程、日志写进程、系统监控、进程监控、检查点进程、归档进程、服务进程、用户进程)

 数据写进程:负责将更改的数据从数据库缓冲区高速缓存写入数据文件 日志写进程:将重做日志缓冲区中的更改写入在线重做日志文件 系统监控:检查数据库的一致性如有必要还会在数据库打开时启动数据库的恢复 进程监控:负责在一个Oracle 进程失败时清理资源 检查点进程:负责在每当缓冲区高速缓存中的更改永久地记录在数据库中时,更新控制文件和数据文件中的数据库状态信息。归档进程:在每次日志切换时把已满的日志组进行备份或归档 服务进程:用户进程服务。用户进程:在客户端,负责将用户的SQL 语句传递给服务进程,并从服务器段拿回查询数据。

5、oracle例程:Oracle 例程由SGA 内存结构和用于管理数据库的后台进程组成。例程一次只能打开和使用一个数据库。

6、SCN(System Change Number):系统改变号,一个由系统内部维护的序列号。当

系统需要更新的时候自动增加,他是系统中维持数据的一致性和顺序恢复的重

要标志。

2.介绍项目中常用的标准SQL知识点

oracle左/右/全连接

inner join--内连接和where相同;相当于join;

left join--左向外连接,返回左边表所有符合条件的right join--右向外连接,返回右边表所有符合条件的full join--完整外部连接,左向外连接和右向外连接的合集

--建立测试数据

create table a(id number);

create table b(id number);

create table c(id number);

insert into a values(1);

insert into a values(2);

insert into a values(3);

insert into b values(1);

insert into b values(2);

insert into b values(4);

insert into c values(1);

--左:

--主流数据库通用的方法

select * from a left join b on a.id=b.id;

--Oracle特有的方法--最好不要用这样,不便于sql语句的移植。

select * from a, b where a.id=b.id(+);

IDID

--------------------

2--右:

--主流数据库通用的方法

select * from a right join b on a.id=b.id;

--Oracle特有的方法

select * from a, b where a.id(+)=b.id;

IDID

--------------------

--内

--主流数据库通用的方法

select * from a join b on a.id=b.id;

--where关联

select * from a, b where a.id=b.id;

IDID

--------------------

--全外

--主流数据库通用的方法

select * from a full join b on a.id=b.id;

--Oracle特有的方法

select *

from a, b

where a.id = b.id(+)

union

select *

from a, b

where a.id(+)= b.id;

IDID

--------------------

对于多表查询,如下:

select * from a

left join b on a.id=b.id

left join c on c.id=b.id;

IDID

--------------------

相当于先进行第一个left join,得到结果集A(3条记录);结果集A再与第二个left join进行查询;

select * from a

left join b on a.id=b.id

right join c on c.id=b.id;

相当于先进行第一个left join,得到结果集A(3条记录);结果集A再与right join进行查询,即以c表为主,因为C表只有一个记录,所以最终才显示一条记录;

3.查询效率优化方式介绍

表索引介绍,表索引的建立技巧

索引优点:

第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。

第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因。

第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。第四,在使用分组和排序子句进行数据检索时,同样可以显着减少查询中分组和排序的时间。

第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

(哪给表中的所有列加上索引是否合理)

索引缺点:

第一,创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。

第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。

第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就

降低了数据的维护速度。

(索引是建立在数据库表中的某些列的上面。因此,在创建Oracle数据库索引的时候,应该仔细考虑在哪些列上可以创建索引,在哪些列上不能创建索引。)

 建议创建索引的列: 在经常需要搜索的列上,可以加快搜索的速度; 在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构; 在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度; 在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的; 在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间; 经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度。不该创建索引的列: 对于那些在查询中很少使用或者参考的列不应该创建索引。这是因为,既然这些列

很少使用到,因此有索引或者无索引,并不能提高查询速度。相反,由于增加了索 引,反而降低了系统的维护速度和增大了空间需求。对于那些只有很少数据值的列也不应该增加索引。这是因为,由于这些列的取值很

少,例如人事表的性别列,在查询的结果中,结果集的数据行占了表中数据行的很大比例,即需要在表中搜索的数据行的比例很大。增加索引,并不能明显加快检索 速度。对于那些定义为text,image和bit数据类型的列不应该增加索引。这是因为,这

些列的数据量要么相当大,要么取值很少。

 第四,当修改性能远远大于检索性能时,不应该创建索引。这是因为,修改性能和

检索性能是互相矛盾的。当增加索引时,会提高检索性能,但是会降低修改性能。当减少索引时,会提高修改性能,降低检索性能。因此,当修改性能远远大于检索性能时,不应该创建Oracle数据库索引。

NESTED LOOP:

对于被连接的数据子集较小的情况,嵌套循环连接是个较好的选择。在嵌套循环中,内表被外表驱动,外表返回的每一行都要在内表中检索找到与它匹配的行,因此整个查询返回的结果集不能太大(大于1 万不适合),要把返回子集较小表的作为外表(CBO 默认外表是驱动表),而且在内表的连接字段上一定要有索引。当然也可以用ORDERED 提示来改变CBO默认的驱动表,使用USE_NL(table_name1 table_name2)可是强制CBO 执行嵌套循环连接。

Nested loop一般用在连接的表中有索引,并且索引选择性较好的时候.步骤:确定一个驱动表(outer table),另一个表为inner table,驱动表中的每一行与inner表中的相应记录JOIN。类似一个嵌套的循环。适用于驱动表的记录集比较小(<10000)而且inner表需要有有效的访问方法(Index)。需要注意的是:JOIN的顺序很重要,驱动表的记录集一定要小,返回结果集的响应时间是最快的。

4.ORACLE常用内部函数

5.ORACLE数据库的特点将结合第2和第3项讲

篇8:Oracle课程设计 图书管理系统

关键词:Oracle,课程设计,备份还原

1 引言

Oracle数据库存储的数据安全在管理系统中占有非常重要的地位, 由于各种可能的原因会导致数据库故障而带来部分或全部数据丢失[1], 给系统业务造成不良影响, 为有效预防这样的事情发生, 解决方法就是合理制定数据库的备份策略和还原策略[2]。因此, 在Oracle数据库课程设计的教学过程中, 以备份还原为案例的课题显得很突出, 也是将备份策略与还原策略作为教学核心部分[3]。以逻辑备份Data Pump为例, 从数据库的准备出发, 到数据库的备份策略与还原策略, 为Oracle数据库课程设计教学案例或学生学习参考案例提供一个基本框架。

2 备份还原的准备阶段

2.1 数据库的准备

作为Oracle数据库课程设计的一个备份还原课题, 需要具体的系统案例, 因此在备份还原之前, 需要准备好用于备份还原的数据库。以图书管理系统为例, 根据实际项目要求分别建立数据库、用户、表空间和数据库表等, 步骤如下。

(1) 在oracle 11.2g环境, 建立名为lib的数据库。

(2) 系统的用户SYS, SYSDBA是数据库管理员, 权限较高, 为了数据的安全, 建立一个普通用户libu, 设置密码为libu123, 并赋予基本的权限, 用于管理基本操作即可。

(3) 建立表空间libts, 并适当设置相关参数与属性, 为数据库表的数据存储做准备。

(4) 在libu模式下建立图书表、读者表和借阅表, 并且所有表数据都存储在表空间libts中。

2.2 备份还原权限准备

可以使用系统用户SYS和SYSTEM, 也可以使用新创建的普通用户libu, 但无论是哪一个用户, 都需要具有备份和还原权限才能正常操作[4]。这里的逻辑备份和还原使用系统提供的Data Pump Export和Data Pump Import两个实用程序。首先创建一个DIRECTORY对象, 并将该对象的READ、WRITE权限授权给需要备份和还原操作的用户。根据实际需求, 还可以将EXP_FULL_DATABASE和IMP_FULL_DATABASE两个角色分配给用户。此时, 该用户便拥有了逻辑备份与还原的权限。

3 Oracle数据库的备份策略

Data pump的逻辑备份提供了表、方案、表空间和数据库等四种备份方式, 因此备份策略中也是包括这个四种。

3.1 备份表

为避免数据库运行时数据的丢失而对某些重要级别的表进行备份, 根据实际需求使用EXPDP工具备份图书表、读者表或借阅表, 可以采取手动备份方式, 也可以设定固定时间点 (例如每天12点) 自动备份。例如, 将读者表备份, 备份数据存储在文件reader.dmp中:

EXPDP libu/libu123 dumpfile=reader.dmp tables=读者表

3.2 备份方案

在特殊情况下可能会丢失某一个用户模式下面的多个表, 需要对所属该用户模式的多个表进行备份, 即该用户方案备份。使用EXPDP工具备份libu方案所有数据, 手动或自动将数据导出到文件user.dmp:

EXPDP libu/libu123 dumpfile=user.dmp schemas=libu

3.3 备份表空间

避免在某些意外情况出现表空间丢失无法还原原有数据, 因此需要单独对重要的表空间备份, 使用EXPDP工具手动或自动对表空间libts的所有数据进行备份, 将数据存储在文件tabspc.dmp中:

EXPDP libu/libu123 dumpfile=tabspc.dmp tablespaces=libts

3.4 备份数据库

当数据库崩溃时, 数据库可能出现大量的数据丢失, 每隔一段时间, 可以是一个星期, 也可以是一个月, 需要将整个数据库全部备份。使用EXPDP工具将整个数据库的所有数据导出到文件full.dmp命令为:

EXPDP libu/libu123 dumpfile=full.dmp full=y

4 Oracle数据库的还原策略

在基于前面数据库备份文件的基础上对数据库相关数据进行还原, 数据库还原策略包括对表、方案、表空间和整个数据库等四种方式的还原, 每一种方式可对应一个或一个以上前面的备份文件进行还原操作。

4.1 表还原策略

在数据库中数据的丢失可能出现很多种情况。而最常见的表丢失情况分为两种, 一种是表数据的完全丢失, 另一种是表中部分数据出现乱码或丢失, 此时需要对这些数据丢失的表进行还原。以读者表还原为例, 在表备份文件reader.dmp、方案备份文件user.dmp、表空间备份文件tabspc.dmp和全数据库备份文件full.dmp中, 都包含了读者表的备份数据。因此, 对读者表的还原一般虽然使用表备份文件, 但也可以根据具体情况使用其它三个文件中的任何一种, 只不过要注意的是, 基于其它三个备份文件的还原所修改的数据不仅仅只有读者表。

(1) 基于表备份文件的表还原

在读者表丢失后从备份处导入事先备份好的数据, 使用IMPDP工具对丢失的读者表进行还原, 从备份数据存储处将需要的数据reader.dmp导入数据库中。

IMPDP libu/libu123 dumpfile=reader.dmp tables=读者表

(2) 基于表空间备份文件的表还原

使用IMPDP工具从表空间备份文件tabspc.dmp对读者表进行还原:

IMPDP libu/libu123 dumpfile=tabspc.dmp tables=读者表

(3) 基于方案备份文件的表还原

使用IMPDP工具从方案备份文件user.dmp对读者表进行还原:

IMPDP libu/libu123 dumpfile=user.dmp tables=读者表

(4) 基于全库备份文件的表还原

使用IMPDP工具从全数据库备份文件full.dmp对读者表进行还原:

IMPDP libu/libu123 dumpfile=full.dmp tables=读者表

4.2 方案还原策略

同一用户libu的多个表出现问题时 (例如读者表与借阅表) , 虽然可以使用表还原策略运行多次表的还原, 但有些时候将该用户所有数据一次性还原才更加方便, 即方案还原。方案还原一般使用对应的该方案备份文件, 也可以使用包含该方案数据的表空间备份文件或全数据库备份文件。

(1) 基于方案备份文件的方案还原

使用IMPDP工具从方案备份文件user.dmp对libu方案还原:

IMPDP libu/libu123 schemas=libu dumpfile=user.dmp

(2) 基于表空间备份文件的方案还原

使用IMPDP工具从表空间备份文件tabspc.dmp对libu方案还原:

IMPDP libu/libu123 dumpfile=tabspc.dmp schemas=libu

(3) 基于全数据库备份文件的方案还原

使用IMPDP工具从全数据库备份文件full.dmp对libu方案还原:

IMPDP libu/libu123 dumpfile=full.dmp schemas=libu

4.3 表空间还原策略

当同一个表空间libts中大量数据或全部数据丢失时, 需要对该表空间进行还原。还愿表空间可以使用对应的表空间备份文件, 当然也可以基本全数据库备份文件进行操作。

(1) 基于表空间备份文件的表空间还原

使用IMPDP工具从表空间备份文件tabspc.dmp对libts表空间还原:

IMPDP libu/libu123 dumpfile=tabspc.dmp tablespace=library

(2) 基于方案备份文件的表空间还原

使用IMPDP工具从方案备份文件user.dmp对libts表空间还原:

IMPDP libu/libu123 dumpfile=user.dmp tablespace=library

(3) 基于全数据库备份文件的表空间还原

使用IMPDP工具从全数据库备份文件full.dmp对libts表空间还原:

IMPDP libu/libu123 dumpfile=full.dmp tablespace=library

4.4 数据库还原策略

数据库的全库还原适用于所有的情况, 因为所有的数据都已经备份, 所以不用担心存在没有的数据, 但大多数情况下数据库的全库还原都不会被启用, 全库的还原对数据库资源的消耗极大, 可能影响到数据库的运行, 并且可能将一些不需要还原的新数据修改成旧数据。全库还原只能使用IMPDP工具基于全数据库备份文件full.dmp对丢失的数据进行还原:

IMPDP libu/libu123 dumpfile=full.dmp full=y

5 结束语

为了Oracle课程设计教学的需要, 在oracle 11.2g环境下, 建立名为lib的数据库, 同时适当地建立了普通用户libu、表空间libts、和三个数据库表图书表、读者表、借阅表。然后重点描述了在此基础上从备份表、备份方案、备份表空间和备份数据库四个方面建立的备份策略, 和从表还原、方案还原、表空间还原和数据库还原等四个方面建立的还原策略, 为Oracle课程设计备份还原类课题搭建了一个基本框架。

参考文献

[1]韩应宣.Windows环境下Oracle数据库自动备份的方法探讨[J].广播与电视技术, 2014, S1:15-19.

[2]李清微.浅述Oracle数据库的备份与恢复方法[J].黑龙江科技信息, 2014, 35:187.

[3]徐小亚, 谢延华.基于Oracle数据库的备份和恢复分析[J].信息安全与技术, 2014, 03:62-64.

篇9:Oracle课程设计 图书管理系统

警务系统应用库突出的是一个综合应用的概念,它的数据模型设计不只是简单的定位于业务数据的管理,而更多的是要从业务数据资源的利用、服务角度出发,建设警务系统数据应用集合,实现数据资源的高效使用。通过警务系统应用库数据中心,实现警务系统的数据共享、综合查询、统计分析、自定义报表、情报导侦与外部职能部门的数据交换、决策支持分析等各种数据应用。

警务系统应用库建设的两大核心内容包括数据同步(ETL)系统和应用库的设计。数据源主要数据来源警务系统的业务库,根据不同策略同步到应用库。综合应用层为应用库建成后的应用扩展,如综合查询、自定义报表等等。以下为系统结构逻辑图:

一、数据同步(ETL)系统

根据警务业务系统本身的条件,警务系统应用库选择利用Oraele变化数据捕捉特性(change Data Capture,CDC特性)作为数据同步方案。 CDC作为Oraele9i数据库自有特性,捕获数据变化完整准确,对数据库性能影响较小,而且可以通过对CDC进行技术封装,降低配置复杂度,增强可管理性、可维护性。利用CDC,在对源表进行Update、Insert或Delete等操作的同时就可以提取数据,并且变化的数据被保存在数据库的变化表中。这样就可以捕获发生变化的数据,然后利用数据库视图以一种可控的方式提供给目标系统。它的优点在于提供了易于使用的API来设置CDC环境,缩短ETL的时间。不需要修改OLTP表结构,可以实现数据的递增加载。

二、警务系统应用库的设计

由于查询统计分析功能在业务库中受到一些业务规范的使用限制、而不能完全针对OLAP应用进行优化,而在应用库的设计中就可以进行优化调整,提高查询统计分析的效率,加强功能的处理强度,满足基于OLAP应用的需要。

其设计主要遵循以下原则:

(1)降低数据分散性,提高数据的耦合度

在业务库上,为了满足流程数据的流向控制和操作控制性,一些数据是分散在不同的数据表中。而在应用库建设中,为了方便查询和统计,则需要将数据的分散性降低,将数据分类合并处理,弱化表与表之间的依赖复杂度,单次运行提高查询和统计的吞吐率和执行效率,强化数据关联属性的整合。

(2)适当增加数据的冗余度

随着需求的变更和系统复杂度增加,适当的数据冗余显得有必要进行实施。在应用库建设中就要针对案、人、文书、以及相关主数据源,基于数据查询的需要,增加数据项的冗余度,减少查询关联构造复杂度,从而为综合查询,统计分析提供好的使用数据基础,利于整体性能和使用方便度的改造。

(3)适当为统计分析做数据清洗

通过对一些数据进行转化清洗,可提高统计分析的应用效率。

(4)数据变动功能实现及报表处理的实现

应用库需要对现有的公业报表进行优化处理,保证资源消耗,执行效率都在优化的范畴内,而对于统计最大的影响就是累计数据量加大引起统计耗时在延长,因此需要捕捉数据的动态改变,将数据统计范围限定在增量部分,实现统计数据的新增回退。

(5)系统流程数据处理

应用库将审批流程数据汇总归类到相关冗余数据信息中,以便用户进行审批历史的浏览,保证业务库中的信息在应用库中以更加灵活的方式进行。

(6)查询模式和种类建设

为提高查询效率,应用库中增加了专有查询模式和便捷查询种类。

篇10:Oracle课程设计 图书管理系统

一、oracle系统

1.oracle产品结构及组成

oracle系统是由以rdbms为核心的一批软件产品构成.

2.oracle系统特点

oracle公司于1979年,首先推出基于sql标准的关系数据库产品,可在100多种硬件平台上运行(所括微机、工作站、小型机、中型机和大型机),支持很多种操作系统。用户的oracle应用可方便地从一种计算机配置移至另一种计算机配置上。oracle的分布式结构可将数据和应用驻留在多台计算机上,而相互间的通信是透明的。1992年6月oracle公司推出的oracle7协同服务器数据库,使关系数据库技术迈上了新台阶。根据idg(国际数据集团)1992年全球unix数据库市场报告,oracle占市场销售量50%。它之所以倍受用户喜爱是因为它有以下突出的特点:

支持大数据库、多用户的高性能的事务处理。oracle支持最大数据库,其大小可到几百千兆,可充分利用硬件设备。支持大量用户同时在同一数据上执行各种数据应用,并使数据争用最小,保证数据一致性。系统维护具有高的性能,oracle每天可连续24小时工作,正常的系统操作(后备或个别计算机系统故障)不会中断数据库的使用。可控制数据库数据的可用性,可在数据库级或在子数据库级上控制。

oracle遵守数据存取语言、操作系统、用户接口和网络通信协议的工业标准。所以它是一个开放系统,保护了用户的投资。美国标准化和技术研究所(nist)对oracle7 server进行检验,100%地与ansi/iso sql89标准的二级相兼容。

实施安全性控制和完整性控制。oracle为限制各监控数据存取提供系统可靠的安全性。oracle实施数据完整性,为可接受的数据指定标准。

支持分布式数据库和分布处理。oracle为了充分利用计算机系统和网络,允许将处理分为数据库服务器和客户应用程序,所有共享的数据管理由数据库管理系统的计算机处理,而运行数据库应用的工作站集中于解释和显示数据。通过网络连接的计算机环境,oracle将存放在多台计算机上的数据组合成一个逻辑数据库,可被全部网络用户存取。分布式系统像集中式数据库一样具有透明性和数据一致性。

具有可移植性、可兼容性和可连接性。由于oracle软件可在许多不同的操作系统上运行,以致oracle上所开发的应用可移植到任何操作系统,只需很少修改或不需修改。oracle软件同工业标准相兼容,包括许多工业标准的操作系统,所开发应用系统可在任何操作系统上运行。可连接性是指oralce允许不同类型的计算机和操作系统通过网络可共享信息。

二、oracle数据库系统的体系结构

oracle数据库系统为具有管理oracle数据库功能的计算机系统。每一个运行的oracle数据库与一个oracle实例(instance)相联系。一个oracle实例为存取和控制一数据库的软件机制。每一次在数据库服务器上启动一数据库时,称为系统全局区(system global area)的一内存区(简称sga)被分配,有一个或多个oracle进程被启动。该sga 和 oracle进程的结合称为一个oracle数据库实例。一个实例的sga和进程为管理数据库数据、为该数据库一个或多个用户服务而工作。

在oracle系统中,首先是实例启动,然后由实例装配(mount)一数据库。在松耦合系统中,在具有oracle parallel server 选项时,单个数据库可被多个实例装配,即多个实例共享同一物理数据库。

1.oracle实例的进程结构和内存结构

1)进程结构

进程是操作系统中的一种机制,它可执行一系列的操作步。在有些操作系统中使用作业(job)或任务(task)的术语。一个进程通常有它自己的专用存储区。oracle进程的体系结构设计使性能最大。

oracle实例有两种类型:单进程实例和多进程实例。

单进程oracle(又称单用户oracle)是一种数据库系统,一个进程执行全部oracle代码。由于oracle部分和客户应用程序不能分别以进程执行,所以oracle的代码和用户的数据库应用是单个进程执行。

在单进程环境下的oracle 实例,仅允许一个用户可存取。例如在ms-dos上运行oracle 。

多进程oracle实例(又称多用户oracle)使用多个进程来执行oracle的不同部分,对于每一个连接的用户都有一个进程。

在多进程系统中,进程分为两类:用户进程和oracle进程。当一用户运行一应用程序,如pro*c程序或一个oracle工具(如sql*plus),为用户运行的应用建立一个用户进程。oracle进程又分为两类:服务器进程和后台进程。服务器进程用于处理连接到该实例的用户进程的请求。当应用和oracele是在同一台机器上运行,而不再通过网络,一般将用户进程和它相应的服务器进程组合成单个的进程,可降低系统开销。然而,当应用和oracle运行在不同的机器上时,用户进程经过一个分离服务器进程与oracle通信。它可执行下列任务:

对应用所发出的sql语句进行语法分析和执行。

从磁盘(数据文件)中读入必要的数据块到sga的共享数据库缓冲区(该块不在缓冲区时)。

将结果返回给应用程序处理。

系统为了使性能最好和协调多个用户,在多进程系统中使用一些附加进程,称为后台进程。在许多操作系统中,后台进程是在实例启动时自动地建立。一个oracle实例可以有许多后台进程,但它们不是一直存在。后台进程的名字为:

dbwr 数据库写入程序

lgwr 日志写入程序

ckpt 检查点

smon 系统监控

pmon 进程监控

arch 归档

reco 恢复

lckn 封锁

dnnn 调度进程

snnn 服务器

每个后台进程与oracle数据库的不同部分交互。

下面对后台进程的功能作简单介绍:

dbwr进程:该进程执行将缓冲区写入数据文件,是负责缓冲存储区管理的一个oracle后台进程。当缓冲区中的一缓冲区被修改,它被标志为“弄脏”,dbwr的主要任务是将“弄脏”的缓冲区写入磁盘,使缓冲区保持“干净”。由于缓冲存储区的缓冲区填入数据库或被用户进程弄脏,未用的缓冲区的数目减少。当未用的缓冲区下降到很少,以致用户进程要从磁盘读入块到内存存储区时无法找到未用的缓冲区时,dbwr将管理缓冲存储区,使用户进程总可得到未用的缓冲区。

oracle采用lru(least recently used)算法(最近最少使用算法)保持内存中的数据块是最近使用的,使i/o最小。在下列情况预示dbwr 要将弄脏的缓冲区写入磁盘:

当一个服务器进程将一缓冲区移入“弄脏”表,该弄脏表达到临界长度时,该服务进程将通知dbwr进行写。该临界长度是为参数db-block-write-batch的值的一半。

当一个服务器进程在lru表中查找db-block-max-scan-cnt缓冲区时,没有查到未用的缓冲区,它停止查找并通知dbwr进行写。

出现超时(每次3秒),dbwr 将通知本身。

当出现检查点时,lgwr将通知dbwr

在前两种情况下,dbwr将弄脏表中的块写入磁盘,每次可写的块数由初始化参数db-block-write-batch所指定。如果弄脏表中没有该参数指定块数的缓冲区,dbwr从lur表中查找另外一个弄脏缓冲区。

如果dbwr在三秒内未活动,则出现超时。在这种情况下dbwr对lru表查找指定数目的缓冲区,将所找到任何弄脏缓冲区写入磁盘。每当出现超时,dbwr查找一个新的缓冲区组。每次由dbwr查找的缓冲区的数目是为寝化参数db-block-write-batch的值的二倍。如果数据库空运转,dbwr最终将全部缓冲区存储区写入磁盘。

在出现检查点时,lgwr指定一修改缓冲区表必须写入到磁盘。dbwr将指定的缓冲区写入磁盘。

在有些平台上,一个实例可有多个dbwr。在这样的实例中,一些块可写入一磁盘,另一些块可写入其它磁盘。参数db-writers控制dbwr进程个数。

lgwr进程:该进程将日志缓冲区写入磁盘上的一个日志文件,它是负责管理日志缓冲区的一个oracle后台进程。lgwr进程将自上次写入磁盘以来的全部日志项输出,lgwr输出:

当用户进程提交一事务时写入一个提交记录。

每三秒将日志缓冲区输出。

当日志缓冲区的1/3已满时将日志缓冲区输出。

当dbwr将修改缓冲区写入磁盘时则将日志缓冲区输出。

lgwr进程同步地写入到活动的镜象在线日志文件组。如果组中一个文件被删除或不可用,lgwr可继续地写入该组的其它文件。

日志缓冲区是一个循环缓冲区。当lgwr将日志缓冲区的日志项写入日志文件后,服务器进程可将新的日志项写入到该日志缓冲区。lgwr 通常写得很快,可确保日志缓冲区总有空间可写入新的日志项。

注意:有时候当需要更多的日志缓冲区时,lwgr在一个事务提交前就将日志项写出,而这些日志项仅当在以后事务提交后才永久化。

oracle使用快速提交机制,当用户发出commit语句时,一个commit记录立即放入日志缓冲区,但相应的数据缓冲区改变是被延迟,直到在更有效时才将它们写入数据文件。当一事务提交时,被赋给一个系统修改号(scn),它同事务日志项一起记录在日志中。由于scn记录在日志中,以致在并行服务器选项配置情况下,恢复操作可以同步。

ckpt进程:该进程在检查点出现时,对全部数据文件的标题进行修改,指示该检查点。在通常的情况下,该任务由lgwr执行。然而,如果检查点明显地降低系统性能时,可使ckpt进程运行,将原来由lgwr进程执行的检查点的工作分离出来,由ckpt进程实现。对于许多应用情况,ckpt进程是不必要的。只有当数据库有许多数据文件,lgwr在检查点时明显地降低性能才使ckpt运行。ckpt进程不将块写入磁盘,该工作是由dbwr完成的。

初始化参数checkpoint-process控制ckpt进程的使能或使不能。缺省时为false,即为使不能。

smon进程:该进程实例启动时执行实例恢复,还负责清理不再使用的临时段。在具有并行服务器选项的环境下,smon对有故障cpu或实例进行实例恢复。smon进程有规律地被呼醒,检查是否需要,或者其它进程发现需要时可以被调用。

pmon进程:该进程在用户进程出现故障时执行进程恢复,负责清理内存储区和释放该进程所使用的资源。例:它要重置活动事务表的状态,释放封锁,将该故障的进程的id从活动进程表中移去。pmon还周期地检查调度进程(dispatcher)和服务器进程的状态,如果已死,则重新启动(不包括有意删除的进程)。

pmon有规律地被呼醒,检查是否需要,或者其它进程发现需要时可以被调用。

reco进程:该进程是在具有分布式选项时所使用的一个进程,自动地解决在分布式事务中的故障。一个结点reco后台进程自动地连接到包含有悬而未决的分布式事务的其它数据库中,reco自动地解决所有的悬而不决的事务。任何相应于已处理的悬而不决的事务的行将从每一个数据库的悬挂事务表中删去。

当一数据库服务器的reco后台进程试图建立同一远程服务器的通信,如果远程服务器是不可用或者网络连接不能建立时,reco自动地在一个时间间隔之后再次连接。

reco后台进程仅当在允许分布式事务的系统中出现,而且distributed – transactions参数是大于0。

arch进程:该进程将已填满的在线日志文件拷贝到指定的存储设备。当日志是为archivelog使用方式、并可自动地归档时arch进程才存在。

lckn进程:是在具有并行服务器选件环境下使用,可多至10个进程(lck0,lck1……,lck9),用于实例间的封锁。

dnnn进程(调度进程):该进程允许用户进程共享有限的服务器进程(server process)。没有调度进程时,每个用户进程需要一个专用服务进程(dedicatedserver process)。对于多线索服务器(multi-threaded server)可支持多个用户进程。如果在系统中具有大量用户,多线索服务器可支持大量用户,尤其在客户_服务器环境中。

在一个数据库实例中可建立多个调度进程。对每种网络协议至少建立一个调度进程。数据库管理员根据操作系统中每个进程可连接数目的限制决定启动的调度程序的最优数,在实例运行时可增加或删除调度进程。多线索服务器需要sql*net版本2或更后的版本。在多线索服务器的配置下,一个网络接收器进程等待客户应用连接请求,并将每一个发送到一个调度进程。如果不能将客户应用连接到一调度进程时,网络接收器进程将启动一个专用服务器进程。该网络接收器进程不是oracle实例的组成部分,它是处理与oracle有关的网络进程的组成部分。在实例启动时,该网络接收器被打开,为用户连接到oracle建立一通信路径,然后每一个调度进程把连接请求的调度进程的地址给予于它的接收器。当一个用户进程作连接请求时,网络接收器进程分析请求并决定该用户是否可使用一调度进程。如果是,该网络接收器进程返回该调度进程的地址,之后用户进程直接连接到该调度进程。有些用户进程不能调度进程通信(如果使用sql*net以前的版本的用户),网络接收器进程不能将如此用户连接到一调度进程。在这种情况下,网络接收器建立一个专用服务器进程,建立一种合适的连接。

2)、oracle内存结构

oracle在内存存储下列信息:

执行的程序代码。

连接的会话信息

程序执行期间所需数据和共享的信息

存储在外存储上的缓冲信息。

oracle具有下列基本的内存结构:

软件代码区

系统全局区,包括数据库缓冲存储区、日志缓冲区和共享池.

程序全局区,包括栈区和数据区.

排序区

软件代码区

用于存储正在执行的或可以执行的程序代码。

软件区是只读,可安装成共享或非共享。oracle系统程序是可共享的,以致多个oracle用户可存取它,而不需要在内存有多个副本。用户程序可以共享也可以不共享。

系统全局区

为一组由oracle分配的共享的内存结构,可包含一个数据库实例的数据或控制信息。如果多个用户同时连接到同一实例时,在实例的sga中数据可为多个用户所共享,所以又称为共享全局区。当实例起动时,sga的存储自动地被分配;当实例关闭时,该存储被回收。所有连接到多进程数据库实例的全部用户可自动地被分配;当实例关闭时,该存储被回收。所有连接到多进程数据库实例的全部用户可使用其sga中的信息,但仅仅有几个进程可写入信息。在sga中存储信息将内存划分成几个区:数据库缓冲存储区、日志缓冲区、共享池、请求和响应队列、数据字典存储区和其它各种信息。

程序全局区

pga是一个内存区,包含单个进程的数据和控制信息,所以又称为进程全局区(process global area)。

排序区

排序需要内存空间,oracle利用该内存排序数据,这部分空间称为排序区。排序区存在于请求排序的用户进程的内存中,该空间的大小为适就排序数据量的大小,可增长,但受初始化参数sort-area-sizer所限制。

2.oracle的配置方案

所有连接到oracle的用户必须执行两个代码模块可存取一个oracle数据库实例:

应用或oracle工具:一数据库用户执行一数据库应用或一个oracle工具,可向oracle数据库发出sql语句。

oracle服务器程序:负责解释和处理应用中的sql语句。

在多进程实例中,连接用户的代码可按下列三种方案之一配置:

对于每一个用户,其数据库应用程序和服务器程序组合成单个用户进程

对于每一个用户,其数据库应用是由用户进程所运行,并有一个专用服务器进程。执行oracle服务器的代码。这样的配置称为专用服务器体系结构

执行数据库应用的进程不同于执行oracle服务器代码的进程,而且每一个服务器进程(执行oracle服务器代码)可服务于多个用户进程,这样的配置称为多线索服务器体系结构。

1)user/server进程相结合的结构

在这种配置下,数据库应用和oracle服务器程序是在同一个进程中运行,该进程称为用户进程。

这种oracle配置有时称为单任务oracle(single_task oracle),该配置适用于这样的操作系统,它可在同一进程中的数据库应用和oracle代码之间维护一个隔离,该隔离是为数据安全性和完整性所需。其中程序接口(program interface)是负责oracle服务器代码的隔离和保护,在数据库应用和oracle用户程序之间传送数据。

2)使用专用服务器进程的系统结构

使用专用服务器进程的oracle系统在两台计算机上运行。在这种系统中,在一计算机上用户进程执行数据库应用,而在另一台计算机上的服务器进程执行相应的oracle服务器代码,这两个进程是分离的。为每个用户进程建立的不同的服务器进程称为专用服务器进程,因为该服务器进程仅对相连的用户进程起作用。这种配置又称为两任务oracle。每一个连接到oracle的用户进程有一个相应的专用服务进程。这种系统结构允许客户应用是有工作站上执行,通过网络与运行oracle的计算机通信。当客户应用和oracle服务器代码是在同一台计算机上执行时,这种结构也可用。

3)多线索服务器的系统结构

多线索服务器配置允许许多用户进程共享很少服务器进程。在没有多线索服务器的配置中,每一个用户进程需要自己的专用服务器进程。在具有多线索服务器的配置中,许多用户进程连接到调度进程,由调度进程将客户请求发送到一个共享服务器进程。多线索服务器配置的优点是降低系统开销,增加用户个数。

该系统中需要下列类型的进程:

网络接收器进程,将用户进程连接到调度进程和专用服务器进程。

一个或多个调度进程

一个或多个共享服务器进程

其中网络接收器进程等待新来的连接请求,决定每一用户进程能否用共享服务器进程。如果可以使用,接收器进程将一调度进程的地址返回给用户进程。如果用户进程请求一专用服务器,该接收器进程将建立一个专用服务器进程,将用户进程连接到该专用服务器进程。对于数据库客户机所使用的每种网络协议至少配置一个调度进程,并启动它。

当用户作一次调用时,调度进程将请求放置在sga的请求队列中,由可用的共享服务器进程获取。共享服务器进程为完成每一个用户进程的请求作所有必要的数据库调用。当服务器完成请求时,将结果返回到调度进程的队列,然后由调度进程将完成的请求返回给用户进程。

共享服务器进程:除共享服务器进程不是连接指定的用户进程外,共享服务器进程和专用服务器进程提供相同的功能,一个共享服务器进程在多线索服务器的配置中可为任何客户请求服务。一个共享服务器进程的sga不包含有与用户相关的数据,其信息可为所有共享服务器进程存取,它仅包含栈空间、进程指定变量。所有与会话有关的信息是包含有sga中。每一个共享服务器进程可存取全部会话的数据空间,以致任何服务进程可处理任何会话的请求。对于每一个会话的数据空间是在sga中分配空间。

oracle根据请求队列的长度可动态地调整共享服务器进程。可建立的共享服务器进程将请求放到请求队列。一个用户请求是对数据库的一次程序接口调用,为sql语句。在sga中请求队列对实例的全部调度进程是公用的。服务器进程为新请求检查公用请求队列,按先进先出的原则从队列检出一个请求,然后为完成该请求对数据库作必要的调用。共享服务器进程将响应放在调度进程的响应队列。每一个调度进程在sga中有自己的响应队列,每个调度进程负责将完成的请求回送给相应的用户进程。

3.oracle运行

1)使用专用服务进程的oracle的运行

在这种配置下,oracle运行过程如下:

(1)数据库服务器计算机当前正在运行oracle(后台进程)。

(2)在一客户工作站运行一个数据库应用(为用户进程),如sql*plus。客户应用使用sql*net driver建立对服务器的连接。

(3)数据库服务器计算机当前正运行合适的sql*net driver,该机上接收器进程检出客户数据库应用的连接请求,并在该机上为用户进程建立专用服务器进程。

(4)用户发出单个sql语句。

(5)专用服务器进程接收该语句,在此处有两种方法处理sql语句:

如果在共享池一共享sql区中包含有相同sql语句时,该服务器进程可利用已存在的共享sql区执行客户的sql语句。

?如果在共享池中没有一个sql区包含有相同的sql语句时,在共享池中为该语句分配一新的共享sql区。

在每一种情况,在会话的pga中建立一个专用sql区,专用服务器进程检查用户对查询数据的存取权限。

(6) 如果需要,服务器进程从数据文件中检索数据块,或者可使用已存储在实例sga中的缓冲存储区的数据块。

(7) 服务器进程执行存储在共享sql区中的sql语句。数据首先在sga中修改,由dbwr进程在最有效时将它写入磁盘。lgwr进程在在线日志文件中记录用户提交请求的事务。

(8)如果请求成功,服务器将通过网络发送一信息。如果请求不成功,将发送相应的错误信息。

(9)在整个过程中,其它的后台进程是运行的,同时注意需要干预的条件。另外,oracle管理其它事务,防止不同事务之间请求同一数据的竞争。

2)使用多线索服务器的oracle的运行

在这种配置下,oracle运行过程如下:

(1)一数据库服务器计算机运行使用多线索服务器配置的oracle。

(2)在一客户工作站运行一数据库应用(在一用户进程中)。客户应用合适的sql*net驱动器试图建立到数据库服务器计算机的连接。

(3)数据库服务器计算机当前运行合适的sql*net驱动器,它的网络接收器进程检出用户进程的连接请求,并决定用户进程如何连接。如果用户是使用sql*net版本2,该网络接收器通知用户进程使用一个可用的调度进程的地址重新连接。

(4)用户发出单个sql语句

(5)调度进程将用户进程的请求放入请求队列,该队列位于sga中,可为所有调度进程共享。

(6)一个可用共享服务器检验公用调度进程请求队列,并从队列中检出下一个sql语句。然后处理该sql语句,同前一(5),(6)和(7)。注意:会话的专用sql区是建立在sga中。

(7)一当共享服务器进程完成sql处理,该进程将结果放置发入该请求的调度进程的响应队列。

(8)调度进程检查它的响应队列,并将完成的请求送回请求的用户进程。

4.数据库结构和空间管理

一个oracle数据库是数据的集合,被处理成一个单位。一个oracle数据库有一个物理结构和一个逻辑结构。

物理数据库结构(physical database structure)是由构成数据库的操作系统文件所决定。每一个oracle数据库是由三种类型的文件组成:数据文件、日志文件和控制文件。数据库的文件为数据库信息提供真正的物理存储。

逻辑数据库结构是用户所涉及的数据库结构。一个oracle数据库的逻辑结构由下列因素决定:

一个或多个表空间

数据库模式对象(即表、视图、索引、聚集、序列、存储过程)

逻辑存储结构如表空间(dataspace)、段(segment)和范围将支配一个数据库的物理空间如何使用。模式对象(schema object)用它们之间的联系组成了一个数据库的关系设计。

1)物理结构

(1)数据文件

每一个oracle数据库有一个或多个物理的数据文件(data file)。一个数据库的数据文件包含全部数据库数据。逻辑数据库结构(如表、索引)的数据物理地存储在数据库的数据文件中。数据文件有下列特征:

一个数据文件仅与一个数据库联系。

一旦建立,数据文件不能改变大小

一个表空间(数据库存储的逻辑单位)由一个或多个数据文件组成。

数据文件中的数据在需要时可以读取并存储在oracle内存储区中。例如:用户要存取数据库一表的某些数据,如果请求信息不在数据库的内存存储区内,则从相应的数据文件中读取并存储在内存。当修改和插入新数据时,不必立刻写入数据文件。为了减少磁盘输出的总数,提高性能,数据存储在内存,然后由oracle后台进程dbwr决定如何将其写入到相应的数据文件。

(2)日志文件

每一个数据库有两个或多个日志文件(redo log file)的组,每一个日志文件组用于收集数据库日志。日志的主要功能是记录对数据所作的修改,所以对数据库作的全部修改是记录在日志中。在出现故障时,如果不能将修改数据永久地写入数据文件,则可利用日志得到该修改,所以从不会丢失已有操作成果。

日志文件主要是保护数据库以防止故障。为了防止日志文件本身的故障,oracle允许镜象日志(mirrored redo log),以致可在不同磁盘上维护两个或多个日志副本。

日志文件中的信息仅在系统故障或介质故障恢复数据库时使用,这些故障阻止将数据库数据写入到数据库的数据文件。然而任何丢失的数据在下一次数据库打开时,oracle自动地应用日志文件中的信息来恢复数据库数据文件。

(3)控制文件

每一oracle数据库有一个控制文件(control file),它记录数据库的物理结构,包含下列信息类型:

数据库名;

数据库数据文件和日志文件的名字和位置;

?数据库建立日期。

为了安全起见,允许控制文件被镜象。

每一次oracle数据库的实例启动时,它的控制文件用于标识数据库和日志文件,当着手数据库操作时它们必须被打开。当数据库的物理组成更改时,oracle自动更改该数据库的控制文件。数据恢复时,也要使用控制文件。

2)逻辑结构

数据库逻辑结构包含表空间、段、范围(extent)、数据块和模式对象。

(1)表空间

一个数据库划分为一个或多个逻辑单位,该逻辑单位称为表空间(tablespace)。一个表空间可将相关的逻辑结构组合在一起。dba可利用表空间作下列工作:

控制数据库数据的磁盘分配。

将确定的空间份额分配给数据库用户。

通过使单个表空间在线或离线,控制数据的可用性。

执行部分数据库后备或恢复操作。

为提高性能,跨越设备分配数据存储。

数据库、表空间和数据文件之间的关系如下图所示:

database

dtatafile1

(2mb) datafile2

(2mb) datafile3

(2mb)

driver1 driver2

每个数据库可逻辑划分为一个或多个表空间

每一个表空间是由一个或多个数据文件组成,该表空间物理地存储表空间中全部逻辑结构的数据。dba可以建立新的表空间,可为表空间增加数据文件或可删除数据文件,设置或更改缺省的段存储位置。

每一个oracle数据库包含有一个名为system的表空间,在数据库建立是自动建立。在该表空间中总包含有整个数据库的数据字典表。最小的数据库可只需要system表空间。该表空间必须总是在线。表和存储的pl/sql程序单元(过程、函数、包和触发器)的全部存储数据是存储在system表空间中。如果这些pl/sql对象是为数据库建的,dba在system表空间中需要规划这些对象所需要的空间。

表空间利用增加数据文件扩大表空间,表空间的大小为组成该表空间的数据文件大小的和。

dba可以使oracle数据库中任何表空间(除system表空间外)在线(online)或离线(offline)。表空间通常是在线,以致它所包含的数据对数据库用户是可用的。当表空间为离线时,其数据不可使用。在下列情况下,dba可以使其离线。

使部分数据不可用,而剩余的部分允许正常存取

执行离线的表空间后备

为了修改或维护一应用,使它和它的一组表临时不可用。

包含有正在活动的回滚段的表空间不能被离线,仅当回滚段不正在使用时,该表空间才可离线。

在数据字典中记录表空间的状态,在线还是离线。如果在数据库关闭时一表空间为离线,那么在下次数据库装配和重新打开后,它仍然保持离线。

当出现某些错误时,一个表空间可自动地由在线改变为离线。通过使用多个表空间,将不同类型的数据分开,更方便dba来管理数据库。

oracle数据库中一表空间是由一个或多个物理数据文件组成,一个数据文件只可与一个表空间想联系。当为一表空间建立一数据文件时,oracle建立该文件,分配指定的磁盘空间容量。在数据文件初时建立后,所分配的磁盘不包含任何数据。表空间可以在线或离线。在oracle中还允许单独数据文件在线或离线。

(2)段、范围和数据块

oracle通过段、范围和数据块逻辑数据结构可更细地控制磁盘空间的使用。

段(segment)包含表空间中一种指定类型的逻辑存储结构,是由一组范围组成。在oracle数据库中有几种类型的段:数据段、牵引段、回滚段和临时段。

数据段:对于每一个非聚集的表有一数据段,表的所有数据存放在该段。每一聚集有一个数据段,聚集中每一个表的数据存储在该段中。

索引段:每一个索引有一索引段,存储索引数据。

回滚段:是由dba建立,用于临时存储要撤消的信息,这些信息用于生成读一致性数据库信息、在数据库恢复时使用、回滚未提交的事务。

临时段:当一个sql语句需要临时工作区时,由oracle建立。当语句执行完毕,临时段的范围退回给系统。

oracle对所有段的空间分配,以范围为单位。

范围

一个范围(extent)是数据库存储空间分配的一个逻辑单位,它由连续数据块所组成。每一个段是由一个或多个范围组成。当一段中间所有空间已完全使用时,oracle为该段分配一个新的范围。

为了维护的目的,在数据库的每一段含有段标题块(segment header block)说明段的特征以及该段中的范围目录。

数据块

数据块(data block)是oracle管理数据文件中存储空间的单位,为数据库使用的i/o的最小单位,其大小可不同于操作系统的标准i/o块大小。

数据块的格式:

公用的变长标题

表目录

行目录

未用空间

行数据

(3)模式和模式对象

一个模式(schema)为模式对象(scehma object)的一个集合,每一个数据库用户对应一个模式。模式对象为直接引用数据库数据的逻辑结构,模式对象包含如表、视图、索引、聚集、序列、同义词、数据库链、过程和包等结构。模式对象是逻辑数据存储结构,每一种模式对象在磁盘上没有一个相应文件存储其信息。一个模式对象逻辑地存储在数据库的一个表空间中,每一个对象的数据物理地包含在表空间的一个或多个数据文件中。

表(table)为数据库中数据存储的基本单位,其数据按行、列存储。每个表具有一表名和列的集合。每一列有一个列名、数据类型、宽度或精度、比例。一行是对应单个记录的列信息的集合。

视图

一个视图(view)是由一个或多个表(或其他视图)中的数据的一种定制的表示,是用一个查询定义,所以可认为是一个存储的查询(stored query)或是一个虚表(virtual table)。视图可在使用表的许多地方使用。

由于视图是由表导出的,视图和表存在许多类似,视图象表最多可定义254列。视图可以被查询,而在修改、插入或删除时具有一定的限制,在视图上执行的全部操作真正地影响视图的基本表中的数据,受到基本表的完整性约束和触发器的限制。

视图与表不同,一个视图不分配任何存储空间,视图不真正地包含数据。由查询定义的视图相应于视图引用表中的数据。视图只在数据字典中存储其定义。

引入视图有下列好处:

。通过限制对表的行预定义集合的存取,为表提供附加的安全性

。隐藏数据复杂性。

。为用户简化命令

。为基本表的数据提供另一种观点。

。可将应用隔离基本表定义的修改

。用于不用视图无法表示的查询。

。可用于保存复杂查询。

聚集

聚集(cluster)是存储表数据的可选择的方法。一个聚集是一组表,将具有同一公共列值的行存储在一起,并且它们经常一起使用。这些公共列构成聚集码。例如:emp表各dept表共享deptno列,所以emp表和dept表可聚集在一起,聚集码的列为deptno列,该聚集将每个部门的全部职工行各该部门的行物理地存储在同一数据块中。

索引

索引(index)是与表和聚集相关的一种选择结构。索引是为提高数据检索的性能而建立,利用它可快速地确定指定的信息。oracle索引为表数据提供快速存取路径。索引适用于一范围的行查询或指定行的查询。

索引可建立在一表的一列或多列上,一旦建立,由oracle自动维护和使用,对用户是完全透明的。索引是逻辑地和物理地独立于数据,它们的建立或删除对表没有影响,应用可继续处理。索引数据的检索性能几乎保持常数,而当一表上存在许多索引时,修改、删除和插入操作的性能会下降。

索引有唯一索引各非唯一索引。唯一索引保证表中没有两行在定义索引的列上具有重复值。oracle在唯一码上自动地定义唯一索引实施unique完整性约束。

组合索引是在表的某个列上所建立的一索引。组全索引可加快select语句的检索速度,在其where子句中可引用组合索引的全部或主要部分 。所以在定义中给出列的次序,将经常存取的或选择最多的列放在首位。

在建立索引时,将在表空间自动地建立一索引段,索引段空间分配和保留空间的使用受下列方式控制:

索引段范围的分配常驻该索引段的存储参数控制。

其数据块中未用空间可受该段的pctfree参数设置所控制。

序列生成器

序列生成器(sequence generator)产生序列号。在多用户环境下该序列生成器特别有用,可生成各返回序列号而不需要磁盘i/o或事务封锁。

序列号为oracle整数,最多可有38个数字。一个序列定义指出一般信息:序列的名字、上升或下降、序列号之间间距和其它信息。对所有序列的确的定义以行存储在system表空间中的数据字典表中,所以所有序列定义总是可用。由引用序列号的sql语句使用序列号,可生成一个新的序列号或使用当前序列号。一旦在用户会话中的sql语句生成一序列号,该序列号仅为该会话可用。序列号生成是独立于表,所以同一序列生成器可用于一个和多个表。所生成序列号可用于生成唯一的主码。

同义词

一个同义词(synonym)为任何表、视图、快照、序列、过程、函数或包的别名,其定义存储在数据字典中。同义词因安全性和方便原因而经常使用,可用于:

可屏蔽对象的名字及其持有者。

为分布式数据库的远程对象提供位置透明性。

为用户简化sql语句。

有两种同义词:公用和专用。一个公用同义词为命名为public特殊用户组所持有,可为数据库中每一个用户所存取。一个专用同义词是包含在指定用户的模式中,仅为该用户和授权的用户所使用。

杂凑

杂凑(hashing)是存储表数据一种可选择的方法,用以改进数据检索的性能。要使用杂凑,就要建立杂凑聚集,将表装入到该聚集。在骠凑聚集中的表行根据杂凑函数的结果进行物理学存储和检索。杂凑函数用于生成一个数值的分布,该数值称为杂凑值,它是基于指定的聚集码值。

程序单元

程序单元(program unit)是指存储过程、函数和包(package)。一个过程和函数,是由sql语句和pl/sql语句组合在一起,为执行某一个任务的一个可执行单位。一个过程或函数可被建立,在数据库中存储其编译形式,可由用户或数据库应用所执行。过程和函数差别在函数总返回单个值给调用者,而过程没有值返回给调用者。

包提供相关的过程、函数、变量和其它包结构封装起来并存贮在一起的一种方法,允许管理者和应用开发者利用该方法组织如此的程序(routine),来提供更多的功能和提高性能。

数据库链

数据库链是一个命名的对象,说明从一数据库到另一数据库的一路径(path)。在分布式数据库中,对全局对象名引用时,数据库链隐式地使用。

三、数据库和实例的启动和关闭

一个oracle数据库没有必要对所有用户总是可用,数据库管理员可启动数据库,以致它被打开。在数据库打开情况下,用户可存取数据库中的信息。当数据库不使用时,dba可关闭它,关闭后的数据库,用户不能存取其信息。

数据库的启动和关闭是非常重要的管理功能,通过以internal连接到oracle的能力来保护。以internal 连接到oracle需要有下列先决条件:

该用户的操作系统账号具有使用internal连接的操作系统特权。

对internal数据库有一口令,该用户知道其口令。

另外:当用户以internal连接时,可连接到专用服务器,而且是安全连接。

1.数据库启动

启动数据库并使它可用有三步操作:

启动一个实例;

装配数据库

打开数据库

1)启动一个实例

启动一实例的处理包含分配一个sga(数据库信息使用的内存共享区)和后台进程的建立。实例起动的执行先于该实例装配一数据库。如果仅启动实例,则没有数据库与内存储结构和进程相联系。

2)装配一数据库

装配数据库是将一数据库与已启动的实例相联。当实例安装一数据库之后,该数据库保持关闭,仅dba可存取。

3)打开一数据库

打开一数据库是使数据库可以进行正常数据库操作的处理。当一数据库打开所有用户可连接到该数据库用存取其信息。在数据库打开时,在线数据文件和在线日志文件也被打开。如果一表空间在上一次数据库关闭时为离线,在数据库再次打开时,该表空间与它所相联的数据文件还是离线的。

2.数据库和实例的关闭

关闭一实例以及它所连接的数据库也有三步操作:

1)关闭数据库

数据库停止的第一步是关闭数据库。当数据库关闭后,所有在sga中的数据库数据和恢复数据相应地写入到数据文件和日志文件。在这操作之后,所有联机数据文件和联机的日志文件也被关闭,任何离线表空间中数据文件夹是已关闭的。在数据库关闭后但还安装时,控制文件仍保持打开。

2)卸下数据库

停止数据库的第二步是从实例卸下数据库。在数据库卸下后,在计算机内存中仅保留实例。在数据库卸下后,数据库的控制文件也被关闭。

3)停止实例

停止数据库的最后一步是停止实例。当实例停止后,sag是从内存中撤消,后台进程被中止。

3.初始化参数文件

在启动一个实例时,oracle必须读入一初始化参数文件(initialization parameter file),该参数文件是一个文本文件,包含有实例配置参数。这些参数置成特殊值,用于初始oracle实例的许多内存和进程设置,该参数文件包含:

一个实例所启动的数据库名字

在sga中存储结构使用多少内存;

在填满在线日志文件后作什么;

数据库控制文件的名字和位置;

在数据库中专用回滚段的名字。

四、数据字典的使用

数据字典是oracle数据库的最重要的部分之一,是由一组只读的表及其视图所组成。它提供有关该数据库的信息,可提供的信息如下:

oracle用户的名字;

每一个用户所授的特权和角色;

模式对象的名字(表、视图、快照、索引、聚集、同义词、序列、过程、函数、包及触发器等);

关于完整性约束的信息;

列的缺省值;

有关数据库中对象的空间分布及当前使用情况;

审计信息(如谁存取或修改各种对象);

其它一般的数据库信息。

可用sql存取数据字典,由于数据字典为只读,允许查询。

1.数据字典的结构

数据库数据字典是由基本表和用户可存取的视图组成。

基本表:数据字典的基础是一组基本表组成,存储相关的数据库的信息。这些信息仅由oracle读和写,它们很少被oracle用户直接存取。

用户可存取视图:数据字典包含用户可存取视图,可概括地方便地显示数据字典的基本表的信息。视图将基本表中信息解码成可用信息。

2.数据字典的使用

当数据库打开时,数据字典总是可用,它驻留在system表空间中。数据字典包含视图集,在许多情况下,每一视图集有三种视图包含有类似信息,彼此以 前缀 相区别,前缀 user、all和dba。

?前缀为user的视图,为用 视图,是在用户的模式内。

?前缀为all的视图,为扩展的用户视图(为用户可存取的视图)。

?前缀为dba的视图为dba的视图(为全部用户可存取的视图)。

在数据库中oracle还维护了一组虚表记录当前数据库的活动,这些表称为动态性能表。动态性能表不是真正的表,许多用户不能存取,dba可查询这些表,可以建立视图,给其它用户授予存取视图权。

五、事务管理

1.事务

一个事务为工作的一个逻辑单位,由一个或多个sql语句组成。一个事务是一个原子单位,构成事务的全部sql语句的结果可被全部提交或者全部回滚。一个事务由第一个可执行sql语句开始,以提交或回滚结束,可以是显式的,也可是隐式的(执行ddl语句)。

在执行一个sql语句出现错误时,该语句所有影响被回滚,好像该语句没有被执行一样,但它不会引起当前事务先前的工作的丢失。

2.oracle的事务管理

在oracle中一个事务是由一个可执行的sql语句开始,一个可执行sql语句产生对实例的调用。在事务开始时,被赋给一个可用回滚段,记录该事务的回滚项。一个事务以下列任何一个出现而结束。

当commit或rollback(没有savepoint子句)语句发出。

一个ddl语句被执行。在ddl语句执行前、后都隐式地提交。

用户撤消对oracle的连接(当前事务提交)。

用户进程异常中止(当前事务回滚)。

1)提交事务

提交一事务,即将在事务中由sql语句所执行的改变永久化。在提交前,oracle已有下列情况:

在sga的回滚段缓冲区已生成回滚段记录,回滚信息包含有所修改值的老值。

在sga的日志缓冲区已生成日志项。这些改变在事务提交前可进入磁盘。

对sga的数据库缓冲区已作修改,这些修改在事务真正提交之前可进入磁盘。

在事务提交之后,有下列情况:

对于与回滚段相关的内部事务表记录提交事务,并赋给一个相应的唯一系统修改号(scn),记录在表中。

在sga的日志缓冲区中日志项由lgwr进程写入到在线日志文件, 这是构成提交事务的原子事务。

在行上和表上的封锁被释放。

该事务标志为完成 。

注意:对于提交事务的数据修改不必由dbwr后台进程立即写入数据文件,可继续存储在sga的数据库缓冲区中,在最有效时将其写入数据文件。

2)回滚事务

回滚事务的含义是撤消未提交事务中的sql语句所作的对数据修改。oralce允许撤消未提交的整个事务,也允许撤消部分。

在回滚整个事务(没有引用保留点)时,有下列情况:

在事务中所有sql语句作的全部修改,利用相应的回滚段被撤消。

所有数据的事务封锁被释放。

事务结束。

当事务回滚到一保留点(具有savepoint)时,有下列情况:

仅在该保留点之后执行的语句被撤消。

该指定的保留点仍然被保留,该保留点之后所建立的保留点被删除。

自该保留点之后所获取的全部表封锁和行封锁被释放,但指定的保留点以前所获取的全部数据封锁继续保持。

该事务仍可继续。

3)保留点

保留点(savepoint)是在一事务范围内的中间标志,经常用于将一个长的事务划分为小的部分。保留点可标志长事务中的任何点,允许可回滚该点之后的工作。在应用程序中经常使用保留点;例如一过程包含几个函数,在每个函数前可建立一个保留点,如果函数失败,很容易返回到每一个函数开始的情况。在回滚到一个保留点之后,该保持点之后所获得的数据封锁被释放。

六、数据库触发器

1.触发器介绍

数据库触发器(database trigger)是存储在数据库中的过程,当表被修改时它隐式地被激发(执行)。在oracle中允许在对表发出insert、update或delete语句时隐式地执行所定义的过程,这些过程称为数据库触发器。触发器存储在数据库中,并与所相关表分别存储。触发器仅可在表上定义。在许多情况中触发器用于提供很高级的专用数据库管理系统,来补充oracle的标准功能。触发器一般用于:

自动地生成导出的列值;

防止无效的事务;

实施更复杂的安全性检查

在分布式数据库中实施跨越结点的引用完整性;

实施复杂的事务规则;

提供透明事件日志;

提供高级的审计;

维护同步表复制;

收集关于存取表的统计。

注意:数据库触发器与sql*forms触发器之间的差别。数据库触发器是定义在表上,存储在数据库中,当对表执行insert、update或delete语句时被激发,不管是谁或哪一应用发出。而sql*forms触发器是sql*form应用的部分,仅当在指定sql*forms应用中执行一个指定触发器点时才被激发。

触发器和说明性完整性约束都可用于约束数据的输入,但它们之间有一定区别:

说明性完整性约束是关于数据库总是为“真”的语句。一个完整性约束应用于表中已有数据和操纵表的任何语句。

而触发器约束事务不可应用于在定义触发器前已装入的数据,所以它不能保证表中全部数据服从该触发器的规则。触发器实施瞬时约束,即在数据改变时实施一约束。

2.触发器的组成:

一个触发器有三个基本部件:触发事件或语句、触发器的限制、触发器动作。

触发事件或语句:为引起触发器激发的sql语句,是对指定表insert、update或delete语句。

触发器限制:为一布尔表达式,当触发器激发时该条件必须为true。触发器的限制是用when子句来指定。

触发器的动作:为一个pl/sql块(过程),由sql语句和pl/sql语句组成。当触发语句发出,触发器的限制计算得true时,它被执行。在触发器动作的语句中,可使用触发器的处理的当前行的列值(新值、老值),使用形式为:

new.列名 引用新值

ole.列名 引用老值

在定义触发器时可指定触发器动作执行次数:受触发语句影响每一行执行一次或是对触发语句执行一次。

对每一触发语句可有四种类型触发器:

行触发器:对受触发语句所影响的每一行,行触发器激发一次。

语句触发器:该类型触发器对触发语句执行一次,不管其受影响行数。

定义触发器可以指定触发时间,指定激发器动作的执行相对于触发语句执行之后或之前。

before触发器:该触发器执行触发器动作是在触发语句执行之前。

after触发器:该触发器执行触发器动作是在触发语句执行之后。

一个触发器可处于两种不同的方式:使能触发器和使不能触发器。

使能触发器:只要当触发语句发出,触发器限制计算为true,这种类型的触发器执行其触发动作。

使不能触发器:这种触发器即使其触发语句被发出,触发器限制计算为true,也不执行触发器动作。

触发器的源代码存储在数据库中,在第一次执行时,触发器的源代码被编译,存储在共享池中。如果触发器从共享池中挤了,再使用时必须再重新编译。

七、分布处理和分布式数据库

1.简介

一个分布式数据库在用户面前为单个逻辑数据库,但实际上是由存储在多台计算机上的一组数据库组成。在几台计算机 上的数据库通过网络可同时修改和存取,每一数据库受它的局部的dbms控制。分布式数据库中每一个数据库服务器合作地维护全局数据库的一致性。

在系统中的每一台计算机称为结点。如果一结点具有管理数据库 软件,该结点称为数据库服务器。如果一个结点为请求服务器的信息的一应用,该结点称为客户。在oracle客户,执行数据库应用,可存取数据信息和与用户交互。在服务器,执行oracle软件,处理对oracle数据库并发、共享数据存取。oracle允许上述两部分在同一台计算机上,但当客户部分和服务器部分是由网连接的不同计算机上时,更有效。

分布处理是由多台处理机分担单个任务的处理。在oracle数据库系统中分布处理的例子如:

客户和服务器是位于网络连接的不同计算机上。

单台计算机上有多个处理器,不同处理器分别执行客户应用。

sql*net是oracle网络接口,允许运行在网络工作站的oracle工具和服务器上,可存取、修改、共享和存储在其它服务器上的数据。saql*net可被认为是网络通信的程序接口。sql*net利用通信协议和应用程序接口(api)为oarcle提供一个分布式数据库和分布处理。

sql*net驱动器为在数据库服务器上运行的oracle进程与oracle工具的用户进程之间提供一个接口。

参与分布式数据库的每一服务器是分别地独立地管理数据库,好像每一数据库不是网络化的数据库。每一个数据库独立地被管理,称为场地自治性。场地自治性有下列好处:

系统的结点可反映公司的逻辑组织。

由局部数据库管理员控制局部数据,这样每一个数据库管理员责任域要小一些,可更好管理。

只要一个数据库和网络是可用,那么全局数据库可部分可用。不会因一个数据库的故障而停止全部操作或引起性能瓶颈。

故障恢复通常在单个结点上进行。

每个局部数据库存在一个数据字典。

结点可独立地升级软件。

可从分布式数据库的所有结点存取模式对象,因此正像非分布的局部的dbms,必须提供一种机制,可在局部数据库中引用一个对象。分布式dbms必须提供一种命名模式,以致分布式数据库中一个对象可在应用中唯一标识和引用。一般彩在层次结构的每一层实施唯一性。分布式dvms简单地扩充层次命名模型,实施在网络上唯一数据库命名。因此一个对象的全局对象名保证在分布式数据库内是唯一。

oracle允许在sql语句中使用佤对象名引用分布式数据库中的模式对象(表、视图和过程)。在oracle中,一个模式对象的全局名由三部分组成:包含对象的模式名、对象名、数据库名、其形式如:

其中scott为模式名,emp为表名,@符号之后为数据库名.

一个远程查询为一查询,是从一个或多个远程表中选择信息,这些表驻留在同一个远程结点.

一个分布式查询可从两个或多个结点检索数据.一个分布式更新可修改两个或两个以上结点的数据.

一个远程事务为一个事务,包含一人或多个远程语句,它所引用的全部是在同一个远程结点上.一个分布式事务中一个事务,包含一个或多个语句修改分布式数据库的两个或多个不同结点的数据.

在分布式数据库中,事务控制必须在网络上直辖市,保证数据一致性.两阶段提交机制保证参与分布式事务的全部数据库服务器是全部提交或全部回滚事务中的语句.

oracle分布式数据库系统结构可由oracle数据库管理员为终端用户和应用提供位置透明性,利用视图、同义词、过程可提供oracle分布式数据库系统中的位置透明性.

oracle允许在select(查询)、insert、update、delete、select…for update和lock table语句中引用远程数据。对于查询,包含有连接、聚合、子查询和select …for update,可引用本地的、远程的表和视图。对于update、insert、delete和lock table语句可引用本地的和远程的表。注意在引用long和long raw列、序列、修改表和封锁表时,必须位于同一个结点。oracle不允许作远程ddl语句。

在单场地或分布式数据库中,所有事务都是用commit或rollback语句中止。oracle提供两种机制实现分布式数据库中表重复的透明性:表快照提供异步的表重复;触发器实现同步的表的重复。在两种情况下,都实现了对表重复的透明性。

2.分布式数据库全局名与数据库链

1)分布式数据库全局名:每一个数据库有一个唯一的全局名,由两部分组成:数据库名(小于等于8字符)和网络域。全局数据库名的网络域成分必须服从标准互联网规范。域名中的层次 由符号“.”分开,域名的次序由叶至根,从左至右。

2)数据库链:为对过程数据库定义的一路径。数据库链对分布式数据库的用户是透明的,数据库链的名字与链所指向的数据库的全局名相同。其由二部分组成:远程账号和数据库串。例建立数据库链的形式:

creat public datebase link sale。division3。acme。com

connect to guest identified by password

using‘db串’;

其中:sales。divisin3。acme。com为定义的链名;guest/password 为远程数据库的用户账号和口令;db串用于远程连接。由账号和db串构成完全路径。如果只有一个则为部分路径。

有三种数据库链可用于决定用户对全部对象名的引用:

专用数据库链:为一指定用户建立。专用数据库链仅链的主人可使用。在sql语句中用于指定一全局对象名或者在持有者的视图过程定义中使用。

公用数据库链:为特殊的用户组public建立。公用数据库链可为任何用户使用,在sql语句中用于指定一个全局对象名或对象定义。

网络数据链:由网络域服务器建立和管理,可为网络中的任何数据库的任何用户使用,可在sql语句中指定全局对象名或对象定义中使用。注意:当前网络域服务器对oracle不能用,所以网络数据库链不可用。

3.表快照

oracle的表快照特征允许一个主表在分布式数据库的其它结点进行复制。只允许修改主表,而复制只可读。主表达式每一个复制称为一个快照。快照异步的刷新,反映主表的一个最近事务一致状态。

一个快照可为表的完全拷贝或者为表的一个子集,由引用一个或多个主表、视图或其它快照的分布式查询所定义。包含主表的数据库称为主数据库。

快照有简单快照和复杂快照。简单快照的每行是基于单个远程表中的一行。所以定义简单快照的查询中不能有groub by或connect by子句,或子查询、连接或集合操作。如果在快照定义的查询中包含有上述子句或操作,这种快照称为复杂快照。

在快照建立时,oracle在快照的模式中建立几种内部对象:

在快照结点,oracle建立一基表用于存储由快照定义的查询所检索的行,然后为该表建立一个只读的视图,并为远程主表建立一视图,该视图用于新快照。

一个快照周期地被刷新,反映它的主表的当前情况。为了刷新一快照,快照定义查询是被发出,其查询结果想在存储在快照中,代替以前的快照数据。

上一篇:律师担任法律顾问工作指引下一篇:骨干教师外出培训开班典礼发言稿