ORACLE认证基础:ORACLE系统概述
来源:优易学  2005-10-22 12:55:28   【优易学:中国教育考试门户网】   资料下载   IT书店
接存取。

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

   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@SALES.DIVISION3.ACME.COM

   其中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建立一基表用于存储由快照定义的查询所检索的行,然后为该表建立一个只读的视图,并为远程主表建立一视图,该视图用于新快照。

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

   当快照为简单快照时,可以由快照日志来刷新,这样可加快刷新处理。快照日志是在主表数据库中的一表,与主表相关。ORACLE使用快照日志跟踪主表中已修改的行。当基于主表的简单快照刷新时,仅需要快照日志的相应行来刷新快照,这种刷新称为快速刷新

上一页  [1] [2] [3] 

责任编辑:虫虫

文章搜索:
 相关文章
热点资讯
热门课程培训