Oracle 9i DBA Fundamentals I 学习笔记(一)
Oracle 9i DBA Fundamentals I学习笔记(一)
Chapter 01--Oracle Architectural Components
1、 oracle服务器
包含两个组成部分:oracle instance和oracle database
2、 oracle instance
·访问数据库的一种方法
·一个Oracle Instance只能对应一个Oracle database,每次只能打开和使用一个数据库
·由内存结构和后台进程组成:
(内存结构包括SGA和PGA,实例启动时创建SGA,服务器进程启动时创建PGA)
3、 oracle instance和oracle database的关系
一个instance只能对应一个database、
一个database可以有多个instance来访问
4、 连接到oracle实例包括:建立用户连接和创建会话
连接:客户端和服务器建立的连接(主要是TCP连接)
会话:用户与oracle服务器的一种特定连接。
先建立连接,然后创建会话。连接断开后,会话就随之结束
5、 SGA
(1)、SGA是动态的
(2)、大小由SGA_MAX_SIZE参数指定,SGA的最大值不能超过由SGA_MAX_SIZE指定的值
(3)、由SGA组件以粒组为单位进行分配和跟踪
·是连续的虚拟内存分配
·粒组大小由估算的SGA_MAX_SIZE总计大小确定
(4)、SGA的大小不能超过
SGA_MAX_SIZE-DB_CACHE_SIZE-LOG_BUFFER-SHARED_POOL_SIZE
-LARGE_POOL_SIZE-JAVA_POOL_SIZE
(5)、查看Granule以及SGA的组成部分的SQL语句:
select component, granule_size from v$sga_dynamic_components;
(6)、组成部分
·shared pool
·database buffer cache
·redo log buffer
·other structures
(7)、查看SGA相关信息
SQL> show sga;
Total System Global Area 236000356 bytes
Fixed Size 451684 bytes
Variable Size 201326592 bytes
Database Buffers 33554432 bytes
Redo Buffers 667648 bytes
SQL>
6、 PGA
(1)、包含有关单个服务器进程或单个后台进程的数据和控制信息
(2)、在创建进程时分配,并在终止进程时回收。PGA是仅供一个进程使用的内存区
7、专用服务器和共享服务器之间的内存分配差异
一般来讲,PGA内存包括下列组件:
内存区 | 专用服务器 | 共享服务器 |
会话内存的特性 | 专用 | 共享 |
永久区的位置 | PGA | SGA |
运行时区的位置(select) | PGA | SGA |
运行时区的位置(dml/ddl) | PGA | SGA |
8、共享池(shared pool)
(1)、由library cache和data dictionary cache两个内存结构组成。
·库高速缓存(library cache):存储经过编译解析后的SQL和PL/SQL语句的内容。包含shared SQL area和shared PL/SQL area两个组成部分。
其大小由shared pool size决定。其大小决定了编译SGL语句的频率,从而影响性能。
·数据字典高速缓存(data dictionary cache):存储数据字典中的部分信息。可以缩短查询和DML的执行时间,其大小由shared pool size决定。
(2)、用于存储最近执行的SQL语句和最近使用的数据定义
(3)、大小由SHARED_POOL_SIZE参数决定:
alter system set shared_pool_size=64m;
9、数据库缓冲区高速缓存(database buffer cache)
(1)、存储已经从数据文件中检索到的数据块的副本。由独立的子高速缓存区组成:
·DB_CACHE_SZIE:只调整缺省缓冲区高速缓存的大小,这个参数始终存在且不能设置为零
·DB_KEEP_CACHE_SIZE:调整保留缓冲区高速缓存的大小,用于保留内存中很可能会重新使用的块
·DB_RECOVERY_CACHE_SIZE:调整循环缓冲区高速缓存的大小,用于删除内存中重新使用的可能性很小的块
(2)、能够提高获取和更新数据时的性能
(3)、主要由参数DB_BLOCK_SIE确定,大小可以动态调整:
alter system set db_cache_size=96m;
(4)、通过设置DB_CACHE_ADVICE,可以收集用于预测不同高速缓存大小行为的统计信息,
统计信息由视图V$DB_CACHE_ADVICE显示
10、重做日志缓冲区(redo_log_buffer):
记录对数据库数据块所做的全部更改、主要用户恢复。
其中记录的更改称作重做条目、重做条目包含用于重新构造或重做更改的信息。
大小由LOG_BUFFER参数决定。
11、大型共享池
(1)、SGA中可选的内存区
(2)、分担了共享池的一部分工作
(3)、用途:
·共享服务器的会话内存(UGA)
·I/O服务器进程
·备份和恢复操作进程或RMAN
·并行执行消息缓冲区
·不使用LRU
·大小由LARGE_POOL_SIZE确定
12、进程结构
(1)、用户进程:在数据库用户请求连接到oracle服务器时启动
·用户进程并不与Oracle服务器直接进行交互操作,而是通过用户程序接口(UPI)生成各种调用。用户程序接口则可以创建会话并启动服务器进程。
(2)、服务器进程:与oracle例程相连接,在用户建立会话时启动。
用户建立连接后,服务器进程便会启动,以处理用户进程的请求
(3)、后台进程:在oracle例程启动时启动
13、必备的后台进程
(1)、数据库写入程序(DBWn)
在以下情况下写入:
•出现检查点
•灰数据缓冲区达到阈值
•没有空闲缓冲区
•出现超时
•执行了RAC ping请求
•表空间处于OFFLINE状态
•表空间处于READ ONLY状态
•对表执行DROP或TRUNCATE操作
•对表空间执行BEGIN BACKUP
(2)、日志写入器(LGWR)
LGWR在以下情况下写入:
·当提交事务时
•当重做日志缓冲区的三分之一填满时
•当重做日志缓冲区中记录了超过1 MB的更改时
•在DBWn将数据库缓冲区高速缓存中修改的块写入数据文件以前
•每隔三秒
(3)、系统监控程序(SMON)
职责:
•例程恢复
–前滚重做日志中的更改
–打开数据库供用户访问
–回退未提交的事务处理
•合并空闲空间
•回收临时段
(4)、过程监视器(PMON)
例程失败后,通过以下方法进行清理:
•回退事务处理
•释放锁
•释放其它资源
•重新启动已失效的调度程序
(5)、检查点(CKPT)
职责包括:
•在检查点发信号给DBWn
•使用检查点信息更新数据文件的标头
•使用检查点信息更新控制文件
14、表空间:
Oracle数据库内的数据存储在表空间内。
• Oracle数据库可以从逻辑上分组到称为表空间的更小的逻辑空间区。
•一个表空间在某一时刻只能属于一个数据库。
•每个表空间由一个或多个称为数据文件的操作系统文件组成。
•表空间可能包含一个或多个段。
•表空间可以在数据库运行时联机。
•除了SYSTEM表空间或者有活动还原段的表空间,可将其它表空间置于脱机状态而不会影响数据库运行。
•表空间可以在可读写和只读状态之间切换。
15、数据文件(不是逻辑结构):
• Oracle数据库内的每个表空间由一个或者多个称为数据文件的文件组成。这些物理结构与在其上运行Oracle服务器的操作系统是一致的。
•一个数据文件只能属于一个表空间。
•通过分配指定数量的磁盘空间加上少量的开销,Oracle服务器创建表空间数据文件。
•数据文件创建后,数据库管理员可以更改其大小或者指定数据文件应随着表空间内对象的增长而动态增长。
16、段:
•段是在表空间中为特定逻辑存储结构分配的空间。
•表空间可以由一个或多个段组成。
•段无法跨越表空间;但是段可以跨越属于同一表空间的多个数据文件。
•每个段由一个或多个区组成。
17、区:
按区向段分配空间。
•一个或多个区组成一个段。
–当段创建后,它至少由一个区组成。
–随着段的增长,需要向该段添加区。
– DBA可以手动向段添加区。
•一个区就是一组连续的Oracle块。
•区无法跨越数据文件,所以,它必须存在于一个数据文件内。