您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 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数据库系统
本文标题:2_Oracle教程
链接地址:https://www.777doc.com/doc-7786 .html