Oracle9i数据库系统概述
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Oracle9i 数据库系统概述
2007.5
1
提纲
第一节Oracle9i系统概述
第二节Oracle9i数据库体系结构
第三节Oracle9i数据库的模式(schema)对象第四节Oracle9i数据库的安装
第五节Oracle9i数据库目录结构和注册表信息第六节Oracle9i数据库数据字典
第七节Oracle9i分布式数据库体系结构
第八节Oracle9i数据库的启动和关闭
2
第一节:Oracle9i系统概述
Oracle9i 是关系对象型数据库管理系统。
Oracle9i 提供以下三种版本:
●Oracle9i标准版:包括一套完全集成的易用管理工具、完全分布式的复制能力以及web功能。
适合小型企业的单一服务器环境。
●Oracle9i企业版:包括大数据量的在线事务处理(OLTP)环境、查询密集型数据仓库以及要求苛刻的互联网应用等。
能够满足当今企业关键任务应用的可用性与可伸缩性需要。
●Oracle9i个人版:支持需要与Oracle9i标准版和Oracle9i企业版完全兼容的单一用户开发与部署。
3
第二节:Oracle9i数据库体系结构Oracle9i数据库的体系结构可以从以下四个方面来理解:
●物理存储结构
●逻辑存储结构
●内存结构
●进程结构
4
一、物理存储结构
从数据的物理存储结构来看,Oracle9i数
据库由三类物理文件组成:
●数据文件(datafile)
●重做日志文件(redolog file)
●控制文件(control file)
1、数据文件------存储了基表数据、索引数据、回退数据、临时数据、以及数据字典
基表数据。
每个数据库至少由一个或多个
数据文件组成。
5
2、重做日志文件------存储数据库的修改前、修改后的信息以及事务标志。
在数据库实例(instance)恢复期间,Oracle使用重做日志文件恢复所有用户对数据库所做的修改操作。
每个数据库必须拥有两个或两个以上的重做日志文件。
3、控制文件------是一个二进制文件。
存储了数据库名、数据库的数据文件和联机重做日志文件的名称和位置、数据库建立日期、数据库的当前序列号、数据库检查点、数据库中表空间名等信息。
每个Oracle数据库要求至少有两个或两个以上的控制文件。
6
除了以上三类物理文件之外,数据库中还包含初始化参数文件、口令文件、归档的日志文件等物理文件。
●初始化参数文件在数据库启动和数据库性能调优时使用,记录了数据库各参数的值。
●归档日志文件只有在数据库运行在归档方式时才有,是由ARCH归档进程将写满的重做日志文件拷贝到指定的存储设备时产生的。
●口令文件是为了使用操作系统认证Oracle用户而设置的。
7
二、逻辑存储结构
从逻辑的角度来看,数据库由多个表空间组成,每个表空间下存放了多个段,每
个段又分配了多个区,并且随着段中数据
的增加区的个数也会自动增加,每个区应
该由连续的多个数据块组成。
逻辑结构与物理结构的对应关系如图所示
8
1、表空间(tablespace)
表空间是一个逻辑存储单元,Oracle将数据库所有数据文件所占的磁盘空间划分为一个或多个表空间进行存储管理。
一个表空间可以跨越数据库的多个数据文件,但一个数据文件只能属于一个表空间。
一个数据库至少包含SYSTEM表空间、UNDOTBS表空间、TEMP表空间、USERS 表空间、INDX表空间等多个表空间,分别存放数据字典基表数据、回退数据、临时数据、基表数据、索引数据等数据。
10
2、段(segment)
表空间的下一级逻辑存储单元称为段(segment),一个段只能存储同一种模式对象(schema object)。
段数据不能跨越
表空间,但段数据可以跨越同一表空间的多个数据文件。
根据段中所存储的模式对象不同,段分成以下几类:
●数据段:存储表数据,当用户建立表时,Oracle自动建立数据段。
数据段一般存储在USERS表空间下。
11
●索引段:存储数据库索引数据,当执行CREATE INDEX语句建立索引时,Oracle自动建立索引段。
索引段一般存储在INDX表空间下●临时段:在执行查询、排序、等操作时,Oracle自动在TEMP表空间上创建一个临时段。
●撤消段(回退段):记录数据库中所有事务修改前的数据值,这些数据用于读一致性、回退事务、恢复数据库实例等操作。
Oracle系统将回退数据(撤消数据)存储在UNDOTBS表空间下。
●系统引导段:记录数据库数据字典的基表信息。
数据字典的基表一般存储在SYSTEM表空间下。
12
3、区(extent)
Oracle系统按需要以区(EXTENT)为单
位为段分配空间。
当段内现有区中的空间
用完后,系统自动在表空间内为段分配一
个新区。
一个段内区的个数是随着段内数
据量的增加而增加。
13
分配区时按以下存储参数一次一次分配INITIAL EXTENT :第一个区的大小
NEXT EXTENT :第二个区的大小PCTINCREASE :从第三个区开始,在前一个区的基础上增长的百分比MAXEXTENTS :一个段内最多的区的个数MINEXTENTS :一个段内最少的区的个数
14
当建立基表时,系统首先按INITIAL EXTENT 参数的值分配第一个区,当该表中的数据量达到INITIAL EXTENT参数值时,系统自动按NEXT EXTENT参数的值分配第二个区。
当该表中的数据量达到INITIAL EXTENT和NEXT EXTENT参数值时,系统自动按NEXT*
(1+PCTINCREASE)参数值分配第三个区,系统自动在前一个区的基础增加一个百分比,分配下一个区,直到所分配的区的个数达到MAXEXTENTS参数的值为止。
此时表中不能再分配区,也就不能往表中插入数据。
15
4、块(block)
Oracle数据库的最小存储数据单元称为数据块(data block)。
块是I/O的最小单位,而区是分配空间的最小单位。
数据块的字节长度由初始化参数文件中
DB_BLOCK_SIZE参数设置。
一个区是由一定数量的连续数据块组成。
16
三、内存结构
内存是Oracle重要的信息缓存和共享区域,Oracle使用的主要内存结构包括
●SGA(System Global Area系统全局区)
●PGA(Program Global Area程序全局区)
1、SGA中的信息是可以被所有用户共享。
2、PGA保存单个进程的会话数据和控制信息,PGA的内容为指定服务器进程所专用,不能被其他服务器进程所共享。
17
1、SGA区
SGA是Oracle实例的组成部分,SGA区的内容可以被所有用户所共享。
SGA主要由以下几部分组成:
●数据库缓冲快存(database buffer cache)●重做日志缓冲区(log buffer)、
●共享池(shared pool)、
●大池(large pool)、
●JAVA池(java pool)。
18
●数据库缓冲快存------用于记录从数据库数
据文件中读取的数据,以及插入和更新的
数据。
该缓冲区的大小是由参数
DB_CACHE_SIZE的值决定的。
●重做日志缓冲区------记录了数据库中的修
改前和修改后信息。
该缓冲区的大小是由
参数LOG_BUFFER的值决定。
●共享池------包含库缓存(library cache)、数据字典缓存(dictionary cache)。
其
大小由参数SHARED_POOL_SIZE的值决定。
19
●大池------是数据库管理员的一个可选内存配置项,主要用于为Oracle共享服务器以及使用RMAN工具进行备份与恢复操作时
分配连续的内存空间。
其大小由参数LARGE_POOL_SIZE的值决定。
●JAVA池------是数据库管理员的一个可选内存配置项,主要用于存放JAVA语句的语法分析和执行计划。
当使用JAVA做开发时必须配置JAVA池。
其大小由参数
JAVA_POOL_SIZE的值决定。
20
四、进程结构
Oracle系统中的进程分为以下三类:
用户进程、服务器进程、后台进程。
●用户进程:为运行用户应用程序或Oracle工具所建立的进程。
当用户执行应用程序连接到Oracle系统时,系统自动为其分配一个用户
进程。
●服务器进程:处理用户进程的各种请求。
解释、编译和执行用户进程所发的SQL语句,并将SQL语句执行结果返回给客户端应用程序。
21
●后台进程都具有固定的功能,实现复杂的数据库操作。
后台进程包括:
(1)DBWn:数据库写入进程。
负责将SGA中数据库缓冲区的数据写入数据文件中。
一个Oracle数据库中最多可以配置10个DBWR进程。
(2)LGWR:日志写入进程。
负责将重做日志缓冲区的内容写入到联机日志文件中。
(3)CKPT:检查点进程。
当检查点发生时负责更新所有数据文件头信息和控制文件的信息。
22
(4)SMON:系统监视进程。
负责回收不用
的临时空间、合并碎片、执行数据库的恢复等操作。
(5)PMON:进程监视进程。
检查用户进程
的运行状态。
当用户进程已结束时负责清除缓存、释放资源等操作。
(6)ARCn:归档进程。
当数据库运行在归档方式时,归档进程将联机重做日志文件的记录拷贝到指定的存储设备中,产生归档日志文件。
数据库中可以配置多个ARCH进程。
23
(7)RECO:数据库恢复进程。
该进程在分布式事务执行失败时,将自动连接远程服务器中的数据库实例。
连接成功后,删除被挂起的事务以及它所对应的行。
(8)LCKn:锁进程。
在Oracle并行服务器环境(即RAC环境----Real Application Cluster环境中),多个数据库实例可能同时操作相同的数据库对象。
为了避免进程间数据存取冲突,在一个数据库实例访问期间,锁进程自动封锁它所访问的数据库对象。
(9)SNPn:作业队列进程。
执行DBMS_JOB 包所调度的数据库作业,并自动定期刷新分布式数据库中的数据库快照。
24
(10)QMNn:队列监视进程。
监视Oracle数据库实例中的消息队列。
(11)Dnnn:调度进程。
在共享服务器配置下,调度进程的支持使多个用户进程可以共享一个服务器进程,从而减少服务器进程数。
其中DBWn、LGWR、CKPT、SMON、PMON后台进程是任何数据库环境所必须的,而其他ARCn、LCKn、RECO、SNPn、QMNn、Dnnn等后台进程是根据数据库运行环境和配置不同而可以选择配置的。
25
五、Oracle实例(instance)Oracle实例(instance)是由SGA区和后台进程组成。
●当打开数据库时必须首先启动Oracle实例,也就是必须首先按参数文件中指定的SGA区的每一块缓冲区的大小分配相应大小的缓冲区,并且启动必要的后台进程。
26
●在启动实例后将数据库与该实例连接,
也就是MOUNT(装载)数据库。
此时系
统根据参数文件中的参数值查找并打开
所有的控制文件。
●最后才是打开已经连接到实例的数据
库,此时系统根据已经打开的控制文件
的内容,查找并打开所有的数据文件和
重做日志文件。
27
第三节:Oracle9i数据库的模式(schema)对象
模式是每个Oracle数据库用户相关的一组数据库对象的集合。
模式对象包括:表、视图、索引、序列生成器、同义词、数据库链路、快照、过程、函数、包等。
29
1、表
表是数据库中基本的数据存储单元,由多
行和多列组成。
2、视图
视图是用户查看表中数据的一种方式,视
图可以简化用户的查询和处理操作,提高
数据的安全性。
3、索引
在表上建立索引可以加快表的查询速度,
也可以保证表上数据的唯一性。
4、序列生成器
序列生成器可以产生一组唯一的序列号。
30
5、数据库链路
数据库链路是指在分布式数据库应用环境中的一个数据库与另一个数据库之间的通信路径。
6、同义词
同义词是表、视图、序列生成器、快照、过程、函数、包的别名。
7、快照(Snapshots)
快照就是对远程数据库上的表的复制,自动按时间间隔定时刷新表的数据。
快照实用程序生成一张表,用来存放通过快照定义的查询条件获得的行。
31
8、存储过程、函数、包和触发器
存储过程和函数是由一组SQL和PL/SQL语句组成,完成固定功能的程序单元。
它们存储在服务器的数据字典(user_objects)中。
存储函数向调用者返回单个值,而存储过程不返回任何值。
包是存储过程和函数的封装,由一组相关的存储过程和函数组成。
触发器也是由一组SQL和PL/SQL语句组成,完成固定功能的程序单元。
但触发器在满足触发条件时自动执行,不需要用户显式地调用。
触发器不能接受输入、输出参数。
32
第四节:Oracle9i数据库的安装通过实际安装了解数据库的安装过程和步骤。
在此不再讲述。
33
34第五节:Oracle9i 数据库目录结构和注册表信息
一、数据库的目录结构
(1)ORACLE_HOME :ORACLE_HOME 代表安装Oracle 的主目录
(2)ADMIN :数据库管理文件目录,每个Oracle 数据库在ADMIN 目录下有一个以数据库名称命名的子目录(如果ORCL )。
(3)ORADATA :数据库数据文件存储目录。
每个Oracle 数据库在ORADATA 目录下有一个以数据库名称命名的子目录(如ORCL ),该数据库所有的数据文件、重做日志文件、控制文件均存储在ORCL 子目录下。
二、Oracle9i数据库在Windows 2000下的
注册表信息
Oracle系统的配置和服务信息存储在操作系
统注册表数据库中的以下子键中:
●HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE------包括了Oracle安装程序的存储位置和Oracle object for OLE 消息文件的存储位置。
●HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ALL_ HOMES------描述了Oracle主目录的一般信息。
包括默认的
主目录名、主目录数、主目录中文件的物理存储路径等信息。
●HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOM Ex------描述了Oracle主目录的配置参数。
其中x代表了主目
录序号。
35
三、安装后的特殊用户
Oracle安装后会自动建立几个特殊的用户,如:SYS、SYSTEM、SCOTT用户。
●SYS用户:默认口令是
change_on_install,SYS用户是Oracle的特权用户,其拥有Oracle数据库的所有数据字典对象,可以对Oracle数据库做任何操作。
●SYSTEM用户:默认口令是manager,是数据库的管理用户,其拥有某些工具相关的数据字典对象。
●SCOTT用户:默认口令是tiger,是普通用户,只能对自己所拥有的对象进行操作。
36
第六节:Oracle9i数据库数据字典Oracle数据字典由一套表和视图构成,它
存储Oracle系统的活动信息以及所有用户
数据库的定义信息。
数据字典包含数据库中模式对象的定义、
完整性约束的定义、用户的权限和角色信息、存储空间分配情况、审计信息、字符
集信息等数据库信息。
数据字典分为两大类:静态数据字典和动
态性能表。
37
1、静态数据字典
静态数据字典是Oracle数据库的信息中心。
Oracle在数据字典表上建立了数据字典视图。
这些视图主要分三类:
(1)用户视图:这类视图以USER_为前缀,包含当前用户所拥有的全部对象信息。
如:USER_OBJECTS视图包含当前用户
所建立的对象信息。
(2)扩展用户视图:这类视图以ALL_为
前缀,如:ALL_USERS,除包含当前用
户所拥有的全部对象信息以外,还包含公
共帐号和显式授权用户所拥有的全部模式
对象信息。
38
(3)数据库管理员视图:这类视图以DBA_为前缀,包含整个数据库的所有用户所拥有的所有对象信息,而不局限于部分用户。
如:DBA_USERS视图包含数据库中所有用户信息。
2、动态性能表
动态性能表是一套虚拟表,记录当前数据
库的活动情况和性能参数。
动态性能表的拥有者为SYS用户,名字均
以V_$为前缀。
为了便于访问,Oracle在
动态性能表的基础上建立了公用同义词,
这些同义词的名字以V$开头。
39
第七节:Oracle9i分布式数据库体系结构一、分布式数据库体系结构的软件组成Oracle9i分布式数据库的体系结构有以下两种●基于客户/服务器方式的两层结构
●基于应用服务器方式的三层结构
40
(1)第一层为浏览器(browser):负责在客户系统上的数据显示和输入Internet Explorer就处于第一层
(2)第二层为应用服务器:负责连接客户端与数据库服务器,监听客户端的请求,将客户端的请求转换成对数据库的调用,最终以HTML格式返回给浏览器。
Oracle application server(IAS)就处于第二层。
(3)第三层为数据库服务器:与两层结构中的数据库服务器层有相同的功能和配置。
43
二、分布式体系结构中的网络配置在数据库服务器端配置监听进程Listener,监听并接受客户端的连接请求。
为了配监听进程,必须在服务器上配置Listener.ORA 文件。
客户端建立网络服务名称列表,记录客户端所能访问的服务器信息。
为了建立网络服务名列表,必须在客户端配置
TNSnames.ORA文件。
无论是客户端还是服务器端,其配置文件均存储在ORACLE_HOME\network\admin目录下。
44
1、配置监听进程
使用Net Configuration Assistant工具或NET Manager工具进行网络监听进程的配置。
(配置的过程和步骤不再讲述,见教材)
配置过程中指定监听进程名称、所监听的
网络地址、协议及端口、数据库实例名等
信息。
保存在服务器端的Listener.ora文件中。
Listener.ora文件的内容如下:
45
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0)))
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = hjyhome)(PORT= 1521)))))
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = E:\Oracle\ora92)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = E:\Oracle\ora92)
(SID_NAME = orcl)
) )
46
2、配置网络服务名
使用Net Configuration Assistant工具或NET Manager工具进行网络服务器名的配置。
(配置的过程和步骤不再讲述,见教材)
配置过程中指定数据库的版本信息、全局
数据库名、通信协议、机器名、端口号、
网络服务名。
所有的配置信息保存在客户
端和每台服务器上的TNSnames.ORA文
件中。
TNSnames.ORA文件的内容如下:
47
TEST1 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = hjyhome)(PORT= 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = test)
)
)
ORCL1 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = hjyhome)(PORT= 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
48
3、客户端与服务器端的连接
在客户端配置好TNSnames.ORA文件,服务器端配置好Listener.ORA文件后,就可以进行客户端SQL*Plus工具与Oracle服务器端的连接了。
(1)首先启动服务器端的监听进程。
点击屏幕左下角[开始]Æ[运行],进入命令行的运行状态,在命令行中输入lsnrctl start命令即可启动监听进程。
49
(2)然后进行客户端SQL*Plus工具与Oracle服务器端的连接。
弹出如图所示的窗口,要求提供数据库中
的用户名和口令,同时必须提供在TNSnames.ora中配置的访问该数据库的
网络服务名(即:主机字符串)。
提示符,表明
SQL*Plus工具
连接到Oracle
数据库了。
50。