Oracle 参数文件 |
参数文件分类
- pfile :(parameter file)静态参数文件。
1)文本文件,可以使用vi,vim等编辑器修改参数。
2)修改参数下次重启实例才生效。
3)pfile 参数文件可以不在 database server 上。
4)命名方式:init+SID.ora 。 - spfile :(system parameter file) 动态参数文件。
1)二进制文件,不可以通过编辑器修改,可以使用 EM 或指令来修改(alter system|session set parameter_name = values <>)。
2)Linux 下 strings 可以查看。
3)必须在 database server 端的指定路径($ORACLE_HOME/dbs)下。
4)支持RMAN备份。
5)命名方式: spfile+SID.ora 。
参数文件优先级
Oracle 启动时读取参数文件的顺序为:
spfilesid.ora --> spfile.ora -->initsid.ora
如果3个文件都不存在,则会报错。
参数文件之间相互生成
- 由 spfile 生成 pfile
create pfile from spfile //执行完毕后,pfile 将保存为$ORACLE_HOME/dbs/init$ORACLE_SID.ora
也可指定 pfile 的路径
create pfile = '<dir>' from spfile;
例:
SQL>create pfile='/oradata/oracle/app/oracle/product/12.1.0/dbhome_1/dbs/wind.ora' from spfile;
- 由 pfile 生成 spfile
create spfile from pfile////执行完毕后,pfile 将保存为$ORACLE_HOME/dbs/spfile$ORACLE_SID.ora
指定 pfile 路径
create spfile from pfile = '<dir>'
指定 pfile 路径及生成的 spfile 存放路径
create spfile = '<dir>' from pfile = '<dir>'
参数文件示例
$ cat initstudy.ora
study.__data_transfer_cache_size=0
study.__db_cache_size=1375731712
study.__java_pool_size=16777216
study.__large_pool_size=33554432
study.__oracle_base='/oradata/oracle/app/oracle'#ORACLE_BASE set from environment
study.__pga_aggregate_target=1325400064
study.__sga_target=1962934272
study.__shared_io_pool_size=100663296
study.__shared_pool_size=419430400
study.__streams_pool_size=0
*._catalog_foreign_restore=FALSE
*.audit_file_dest='/oradata/oracle/app/oracle/admin/study/adump'
*.audit_trail='db'
*.compatible='12.1.0.2.0'
*.control_files='/oradata/oracle/app/oracle/oradata/study/control01.ctl','/oradata/oracle/app/oracle/fast_recovery_area/study/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='study'
*.db_recovery_file_dest='/oradata/oracle/app/oracle/fast_recovery_area'
*.db_recovery_file_dest_size=4560m
*.diagnostic_dest='/oradata/oracle/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=studyXDB)'
*.enable_pluggable_database=true
*.memory_target=3128m
*.open_cursors=300
*.processes=300
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'
参数详解可参考:http://blog.itpub.net/17203031/viewspace-697335/
Oracle 参数 |
Oracle 参数分类
- 动态参数
在 spfile 读到内存后,有一部分参数可以直接在内存中修改,并对当前 instance 立即生效,这样的参数叫动态参数。动态参数在 instance 关闭后失效。 - 静态参数
除了动态参数都是静态参数。静态参数需要修改 spfile 文件。静态参数需重启 Instance 才生效。
修改 spfile 文件的方法:
alter system set 参数=值 [scope=memory|spfile|both]
alter system reset 参数 [scope=memory|spfile|both] SID='*' //恢复缺省值
scope=memory :参数修改后立刻生效,但不修改 spfile 文件。
scope=spfile :修改了 spfile 文件,重启后生效。
scope=both :前两种都要满足。
如果不写 scope,即缺省,缺省值为scope=both 。
注意:不修改 spfile,是无法更改静态参数的呦。
参数修改
Oracle中,有些参数可以在 session 级别修改,有些则必须在 system 级别修改,有些参数不需要重启就能马上生效,有些参数必须重启才能生效。
那要如何知道这些信息呢?又该如何修改这些参数呢?视图 v$parameter 提供了这些信息。
SQL> desc v$parameter;
Name Null? Type
----------------------------------------- -------- ----------------------------
NUM NUMBER
NAME VARCHAR2(80)
TYPE NUMBER
VALUE VARCHAR2(4000)
DISPLAY_VALUE VARCHAR2(4000)
DEFAULT_VALUE VARCHAR2(255)
ISDEFAULT VARCHAR2(9)
ISSES_MODIFIABLE VARCHAR2(5)
ISSYS_MODIFIABLE VARCHAR2(9)
ISPDB_MODIFIABLE VARCHAR2(5)
ISINSTANCE_MODIFIABLE VARCHAR2(5)
ISMODIFIED VARCHAR2(10)
ISADJUSTED VARCHAR2(5)
ISDEPRECATED VARCHAR2(5)
ISBASIC VARCHAR2(5)
DESCRIPTION VARCHAR2(255)
UPDATE_COMMENT VARCHAR2(255)
HASH NUMBER
CON_ID NUMBER
重点介绍该视图的以下几列:
ISSYS_MODIFIABLE :这一列标志该参数是否可以在system级别被修改,对应 alter session 命令。
SQL> select distinct issys_modifiable from v$parameter;
ISSYS_MOD
---------
IMMEDIATE //对应 scope=memory
FALSE //只能 scope=spfile,即修改 spfile 文件,下次启动才生效。
DEFERRED //其他 session 有效
其中有三个值:
- IMMEDIATE —— 表示修改之后立即生效;
- DEFERRED —— 表示下个 session 才生效,当前 session 尚未生效;
- FALSE —— 表示实例重启后才能生效。
ISSES_MODIFIABLE :这一列标志该参数是否可以在 session 级别被修改,对应 alter system 命令。
SQL> select distinct isses_modifiable from v$parameter;
ISSES
-----
TRUE //表示可以修改
FALSE //表示不能修改
其中有两个值:
TRUE —— 表示可以修改;
FALSE —— 表示不能修改。
为了更好的理解上面的内容,下面通过4个典型参数做进一步说明。
SQL> select name,ISSES_MODIFIABLE,ISSYS_MODIFIABLE from v$parameter where name in ('workarea_size_policy','audit_file_dest','sga_target','sga_max_size');
1)workarea_size_policy 可在 session 级别修改,可以通过 alter session 修改,修改后立即生效。
先查看当前配置:
SQL> show parameter workarea_size_policy
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
workarea_size_policy string AUTO
在session级别修改:
SQL> alter session set workarea_size_policy=MANUAL;
Session altered.
在当前 session 查看,可以发现修改已经生效:
SQL> show parameter workarea_size_policy
NAME TYPE VALUE
------------------------------------ ----------- -------------------
workarea_size_policy string MANUAL
2)sga_target 可在 system 级别修改,可以通过 alter system 修改,修改后立即生效。
先查看当前配置:
SQL> show parameter sga_target
NAME TYPE VALUE
------------------------------------ ----------- --------------
sga_target big integer 1000M
在 system 级别修改:
SQL> alter system set sga_target=1500M;
System altered.
用alter system修改后立即生效:
SQL> show parameter sga_target
NAME TYPE VALUE
------------------------------------ ----------- ------------------
sga_target big integer 1500M
3) audit_file_dest 可在 system 级别修改,可以通过 alter system 修改,下个session才生效。
先查看当前配置:
SQL> show parameter audit_file_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest string /oradata/oracle/app/oracle/admin/study/adump
在 system 级别修改:
SQL> alter system set audit_file_dest='/oradata/oracle/app/oracle/admin/study/adump/test' deferred;
System altered.
注意:后面必须得加关键字 deferred,否则会报错。
在当前 session 查询,还是原值:
SQL> show parameter audit_file_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest string /oradata/oracle/app/oracle/admin/study/adump
重新开个session,在新的 session 中查询,是修改后路径:
SQL> show parameter audit_file_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest string /oradata/oracle/app/oracle/admin/study/adump/test
4)sga_max_size 可在 system 级别修改,可以通过 alter system 修改,需重启实例才能生效。
先查看当前配置:
SQL> show parameter sga_max_size
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sga_max_size big integer 3136M
在 system 级别修改:
SQL> alter system set sga_max_size=3200 scope=spfile;
System altered.
注意:后面必须得加scope=spfile,否则会报错。
实例重启之前查看,该参数还是原来值:
SQL> show parameter sga_max_size
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sga_max_size big integer 3136M
重启实例:
SQL> shutdown immediate
SQL> startup
再次查看,该参数值已更新:
SQL> show parameter sga_max_size
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sga_max_size big integer 3200M