一.初始化参数文件
初始化参数文件是数据库实例的配置文件,数据库实例在加载进内存时,内存中的参数通过参数文件或默认值构建.
二.两种初始化参数文件(pfile,spfile)
1.pfile(parameter file,参数文件)
pfile是文本格式的参数文件,实例启动时只加载一次,通常认为是静态的.
新版本Oracle已逐步取消pfile文件了
默认名称: initSID.ora
默认位置: $ORACLE_HOME/dbs/
/u01/app/oracle/product/12.1.0/db_1/dbs/pfileSID.ora
新版本Oracle已逐步取消pfile用spfile代替了,在位置$ORACLE_HOME/dbs/已经找不到这个pfile文件了.
创建数据库后会保存一份pfile到以下位置,当spfile有问题时可以使用这个pfile来启动.
/u01/app/oracle/admin/sid/pfile/init.ora.xxxxxxxxxxx
2.spfile(server parameter file,服务器参数文件)
spfile是二进制的参数文件,在实例运行时能读取和更新spfile文件,通常认为是动态的
默认名称: spfileSID.ora, spfile.ora
默认位置: $ORACLE_HOME/dbs/
/u01/app/oracle/product/12.1.0/db_1/dbs/spfileSID.ora
*** 数据库实例在加载时只会读取一个初始化参数文件.
三.搜索参数文件的顺序.
1.在启动实例时,Oracle会在默认位置尝试定位参数文件.
Linux/Unix
$ORACLE_HOME/dbs/spfileSID.ora
$ORACLE_HOME/dbs/spfile.ora (通常只用于RAC环境,一个文件可以启动多个实例)
$ORACLE_HOME/dbs/initSID.ora
Windows
$ORACLE_HOME/database/spfileSID.ora
$ORACLE_HOME/database/spfile.ora
$ORACLE_HOME/database/initSID.ora
2.使用指定参数文件启动实例.
startup pfile=$ORACLE_HOME/dbs/initSID.ora
startup spfile=$ORACLE_HOME/dbs/spfileSID.ora
3.通过pfile创建spfile.
create spfile[='spfilename'] from pfile[='pfilename'];
create spfile='/u01/app/oracle/product/12.1.0/db_1/dbs/spfile' from pfile='/u01/app/oracle/product/12.1.0/db_1/dbs/pfile';
4.通过spfile创建pfile.
create pfile[='pfilename'] from spfile[='spfilename'];
create pfile='/u01/app/oracle/product/12.1.0/db_1/dbs/pfile' from spfile='/u01/app/oracle/product/12.1.0/db_1/dbs/spfileSID.ora';
*** 在实例启动前和启动后都可以创建pfile和spfile,一般在实例无法启动时可能会用到.
四.参数类型
1.静态参数与动态参数
静态参数: 有些参数在实例启动后就固定了.
动态参数: 有些参数可以在实例运行时更改.
查看当前运行的实例中生效的参数值
select name,value from v$parameter order by name;
查看spfile参数文件中的参数值
select name,value from v$spparameter order by name;
查看参数类型:
select name,value,issys_modifiable from v$parameter order by name;
select distinct issys_modifiable from v$parameter;
IMMEDIATE -- 动态参数,立即生效
FALSE -- 静态参数
DEFERRED -- 动态参数,延迟生效
查看静态参数:
select name,value from v$parameter where issys_modifiable='FALSE' order by name;
2.基本参数和高级参数
基本参数: 应该为每个数据库使用基本参数.
select name,value from v$parameter where isbasic='TRUE' order by name;
select s.name,s.value
from v$spparameter s join v$parameter p
on s.name=p.name
where p.isbasic='TRUE'
order by name;
高级参数: 只要高级参数使用了默认值设置,大多数数据库实例都可以完美运行。
实际上还有一些隐式参数,通常不可见,只能在Oracle Support的指导下进行设置。
五.修改初始化参数
语法:
alter system set parameter=value [comment='text'] [deferred] [scope={spfile|both|memory}] [sid='sid|*'];
deferred延迟生效.
scope的三个可选值:
memory: 只改变当前运行的实例.
spfile: 只改变spfile文件的设置.
both: (默认值)改变实例及spfile文件的设置.
如果修改的是静态参数,则必须指定scope=spfile,下次启动实例时参数才生效.
修改静态参数不指定scope=spfile,则会出现错误: ORA-02095: specified initialization parameter cannot be modified.
使用BOTH选项等同不带scope参数的alter system语句.
如果使用pfile启动实例,设置scope=spfile将失败.
有些参数可以在系统级别修改,也可以在会话级别修改.
alter system set optimizer_mode=all_rows;
alter session set optimizer_mode=first_rows;
有些参数只能在会话级别进行修改,如: NLS_DATE_FORMAT.
alter session set nls_date_format='dd-mm-yy hh24:mi:ss';
重设参数为默认参数(reset)
alter system reset log_archive_start scope=spfile;
六.常用参数
cluster_database -- 数据库是RAC还是单实例
compatible -- 模仿的版本,一般是实际版本
control_files -- 控制文件副本的名称和位置
db_block_size -- 数据文件默认块大小
db_create_file_dest -- 数据文件的默认位置
db_create_online_log_dest_1 -- 联机重做日志文件的默认位置
db_create_online_log_dest_2 -- 联机重做日志文件多重副本的默认位置
db_domain -- 网络域名
db_name -- 数据库名称(唯一不具有默认值的参数),和域名一起组成全局数据库名称. --alter database rename global_name
-- 更改全局数据库名称需要重启实例并重建控制文件
db_recovery_file_dest -- 闪回区域的位置
db_recovery_file_dest_size -- 闪回区域容量
db_unique_name -- 唯一标识符,如果安装了两个相同名称的数据库,则需要使用唯一标识符
instance_number -- 用于区分两个打开同一数据库的RAC实例.
job_queue_processes -- 运行所调度作业可用的进程数
log_archive_dest_1 -- 归档重做日志文件的目标
log_archive_dest_2 -- 归档重做日志文件的多重副本的目标
log_archive_dest_state_1 -- 指示是否启用了目标
log_archive_dest_state_2 -- 指示是否启用了目标
nls_language -- 实例的语言
nls_territory -- 实例的地理位置
open_cursors -- 会话一次可以打开的SQL工作区数量
pga_aggregate_target -- 实例可以分配给PGA的总内存量
processes -- 可以连接到实例的最大进程数量(包括会话服务器进程)
remote_listener -- 此实例注册到远程计算机的侦听器的地址,与RAC有关的参数.
remote_login_passwordfile -- 是否使用外部口令文件,以便允许口令文件身份验证.
rollback_segments -- 差不多废弃,被后面的UNDO参数替代
sessions -- 允许连接到实例的最大会话数量
sga_target -- 系统全局区域SGA内存大小
shared_servers -- 要启动的共享服务器进程数量.
star_transformation_enabled -- 是否允许优化器重写将事实表的维度连接在一起的查询
undo_management -- 在撤销表空间中自动管理撤销数据,还是在回滚段中手工管理
undo_tablespace -- 在使用自动撤销管理的情况下,确定撤销数据的位置.