oracle主要组件和结构

  大致了解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语句的处理.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值