2022年Oracle数据库基础知识 .pdf
Oracle数据库基础知识-体系结构篇概述 :本文简单的介绍了Oracle 数据库、实例、数据库的内部结构、内部存储结构,基本数据库的实现(后台进程)等内容。一、数据库( Database )一个 Oracle 数据库实际上是主要由以下三种基本类型的物理文件组成:控制文件数据文件日志文件控制文件包含组成该数据库的其他文件(例如,数据文件和日志文件)的列表,它还包括数据库内容和状态的关键信息。数据文件表空间是一个逻辑结构,它和操作系统一样,是不可见的。 表空间由数据文件这样的物理结构组成;每个表空间包括一个或多个数据文件,但每个数据文件只能属于一个表空间。创建一个表时,必须说明是在哪个表空间内创建的。这样,Oracle 才能在组成该表空间的数据文件中为它找到空间。表空间是Oracle 数据库信息物理存储的一个逻辑视图。日志文件Oracle 两种日志文件类型:A 联机日志文件这是 Oracle 用来循环记录数据库改变的操作系统文件。(由于数据文件的丢失,如果需要恢复,只能恢复到最后一个完全脱机数据库备份。在最后一个完全脱机备份后的数据改动都将丢失。因此,需要进行非常频繁的脱机备份。必须进行完整的数据库备份,不能仅备份部分数据库。不能进行联机备份,脱机备份过程中不能使用数据库。)B 归档日志文件这是指为避免联机日志文件重写时丢失重复数据而对联机日志文件所做的备份。(归档的日志文件,加上联机日志文件+ 数据文件)恢复数据库二、实例( Instance )数据库实例(也称为服务器Server )就是用来访问一个数据库文件集的一个存储结构及后台进程的集合。它使一个单独的数据库可以被多个实例访问(也就是ORACLE 并行服务器 - OPS )。决定实例的组成及大小的参数存储在init.ora 文件中。数据库与实例关系:数据库是物理概念:它包括存储在磁盘中的文件;实例是逻辑概念:它包括服务器中的内存结构与进程。一个实例能够而且只能与一个数据库连接用户一般不会直接访问Oracle 数据库的信息,而是通过Oracle 实例来访问信息 .如果实例挂起,虽然数据库仍然存在,用户却无法对它进行访问。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 4 页 - - - - - - - - - 此时数据库是静态的:其数据不会改变。当实例重新服务时,数据库中的数据则随时做好准备,即可以对它进行访问。三、客户程序调用流程四、数据库的内部结构4.1 表、列、数据类型(number 型)4.2 约束条件保证数据完整性主键( PK )、外键( FK)、 DEFAULT (缺省)、检查(CHECK )、唯一性( UNIQUE )NOT NULL default 0 check (maxyc 0) UNIQUE 4.3 抽象数据类型(Abstract Datatype):可以利用 CREATE TYPE命令创建自定义的抽象数据类型。(有点类似于c 中的结构体)4.4 分区( Partition ):可以利用分区将大表分隔成若干个小的存储单元,逻辑上仍然是一个完整的独立单一实体(在物理上表被分割开),以减小访问时数据的查找量,提高访问、存储效率。(用作分区逻辑基础的列一般不会是表的主键,最常用的是外键;对表分区时,不同分区应尽量放在不同表空间里面)局部索引(关键字local ),全局索引4.5 用户( User):用户拥有数据库对象,以及对象的使用权。sys(change_on_install) :拥有数据字典表(这些表存储了数据库中其他所有结构的信息)system(manager):拥有访问数据字典表的视图(供其他用户使用)4.6 模式( Schema ):用户账号拥有的对象集合称为模式。4.7 索引( Index ):ORACLE8 中有 BTree (簇索引、表索引),位图索引两种索引形式。B*Tree 索引 ,在索引结构中存储着键值和键值的RowID, 并且是一一对应的。位图索引主要针对大量相同值的列而创建(例如:类别,操作员,部门ID,库房 ID 等),索引块的一个索引行中存储键值和起止Rowid, 以及这些键值的位置编码,位置编码中的每一位表示键值对应的数据行的有无。一个位图索引块可能指向的是几十甚至成百上千行数据的位置。4.8 簇( Cluster ):经常被频繁引用的表可以在物理位置上被存储在一起,簇就是用来管理这种集中存储的。集中存储可以减少 I/O 次数,以达到性能的改善和提高。4.9 散列簇( Hash Cluster ):名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 4 页 - - - - - - - - - 簇的另一种形式,这种簇中的数据要通过散列函数计算得出物理位置,它可以极大程度的提高等值查询的效率。4.10 视图( View ):4.11 序列( Sequence ):(不保证生成一串连续不断的值)4.12 过程、函数( Procedure 、Function ):编译存储在数据库中的一个PL/SQL 程序段,函数返回调用者一个值, 过程则不返回任何值。4.13 包( Package ):函数、过程的集合。4.14 触发器( Trigger ):语句触发器,行触发器(触发时机: BEFORE AFTER ) (触发事件: update ,insert ,delete)4.15 同义词( Synonyms ):在分布式数据库环境中,要完全识别一个对象,必须指出对象的主机、属主等信息,为了简化这一过程, 可以对这些对象建立同义词,引用这些同义词时系统自动转义成对原始对象的引用。Create public synonym EMPLOEE for HR.EMPLOYEE 4.16 权限、角色( Privilege 、Role ):角色是这些权限的集合,例如-DBA 就是一个角色,它包括一组数据库权限。4.17 数据库链路( Database Link ):Oracle 数据库具有引用本地数据库以外数据的能力。引用其他数据库的数据时,需要指明详细路径,链路就是详细路径的识别名。创建公共链路:Create public database link MY_LINK connect to HR identified by PUFFINSTUPP using DB1 ;使用链路:select * from EMPLOYEE MY_LINK 4.18 回滚段:提供前映像数据。4.19 快照和显形图:基于查询五、内部存储结构5.1 系统全局区( System Global Area,SGA):名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 4 页 - - - - - - - - - 包括 -数据块缓冲存储区(Data Block Buffer Area)、字典缓冲区(Dictionary Cache)、日志缓冲区( Redo Log Buffer )、 SQL 共享池( Shared SQL Pool)四部分。5.2 正文区间( Context Area ):每个用户都拥有自己的私有SQL 区域,保存相关的SQL 语句, 直到语句相关的光标关闭为止。5.3 程序全局区( Program Global Area,PGA):它是存储区中被单个用户进程所使用的区域,PGA 不能共享。六、基本数据库的实现(后台进程)访问数据库的服务器最小构成如下:l 一个 SGA l SMON :系统监控程序,启动数据库时,执行所需的实例恢复操作,也可以清除数据库,取消系统不再需要的事物对象。l PMON :进程监控程序,负责清除失败用户的进程,释放用户当时正在使用的资源,l DBWR :数据写入程序 ,负责管理数据块缓冲区及字典缓冲区的内容,l LGWR :日志写入程序,负责把联机重做日志缓冲区的内容写入联机重做日志文件l CKPT :检查点进程,用来减少执行实例恢复所需的时间。检查点使把上一个检查点以后的全部已经修改数据块写入数据文件,并更新数据文件头和控制文件以记录该检查点。l 与 PGA 相关联的用户进程名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 4 页 - - - - - - - - -