oracle结构

上图为自己根据食品教程总结出来的可能会有一些不正确的地方,也希望大家能指正。
 
 以下是自己看视频时做下的笔记。

InstanceDatabase是一对N的关系 一个实例可以操作多个Database ,而一个Database只能被一个instance操作。

一、Memory Structures

 

1SGA区内容

 

                  show sga 查看Database的内存结构

                  select * from v$bgprocess;查看所有可能会使用到的后台进程

                  select * from v$controlfile;查看系统下的控制文件

                  select * from v$datafile;查看系统下的数据文件

                  select * from v$logfile;查看系统下的日志文件

 

           show parameter shared    查看共享区信息

                  show parameter db_cache  查看数据缓冲区信息

                  show parameter log       查看日志缓冲区信息

 

                    shared+ db_cache+ log= SGA_MAX_SIZE

 

                  show parameter SGA 查看sga信息

                          alter session set nls_language=american;

                           alter system set db_cache_size=64M; 将数据缓冲区设置为64M设定大小要符合  shared+ db_cache+ log= SGA_MAX_SIZE条件

 

                              alter system set db_cache_advice=on; oracle建议打开。可以建议   shared db_cache log大小

 Shared pool

 

     Library cache 保存最近使用的SQLPL/SQL语句的信息。主要是为了提高代码的共享。可以有效的提高系统性能。使用的LRU算法。不能单独定义,

       只能借助于shared pool来定义。

 

     Data dictionary cache(row cache) 也就是数据字典。 也称为行cache 也即 row cache。

       包含database file、table、indexes、columns、users、 privileges、and other database objects信息。不能单独定义,只能借助于shared pool来定义。

 

 

 Database buffer cache:

      Show parameter db;

            参数一:db_16_cache_size db_32_cache_size

                                                 Db_cache_size

            参数二:db_block_buffer

 

            Oracle使用内存是以块大小为基本单位

            DB_BLOCK_SIZEinit.ora文件中) 定义了默认块大小。(9i以前是固定的。以后的都是可以改变的)

     块大小= db_block_buffer×DB_BLOCK_SIZE

            DB_CACHE_SIZE

            DB_KEEP_CHCHE_SIZE

            DB_RECYCLE_CACHE_SIZE

            DB_CHCHE_ADVICE        这个参数可以让oracle根据运行特征来分配shared db_cache log三者大小。用Show parameter db;命令可以查看该参数

          是否打开。用 alter       system set db_cache_advice=on;语句可以将该功能打开。

 

 Redo log buffer

      完成recovery功能。也即重做、回滚自己的改变。

                  Show parameter log_buffer 查看信息。

 

  Large pool

            Alter system set large_pool_size=20m;

 

  Java pool

 

2PGA区内容

 

 

二、Process Structures

  User process

         当启动一个工具、一个程序时会启动一个用户进程不可以操作数据库发出来的命令不可以直接管理database操作。

       必须借助于Server process。必须建立和oracle的连接才能使用。

  Server process

        连接到oracle的instance而且是在用户建立session时启动。

        用来履行用户进行产生的calls 并且返回结果。

        可以被独占也可以被共享。

  Background process

         在oracle instance启动之后就启动。

         必须的:DBWn PMON CKPT LGWR SMON PECO

         可选的: ARCn LMON Snnn QMNn LMDn CJQ0 Pnnn LCKn Dnnn

 

          Select * from v$bgprocess where paddr<>00查询必须的后台进程。

 

            DBWn用来把Database buffer cache中的脏数据(被改变的数据)写回到Data files中。

                  在以下条件会写回: Checkpoint(同步)

                                     Dirty buffers threshold reached(Database buffer cache中的脏数据达到了一个值)

                                     No free buffers(Database buffer cache中的自由空间太少了)

                                     Timeout(3秒钟)

                                     RAC ping request

                                     Tablespace offline

                                     Tablespace read only

                                     Table DROP or TRUNCATE

                                     Tablespace BEGIN BACKUP(进入备份模式)

 

           LGWR:用来把 Redo log buffer中的写回到 Redo log files

                 在以下条件会完成写的工作:

                                          At commit (数据改变后,发出commit语句),

                                          When one-third full(1/3),

                                          When there is 1 MB of redo(日志每1MB就需要redo),

                                          Every 3 seconds(3秒钟),

                                          Before DBWn writes(在写数据之前先写日志,写日志优先).

 

           SMON:database启动过程中需要recovery 则打开databaseRoll back没有提交的transaction

                在系统中每3秒钟对自由空间的整理。

                对临时段空间的清空。

 

           PMON

                主要是回滚transaction

                释放锁

                释放其他资源

                重启死掉的dispatchers(调度器)

 

           CKPT

                在数据库中用来实现同步。

                在同步之前会启动DBWn进程写脏数据

                会更新datafileheaders(headers会纪录同步的信息)

                会更新controlfilesheaders(headers会纪录同步的信息)

 

           ARCn:

                必须执行在归档日志模式下才会启动该进程。

                用来自动备份我们的在线日志。

posted @ 2009-07-09 19:25  scott_zhou  阅读(774)  评论(0编辑  收藏  举报