第一章 Oracle Database 11g 体系结构

1、单实例体系结构

Oracle服务器是连接到数据库的实例。

实例包括共享内存块以及一组后台进程。

数据库是磁盘上的一组文件。

用户会话是连接到服务器进程的用户进程。

SGA内存由所有后台和前台进程共享。

2、实例内存结构

实例共享内存是系统全局区(SGA)。

会话的专用区域是程序全局区(PGA)。

SGA由一组子结构组成,其中一些是必须的(数据库缓冲区缓存、日志缓冲区和共享池),而另一些是可选的(大池、JAVA池和流池)。

可以动态重调SGA结构的大小,也可以对其进行自动化管理,但日志缓冲区除外。

日志缓冲区的大小固定不变,在启动实例时被设置为固定值。无法对其进行自动管理。

数据库缓冲区缓存、共享池、大池、Java池、流池的大小可以动态调整,而且可以自动管理。

3、实例进程结构

当用户连接时,将根据需要启动会话服务器进程。

后台进程在启动实例时启动,在关闭实例前一直存在。

服务器进程从数据库读取,后台进程对数据库执行写操作。

某些后台进程始终存在(特别是SMON,PMON,DBWn,LGWR,CKPT和MMON),而其他进程则根据启用的选项运行。

SMON-System Monitor 系统监视器。

PMON-Process Monitor 进程监视器,用户会话是连接到服务器进程的用户进程。

如果会话终止,PMON后台进程将回滚活动事务。

DBWn-Database Write 数据库写入器。

究竟需要多少个数据库写入器?默认数量就很合适。添加多了数据库写入器,性能可能会有所提升,但通常需要先考虑调整内存。一般来说,在优化磁盘I/O之前都要问问自己:为什么需要磁盘I/O呢?

DBWR会在哪些情况下执行写操作?在没有任何可用缓冲区、脏缓冲区过多、遇到3秒超时或遇到检查点。

在提交事务时,DBWn有何举动?它什么都不做。

LGWR-Log Writer 日志写入器。

LGWR会在哪些情况下将日志缓冲区转储到磁盘?会话发出COMMIT时、缓冲区的占有率达到1/3时、DBWn正好执行写入前。

CKPT-Checkpoint Process 检查点进程。

何时出现完全检查点?只会应请求这么做,或在有序关闭数据库时出现。

MMON-Manageablility Monitor 可管理性监视器

默认方式下,MMON每小时收集一次快照并启动ADDM.

MMAN-Memory Manager 内存管理器

ARCn-归档日志进程

LGWR对联机日志文件中执行写操作,ARCn读取联机日志文件,其他任何进程根本不接触此类文件。

4、数据库存储结构

数据库中有三类必需的文件:控制文件、联机重做日志文件和数据文件。

控制文件存储完整信息以及指向数据库其余部分的指针。

联机重做日志存储应用于数据库的最新变更向量。

就每个数据库而言,要保证其正常运行,至少必须有两个联机重做日志文件组;要保证安全,每组至少要有两个成员。

数据文件存储数据。

外部文件包括:参数文件、口令文件、归档重做日志以及日志和跟踪文件。

表空间将逻辑数据存储(段)从物理数据存储(数据文件)中抽象出来。

表空间可由多个数据文件组成。

一个段包含多个区间,一个区间包含多个Oracle块,一个Oracle块包含多个操作系统块。

一个段可以包含位于多个数据文件的区间。

服务器进程对数据文件执行读操作,而DBWn对数据文件执行写操作。

在Oracle 10g及更新版本中,必须在创建数据库时创建SYSAUX表空间。如果未予指定,将创建默认的SYSAUX表空间。

哪个视图将显示数据库中所有的表?是DBA_TABLE,不是ALL_TABLE。 

练习 

--1、作为用户SYSTEM连接到数据库。
--2、确定实施是否是RAC数据库的一部分
select parallel from v$instance; --如果是单实例数据库,返回NO。
--3、确定数据库是否通过备用数据库的保护来防止数据丢失
select protection_level from v$database; --未保护返回UNPROTECTED
 --4、确定是否在数据库中配置了流
select * from dba_streams_administrator;  --未配置流,不返回任何行
--5、显示可以动态设置大小的SGA组件的当前、最大、最小的容量
select component,current_size,min_size,max_size from v$sga_dynamic_components;
--6、确定已为程序全局区分配了多少内存
select name,value,unit from v$pgastat where name in ('maximum PGA allocated','total PGA allocated');
--7、确定哪些进程在运行,以及每个进程的数量有多少?
select program from v$session order by program;
select program from v$process order by program;
--8、确定表所在的表空间、区间大小、区间所在的文件编号、区间所在位置的文件块
select tablespace_name, extent_id, bytes, file_id, block_id
  from dba_extents
 where owner = 'QY'
   and segment_name = 'YW_SW_GRJFJL';
--9、根据文件编号却数据文件
select name from v$datafile where file# = 239;
--10、计算区间所在文件中的位置
select blocksize * block_id
  from dba_tables
 where tablespace_name = 'TS_JFJL_2012';

 

 

 

 

 

posted @ 2012-11-14 11:42  mjj_happy  阅读(203)  评论(0编辑  收藏  举报