Oracle(基础整理)

来源:互联网 发布:淘宝网童装男童秋装 编辑:程序博客网 时间:2024/06/08 08:28
为什么会出现大型数据库?
应用系统向复杂化、大型化方向发展,使得数据库成为整个系统的核心。

常用的大型数据库
以关系型数据库为主导的数据库管理系统产品,技术比较成熟。有ORACLEMicrosoftSQL ServerSYBASEINFORMIXINGRESDB2等。

大型数据库的发展方向(Oracle为例)
对互联网的支持更多,如XML技术,对大量访问的优化;
对数据仓库OLAP应用的支持更强,包括对大数据处理的优化;
数据管理的智能化,减少部分DBA的工作;
向平台化,集成化发展,即现在的数据库不只是一个存放数据的容量,它还具有程序开发平台等功能。

DBA的职责是什么?
了解数据库的体系结构
负责数据库管理系统的安装和升级
启动和关闭数据库
管理和监控数据库用户
管理数据库特权
管理存储空间
建立数据库
后备和恢复数据库


数据库database
Ø一个数据集合,数据存放在数据文件中。

实例instance
Ø通俗的讲,实例就是操作数据库的一种手段;
Ø也称作服务器,是用来访问数据库文件集的存储结构及后台进程的集合;
Ø一个数据库可以被多个实例访问。


Oracle体系结构的组成
Oracle数据库
Ø数据库文件
Ø相关DBMS的集合

Oracle实例
Ø内存结构
Ø后台进程


Oracle数据库
是安装在磁盘上的Oracle数据库文件和相关的数据库管理系统(DBMS)的集合。
Ø数据文件(Datafiles)
Ø控制文件(Controlfiles)
Ø重做日志文件(Redolog files)
Ø初始化参数文件(Parameterfile)
Ø口令文件(Passwordfile)
Ø归档重做日志文件(Archivedlog files)

Oracle实例
一个实例:
Ø是连接数据库的入口
Ø仅打开并连接至一个数据库
Ø它包括后台进程和内存进程
后台进程包括:
Ø数据库写入进程(DBWR)
Ø日志写入进程(LGWR)
Ø日志归档进程(ARCn)
Ø检查点进程(CKPT)
Ø系统监控进程(SMON)
Ø进程监控进程(PMON)


内存结构组织称为系统全局区(SystemGlobalArea,SGA)。SGA是由所有用户进程共享的一块内存区域。
Ø数据库缓冲存储区(DatabaseBuffer Cache)
Ø重做日志缓冲区(RedoLog Buffer)
Ø共享池(SharedPool)
ØJava(JavaPool)
Ø大型池(LargePool)等。

Oracle用户环境
用户进程发布并执行SQL语句的用户环境
Ø用户进程(Userprocess)
Ø服务器进程(Serverprocess)
Ø程序全局区(ProgramGlobalArea,PGA)
Ø
当用户连接到Oracle服务器时,Oracle便创建一个服务器进程与之交互,并代表该用户进程完成与Oracle数据库间的交互。

程序全局区PGA是用户专用的内存结构,存储该用户连接期间与SQL语句执行相关的信息。


Oracle数据库的两种内存结构
系统全局区(SystemGlobalArea,SGA)
Ø一组共享内存结构,用于存放数据库数据和控制信息,以实现对数据库数据的管理和操作。
Ø
程序全局区(ProgramGlobalArea,PGA)
Ø是用户进程连接到数据库并创建一个会话时,由Oracle服务器进程分配的专门用于当前用户会话的内存区,该区域是私有的


1.系统全局区SGA
数据库缓冲存储区
Ø用于存放最近访问的数据块;
Ø大小由初始化参数定义;
Ø采用LRU(LeastRecently Used,最近最少使用)算法管理数据库缓冲存储区。

重做日志缓冲区
Ø用于存放数据进行的所有更改;
Ø大小由初始化参数定义;
Ø当重做日志缓冲区被添满时,由日志写入进程把重做日志缓冲区的内容写到磁盘的重做日志文件中保存。

共享池
Ø用于存放最近执行的SQL语句(库高速缓存)和数据字典信息(数据字典高速缓存)
Ø大小由初始化参数定义,可动态变化;
Ø其大小影响数据库的性能。

大型池
Ø为大的内存需求提供内存空间;
Ø大小由初始化参数LARGE_POOL_SIZE定义。

Java
Ø用于存放Java代码、Java语句的语法分析表、Java语句的执行方案和支持Java程序开发;
Ø大小由初始化参数JAVA_POOL_SIZE定义。

2.程序全局区PGA
排序区
Ø存放执行GROUPBYORDERBY等包含排序操作所产生的临时数据;
Ø大小由初始化参数SORT_AREA_SIZE设置。

会话区
Ø存储该会话所具有的权限、角色、性能统计等信息。

游标状态区
Ø存储用户会话中当前使用的各游标所处的状态。

堆栈区
Ø存储该会话中的绑定变量(BindVariable)和会话变量(SessionVariable)SQL运行时的内存结构信息。


Oracle数据库的进程
用户进程
Ø当用户运行一个应用程序时,就建立一个用户进程

后台进程
Ø为所有数据库用户异步完成各种任务
Ø用于数据库的各种数据操作

服务器进程
Ø处理用户进程的请求


1.后台进程
数据库写入进程(DBWn)
Ø作用是将已更改的数据块从内存写入数据文件;
Ø默认情况下,启动实例时只启动一个数据库写入进程,即为DBW0

日志写入进程(LGWR)
Ø将重做日志缓冲区的数据写入重做日志文件中永久保存;
Ø是唯一一个能够读/写重做日志文件的进程。

日志归档进程(ARCn)
Ø将重做日志的事务变化复制到归档日志文件中;
Ø是一个可选进程,默认情况下只有两个归档日志进程(ARC0ARC1)

检查点进程(CKPT)
Ø作用是发出检查点(Checkpoint),实现同步数据库的数据文件、控制文件和重做日志;
Ø是一个可选进程,确保数据文件、控制文件和重做日志文件的一致性。

系统监控进程(SMON)
Ø在数据库系统启动时执行恢复工作;
Ø合并空间碎片并释放临时段。

进程监控进程(PMON)
Ø监控服务器进程的执行,并在服务器进程失败时清除该服务器进程;
Ø用于恢复失败的数据库用户的强制性进程。


2.服务器进程
专用服务器模式
ØOracle用于支持客户连接的最简单的进程结构;
Ø为每一个连接到实例的客户进程启动一个专门的前台服务进程;
Ø一般只用在密集的批操作,能让服务器进程大部分时间保持繁忙;
Ø当预期客户机连接总数较少,或客户机向服务器发出的请求持续时间较长时,应采用专用服务器模式;

共享服务器模式
Ø少数共享服务器进程执行了许多连接客户的数据访问操作,很少的进程开销就可以满足大量的用户群;
Ø其组件包括:调度器、共享服务器进程和队列。


Oracle数据库的存储结构
物理存储结构
Ø是实际的数据存储单元,如文件或数据块等,主要包括:
数据文件
日志文件
控制文件
参数文件

1.数据文件
是物理存储oracle数据库数据的文件;
每一个数据文件只与一个数据库相联系;
数据文件一旦被建立则不能修改其大小,一般位于    目录ORACLE_BASE\oradata\ORACLE_SID
一个表空间可包含一个或多个数据文件。


2.重做日志文件
用于记录所有对数据库数据的修改,以备恢复数据时使用;

每一个数据库至少包含两个日志文件组;

日志文件组以循环方式进行写操作;
Ø日志开关(LogSwitch)是为实现日志文件组的循环使用而设置的。出现日志开关的情况如下:
当一个日志文件组被填满时
关闭数据库时
DBA手动转移日志开关

Oracle数据库有两种运行模式:
Ø归档日志(ARCHIVELOG)模式
所有的事务重做日志都将保存
在一个重做日志被覆盖前为其建立一个副本
在重做日志归档工作完成之前,Oracle不对其进行覆盖
数据库运行在ARCHIVELOG模式时可能增加系统开销并成为系统的瓶颈
Ø非归档日志(NOARCHIVELOG)模式
为系统默认模式
系统不保留旧的重做日志
有限的恢复能力

3.控制文件
是一个较小的二进制文件,用于描述数据库结构;
描述信息如下:
Ø数据库建立的日期
Ø数据库名
Ø数据库中所有数据文件和日志文件的文件名及路径
Ø恢复数据库时所需的同步信息
在打开和存取数据库时都要访问该文件;
一个实例只能访问一个数据库,通过控制文件在实例和数据库之间建立关联;
数据库运行时,控制文件被不断更新。

4.参数文件
一个文本文件,可直接使用操作系统下的文本编辑器对其进行修改;
该文件只在建立数据库或启动实例时才被访问,在修改该文件之前必须关闭实例;
其作用是:
Ø确定存储结构的大小
Ø设置数据库的全部缺省值
Ø设置数据库的范围
Ø设置数据库的各种物理属性
Ø优化数据库性能。


5.口令文件
存放具有SYSDBASYSOPER权限的用户信息
初始特权用户为SYS

6.警告文件
由连续的消息和错误信息组成
查看Oracle内部错误也可以监视特权用户的操作
应从文件尾部开始查看


7.后台进程跟踪文件
用于记载后台进程的警告或错误信息

8.服务器进程跟踪文件
用于跟踪SQL语句,诊断SQL语句的性能,并做出相应的调整


数据库的逻辑结构是面向用户

Oracle的逻辑结构由一个或多个表空间组成:
每个表空间由多个段segment组成
每个段由多个区间extent组成
每个区间由多个数据块block组成
每个数据块对应多个物理磁盘块


1.表空间(Tablespace)
是数据库的逻辑组成部分,对应一个或多个数据文件,其大小是所对应数据文件大小的总和;

一个Oracle数据库中至少要包含一个SYSTEM表空间和一个SYSAUX表空间;

一般还包含数据表空间、索引表空间、临时表空间和UNDO表空间等表空间;

一个表空间只能属于一个数据库。


系统表空间
ØSYSTEM表空间
每个数据库至少要有一个表空间,即SYSTEM表空间,用于存放系统信息。
ØSYSAUX表空间
Oracle 10g新增加的辅助系统表空间

系统表空间
Ø撤销表空间UNDOTBS1
用于保存事务回退(Rollback)信息
Ø用户表空间USERS
用于存放用户的私有信息
Ø临时表空间TEMP
用于存放临时表和临时数据


表空间的实际应用
Ø建议将不同类型的数据部署到不同的表空间,以提高数据访问性能,便于数据管理、备份、恢复等操作;
Ø一个Oracle数据库应用方案应该包括专用的数据表空间(可能需要建立多个)、索引表空间(可能需要建立多个)、临时表空间;
Ø表空间对应的数据文件分开存储到不同的磁盘上;
ØSYSTEM表空间应该只包含系统数据(如数据字典)。

表空间的状态和工作模式
ØOracle允许控制基于表空间的数据库数据的可用性,表空间可以是脱机或联机的;
Ø联机表空间中的数据对用户是可用的;
Ø脱机表空间中的数据对用户是不可用的;

Ø一个新的表空间创建时,总是一个可读写表空间;
Ø当一个表空间的数据不能被改变时(如数据仓库中的历史数据),可将其设置为只读表空间;
Ø只读表空间能节约数据库备份时间。

原创粉丝点击