
①服务器的文件体系结构
文件目录结构一般有3个文件夹:Admin:该文件夹下面按照数据库系统标识名称建立子文件夹,在每个子文件夹下存放对该数据库的管理信息和日志文件,是数据库管理员分析数据库、查找历史记录的地方。Ora90(iSuites):存放的是整个数据库服务器的程序文件。oradata:该文件夹下面按照数据库系统标识符名称建立子文件夹,存放某个数据库的数据文件、控制文件、索引文件等,是真正的数据存放位置,对数据库系统的备份和恢复有重要意义。
②服务器的安装日志
对构建数据库服务器的过程进行全程监控,并以日志文件的方式存储在某个目录下,供管理员分析使用。
初始文件:installactions.log
日志文件:环境设置,安装类型设置,详尽的安装进程和自动配置情况
oraInstall.err oraInstall.out.
③物理结构
datafiles redo log files control files parameter files
数据文件日志文件控制文件参数文件
1.数据文件
数据文件用来存储数据库中的全部数据,如数据库表中的数据和索引数据。通常为后缀名为.dbf格式的文件
2.日志文件
日志文件(又称重做日志文件),用于记录数据库所做的全部变更(如增加、删除、修改),以便在系统发生故障时,用它对数据库进行恢复。
名字通常为Log*.dbf格式
根据在事务信息将被覆盖时,是否应该将文件归档,数据库分为以下两种归档模式:ARCHIVELOG(归档日志)或NOARCHIVELOG(非归档日志)模式。
3控制文件
每个Oracle数据库都有相应的控制文件,用于打开、存取数据库。它们是较小的二进制文件,其中记录了数据库的物理结构。
名字通常为Ctr*.ctl格式
控制文件中的内容只能够由Oracle本身来修改。每个数据库必须至少拥有一个控制文件。一个数据库也可以同时拥有多个控制文件,但是一个控制文件只能属于一个数据库。
4参数文件
参数文件是一个ASCII文本文件,记录Oracle数据库运行时的一些重要参数。名字通常为initsid*.ora格式,如:initCIMS.ora,SID相当于它所控制的数据库的标识符。每个Oracle 数据库和实例都有它自己惟一的init.ora文件。
Oracle9i新引入一个服务器参数文件(SPFILE),一个服务器参数文件(SPFILE)可以被认为是在Oracle数据库服务器端的初始化参数文件。存储在一个服务器参数文件的初始化参数是永久的,它提供了由Oracle数据库服务器自我调节的一个基础。服务器参数文件是二进制文件,不能使用一个文本编辑器浏览或编辑。Oracle提供了浏览和查看相关参数的另外接口。
2.逻辑结构
1表空间
2段
3区
4数据库块
5模式对象
⑴表空间的分类
Oracle中除了用户创建的存放数据对象的数据表空间外,还有以下类型的表空间:(1)System表空间
(2)回滚表空间(RollBack TableSpace)
(3)临时表空间(Temp TableSpace)
⑵表空间的使用
在数据库中使用多个表空间具有如下优势:
(1)能够将数据字典与用户数据分离开来,避免由于字典对象和用户对象保存在同一个数据文件中而产生的1/0冲突。
(2)能够将回退数据与用户数据分离开来,避免由于硬盘损坏而导致永久性的数据丢失。
(3)能够将表空间的数据文件分散保存到不同硬盘上,平均分布物理1/0操作。
(4)能够将某个表空间设置为脱机状态或联机状态,以便对数据库的一部分进行备份和恢复。
(5)能够将某个表空间设置为只读状态,从而将数据库的一部分设置为只读状态。
(6)能够为某种特殊用途专门设置一个表空间,比如临时表空间等,以优化表空间的使用效率。
(7)能够更加灵活地为用户设置表空间限额。
(3)表空间中对象的存储
如果表空间只对应一个数据文件,该表空间中所有的对象都存储在此数据文件中。如果表空间对应于多个数据文件,可将一个对象的数据存储在该表空间的任意一个数据文件中,也可将同一个对象的数据分布在表空间的多个数据文件中。
2.1数据段
数据段中保存的是表中的记录。
2.2索引段
在Oracle数据库中每个未分区索引都有一个索引段保存索引中的索引条目。对于一个分区索引,每个分区都有一个索引段保存它的数据。
2.3临时段
当处理查询时,Oracle可能会需要使用到一些临时存储空间,用于临时保存解析过的查询语句以及在排序过程中产生的临时数据。Oracle会自动在专门用于存储临时数据的表空间为操作分配临时段。
2.4回退段
回滚段用于存放数据修改之前的值(包括数据修改之前的位置和值)。
回滚段的作用主要有以下几方面:
(1)事务回滚
(2)事务恢复
(3)读一致性
3区
区是由很多连续的数据块组成的数据库存储空间。
缺省情况下,数据库会使用表空间中存储的存储参数来管理他们的区。
主要的几个存储参数
INITIAL:段建立时分配的第一个区的大小(单位:字节)
NEXT:段内分配的下一个增量区大小(单位:字节)
MAXEXTENTS:分配给段的区总数。
MINEXTENTS:建立段时分配的区的总数,也就是段的最小区数量。PCTINCREASE:为段分配的每个增量区超过上一个区的百分比。
INITRANS:为初试数量的DML事务条目(并发访问数据块中的行)保留的预分配空间数量。
NTKXTRANS:当多个事务同时访问同一数据块的行时,为数据块中每个DML事务的条目分配的空间。
4数据库块
数据库块也称逻辑块或Oracle块,它对应磁盘上一个或多个物理块,它的大小由初始化参数db_block_size(在文件init.ora中)决定,典型的大小是2k。
4数据库块
Pckfree和Pctused两个参数用来优化数据块空间的使用。
λPCTFREE:块中保留用于UPDATE操作的空间百分比,当数据占用的空间达到此上限时,新的数据将不能再插入到此块中;
λPCTUSED:指定块中数据使用空间的最低百分比;
5模式对象
Oracle数据库的模式对象包括表、视图、序列、同义词、索引、触发器、存储过程等。
内存结构
1系统全局区
2程序全局区
3排序区
4软件代码区
1系统全局区系统全局区(SGA,System Global Area.)是内存结构的主要组成部分,是Oracle为一个实例分配的一组共享内存缓冲区,保存着Oracle系统与所有数据库用户的共享信息,包括数据维护、SQL语句分析,重做日志管理等。是实例的主要部分。
1.数据块缓冲区
数据块缓冲区中存放着Oracle系统最近从数据文件中读取的数据块。
数据块缓冲区又称用户数据高速缓冲区,为所有与该实例相链接的用户进程所共享。
数据块缓冲区的容量受物理容量。
在Oracle9i中,数据库缓存的大小可以直接由初始化参数DB_ACHESIZE指定,该参数可以直接以K字节或M字节为单位来设置数据库缓存的大小。
2.字典缓冲区
字典缓冲区用于保存数据字典中的行。
数据字典缓冲区也通过最近最少使用(LRU)算法来管理。大小由数据库内部管理。字典缓存区是SQL共享池的一部分,共享池的大小(以字节为单位)由数据库文件init.ora 中的SHARED_POOL_SIZE参数来设置。
3.重做日志缓冲区
对数据库进行修改的任何事务(Transaction)在记录到重做日志之前都必须首先放到重做日志缓冲区(Redo Log Buffer.)中。重做日志缓冲区是专为此开辟的一块内存区域,重做日志缓存中的内容将被LGWR后台进程随时写入重做日志文件。
重做日志缓存是一个循环缓存区,在使用时从顶端向底端写入数据,然后再返回到缓冲区的起始点循环写入。重做日志缓冲区的大小(以字节为单位)由init.ora文件中的LOGBUFFER参数决定。
4.共享SQL池
共享SQL池(Shared SQL Pool)相当于程序高速缓冲区,所有的用户程序都存放在共享SQL池中。
SQL共享池包括库高速缓存、数据字典高速缓存和服务器控制结构。
共享池的大小取决于init.ora文件参数SHARED_POOL_SIZE,它是以字节为单位的。用户必须将这个值设得足够大,以确保有足够的可用空间来装载和存储PL/SQL块和SQL语句。
5.Java池
Java池为Java命令提供语法分析。
6.多缓冲池
缓冲池把大数据集与其他的应用程序分开,以减少它们争夺数据块缓冲区内相同的资源。可以在SGA中创建多个缓冲池。
程序全局区PGA(Program Global Area,PGA),是单个Oracle进程使用的内存区域,不属于实例的内存结构。它含有单个进程工作时需要的数据和控制信息,PGA是非共享的,只有服务进程本身才能够访问它自己的PGA区。
排序区存在于请求排序的用户进程的内存中,由于排序需要内存空间,Oracle利用该内存排序数据,这部分空间称为排序区。该空间的大小为适应排序数据量的大小,可增长,但受初始化参数SORT_AREA_SIZER所。
软件代码区(Software Code Area)用于存储正在执行的或可以执行的程序代码。软件代码区是只读,可安装成共享或非共享。Oracle系统程序是共享的,多个Oracle用户可存取它,而不需要在内存有多个副本。用户程序可以共享也可以不共享。
数据库实例与进程
1Oracle数据库实例
数据库是指物理上的数据库文件或逻辑上的数据库结构。
基于之上管理和控制物理数据库的软件系统,称为数据库管理系统(DBMS)。
数据库实例是指软件系统中用来访问数据库文件集的存储结构以及后台进程的集合,它是存取和控制数据库的软件机制。
2.进程
进程又称任务,是操作系统中一个极为重要的概念。一个进程执行一组操作,
完成一个特定的任务。对Oracle数据库管理系统来说,进程由用户进程、服务
器进程和后台进程所组成。
进程与程序的区别在于前者是一个动态概念,后者是一个静态实体;程序仅仅
是指令的有序集合,而进程则强调执行过程。进程可以动态地创建,完成任务
后即会消亡。
1.用户进程
当用户运行一个应用程序时,系统就为它建立一个用户进程。用户进程执行的
是一个应用程序或Oracle工具程序的代码,以完成用户所指定的任务。用户进
程不是实例。
2.服务器进程
服务器进程处理与应用程序相连的用户进程的请求,它与用户进程相通讯,为
相连的用户进程的Oracle请求服务。
3.后台进程
Oracle的后台进程主要包括:
(1)SMON系统监控进程(system monitor)
(2)PMON进程监控进程(process monitor)
(3)DBWR数据库写进程
(4)LGWR日志文件写进程(5)ARCH归档进程(archiver process)
(6)RECO恢复进程
(7)LCKN封锁进程
(8)CKPT检测点
数据字典
数据字典是Oracle数据库的核心组件,它是对用户来说为只读类型的表和视图
组成。在其中保存着关于数据库系统本身以及其中存储的所有对象的基本信息。
•数据库对象所有的框架对象的定义(表、视图、索引、群集、同义词、序列、过程、函数、包、触发器等)
•为框架对象如何分配和使用空间
•列的默认值
•完整性约束信息
•数据库安全信息,包括用户、权限、角色等
•审计信息
1数据字典的结构
一个数据字典包括基础表,动态性能视图及数据字典视图。数据字典视图又包
含ALL视图,USER视图和DBA视图。
1.基础表
存储相关数据库信息的表,这些数据库的信息包括表、索引、约束,以及所有其他数据库对象结构的信息。它们属于SYS用户,通过运行SQL脚本来创建(在数据库创建时自动发生)。是Oracle系统的核心。只有Oracle才能写和读取这些表。基础表中的存储的信息通常是经过加密处理的。大部分数据字典基础表的名称中都包含“$”等特殊字符。
2.动态性能视图
在操作过程中,Oracle维护了一种“虚拟”表的集合,记录当前数据库的活动。这些表称为动态性能表。SYS拥有动态性能表,其名字都是以V_$开头的。在这些表上面创建的视图被称为动态性能视图(dynamic performance view)。可为这些视图创建公共同义词,同义词名称以V$开头。
3.ALL视图
包含了用户查询表时可以访问的所有对象的信息。
4.USER视图
前缀为USER,每个数据库用户都拥有一套属于自己的USER视图。在USER视图中包含了该用户模式下所有对象的信息。
5.DBA视图
前缀为DBA,在DBA数据字典视图中包含着全部数据库对象的信息。对于带有DBA前缀的视图,显示了整个数据库的情况。因此,它们只能被数据库管理员查询。授予系统权限SELECT ANY TABLE的用户都能查询带有DBA前缀的视图。
Oracle入门基础知识-----制作者:廖春明
2数据字典的用途
对于Oracle系统本身而言,当数据库实例运行时,会需要使用数据字典基础表
中的信息。Oracle从基础表中读取信息,来判断用户要求访问的对象是否存在。
同时,当用户对数据库结构、对象结构做出修改时,Oracle向基础表中写入相
应的修改信息。
广西英华国际职业学院06级电子商务7
