分布式数据库-Oracle数据库

前言

  项目的开展总离不开一个科学高效的数据管理系统为我们服务,Oracle数据库绝对是其中的佼佼者。下面通过我这几天的一些认识来给大家做一些分享和总结。

笔记

  Oracle 是一个 RDBMS 系统,也是一款应用软件。Oracle 数据库除了将数据存储于文件中外,还通过一个被称为实例的后台机制向外提供服务。
  实例是访问 Oracle 数据库的通道,包含共享内存和后台进程。一个 Oracle 实例一次只能打开一个 Oracle 数据库,而一个 Oracle 数据库可以同时被多个实例打开。被多实例打开的 Oracle 数据库,必须是一个 RAC 数据库。 更进一步讲,RAC 应该是 Oracle RDBMS 的一个选件。
  
  Oracle 需要将数据存储在数据文件中,为了能够支持大量的并发用户访问数据库,并且提高数据库的访问性能,Oracle 需要引入共享内存,从而实现资源的共享。比如,针对 SQL 引擎,每个 SQL 最终将会被解析为一系列的执行步骤,这就是我们常说的执行计划。如果同一个 SQL 执行多次,每次都要重新生成执行计划,那么效率就比较低下了,Oracle 引入了共享池来实现这方面的共享。同样,如果一个数据块每次读取都要访问文件,那么效率就不高了,于是 Oracle 引入了 DB Cache 来缓存这些数据。同一个数据块可能被多个用户修改,如果每次修改就要直接存盘,那么效率也会降低,于是 Oracle设计了 DBWR 进程,来专门负责将数据块写入文件。
  数据文件是存储 Oracle 数据库中的数据的,也是 Oracle 数据库中最为核心的文件。Oracle
数据库中的表、索引等都是记录在数据文件中的。其中系统表空间包含的数据文件里保存了数据
库的元数据(metadata),这部分数据是十分关键的,如果 metadata 出现故障,那么我们在访问
数据库的数据时就会发生问题。

  DB Cache 是 Oracle 数据库中对性能影响最大的组件,优化 DB Cache 也是一个 DBA 最基本的职责。搞过软件开发的人都知道,缓冲区是提高性能的有效机制,DB Cache 的存在主要是为了提高会话访问数据文件中数据的效率。 Oracle 的 DB Cache 机制与其数据存储结构关系十分紧密,Oracle 的数据在文件中是以 Block为单位存放的,因此 DB Cache 和数据块紧密对应。在内存中,DB Cache 存储的就是 Block 的完整镜像。
  1、DB Cache 是以 Block 为单位组织的缓冲区,不同的 Block Size 的数据块对应于不同的 DB Cache。从 Oracle 9i 开始,RDBMS 支持多种不同块大小的表空间,如果我们要使用它们,就必须为这种特殊的数据块大小的数据文件设置单独的缓冲池。而默认的 DB Cache、Keep Pool、Recycle Pool 只能用于默认块大小的表空间。
  2、用户访问 DB Cache 的数据比访问磁盘上的数据,速度要快数十倍甚至上百倍,因此应用系统应该尽可能多地从 DB Cache 中访问数据。在大多数情况下,DB Cache 的命中率越高,访问性能就越好。
  3、DB Cache 是由一系列共享内存组成的,是在 SGA 中统一分配的一个组件。SGA 管理的共享内存区域是通过类似 shmget,shmat 等 UNIX 系统调用获取的。根据操作系统及其参数设置的不同,SGA 可能是经过多个共享内存申请获取到的内存的总和。在 SGA 中,系统根据初始化参数的设置,分配相应的 DB Cache。

小结

  刚刚接触到Oracle数据库系统会有太多新的概念需要一点点理解消化,虽然还不是一名专业的DBA但是这样带有探索性的学习和认识还是很让人兴喜快乐的,等我实际的应用一段时间,再来和大家更加系统的说明,荣幸与您分享!

你可能感兴趣的:(项目积累)