刚在windows 7上安装了oracle 11g。总所周知,oracle是一个庞然大物,不仅体积巨大,吃得也多。每次一开oracle,内存都会被用去很多。对于一个仅仅只是学习oracle的人来说,没必要需要那么多内存,所以就对oracle进行修改。
oracle的内存结构分为SGA(System Global Area)与PGA(Program Global Area)
SGA:是Oracle为系统分配的一组共享的内存结构,可以包含一个数据库实例的数据或控制信息。
当数据库实例启动时,SGA的内存被自动分配;当数据库实例关闭时,SGA回收。
在Oracle 11g里如果没有指定sga_max_size参数,而是指定了参数sga_target,则oracle会自动调整sga各区域的内存大小,并使内存的总量等于参数sga_target指定的值
sga一些重要的区域:
1,数据缓冲区
数据缓冲区用于存储从磁盘数据文件中读取的数据,供用户共享
SQL> show parameter db_cache_size ;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_cache_size big integer 0
2,日志缓冲区
日志缓冲区用于存储数据库的修改操作信息。当日止缓冲区中的日志量达到总量的1/3,或每隔3秒,或日志量达到1mb时,日志写入进程LGWR就会将日志缓冲区中的日志信息写入日志文件中;
SQL> show parameter log_buffer
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_buffer integer 6324224
3,共享池
共享池用于保存最近执行的SQL语句,PL/SQL程序的数据字典信息,它是对SQL语句和PL/SQL程序进行语法分析,编译和执行的内存区域。共享池主要包括如下两种子缓存。
库缓存:库缓存保存数据库运行的SQL和PL/SQL语句的有关信息。
SQL> show parameter shared_pool_size
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
shared_pool_size big integer 0
数据字典缓存:
4,大型池
大型池用于提供一个大的缓冲区供数据库的备份和恢复操作使用。
SQL> show parameter large_pool_size ;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
large_pool_size big integer 0
5,Java池
用于在数据库中支持Java的运行。例如用Java编写一个存储过程,这时jvm就会使用Java池来处理用户会话中的Java存储过程
SQL> show parameter java_pool_size ;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
java_pool_size big integer 0
(斜体字属于摘抄)
下面是修改Oracle的内存结构的操作过程:
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 744M
sga_target big integer 0
SQL> show parameter memory
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
hi_shared_memory_address integer 0
memory_max_target big integer 1232M
memory_target big integer 1232M
shared_memory_address integer 0
SQL> connect sys as sysdba
输入口令:
已连接。
SQL> alter system set memory_target=300m scope=spfile ;
系统已更改。
SQL> alter system set memory_max_target=300m scope=spfile ;
系统已更改。
SQL> alter system set sga_max_target=200m scope=spfile ;
alter system set sga_max_target=200m scope=spfile
*
第 1 行出现错误:
ORA-02065: 非法的 ALTER SYSTEM 选项
SQL> alter system set sga_max_size=200m scope=spfile ;
系统已更改。
SQL> shutdown immediate ;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 209235968 bytes
Fixed Size 1373600 bytes
Variable Size 104860256 bytes
Database Buffers 96468992 bytes
Redo Buffers 6533120 bytes
数据库装载完毕。
数据库已经打开。
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 200M
sga_target big integer 0
SQL> show parameter memory
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
hi_shared_memory_address integer 0
memory_max_target big integer 300M
memory_target big integer 300M
shared_memory_address integer 0
SQL>
OEM里的信息:
Oracle博大精深,需要努力学习!