现在的位置: 首页 > 综合 > 正文

oracle server

2013年12月07日 ⁄ 综合 ⁄ 共 2246字 ⁄ 字号 评论关闭

学习oracle已经两个月了,但最近这个月又在做北京的一个项目,几乎没时间看oracle,所以算下来,真正学的时间也就一个月。这两天项目终于要做完了,感谢老师这么催促和剥削,不然现在还在悲剧地写代码。休息了两天,今天又可以学习oracle了。其实写代码的好处就是把面向对象思想加深了下理解,间接地对于oracle学习也有不少帮助,感觉oracle的设计者在设计的时候,完全就是从哲学角度设计一个理想的对象实体。首先还是要深入理解一下oracle的体系结构。

  • oracle server

            oracle server  由例程(Instance) 和数据库(Datebase) 组成的,是整个oracle中最大的概念。一个server 要启动,必须有一系列的内存和进程和文件协作才行。例程就是一组内存结构(SGA)和后台进程(SMON, PMON, ....)的集合,而数据库是一组OS文件的集合。

 

  •          SGA

           SGA 由一组内存结构组成,它是由所有用户进程共享的一块内存区域。SGA主要包括共享池、数据高速缓存和重做日志缓冲区三个部分。

 

          1.1 共享池

               

                共享池用于最近存放的SQL语句和数据字典信息,其尺寸由初始化参数 SHARED_POOL_SIZE 定义。共享池主要由库告诉缓存和数据字典高速缓存两部分组成

  

             1.1.1 库高速缓存

                      库告诉缓存用于存放最近执行的SQL语句信息,包括SQL语句文本、解析代码值及其执行计划。执行计划实际上是oracle执行SQL语句的内部操作步骤。例如,当执行语句“select ename  from emp where empo=7788”,如果在EMPNO   列上不存在索引,执行计划将采用全表扫描;如果在EMPNO 列上存在索引,执行计划将使用索引和ROWID定位数据。 

            1.1.2  数据字典高速缓存

                     数据字典告诉缓存用于存放数据字典的信息,包括表、列的定义以及权限信息。

             1.1.3 动态改变共享池尺寸

                      alter system set shared_pool_size=60M;

2. 数据告诉缓存

            2.1

              

             数据告诉缓存用于最近存放的数据库信息,它有许多小缓冲区组成。在oracle10G 中,使用初始化参数DB_CACHE_SIZE 和 DB_nK_CACHE_SIZE(n:2、4、6、8、16。。。)来定义数据高速缓存的尺寸,其中参数DB_CACHE_SIZE用于定义标准数据高速缓存的尺寸,DB_nK_CACHE_SIZE用于定义非标准数据高速缓存的尺寸。

             假定初始化参数DB_BLOCK_SIZE的值是4096,则4K的数据块会使用DB_CACHE_SIZE所定义的标准数据告诉缓存;2K数据库会使用DB_2K_CACHE_SIZE所定义的标准数据高速缓存;8K则会使用DB_8K_CACHE_SIZE所定义的非标准数据告诉缓存。

 

               2.2 修改数据告诉缓存尺寸

                      alter system set db_cache_size=60M

                      alter system set db_4k_cache_size=20M

3.  重做日志缓冲区

              重做日志缓冲区用于记载例程变化,其尺寸由LOG_BUFFER定义。执行DDL或DML语句时,服务器进程首先将事务变化记载到重做日志缓冲区,然后才会修改数据高速缓存。重做日志缓冲区由很多重做记录组成,并且每条重做记录记载了被修改数据块的位置以及变化后的数据。

 4. 大缓冲池和java池

         4.1 大缓冲池

                用于为大内存操作提供相对独立的内存空间。通过分配大缓冲池,可以提高这些大内存操作的性能。一下情况应分配大缓冲池:

                  使用共享服务器

                  使用RMAN在磁带设备上执行备份、转储和恢复等操作

                  执行并行查询

                  使用I/O SLAVES 提高I/O性能

               大缓冲池由LARGE_POOL_SIZE定义。

          4.2 JAVA池

                   用于存放JAVA代码,由JAVA_POOL_SIZE 定义

  • PGA

          PGA用于存放服务器进程的数据和控制信息。当用户进程连接到server时,server会为每个服务器进程分配相应的PGA。初始化参数 pga_aggregage_target用于指定所有服务器进程总计占用的最大PGA内存空间。PGA由排序区、会话信息、游标状态、以及堆栈空间等四部分组成。

 

 

 

  • 后台进程

                 to be continued...

 

 

 

 

由于实在是语言功底不行,磨机了好久还没法把内心最想说的写出来,所以参考《精通oracle10G系统管理》一书。这是我的入门书,非常不错

抱歉!评论已关闭.