参考:http://www.linuxidc.com/Linux/2015-07/120424.htm
参考《创建pfile和spfile》:http://blog.csdn.net/test_me/article/details/5676410
默认情况下,Oracle 11g是使用AMM(Automatic Memory Management,自动内存管理)的。我们在安装数据库过程中,指定Oracle使用内存的百分比,这个取值就作为MEMORY_TARGET和MEMORY_MAX_TARGET的初始取值使用。如果这两个参数设置为非零取值,那么Oracle就是采用AMM管理策略的。
下面演示一下如何修改MEMORY_TARGET的值。
1.environment
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE 11.2.0.3.0 Production
TNS for Linux: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production
2.when use AMM:
sga_max_size、sga_target、pga_aggregate_target=0 && memory_max_target 、memory_target<>0。
SQL> create pfile from spfile;
SQL> alter system set memory_max_target=1024m scope=spfile;
SQL> alter system set memory_target=1000m scope=spfile;
SQL> alter system set sga_target=0 scope=spfile;
SQL> alter system set sga_max_size=0 scope=spfile;
SQL> alter system set pga_aggregate_target=0 scope=spfile;
SQL> shutdown immediate
SQL> startup
3.modify MEMORY_TARGET
我们通过alter system语句来修改MEMORY_TARGET,需要注意的是,MEMORY_TARGET是个动态参数,而MEMORY_MAX_TARGET是个静态参数。
这样一来,当修改值<=MEMORY_MAX_TARGET时,我们可以随意修改MEMORY_TARGET值;但是,当修改值>MEMORY_MAX_TARGET时,我们必须首先修改MEMORY_MAX_TARGET参数值,重启数据库使静态参数生效后再去修改MEMORY_TARGET值,否则,数据库会报错。
SQL> alter system set memory_target=1025m scope=spfile;
SQL> startup force
ORA-00837: Specified value of MEMORY_TARGET greater than MEMORY_MAX_TARGET
SQL>
1、Oralce在启动实例的时读取$ORACLE_HOME/dbs下面的初始化文件。
初始化文件分为:
A、静态参数文件PFILE,一般名为initSID.ora
B、永久参数文件SPFILE,一般名为spfileSID.ora
在Oracle9i之前启动实例时都读取的是静态参数文件initSID.ora,9i之后使用了永久参数文件spfileSID.ora。
因为修改了静态参数文件需要重启数据库实例后才生效,而永久参数文件则不是。
2、创建PFILE
(1)根据$ORACLE_HOME/dbs/init.ora文件创建
复制init.ora文件,按照需求修改该文件,并将文件名命名为initSID.ora,否则需要使用
startup pfile=$ORACLE_HOME/dbs/修改的文件.ora方式启动实例。
但是,可能$ORACLE_HOME/dbs/init.ora文件很老,即使修改了可能启动时也会出错
(2)根据SPFILE文件创建PFILE
CREATE PFILE=$ORACLE_HOME/dbs/initSID.ora FROM SPFILE $ORACLE_HOME/dbs/spfileSID.ora
若都使用默认的,则可简写为:
CREATE PFILE FROM SPFILE
[oracle@wyzc ~]$ tail /u01/oracle/11g/dbs/initwyzc11g.ora
*.local_listener='LISTENER_WYZC11G'
*.memory_max_target=1073741824
*.memory_target=1004790400
*.open_cursors=300
*.pga_aggregate_target=0
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_max_size=0
*.sga_target=0
*.undo_tablespace='UNDOTBS1'
[oracle@wyzc ~]$
[oracle@wyzc ~]$ sqlplus /nolog
SQL> conn / as sysdba
SQL> startup pfile
SP2-0714: invalid combination of STARTUP options
SQL> startup pfile='/u01/oracle/11g/dbs/initwyzc11g.ora'
SQL> show parameter target
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
archive_lag_target integer 0
db_flashback_retention_target integer 1440
fast_start_io_target integer 0
fast_start_mttr_target integer 0
memory_max_target big integer 1G
memory_target big integer 960M
parallel_servers_target integer 64
pga_aggregate_target big integer 0
sga_target big integer 0
SQL>
SQL> create spfile from pfile;
[oracle@wyzc ~]$ tail /u01/oracle/11g/dbs/spfilewyzc11g.ora
*.memory_max_target=1073741824
*.memory_target=1004790400
*.open_cursors=300
*.pga_aggregate_target=0
*.processes=150
*.remote_login_passwordfilCC"56e='EXCLUSIVE'
*.sga_max_size=0
*.sga_target=0
*.undo_tablespace='UNDOTBS1'