2_Oracle教程

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1.Oracle数据库的基本概念1.1.数据库结构和空间管理一个ORACLE数据库是数据的集合,被处理成一个单位。一个ORACLE数据库有一个物理结构和一个逻辑结构。物理数据库结构(physicaldatabasestructure)是由构成数据库的操作系统文件所决定。每一个ORACLE数据库是由三种类型的文件组成:数据文件、日志文件和控制文件。数据库的文件为数据库信息提供真正的物理存储。逻辑数据库结构是用户所涉及的数据库结构。一个ORACLE数据库的逻辑结构由下列因素决定:一个或多个表空间数据库模式对象(即表、视图、索引、聚集、序列、存储过程)逻辑存储结构如表空间(dataspace)、段(segment)和范围将支配一个数据库的物理空间如何使用。模式对象(schemaobject)用它们之间的联系组成了一个数据库的关系设计。1)物理结构(1)数据文件每一个ORACLE数据库有一个或多个物理的数据文件(datafile)。一个数据库的数据文件包含全部数据库数据。逻辑数据库结构(如表、索引)的数据物理地存储在数据库的数据文件中。数据文件有下列特征:一个数据文件仅与一个数据库联系。一旦建立,数据文件不能改变大小一个表空间(数据库存储的逻辑单位)由一个或多个数据文件组成。数据文件中的数据在需要时可以读取并存储在ORACLE内存储区中。例如:用户要存取数据库一表的某些数据,如果请求信息不在数据库的内存存储区内,则从相应的数据文件中读取并存储在内存。当修改和插入新数据时,不必立刻写入数据文件。为了减少磁盘输出的总数,提高性能,数据存储在内存,然后由ORACLE后台进程DBWR决定如何将其写入到相应的数据文件。(2)日志文件每一个数据库有两个或多个日志文件(redologfile)的组,每一个日志文件组用于收集数据库日志。日志的主要功能是记录对数据所作的修改,所以对数据库作的全部修改是记录在日志中。在出现故障时,如果不能将修改数据永久地写入数据文件,则可利用日志得到该修改,所以从不会丢失已有操作成果。日志文件主要是保护数据库以防止故障。为了防止日志文件本身的故障,ORACLE允许镜象日志(mirroredredolog),以致可在不同磁盘上维护两个或多个日志副本。日志文件中的信息仅在系统故障或介质故障恢复数据库时使用,这些故障阻止将数据库数据写入到数据库的数据文件。然而任何丢失的数据在下一次数据库打开时,ORACLE自动地应用日志文件中的信息来恢复数据库数据文件。(3)控制文件每一ORACLE数据库有一个控制文件(controlfile),它记录数据库的物理结构,包含下列信息类型:数据库名;数据库数据文件和日志文件的名字和位置;数据库建立日期。为了安全起见,允许控制文件被镜象。每一次ORACLE数据库的实例启动时,它的控制文件用于标识数据库和日志文件,当着手数据库操作时它们必须被打开。当数据库的物理组成更改时,ORACLE自动更改该数据库的控制文件。数据恢复时,也要使用控制文件。2)逻辑结构数据库逻辑结构包含表空间、段、范围(extent)、数据块和模式对象。(1)表空间一个数据库划分为一个或多个逻辑单位,该逻辑单位称为表空间(TABLESPACE)。一个表空间可将相关的逻辑结构组合在一起。每个数据库可逻辑划分为一个或多个表空间每一个表空间是由一个或多个数据文件组成,该表空间物理地存储表空间中全部逻辑结构的数据。每一个ORACLE数据库包含有一个名为SYSTEM的表空间,在数据库建立是自动建立。在该表空间中总包含有整个数据库的数据字典表。最小的数据库可只需要SYSTEM表空间。该表空间必须总是在线。表和存储的PL/SQL程序单元(过程、函数、包和触发器)的全部存储数据是存储在SYSTEM表空间中。如果这些PL/SQL对象是为数据库建的,DBA在SYSTEM表空间中需要规划这些对象所需要的空间。表空间利用增加数据文件扩大表空间,表空间的大小为组成该表空间的数据文件大小的和。ORACLE数据库中一表空间是由一个或多个物理数据文件组成,一个数据文件只可与一个表空间想联系。当为一表空间建立一数据文件时,ORACLE建立该文件,分配指定的磁盘空间容量。(2)段、范围和数据块ORACLE通过段、范围和数据块逻辑数据结构可更细地控制磁盘空间的使用。段段(SEGMENT)包含表空间中一种指定类型的逻辑存储结构,是由一组范围组成。在ORACLE数据库中有几种类型的段:数据段、牵引段、回滚段和临时段。数据段:对于每一个非聚集的表有一数据段,表的所有数据存放在该段。每一聚集有一个数据段,聚集中每一个表的数据存储在该段中。索引段:每一个索引有一索引段,存储索引数据。回滚段:是由DBA建立,用于临时存储要撤消的信息,这些信息用于生成读一致性数据库信息、在数据库恢复时使用、回滚未提交的事务。临时段:当一个SQL语句需要临时工作区时,由ORACLE建立。当语句执行完毕,临时段的范围退回给系统。ORACLE对所有段的空间分配,以范围为单位。范围一个范围(EXTENT)是数据库存储空间分配的一个逻辑单位,它由连续数据块所组成。每一个段是由一个或多个范围组成。当一段中间所有空间已完全使用时,ORACLE为该段分配一个新的范围。为了维护的目的,在数据库的每一段含有段标题块(segmentheaderblock)说明段的特征以及该段中的范围目录。数据块数据块(datablock)是ORACLE管理数据文件中存储空间的单位,为数据库使用的I/O的最小单位,其大小可不同于操作系统的标准I/O块大小。1.2.数据类型数据类型参数描述char(n)n=1to2000字节定长字符串,n字节长,如果不指定长度,缺省为1个字节长(一个汉字为2字节)varchar2(n)n=1to4000字节可变长的字符串,具体定义时指明最大长度n,这种数据类型可以放数字、字母以及ASCII码字符集(或者EBCDIC等数据库系统接受的字符集标准)中的所有符号。如果数据长度没有达到最大值n,Oracle8i会根据数据大小自动调节字段长度,如果你的数据前后有空格,Oracle8i会自动将其删去。VARCHAR2是最常用的数据类型。可做索引的最大长度3209。number(m,n)m=1to38n=-84to127可变长的数值列,允许0、正值及负值,m是所有有效数字的位数,n是小数点以后的位数。如:number(5,2),则这个字段的最大值是99,999,如果数值超出了位数限制就会被截取多余的位数。如:number(5,2),但在一行数据中的这个字段输入575.316,则真正保存到字段中的数值是575.32。如:number(3,0),输入575.316,真正保存的数据是575。date无从公元前4712年1月1日到公元4712年12月31日的所有合法日期,Oracle8i其实在内部是按7个字节来保存日期数据,在定义中还包括小时、分、秒。缺省格式为DD-MON-YY,如07-11月-00表示2000年11月7日。long无可变长字符列,最大长度限制是2GB,用于不需要作字符串搜索的长串数据,如果要进行字符搜索就要用varchar2类型。long是一种较老的数据类型,将来会逐渐被BLOB、CLOB、NCLOB等大的对象数据类型所取代。raw(n)n=1to2000可变长二进制数据,在具体定义字段的时候必须指明最大长度n,Oracle8i用这种格式来保存较小的图形文件或带格式的文本文件,如MiceosoftWord文档。raw是一种较老的数据类型,将来会逐渐被BLOB、CLOB、NCLOB等大的对象数据类型所取代。longraw无可变长二进制数据,最大长度是2GB。Oracle8i用这种格式来保存较大的图形文件或带格式的文本文件,如MiceosoftWord文档,以及音频、视频等非文本文件。在同一张表中不能同时有long类型和longraw类型,longraw也是一种较老的数据类型,将来会逐渐被BLOB、CLOB、NCLOB等大的对象数据类型所取代。blobclobnclob无三种大型对象(LOB),用来保存较大的图形文件或带格式的文本文件,如MiceosoftWord文档,以及音频、视频等非文本文件,最大长度是4GB。LOB有几种类型,取决于你使用的字节的类型,Oracle8i实实在在地将这些数据存储在数据库内部保存。可以执行读取、存储、写入等特殊操作。bfile无在数据库外部保存的大型二进制对象文件,最大长度是4GB。这种外部的LOB类型,通过数据库记录变化情况,但是数据的具体保存是在数据库外部进行的。Oracle8i可以读取、查询BFILE,但是不能写入。大小由操作系统决定。1.3.基本表表(table)为数据库中数据存储的基本单位,其数据按行、列存储。每个表具有一表名和列的集合。每一列有一个列名、数据类型、宽度或精度、比例。一行是对应单个记录的列信息的集合。createtableUser_Base_Info_qiuzy(USER_IDVARCHAR2(100)notnull,PASSWORDVARCHAR2(20)notnull,CREATE_DATEDATE,UPDATE_DATEDATE,primarykey(USER_ID));1.4.视图一个视图(view)是由一个或多个表(或其他视图)中的数据的一种定制的表示,是用一个查询定义,所以可认为是一个存储的查询(storedquery)或是一个虚表(virtualtable)。视图可在使用表的许多地方使用。视图与表不同,一个视图不分配任何存储空间,视图不真正地包含数据。由查询定义的视图相应于视图引用表中的数据。视图只在数据字典中存储其定义。引入视图有下列好处:通过限制对表的行预定义集合的存取,为表提供附加的安全性隐藏数据复杂性。为用户简化命令为基本表的数据提供另一种观点。可将应用隔离基本表定义的修改用于不用视图无法表示的查询。可用于保存复杂查询。CREATEVIEWUser_Base_Info_qiuzy_viewAS(SELECT*fromUser_Base_Info_qiuzywhereuser_idlike'qiuzy%');1.5.索引索引(index)是与表和聚集相关的一种选择结构。索引是为提高数据检索的性能而建立,利用它可快速地确定指定的信息。ORACLE索引为表数据提供快速存取路径。索引适用于一范围的行查询或指定行的查询。索引可建立在一表的一列或多列上,一旦建立,由ORACLE自动维护和使用,对用户是完全透明的。索引是逻辑地和物理地独立于数据,它们的建立或删除对表没有影响,应用可继续处理。索引数据的检索性能几乎保持常数,而当一表上存在许多索引时,修改、删除和插入操作的性能会下降。索引有唯一索引各非唯一索引。唯一索引保证表中没有两行在定义索引的列上具有重复值。ORACLE在唯一码上自动地定义唯一索引实施UNIQUE完整性约束。createindexon_user_idonUser_Base_Info_qiuzy(CREATE_DATE);dropindexon_create_date;1.6.其他一些注意点一个表空间只能属于一个数据库每个数据库最少有一个表空间(SYSTEM表空间)建立SYSTEM表空间的目的是尽量将目的相同的表存放在一起,以提高使用效率,只应存放数据字典一个数据文件只能属于一个表空间一个数据文件一旦被加入到一个表空间中,就不能再从这个表空间中移走,也不能再加入到其他表空间中一个段segment只能属于一个表空间,但可以属于多个数据文件一个区extent只能属于一个数据文件,即区间(extent)不能跨越数据文件单独一个事务不能跨越多个回滚段索引表不含ROWID值COMMIT后,数据不一定立即写盘(数据文件)一个事务即使不被提交,也会被写入到重做日志中。oracleserver可以同时启动多个数据库一套操作系统上可以安装多个版本的ORACLE数据库系统

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功