初始化参数文件
启动实例时会读取初始化参数文件。参数文件有两种类型。
• 服务器参数文件(SPFILE):这是首选的初始化参数文件类型。这是一个由数据库服
务器写入或读取的二进制文件,不得手动进行编辑。此文件驻留在执行Oracle 实例的
服务器上,而且永远存在,不受数据库关闭和启动的影响。文件默认名为
spfile.ora,启动时会自动搜索此文件。
• 文本初始化参数文件:这类初始化参数文件可由数据库服务器读取,但不能由其写入。
必须使用文本编辑器手动设置和更改初始化参数设置,这些设置是永久的,不受数据
库关闭或启动的影响。此文件的默认名称为init.ora,如果启动时未找到
SPFILE,则自动搜索此文件。
建议创建SPFILE,从而以动态方式维护初始化参数。通过使用SPFILE,可以在服务器端
的磁盘文件中永久存储和管理初始化参数。
初始化参数的类型
Oracle DB 服务器有下列类型的初始化参数:
派生参数
一些初始化参数是派生的,也就是说它们的值是通过计算其它参数的值得来的。通常,您
不应变更派生参数的值。
但如果进行了变更,则您指定的值将覆盖计算得出的值。
例如,SESSIONS 参数的默认值派生于PROCESSES 参数的值。如果PROCESSES 的值发
生更改,则SESSIONS 的默认值也会发生更改,除非您使用指定的值覆盖它。
与操作系统相关的参数
一些初始化参数的有效值或值范围与主机操作系统相关。例如,
DB_FILE_MULTIBLOCK_READ_COUNT 参数指定在一次顺序扫描期间在一个I/O 操作中
读取的最大块数;此参数与平台相关。这些块的大小(由DB_BLOCK_SIZE 设置)的默
认值与操作系统相关。
设置参数值
初始化参数最有可能改进系统性能。一些参数设置容量限制,但不影响性能。例如,当
OPEN_CURSORS 的值为10 时,尝试打开第11 个游标的用户进程将收到错误消息。有些
参数会影响性能,但不施加绝对限制。例如,减小OPEN_CURSORS 的值可能会降低性能,
但不会阻止工作。
增大参数值也许可以改善系统性能,但增大大多数参数也会增加系统全局区(SGA) 大小。
较大的SGA 可以将数据库性能提升至某个点。在虚拟内存操作系统中,如果SGA 是交换
进/出内存的,则太大的SGA 会降低性能。设置控制虚拟内存工作区域的操作系统参数时,
应考虑SGA 大小。操作系统配置也会限制SGA 的最大大小。
简化初始化参数
初始化参数有两种类型:基本初始化参数和高级初始化参数。
大多数情况下,只需设置和优化30 个基本参数便可获得合理的数据库性能。极少数情况
下,需要修改高级参数才能获得优化的性能。
基本参数指的是为了让数据库以良好性能运行而设置的参数。其它所有参数都被认为是高
级参数。
基本参数示例:
• 确定全局数据库名称:DB_NAME 和DB_DOMAIN
• 指定快速恢复区:DB_RECOVERY_FILE_DEST 和
DB_RECOVERY_FILE_DEST_SIZE
• 指定DDL 锁定超时:DDL_LOCK_TIMEOUT
• 指定还原空间管理的方法:UNDO_MANAGEMENT
• COMPATIBLE 初始化参数和不可逆兼容性
初始化参数:示例
参数 | 指定 |
---|---|
CONTROL_FILES | 一个或多个控制文件名 |
DB_FILES | 最大数据库文件数 |
PROCESSES | 可以同时连接的最大操作系统用户进程数 |
DB_BLOCK_SIZE | 所有表空间使用的标准数据库块大小 |
DB_CACHE_SIZE | 标准块缓冲区高速缓存大小 |
包含参数相关信息的其它视图
• V$SPPARAMETER:显示有关服务器参数文件内容的信息。如果未使用服务器参数文
件来启动实例,则该视图每一行的ISSPECIFIED 列中的值为FALSE。
• V$PARAMETER2:显示当前对会话有效的初始化参数的相关信息,每个参数值显示
为视图中的一行。新会话将从V$SYSTEM_PARAMETER2 视图中显示的实例范围内的
值中继承参数值。
• V$SYSTEM_PARAMETER:显示当前对实例有效的初始化参数的相关信息。
更改初始化参数值
• 静态参数:
– 只能在参数文件中更改
– 必须重新启动实例才能生效
• 动态参数:
– 可以在数据库联机时更改
– 可以在以下级别更改:
— 会话级别
— 系统级别
– 在会话持续期间内有效,或有效性取决于SCOPE 设置
– 通过使用ALTER SESSION 和ALTER SYSTEM 命令进行
更改
oracle 初始化参数文件共有2个路径
/opt/oracle/admin/ORCLCDB/pfile/init.ora.519201904357
/opt/oracle/product/18c/dbhome_1/dbs/init.ora
spfile,pfile 在$ORACLE_HOME/dbs/目录下
[root@instance-ej1hspdt ~]# cd $ORACLE_HOME/dbs
[root@instance-ej1hspdt dbs]# ls
c-2782375137-20190717-01 init.ora lkORCLCDB snapcf_ORCLCDB.f
hc_ORCLCDB.dat initORCLCDB.ora orapwORCLCDB spfileORCLCDB.ora
在spfile.ora或者pfile文件丢失的情况下,数据库不能正常启动,使用init.ora文件启动数据库,从内存中恢复spfile,
pfile,或者pfile,spfile相互转换。
SQL> startup pfile=/opt/oracle/admin/ORCLCDB/pfile/init.ora.519201904357
ORACLE instance started.
Total System Global Area 838857584 bytes
Fixed Size 8901488 bytes
Variable Size 641728512 bytes
Database Buffers 180355072 bytes
Redo Buffers 7872512 bytes
SQL> create spfile from memory;
File created.
SQL> create pfile from memory;
File created.
SQL> create spfile from pfile;
File created.
SQL> create pfile from spfile;
File created.