大致了解Oracle的结构和其主要组件
能够列出一个用户连接Oracle的一个实例的流程结构
一个Oracle服务器
是一个开放的,全面综合的数据库管理系统由一个Oracle实例和一个Oracle数据库组成
一个Oracle实例:
是一种访问Oracle数据库的方法
一个实例只能用于访问一个数据库
由内存和后台进程组成
连接到一个Oracle的实例:
建立一个用户连接
创建一个会话
三种连接方式
本地连接
网络连接(通过Net)
三层连接(通过中间层服务器)
一个Oracle数据库:
可以看成是一个数据存储的单元
主要由三种类型文件组成(数据文件、日志文件、控制文件)
物理结构包括三种文件类型:
控制文件
数据文件
联机重做日志文件
内存结构包括两个部分:
系统全局区 (SGA): 在实例启动的时候分配, 是Oracle实例的基础组件
程序全局区 (PGA): 当服务器进程产生时分配
系统全局区包括以下几个部分:
共享池
数据缓冲区
重做日志缓冲区
其他 (例如 statistical data)
两个额外的内存结构:
大池
Java池
动态的
由参数SGA_MAX_SIZE决定大小
用于存储:
最近执行的SQL语句
最近使用的数据定义
由两个与性能相关的部分组成:
库缓存
数据字典缓存
由参数SHARED_POOL_SIZE决定大小
SQL> alter system set shared_pool_size=100m;
系统已更改。
存储最近使用的SQL和PL/SQL语句的信息
共享最常用的语句
管理上遵循LRU规则
包括两个部分:
共享SQL区
共享PL/SQL区
大小由Shared Pool的大小决定
存储在数据库中最近使用的定义
包括数据文件,表,索引,列,用户,权限和其他的数据库对象
在分析阶段, 服务器进程查找数据字典去验证对象的名字以及是否是合法访问
对于查询和DML语句,如果数据字典的信息在缓存中能够提高响应时间
大小由Shared Pool的大小决定
存储从数据文件中获得的数据块的镜像
当获取和更新数据的时候能够大幅度的提高性能
管理上遵循LRU规则
参数DB_BLOCK_SIZE其块的大小
SQL> show parameter db_block_size
NAME TYPE VALUE
------------------------------------ ----------- ----------
db_block_size integer 8192
包括以下独立的子缓存:
DB_CACHE_SIZE
DB_KEEP_CACHE_SIZE
DB_RECYCLE_CACHE_SIZE
能够动态的调整大小
SQL> alter system set db_cache_size=100m;
注意:
keep是存取你要保留时间长的 比如经常访问的索引和小表
recycle是FTS多的大表就是你不希望保留时间长的
keep也是使用LRU,但由于缺省情况下,数据块是被缓存到普通的cache中,因此被指定换存到keep区的数据块就不太可能因为执行其他一些操作被其他数据块交换出,即使较长时间没使用了。
而设置recycle是因为有时会有一些大的又少使用的表的操作,如果不设置单独的缓存区,那么缺省的缓存区中的数据块就被这些偶尔使用的数据换出。设置recycle后(通常recycle都是比较小的),将大的又较少使用的数据放到recycle中,可以减少缺省缓存区中频繁使用的数据块的换出换入的操作。
可以这样理解,keep区中的数据是最最频繁使用的,或者属于那些需要最快相应时间操作的数据。recycle是偶尔使用的数据的缓存区。其他数据都被缓存在缺省区。
show parameter log_buffer
NAME TYPE VALUE
------------------------------------ ----------- ----------
log_buffer integer 7028736
是系统全局区中可选的一个部分
减轻在共享池中的负担
用于:
共享服务器的会话内存(UGA)
I/O server进程
备份恢复操作或者是使用RMAN
不使用LRU规则
大小由参数LARGE_POOL_SIZE决定
能够被动态的改变大小
SQL> show parameter large_pool_size
NAME TYPE VALUE
------------------------------------ ----------- -----------
large_pool_size big integer 0
SQL> alter system set large_pool_size=10m;
系统已更改。
show parameter java_pool_size
NAME TYPE VALUE
------------------------------------ ----------- -------------------
java_pool_size big integer 0
SQL> alter system set java_pool_size=10m;
系统已更改。
show parameter pga_a
NAME TYPE VALUE
------------------------------------ ----------- -------
pga_aggregate_target big integer 91M
SQL> alter system set pga_aggregate_target=100m;
系统已更改。
For OLTP 系统
PGA_AGGREGATE_TARGET = ( * 80%) * 20%
For DSS 系统
PGA_AGGREGATE_TARGET = ( * 80%) * 50%
〈进程结构〉
Oracle有以下几种进程:
用户进程: 在用户连接数据库时产生
服务器进程: 当连接到Oracle实例并且用户建立会话的时候产生
后台进程: Oracle实例启动的时候产生
请求与Oracle服务器连接
必须要先建立一个连接
不会直接和Oracle服务器联系
直接和Oracle服务器联系
完成调用并返回结果
独立服务器或者是共享服务器都能产生
维持物理和内存之间的关联:
必须要有的后台进程:
DBWn PMON CKPT
LGWR SMON
可选的后台进程:
ARCn
RECO
Snnn
Pnnn
数据库写进程 (DBWn):
DBWn写的条件:
发生检查点
脏缓存到达限制
没有自由的缓存
超时发生
RAC ping请求
表空间离线
表空间只读
表被删除或者截断
开始备份表空间
日志写进程 (LGWR):
LGWR写的条件:
提交的时候
达到三分之一满了
日志的大小到1M
每隔三秒
在DBWn进程写之前
系统监测进程 (SMON):
作用:
实例恢复
前滚所有重做日志中的改变
打开数据库为了用户能访问
回滚没有提交的事务
接合自由的空间
释放临时表空间
进程监测进程 (PMON):
清除失败的进程:
回滚事务
释放锁
释放其他资源
重启死dispatchers
检查点进程 (CKPT):
作用:
给信号给DBWn
更新数据文件头
更新控制文件
归档进程 (ARCn):
可选的后台进程
当启用归档方式后自动归档重做日志文件
表明数据库的物理空间如何使用
分为表空间,段,范围,块
连接到一个实例:
用户进程
服务器进程
对于不同的语句Oracle服务器使用不同的组件:
查询返回行
DML记录改变
提交确保事务恢复
一些Oracle组件不参与SQL语句的处理.
能够列出一个用户连接Oracle的一个实例的流程结构
一个Oracle服务器
是一个开放的,全面综合的数据库管理系统由一个Oracle实例和一个Oracle数据库组成
一个Oracle实例:
是一种访问Oracle数据库的方法
一个实例只能用于访问一个数据库
由内存和后台进程组成
连接到一个Oracle的实例:
建立一个用户连接
创建一个会话
三种连接方式
本地连接
网络连接(通过Net)
三层连接(通过中间层服务器)
一个Oracle数据库:
可以看成是一个数据存储的单元
主要由三种类型文件组成(数据文件、日志文件、控制文件)
物理结构包括三种文件类型:
控制文件
数据文件
联机重做日志文件
内存结构包括两个部分:
系统全局区 (SGA): 在实例启动的时候分配, 是Oracle实例的基础组件
程序全局区 (PGA): 当服务器进程产生时分配
系统全局区包括以下几个部分:
共享池
数据缓冲区
重做日志缓冲区
其他 (例如 statistical data)
两个额外的内存结构:
大池
Java池
动态的
由参数SGA_MAX_SIZE决定大小
用于存储:
最近执行的SQL语句
最近使用的数据定义
由两个与性能相关的部分组成:
库缓存
数据字典缓存
由参数SHARED_POOL_SIZE决定大小
SQL> alter system set shared_pool_size=100m;
系统已更改。
存储最近使用的SQL和PL/SQL语句的信息
共享最常用的语句
管理上遵循LRU规则
包括两个部分:
共享SQL区
共享PL/SQL区
大小由Shared Pool的大小决定
存储在数据库中最近使用的定义
包括数据文件,表,索引,列,用户,权限和其他的数据库对象
在分析阶段, 服务器进程查找数据字典去验证对象的名字以及是否是合法访问
对于查询和DML语句,如果数据字典的信息在缓存中能够提高响应时间
大小由Shared Pool的大小决定
存储从数据文件中获得的数据块的镜像
当获取和更新数据的时候能够大幅度的提高性能
管理上遵循LRU规则
参数DB_BLOCK_SIZE其块的大小
SQL> show parameter db_block_size
NAME TYPE VALUE
------------------------------------ ----------- ----------
db_block_size integer 8192
包括以下独立的子缓存:
DB_CACHE_SIZE
DB_KEEP_CACHE_SIZE
DB_RECYCLE_CACHE_SIZE
能够动态的调整大小
SQL> alter system set db_cache_size=100m;
注意:
keep是存取你要保留时间长的 比如经常访问的索引和小表
recycle是FTS多的大表就是你不希望保留时间长的
keep也是使用LRU,但由于缺省情况下,数据块是被缓存到普通的cache中,因此被指定换存到keep区的数据块就不太可能因为执行其他一些操作被其他数据块交换出,即使较长时间没使用了。
而设置recycle是因为有时会有一些大的又少使用的表的操作,如果不设置单独的缓存区,那么缺省的缓存区中的数据块就被这些偶尔使用的数据换出。设置recycle后(通常recycle都是比较小的),将大的又较少使用的数据放到recycle中,可以减少缺省缓存区中频繁使用的数据块的换出换入的操作。
可以这样理解,keep区中的数据是最最频繁使用的,或者属于那些需要最快相应时间操作的数据。recycle是偶尔使用的数据的缓存区。其他数据都被缓存在缺省区。
show parameter log_buffer
NAME TYPE VALUE
------------------------------------ ----------- ----------
log_buffer integer 7028736
是系统全局区中可选的一个部分
减轻在共享池中的负担
用于:
共享服务器的会话内存(UGA)
I/O server进程
备份恢复操作或者是使用RMAN
不使用LRU规则
大小由参数LARGE_POOL_SIZE决定
能够被动态的改变大小
SQL> show parameter large_pool_size
NAME TYPE VALUE
------------------------------------ ----------- -----------
large_pool_size big integer 0
SQL> alter system set large_pool_size=10m;
系统已更改。
show parameter java_pool_size
NAME TYPE VALUE
------------------------------------ ----------- -------------------
java_pool_size big integer 0
SQL> alter system set java_pool_size=10m;
系统已更改。
show parameter pga_a
NAME TYPE VALUE
------------------------------------ ----------- -------
pga_aggregate_target big integer 91M
SQL> alter system set pga_aggregate_target=100m;
系统已更改。
For OLTP 系统
PGA_AGGREGATE_TARGET = ( * 80%) * 20%
For DSS 系统
PGA_AGGREGATE_TARGET = ( * 80%) * 50%
〈进程结构〉
Oracle有以下几种进程:
用户进程: 在用户连接数据库时产生
服务器进程: 当连接到Oracle实例并且用户建立会话的时候产生
后台进程: Oracle实例启动的时候产生
请求与Oracle服务器连接
必须要先建立一个连接
不会直接和Oracle服务器联系
直接和Oracle服务器联系
完成调用并返回结果
独立服务器或者是共享服务器都能产生
维持物理和内存之间的关联:
必须要有的后台进程:
DBWn PMON CKPT
LGWR SMON
可选的后台进程:
ARCn
RECO
Snnn
Pnnn
数据库写进程 (DBWn):
DBWn写的条件:
发生检查点
脏缓存到达限制
没有自由的缓存
超时发生
RAC ping请求
表空间离线
表空间只读
表被删除或者截断
开始备份表空间
日志写进程 (LGWR):
LGWR写的条件:
提交的时候
达到三分之一满了
日志的大小到1M
每隔三秒
在DBWn进程写之前
系统监测进程 (SMON):
作用:
实例恢复
前滚所有重做日志中的改变
打开数据库为了用户能访问
回滚没有提交的事务
接合自由的空间
释放临时表空间
进程监测进程 (PMON):
清除失败的进程:
回滚事务
释放锁
释放其他资源
重启死dispatchers
检查点进程 (CKPT):
作用:
给信号给DBWn
更新数据文件头
更新控制文件
归档进程 (ARCn):
可选的后台进程
当启用归档方式后自动归档重做日志文件
表明数据库的物理空间如何使用
分为表空间,段,范围,块
连接到一个实例:
用户进程
服务器进程
对于不同的语句Oracle服务器使用不同的组件:
查询返回行
DML记录改变
提交确保事务恢复
一些Oracle组件不参与SQL语句的处理.