本文运行环境
SQL> select BANNER_FULL from v$version; BANNER_FULL ---------------------------------------------------------------------------------------------------------------------------------------------------------------- Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.3.0.0.0
1.参数文件:
是一个包含一系列参数及参数对应值的操作系统文件。
类型:
(Initialization Parameters Files) pfile: 文本文件
Server Parameter Files spfile 文件,该文件为二进制格式 --V$SPPARAMETER <---X$KSPSPFILE
对于动态参数所有更改可以立即生效,同时你可以选择使更改只应用于当前实例还是同时应用到 spfile ,对于静态参数我们只能将变更应用到 spfile 文件,这些变更在数据库重启后生效。
select sid,name,value from v$spparameter where value is not null; SID NAME VALUE ---------------------------------------- ------------------- ---------------- * processes 500 * nls_language AMERICAN .... * audit_trail db * db_name D4CDB * open_cursors 300 * optimizer_index_cost_adj 100 * statistics_level ALL * diagnostic_dest /oracle/D4C * enable_pluggable_database true
查询输出结果中的 SID 项,如果 SID 为“*”则意味着参数设置对 RAC 集群中的所有实例有效,如果是指定了实例名称的,则只对相应实例生效;对于单实例数据库,则 SID项设置皆为“*”
V$SYSTEM_PARAMETER -->实例(INSTANCE)级别生效的参数设置,-->系统(SYSTEM)级别的参数设置;
V$PARAMETER -->当一个会话(SESSION)创建时,会首先从 V$SYSTEM_PARAMETER 继承参数设置,显示在会话级别生效的参数设置,如果在会话级别修改了参数设置,这里的参数值就可能和V$SYSTEM_PARAMETER 显示的有所不同
V$PARAMETER2 和 V$PARAMETER 的区别在于,对于存在多个参数值的参数,在这个视图中分多行记录,
V$SYSTEM_PARAMETER2 和V$PARAMETER2类似
2.SPFILE 的创建
create spfile from pfile;
缺省的,spfile 会创建到系统缺省目录,在 Unix 下的缺省目录为 $ORACLE_HOME/dbs在 Windows 上的缺省目录为$ORACLE_HOME\database。
3.由内存创建参数文件
create <spfile|pfile> from memory;
4.SPFILE 的搜索顺序
使用 startup 命令: spfile<ORACLE_SID>.ora -->spfile.ora -->init<ORACLE_SID>.ora
5.使用 PFILE/SPFILE 启动数据库
startup pfile=‘/oracle/D4C/193/dbs/init.ora‘;
你可以在 PFILE 链接到 SPFILE 文件,同时在 PFILE 中定义其他参数,如果参数重复设置,后读取的参数将取代先前的设置
修改 PFILE 文件内容如下:
#Pfile link to SPFILE
SPFILE= ‘/oracle/D4C/193/dbs/init.ora‘
log_archive_start = false
可以预见这个 log_archive_start 参数设置将会代替 SPFILE 中的设置
6.修改参数
SCOPE 参数有三个可选值:MEMORY ,SPFILE , BOTH
- MEMORY-只改变当前实例运行,重新启动数据库后失效
- SPFILE-只改变 SPFILE 的设置,不改变当前实例运行,重新启动数据库后生效
- BOTH-同时改变实例及 SPFILE,当前更改立即生效,重新启动数据库后仍然有效。
针对 RAC 环境,ALTER SYSTEM 还可以指定 SID 参数,对不同实例进行不同设置 。所以通过 spfile 修改参数的完整命令如下:
alter system set <parameter_name> =<value> scope = memory|spfile|both [sid=<sid_name>]
7.解决 SPFILE 参数修改错误
sqlplus "/ as sysdba" Connected to an idle instance. SQL> create pfile from spfile; File created. startup pfile=$ORACLE_HOME/dbs/initeygle.ora
8.重置 spfile 中设置的参数
恢复某个参数为缺省值时,可以使用如下命令:
alter system reset parameter <scope=memory|spfile|both> sid=’sid|*’
验证: strings spfile.ora |grep open
9.是否使用了 spfile
SELECT name,value FROM v$parameter WHERE name=‘spfile‘; NAME VALUE ----- ------------------------------------------------ spfile /oracle/D4C/193/dbs/spfileD4C.ora show parameter spfile; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ spfile string /oracle/D4C/193/dbs/spfileD4C.ora SELECT COUNT(*) FROM v$spparameter WHERE value IS NOT NULL; COUNT(*) ---------- 30