C:\Users\Administrator>sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Release 11.2.0.1.0 - 64bit Production
SQL> show sga
Total System Global Area 6764429312 bytes
Fixed Size 2188568 bytes
Variable Size 5351934696 bytes
Database Buffers 1392508928 bytes
Redo Buffers 17797120 bytes
SQL> select * from v$sga;
NAME VALUE
---------------------------------------- ----------
Fixed Size 2188568
Variable Size 5351934696
Database Buffers 1392508928
Redo Buffers 17797120
SQL> show parameter ga
NAME TYPE VALUE
------------------------------------ ----------------------------------------------------
lock_sga boolean FALSE
pga_aggregate_target big integer 0
pre_page_sga boolean FALSE
sga_max_size big integer 6480M
sga_target big integer 0
SQL> alter system set sga_max_size=10G scope=spfile;
System altered.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup;
ORA-00844: Parameter not taking MEMORY_TARGET into account
ORA-00851: SGA_MAX_SIZE 10737418240 cannot be set to more than MEMORY_TARGET 6811549696.
呵呵,搞得oracle都起不来了,一查原来是oracle11的SGA调整和原来的10不一样了。
如何调整是后话,先把oracle起来才是主要的。
C:\Users\Administrator>sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Connected to an idle instance.
SQL> create pfile='d:\pfile.txt' from spfile;
File created.
打开输出的配置文件,把里面修改的sga_max_size该回去,把配置文件导回去
SQL> create spfile from pfile='d:\pfile.txt';
File created.
SQL> startup;
ORACLE instance started.
Total System Global Area 6747725824 bytes
Fixed Size 2180424 bytes
Variable Size 3254782648 bytes
Database Buffers 3456106496 bytes
Redo Buffers 34656256 bytes
Database mounted.
Database opened.
好了,现在可以继续来折腾SGA.
使用一个参数memory_target就能够实现SGA和PGA组件依据工作负荷进行自动内存分配。oracle推荐使用自动内存管理简化内存分配。两个新的关键的内存初始化参数memory_target(这个参数设置分配给实例的内存数)和memory_max_size(这个参数是可选的,设置实例能够分配的最大内存,设置的是memory_target的上限值)。
memory_max_size参数是静态,然而memory_target是动态的。因此你可以调整memory_target参数值的大小,但上限是memory_max_size。
既然实现自动,我就不用操心了,直接修改最大的内存给他,剩下的他们自己内部协调去。
SQL> alter system set memory_max_target=10G
SQL>alter system set memory_target=10G