1、ORACLE数据库管理系统介绍202020年4月19日文档仅供参考ORACLE 数据库管理系统介绍1.ORACLE的特点:可移植性 ORACLE采用C语言开发而成,故产品与硬件和操作系统具有很强的独立性。从大型机到微机上都可运行ORACLE的产品。可在UNIX、DOS、Windows等操作系统上运行。可兼容性 由于采用了国际标准的数据查询语言SQL,与IBM的SQL/DS、DB2等均兼容。并提供读取其它数据库文件的间接方法。可联结性 对于不同通信协议,不同机型及不同操作系统组成的网络也能够运行ORACLE数据库产品。2.ORACLE的总体结构(1)ORACLE的文件结构 一个ORACLE数据库
2、系统包括以下5类文件:ORACLE RDBMS的代码文件。数据文件 一个数据库可有一个或多个数据文件,每个数据文件能够存有一个或多个表、视图、索引等信息。日志文件 须有两个或两个以上,用来记录所有数据库的变化,用于数据库的恢复。控制文件 能够有备份,采用多个备份控制文件是为了防止控制文件的损坏。参数文件 含有数据库例程起时所需的配置参数。(2)ORACLE的内存结构 一个ORACLE例程拥有一个系统全程区(SGA)和一组程序全程区(PGA)。SGA(System Global Area)包括数据库缓冲区、日志缓冲区及共享区域。PGA(Program Global Area)是每一个Server
3、进程有一个。一个Server进程起动时,就为其分配一个PGA区,以存放数据及控制信息。(3)ORACLE的进程结构ORACLE包括三类进程:用户进程 用来执行用户应用程序的。服务进程 处理与之相连的一组用户进程的请求。后台进程 ORACLE为每一个数据库例程创立一组后台进程,它为所有的用户进程服务,其中包括:DBWR(Database Writer)进程,负责把已修改的数据块从数据库缓冲区写到数据库中。LGWR(Log Writer)进程,负责把日志从SGA中的缓冲区中写到日志文件中。SMON(System Moniter)进程,该进程有规律地扫描SAG进程信息,注销失败的数据库例程,回收不再
4、使用的内存空间。PMON(Process Moniter)进程,当一用户进程异常结束时,该进程负责恢复未完成的事务,注销失败的用户进程,释放用户进程占用的资源。ARCH(ARCHIVER)进程。每当联机日志文件写满时,该进程将其拷贝到归档存储设备上。另外还包括分布式DB中事务恢复进程RECO和对服务进程与用户进程进行匹配的Dnnn进程等。3.ORACLE的逻辑结构构成ORACLE的数据库的逻辑结构包括:(1)表空间(2)5种类型的段(segment)数据段;索引段;回滚(rollbock)段;临时段;自举(bootstrap)段。段的分配单位叫范围(Extent)表空间(Tablespace)
5、 一个数据库划分成的若干逻辑部分称为表空间。一个数据库能够有一个或多个表空间,初始的表空间命名为SYSTEM,每一个逻辑表空间对应于一个或多个物理文件。DBA使用表空间做以下工作:控制数据库对象,如表、索引和临时段的空间分配。为数据库用户设置空间配额。利用个别表空间的在线或离线,控制数据的可用性。后备或恢复数据。经过分配空间,以改进性能。在每个数据库中都存在SYSTEM表空间,它在建立数据库时自动建立。在该表空间中,包含数据库的数据字典,其中存储全部数据库对象的名字和位置。SYSTEM表空间总是在线的,像其它表空间一样,能够经过增加新的数据库文件来扩大。一个表空间可包含许多表和索引。但一个表和
6、索引不能跨越表空间,可跨越组成表空间的文件。在DB的打开的情况下,DBA利用ALTER TABLESPACE语句,能够实施表空间的在线或离线。SYSTEM表空间必须在线。表空间离线有下列原因:一般为了使部分数据库不能使用,而允许正常存取数据库其余部分。执行表空间离线备份。一个离线的表空间,不能被应用用户读或编辑。能够增加数据文件扩大已有的表空间,也可增加新的表空间使数据库容量增大,或分配空间给某个应用。使用ALFER TABLESPACE ADD FILE语句将另一个数据文件加入到已存在表空间中。使用CREATE TABLESPACE语句可建立一个新的表空间。段(segment) 表空间中的全
7、部数据存储在以段划分的数据库空间中。一个段是分配给数据库用于数据存储的范围的集合。数据能够是表、索引或RDBMS所需要的临时数据。段是表空间的下一个逻辑存储的级别。一个段不能跨越一个表空间,但可跨越表空间内的文件。一个数据库最多需要五种段类型:数据段 一个包含一个表(或聚集)的全部数据,一个表(或聚集)总有一个单个数据段。索引段 一个索引段包含对一个表(或聚集)建立的一个索引的全部索引数据。一个表能够有一个、多个或者没有索引段,取决于它所拥有的索引个数。一个聚集必须至少有一个索引段,即在聚集码上建立聚集索引。回滚段 每个DB有一个或多个回滚段。一个回滚段是DB的一部分,它记录在某一情况下被撤消
8、的动作。回滚段用于事务控制和恢复。临时段 在处理查询时,ORACLE需要临时工作空间,用于存储语句处理的中间结果,这个区称为临时段。自举段 自举段在SYSTEM表空间中,在数据库建立时建立。它包括数据字典定义,在数据库打开时装入。4.用户数据库对象由用户建立的对象驻留在表空间中,含有真正的数据。数据库对象有表、视图、聚集、索引、伪列和序号生成器。(1)聚集(Cluster) 聚集是存储数据的一种可选择的方法。聚集包括存储在一起的一组表,它们共享公共列并经常一起使用。由于内容相关而且物理地存储在一起,存取时间得到改进,存储空间能够减少。聚集是一种优化措施。 聚集对性能的改进,依赖于数据的分布和S
9、QL操作的内容。特别是使用聚集对连接非常有利。能够明显地提高连接的速度。建立聚集命令的基本格式:SQLCREATE CLUSTER聚集名(列定义,);利用聚集建立表命令基本格式:SQLCREATE TABLE新表名(列定义,CLUSTER聚集名(聚集列);在聚集码上必须建立一个聚集索引,对于每一数据块上每个聚集码值有一索引项。这个索引必须在DML语句对聚集表操作前建立。建立索引的语句是:CREATE INDEX索引名ON CLUSTER聚集名;(2)序号生成器 序号(SEQUENCE)生成器为表中的单列或多列生成顺序号。利用序号可自动地生成唯一主码。使用SQL语句定义序号,给出一些信息(如序号
10、名、是升序或降序、每个序号间的间隔和其它信息)。所有序号存储在数据字典表中。所有序号定义存储在数据字典的SEQUENCE表中。用户能够经过字典视图USER-SE-QUENCES、ALL-SEQUENCES和DBA-SEQUENCES查询和存取。建立序号生成器的语句是:CREATE SEQUENCE序号生成器名 其它选项。一旦序号生成器S被定义。可用S.Currval来引用S序号生成器的当前值。用S.nextval产生下一个新的序号并加以引用。(3)伪列 伪列的行为像表的一列,但不真正存在于表中,在查询时可引用伪列,但伪列不能插入、删除或修改。5.数据字典数据字典ORACLE RDBMS最重要的
11、部分之一。数据字典含有一组系统定义的表,只能读,是关于数据库的引用指南。它可提供以下信息:ORACLE用户的用户名;每个用户被授予的权限和角色;实体的名字和定义;完整性约束为数据库实体分配的空间;通用的数据库结构;审计信息;触发子程序等的存储。数据字典是以表和视图构成的,像其它数据库数据一样,可用SQL语言查询数据字典。数据字典在DB建立时建立。每当DB进入操作,数据字典就由ORACLE RDBMS负责修改。数据库建立时有两个默认DBA用户:SYS、SYSTEM。SYS持有基本表中的数据。数据字典包含一组基表和相关的视图,可分为以下几类: 类 描 述 DBA- 只有DBA可存取的视图,给出数据
12、库中定义的任何实体的信息 USER- 对任何用户可用的视图,给出她们自己的实体的信息 ALL- 对任何用户可用的视图,给出用户可存取的所有实体的信息 其中代表表名或视图名下面列出的是一些常见的表或视图的名称。(1)DTAB 描述了组或数据字典的所有表。(2)TAB 用户建的所有基本表、视图和同义词。(3)COL 用户创立基本表的所有列的信息。(4)SYNONYMS 用户可存取的同义名词、专用名和公用名。(5)CATALOG 用户可存取的表、视图、同义词、序列。(6)CONSTRAINTS 用户可存取的约束。(7)INDEXES 用户可存取的表和聚集的序列。(8)OBJECTS 用户可存取的对象
13、。(9)TABLES 用户可存取的表。(10)USERS 查看当前全部用户。(11)VIEWS 查看用户可存取的视图。(12)SYSTABAUTH 用户对数据对象的使用权限。能够用SQLSELECT*FROM字典表名或视图名WHERE条件来读取有关信息。能够用SQLDESCRIBE表名来查看表的结构定义。可是数据库字典的结构不可改。用DESCRIBE命令还能够查看视图及过程的定义。6.ORACLE的SQL、PL/SQL与SQL*PLUS作为ORACLE数据库核心的SQL语言是ANSI和ISO的标准SQL的扩充。用来存储、检索和维护数据库中的信息,并控制对数据库的存取事务。由于RDBMS执行SQ
14、L语句时,是一次只执行一条语句,它是非过程化的。这就使得单条的SQL语句使用方便,功能强大。用户只需说明操作目的,不必关心具体操作的实现方法。但在实际数据库应用开发中,往往要依据前一步对数据库操作的结果或上一个事务提交的情况来确定下一步的操作。故ORACLE推出了一种PL/SQL工具,它扩充了SQL语句,使之具有可进行过程化编程的能力,如循环、分支功能。PL/SQL可支持变量和常量的使用。例如在SELECT查询语句的where子句中能够使用变量来书写条件表示式。SQL*PLUS是ORACLE用来存储、查询、操纵、控制和报告数据库中信息的一个交互式工具。它是一种集编辑、调试、运行于一体的开发环境
15、。在SQL*PLUS的这种运行环境下,既能够使用SQL命令、PL/SQL语句、及SQL*PLUS自己提供的命令,又能够运行由上述三类命令(或语句)编辑而成的命令文件。SQL*PLUS提供的附加命令主要用来编辑、运行上述三类命令及命令文件和对查询结果进行格式化输出等功能。7.数据库系统的管理ORACLE作为一个大型的数据系统,一般包含很多用户的数据。在应用开发过程中,有许许多多的各类人员进行开发和应用。因此必须要求有人对数据库系统进行临时管理,并进行数据的备份等工作。这种人被称为数据库管理员(Data Base Administrator)。她们必须理解数据库系统管理,清楚数据库包含的数据内容、
16、运行状况等。一般说来,DBA不是指具体的人,而是指对数据库能够行使DBA特权的用户。DBA具有如下责任:(1)ORACLE服务器和客户工作站软件的安装和升级;(2)创立基本的数据库存储结构(表空间);(3)创立基本的数据库客体(表、视图、索引);(4)修改数据库结构;(5)给用户授权,维护系统安全;(6)控制和管理用户对数据库的访问;(7)监视和优化数据库的性能;(8)计算数据库信息的后备和恢复;(9)后备和恢复数据库;(10)构造ORACLE服务器,如创立数据库链、客体同义词等。而应用开发人员须完成:(1)应用程序设计;(2)应用的数据库结构设计和修改;(3)为DBA提供必要的信息;(4)完
17、成应用程序的开发。 接下来就DBA的具体工作及所使用的工具、命令作一下介绍。8.数据库的安装安装ORACLE之前,必须首先要确定拟安装ORACLE DBMS的计算机系统是否已满足了该机型、版本的ORACLE核心所要求的硬件、软件及网络协议条件。确保有足够的外存空间和RAM空间。比如在SUN工作站,Solaris操作系统,一般有16M内存空间,200300MB外存空间就可装载ORACLE核心及各种字符或图形开发工具,并可满足今后用户对资源的需求。ORACLE的安装分三步进行:安装前准备工作,准备外存空间,建立ORACLE用户及用户组,创立修改必要的系统文本文件;安装使用ORACLE安装程序进行安
18、装,回答安装程序提出的问题,选择特定ORACLE产品;安装后参数调整和测试。9.启停数据库(1)初始的ORACLE数据库:初始的ORACLE数据库命令为ORACLE,由两个表空间构成:SYSTEM表空间,存放数据字典的所有表和视图;USERS表空间,存放所有自动生成的样本表,如EMP、DEPT等等。ORACLE初始数据库应有下列文件;DBS1.ORA、DBS2.ORA,为SYSTEM表空间的数据库文件;USERS1.ORA、USERS2.ORA,为USERS表空间的数据文件;LOG1.ORA、LOG2.ORA,为数据库的重做日志(Redo Log)文件;CONTROL1.ORA,为数据库的控制
19、文件。初始数据库自动生成四个用户名:用户名为SYS,口令为CHNGE-ON-INSTALL;SYS拥有数据字典中的所有基本表和视图。为维护数据字典的完整性,SYS的表既不能修改,也不能创立。SYS是有DBA权限的用户。用户名为SYSTEM,口令为MANAGER,是DBA权限的用户。SCOTT,具有CONNECT和RESOURCE权限,使用USERS表空间,口令为TIGER,拥有所有样本表。PUBLIC,用于对表和视图的公共存取。当用户为一数据库客体授权给用户PUBLIC时,则任意用户都能访问该客体的数据。(2)初始化和构造文件:在ORACLE数据库中,存在两个重要文件:初始化文件INIT.OR
20、A,当数据库启动时用于对ORACLE服务器进行初始设置,该文件存于执行SQL*DBA的机器上;配置文件CONFIG.ORA,在许多场合由客户机上的工具使用,如用于建立与ORACLE服务器的正确连接。该文件存于执行客户工具的机器上。在ORACLE服务器上也有CONFIG.ORA,也相当有用,如正确标识特定程序文件所在子目录。(3)SQL*DBA的进入和退出进入SQL*DBA的过程随系统不同而不同,也依赖于在哪进入SQL*DBA,细节参见有关手册。一旦进入了SQL*DBA,则屏幕显示SQL*DBA的提示符:SQLDBACRSQLDBA它提示你健入SQL*DBA的命令。它可接收SQL语句及数据库管理
21、命令,前者必须以“;”结束,后者不需后缀“;”。要退出SQL*DBA则键入EXIT命令:SQLDBAEXITCR(4)数据库的启动和停止只有在数据库被启动以后,用户才能够访问数据库。用户要正常结束对数据库的操作也必须执行停止数据库命令,以便正确保存缓冲区中的数据。非正常结束可能造成数据丢失。启动ORACLE数据库,需要完成启动数据库例程、安装数据库和打开数据库三个任务。停止数据库是逆序的三个任务,即关闭数据库、卸载数据库和停止数据库例程。启动的步骤为:进入SQL*DBA,这在上面已介绍过。以internal身份连到数据库上,以便对数据库进行起、停操作。SQLDBACONNECT INTERNA
22、LSQLDBASTARTUP至于执行带参数的STARTUP可用于数据库备份。停止数据库命令为:SQLDBASHUTDOWNABORTIMMEDIATENORMAL其中:使用ABORT参数,则立即停止数据库;使用IMMEDIATE则回滚未完成事务,停止数据库;使用NORMAL则直到所有数据库用户都撤去在数据库上的登录之后,再停止数据库。10.数据库的管理ORACLE核心在安装过程中,已经建一个数据库,DBA也能够再建立其它数据库或修改已有的数据库定义。(1)创立数据库数据库的创立就是准备若干个操作系统文件,使其能够作为一个ORACLE数据库运转,用于数据存储。然而,对于一个数据库系统来说,无论其
23、数据库由多少个数据库文件组成或被多少个例程所存取,数据库需要被创立一次。针对一个现存的数据库进行创立工作,将毁坏先前数据库文件中已经存在的任何数据。 (2)修改数据库配置ORACLE数据库能够处于三种不同的状态,决定了其可用性:卸载状态 数据库当前不与任何例程相联系,DBA用户和普通用户均不能存取。装载且关闭状态 数据库当前已与一个例程相联系,仅DBA用户能够存取(进行系统维护)。 装载且打开状态 数据库当前能够用于正常的数据库操作,DBA用户和普通用户均能够存取。DBA能够利用SQL*DBA命令将数据库置成其中的任何一种状态,然后利用SQL语句的ALTER DATABASE改变数据库的状态。
24、DBA能够修改数据库配置的几种方式是:按共享或排斥方式装载或卸载数据库;打开或关闭数据库;添加或取消重做日志文件;重新命名重做日志文件或数据库文件;设置重做日志文件使用模式。11.表空间的管理ORACLE数据库是一个或多个表空间(Tablespace)逻辑地组成的,表空间又是若干空间区段逻辑地组成的,而空间区段则是若干连续地址的ORACLE块组成(ORACLE块的大小依赖于操作系统)。表空间是数据库的逻辑划分,从其物理形式来看,对应着一个或多个操作系统文件。这些操作系统文件能够分布在系统的任何外部存储设备上,ORACLE则管理着这些数据库文件的存储空间,而操作系统对数据库存储空间的分配不作任何
25、干预。表空间容纳着许多数据库实体,诸如表、视图、索引、聚簇、滚回段和临时段等。当用户创立某种数据库实体时,ORACLE RDBMS按ORACLE命令所给出的“存储配置参数”分配相应的存储空间。12.安全管理数据库的安全管理是为了保护数据库以防止非法使用数据库而造成数据的泄露和破坏。ORACLE经过检查用户权力来限制各类用户对数据库的操作权力;再经过对用户关于某一数据库实体操作权限的验证来保证每一个数据库实体不被非法访问或修改。(1)建立用户命令 能够在SQL*PLUS下用SQL命令来建立数据库用户,命令要各式如下:SQLCREATE USER用户名IDENTIFIED BY口令;(2)用户权力
26、 一个新用户被建立,不意味着她就能够存取数据库中的数据,必须由DBA对它进行授权。关于对数据库的操作有三种权力,下面就介绍一下用户权力及其含义:CONNECT权力 用户为访问ORACLE数据库和任何实用程序,都需要具有CONNECT权力,具有CONNECT权力的用户具有唯一的用户名称和口令。具有CONNECT权力的用户能够做如下工作:访问ORACLE;查询(SELECT)别的用户建立的表或视图,前提是表或视图的所有者(别的用户)已授与该用户对该表进行SELECT的权力;建立视图和同义词RESOURCE权力 若同时具有CONNECT及RESOURE权力,除具有CONNECT中的权力外还有:建立(
27、CREATE)表、索引、聚集;您对自己拥有的客体或其它用户授予您对其客体所拥有的权力(必须具有传递权)能够授与(GRANT)别的用户或收回(REVOKE)这些权力,即有传递与收回权。DBA经过ORACLE的SQL*Plus的GRANT语句来为用户授权,其格式为:SQLGRANTCONNECT|RESOURCE|DBA|TOINENTIFIEDBY口令;SQLREVOKECONNECT|RESOURCE|DBAFROM;当用户被取消了DBA权力,还拥有RESTORE和CONNECT权力。取消了RESTORE权力,还拥有CONNECT权力。取消了CONNECT权力,用户对数据库不能进行任何操作。如
28、果一个用户已被取消了CONNECT权力,但属于这个用户的表继续存在,当它重新获得数据库访问权时,能够重新使用这些表。(3)数据库实体的授权 当一个用户用ORACLE命令创立了一个实体,即表、视图或序号生成器以后,她就成为该实体的所有者,能够就该实体向其它用户授权,以便其它用户也可对该实体进行授权所允许的操作。(4)经过查看数据字典表SYSTABAUTH能够了解有关表的权限。SQLSELECT*from systabauth;(5)ORACLE还提供了一种审计机制,来记录对数据库的操作,以便监视用户对数据库施加的动作。利用审计功能,DBA能够:监视成功或失败的注册或注销;监视GRANT和REVO
29、KE;禁止或允许写入审计追踪表;为数据库设置缺省审计选择项。例如:DBA能够审计:存取数据库不成功的企图;存取未授权表的各种企图;任何用户GRANT和REVOKE语句的使用情况。13.完整性约束数据库的完整性是指数据的正确性和相容性。DBMS必须提供一种机制来保证数据库中数据的完整性,这种功能称为完整性检查。数据的完整性是为了防止数据库存在不符合语义的数据,防止错误信息输入和输出。一般数据库系统经过定义完整性约束条件来规定数据的完整性。数据的约束条件是语义的体现,这些完整性约束将作为模式的一部分存到数据字典中。14.ORACLE的实用程序ORACLE产品的核心,包括数据管理核心模块及帮助数据库管理员(DBA)和用户维护、监视、数据输入和输出(实用程序),主要的有:Imp/Exp数据备份及恢复工具、ODL将外部文件转换成ORACLE数据库数据的工具及SQL*DBA管理ORACLE服务器及其上数据库的交互式工具。