扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
2-1-2:日志缓冲区(Log Buffer Cache)
日志缓冲区用来存储数据库的修改信息。该区对数据库性能的影响很小,有关日
志后面还会有详细的介绍。
查询日志缓冲区大小:
SQL> show parameter log_buffer
NAME TYPE VALUE
---------- ----------- -------
log_buffer integer 262144
2-1-3:共享池(Share Pool)
共享池是对SQL,PL/SQL程序进行语法分析,编译,执行的内存区域。
它包含三个部分:(都不可单独定义大小,必须通过share pool间接定义)。
•库缓冲区(Library Cache)包含SQL,PL/SQL语句的分析码,执行计划。
•数据字典缓冲区(Data Dictionary Cache)表,列定义,权限。
•用户全局区(Usr Global Area)用户MTS会话信息。
共享池的大小可以动态修改:
======================================
SQL> show parameter shared_pool_size
NAME TYPE VALUE
------------------------------------ ----------- ------
__shared_pool_size big integer 80M
shared_pool_size big integer 80M
SQL> alter system set shared_pool_size=78m
System altered.
======================================
#上面的__shared_pool_size一行奇怪?
2-2:程序全局区PGA(Programe Global Area)
程序全局区是包含单个用户或服务器数据和控制信息的内存区域,它是在用户进程连
接到Oracle并创建一个会话时由Oracle自动分配的,不可共享,主要用于用户在编程存
储变量和数组。
如上图:
•Stack Space是用来存储用户会话变量和数组的存储区域;
•User Session Data是为用户会话使用的附加存储区。
|--Session Information
|--Sort Area
|--Cursor Information
注意Session information(用户会话信息)在独占服务器中与在共享服务器中所处
的内存区域是不同的。
2-3:排序区,大池,Java池
排序区(Sort Area)为有排序要求的SQL语句提供内存空间。系统使用专用的内存区
域进行数据排序,这部分空间就是排序区。在Oracle数据库中,用户数据的排序可使用
两个区域,一个是内存排序区,一个是磁盘临时段,系统优先使用内存排序区进行排序。
如果内存不够,Orcle自动使用磁盘临时表空间进行排序。为提高数据排序的速度,建议
尽量使用内存排序区,而不要使用临时段。
参数sort_area_size用来设置排序区大小。(好象不能动态修改?)
大池(Large Pool)用于数据库备份工具--恢复管理器(RMAN:Recovery Manager)。
Large Pool的大小由large_pool_size确定,可用下面语句查询和修改:
=========================================
SQL> show parameter large_pool_size
NAME TYPE VALUE
----------------- ----------- -------
large_pool_size big integer 8M
SQL> alter system set large_pool_size=7m;
System altered.
=========================================
Java池主要用于Java语言开发,一般来说不低于20M。其大小由java_pool_size来
确定,可以动态调整。
2-4:Oracle自动共享内存管理(Automatic Shared Memory(SGA) Management)
在Oracle 8i/9i中数据库管理员必须手动调整SGA各区的各个参数取值,每个区要根据
负荷轻重分别设置,如果设置不当,比如当某个区负荷增大时,没有调整该区内存大小,则
可能出现ORA-4031:unable to allocate ...bytes of shared memory错误。
在Oracle 10g中,将参数STATISTICS_LEVEL设置为TYPICAL/ALL,使用SGA_TARGET指
定SGA区总大小,数据库会根据需要在各个组件之间自动分配内存大小。
下面是系统自动调整的区域:
•固定SGA区及其他•共享池•数据缓冲区• Java池•大池。
注意:如果不设置SGA_TARGET,则自动共享内存管理功能被禁止。
==========================================
SQL> show parameter statistics_level
NAME TYPE VALUE
--------------------- ----------- ------------
statistics_level string TYPICAL
SQL> alter system set statistics_level=all;
System altered.
#typical和all有什么区别?
SQL> alter system set statistics_level=typical;
System altered.
SQL> show parameter sga_target
NAME TYPE VALUE
------------- ----------- ----------
sga_target big integer 0
SQL> alter system set sga_target=170m;
alter system set sga_target=170m
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-00823: Specified value of sga_target greater than sga_max_size
SQL> alter system set sga_target=20m;
System altered.
#不过后来又发现sga_target的值变成了140M? 下面是语句执行情况。
SQL> show parameter sga_target
NAME TYPE VALUE
------------- ----------- -------
sga_target big integer 140M
SQL> alter system set sga_target=0;
System altered.
SQL> show parameter sga_target
NAME TYPE VALUE
------------------------------------ ----------- ------
sga_target big integer 0
#改为20M
SQL> alter system set sga_target=20m;
System altered.
#显示的是140M
SQL> show parameter sga_target
NAME TYPE VALUE
------------------------------------ ----------- ------
sga_target big integer 140M
#不可缩减?
SQL> alter system set sga_target=130m;
alter system set sga_target=130m
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-00827: could not shrink sga_target to specified value
#不可增加
SQL> alter system set sga_target=141m;
alter system set sga_target=141m
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-00823: Specified value of sga_target greater than sga_max_size
3:Oracle实例的进程结构(Process Structure)
Oracle包含三类进程:
•用户进程(User Process)
•服务器进程(Server Process)
•后台进程(Background Process)
3-1:用户进程和服务器进程
当数据库用户请求连接到Oracle的服务时启动用户进程(比如启动SQLPlus时)。
•用户进程首先必须建立一个连接。
•用户不能直接与Oracle服务器,必须通过服务器进程交互。
•服务器进程是用户进程与服务器交互的桥梁,它可以与Oracle Server直接交互。
•服务器进程可以有共享和独占两种形式。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者