oracle学习笔记第一章:体系结构

1、安装简介:省去1000行

2、实例和数据库:

   实例:数据库里的一些相关的进程启动起来,调入到内存当中,共同起到一个协调的作用


   数据库:通常讲的数据库就是一系列的文件系统,在oracle数据库当中:控制文件*.ctl,数据文件*.dbf,日志文件*.log,在oracle中有两种日志文件:


       联机日志文件:redo*.log,又称重做日志文件,特点是:redo01.log写完写redo02.log,在写redo03.log  当 redo03.log写满以后,重写redo01.log,将原来的内容覆盖;

       归档日志文件:在我们进行备份的时候,尤其是热备份的时候要选择的一种归档方式备份的文件;

  

   在这三类文件中由控制文件管理和控制数据文件和日志文件,在启动数据库的时候,启动起对应的实例之后首先启动 控制文件,由控制文件打开数据文件。

  

    利用sqlplus查看文件:

       查看控制文件结构: DESC v$controlfile

       查看控制文件里面的内容,如:select status,name from v$controlfile;


       查看数据文件结构: DESC v$datafile

       查看数据文件里面的内容,如:select status,file# from v$datafile;


       查看日志文件结构: DESC v$logfile

       查看日志文件里面的内容,如:select member from v$logfile;


 

oracle数据库中还有一种参数文件,它不是数据库的有效组成部分,也就是说当我们启动数据库的时候参数文件不直接参与启动工作,而我们的控制文件是由参数文件来寻找的。参数文件位于database目录下名称是spfiletest.ora


Oracle数据库的物理结构或称为文件系统

数据库物理结构图

Oracle的内存结构如图:

oracle内存结构图

 

 

 

当一个oracle实例运行的时候,它分配了一个称为SGA(系统全局区)的大的内存块,实例的SGA被实例的所有后台进程所共享,在整个的SGA的区域里面,包括一下几个缓存池:

数据库高速缓存区(DB buffer),大共享区,共享池 ,日志缓存区,固定SGA(系统全局区)

解读:

       1、DBbuffer (数据库的高速缓存区):如果每次执行SQL查询的时候,oracle必须从磁盘读取数据块,并且在改变之后把每一个数据块写入到磁盘,那么oracle的执行效率非常的慢,而oracle的缓存区能经常使用内存中的数据块,数据库中用来频繁访问数据的区域就称之为高速缓存区;高速缓存区也是SGA里面最大的一个部分,高速缓存区包括以下三个缓存池:默认缓存池,保持缓存池,再生缓存池;

    保持缓存池:在数据库中长期保持的,经常访问的,如代码表使用该缓存池;该缓存池在

        数据块运行期间一直保留,并不从内存中释放空间;

再生缓存池:想尽快从内存中排除的对象我们可以使用再生缓存池,如频繁访问的大表。

   默认缓存池:在oracle8a之前它仅仅支持缓存器池,比如修改buffer等相关参数的值来决定缓冲池的大小

DB高速缓存池

 

2、共享池:

共享缓存池

 共享池的规模对数据库的性能有着非常重要的影响,

3、redoBuffer(日志缓存池):是oracle里面的一个内存区域,用来放入需要写入磁盘的redo记录,我们在数据库里面的文件系统里面包括redo的日志文件,通过一个日志的书写进程,来对日志文件进行操作,它是oracle一循环的方式先进先出的缓存器池

4、  大共享区:是oracle可选的特性,他提供了一个分配大内存块的隔离内存区,不一定需要一个大的共享区,如果使用多线程的服务器,或者备份或者使用RMN等相关的操作的时候,可能会需要到它。

5、  固定的SGA域是我们不能设定大小的,完全由oracle独立的去控制;

     字典缓存区是oracle缓存字典信息的一个缓存区,当分析sql语句校验表名,列名等数据库信息的时候,oracle将频繁的提到数据字典,通过把最频繁使用的数据字典的信息存储到内存中。Oracle减少了一些sql语句引起的性能上的冲突。

 

 

Oracle的逻辑结构。

 oracle的逻辑结构

 

Oracle存储数据的最基本单位是一个块,在windows平台下,默认的块大小是8K8192个字节,我们可以在安装数据库之前设定块大小,但是一定是操作系统块大小的整数倍


一个表空间对应着多个数据文件,我们从数据文件当中并不能直接解读对应的表的信息,这是关于数据库共通的特点。从逻辑上讲一个表空间可以包含着多个段。

 

共享sql区保留了sql语句的解释版本,以便于再次访问的时候不必要再去解释,

在共享的sql区里面保留了用户执行sql语句的解释版本,目的是这些sql再吃执行的时候能够提高进程的速度;

 

PL/SQL区保留了PLsql的过程,函数等程序单元的编译版本,以便于所有的用户能够共享,当程序执行一个plsql的一个单元的时候,当有两个以上用户执行相同的内容的时候,oracle并不缓存两个以上的区域,它吧相同的代码做一个拷贝,被不同的用户所缓存;

 

猜你喜欢

转载自super-sjh.iteye.com/blog/1738590