1. 数据库初始化参数文件概述
Oracle数据库启动的第一步根据初始化参数文件中的设置,创建并启动实例,即分配内存空间、启动后台进程。初始化参数文件是数据库启动过程所必需的文件,记录了数据库显式参数的设置。
分为两类:
- 文本初始化参数文件(PFILE)
- 保存在本地客户端中的文本文件。
- 可以在数据库运行过程中执行ALTER SYSTEM语句来修改初始化参数(当前使用pfile时),并且不需要重启数据库实例即可生效,但是修改信息不写入PFILE中,下次启动时依然使用原来的参数配置。
- 服务器初始化参数文件(SPFILE)
- 保存在数据库服务器端的二进制文件。
- 保证同一个数据库的多个实例具有相同的初始化参数配置。
- 在数据库的任何一个实例中执行ALTER SYSTEM语句对初始化参数进行修改(当前使用spfile时),在默认情况下(SCOPE=BOTH),都会永久地记录在SPFILE。下次启动数据库时,这些修改会永久生效。
- 默认名称:SPFILE.ORA,如SPFILLEXE.ORA
- 默认存放位置:ORACLE_HOME\database目录
查看参数文件:SQL> show parameter spfile
启动数据库的基本语法:
- STARTUP [NOMOUNT|MOUNT|OPEN|FORCE][RESTRICT] [PFILE=filename]
在执行STARTUP语句启动数据库时,系统按照如下顺序寻找初始化参数文件。
- 检查是否使用PFILE参数指定了文本初始化参数文件。
- 如果没有使用PFILE参数,则在默认位置寻找默认名称的服务器初始化参数文件。
- 如果没有找到默认的服务器初始化参数文件,则在默认位置寻找默认名称的文本初始化参数文件。
2. 创建服务器初始化参数文件
创建步骤:
Step1 创建一个文本初始化参数文件,文件中包含所有显示初始化参数设置,并将该文件存在数据库服务器上。
Step2 以SYSOPER或SYSDBA身份连接到Oracle数据库。
- SQL> CONNECT / AS SYSDBA
Step3 利用文本初始化参数文件创建服务器端初始化参数文件。
- SQL> CREATE SPFILE [='path\filename'] FROM PFILE='path\filename';
- 注意:执行CREATE SPFILE语句时,不需要启动数据库实例。
- 建议用默认值创建。
3. 数据库初始化参数介绍
在Oracle 11g数据库中提供了341个初始化参数,可以执行SHOW SPPARAMETERS命令或查询 V$SPPARAMETER动态性能视图查看服务器初始化参数文件(SPFILE)中的所有初始化参数及其设置情况。
在Oracle 11g中,数据库初始化参数分为两种类型:
- 动态初始化参数:可以在运行时修改的数据库参数。初始化参数修改后可以立即生效,作用于当前的数据库实例。(运行时可使用alter session 或 alter system动态改变的初始化参数
- 静态初始化参数:在数据库启动时被设置并且在运行时不能被修改的参数。初始化参数修改后在当前实例中不会生效,参数值被保存到服务器初始化参数文件中,下次重新启动数据库时生效。(isses_modifiable=‘FALSE’ 只能通过修改参数文件而改变的初始化参数)
3.1 修改数据库初始化参数
在数据库运行过程中,可以使用ALTER SESSION或ALTER SYSTEM语句对初始化参数进行修改。 ALTER SESSION 语句修改只影响当前会话,数据会话级修改;ALTER SYSTEM 语句修改会影响整个实例中所有会话,属于实例级修改。
3.1.1 利用ALTER SESSION语句修改初始化参数
利用 ALTER SESSION 语句只能修改动态性能视图V$PARAMETER中ISSES_MODIFIABLE列值为TRUE的初始化参数,而且修改后的参数值只在当前会话中有效。(只能修改动态初始化参数)
基本语法如:SQL> ALTER SESSION SET GLOBAL_NAMES=TRUE;
可以使用ALTER SESSION语句修改一些不属于数据库初始化参数的运行参数。 如修改当前会话日期的表示格式:SQL> ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD';
3.1.2 利用ALTER SYSTEM语句修改初始化参数
基本语法:
SQL> ALTER SYSTEM SET parameter_name=value [SCOPE=SPFILE|MEMORY|BOTH];
- SCOPE=SPFILE:对参数的修改仅记录在SPFILE中,对动态参数和静态参数都适用,修改后的参数在下一次数据库启动时生效。(静态初始化参数只能采用该句)
- SCOPE=MEMORY:对参数的修改仅记录在内存中,只适合动态参数的修改,修改后立即生效。由于修改结果并不会保存到服务器初始化参数文件中,因此下一次启动数据库实例时仍然采用修改前的参数设置。(使用文本初始化参数文件只能采用该句)
- SCOPE=BOTH:对参数的修改同时保存到SPFILE和内存中,只适合对动态参数的修改,更改后立即生效,并且下一次启动数据库实例时将使用修改后的参数设置。当执行ALTER SYSTEM语句时,如果没有指定SCOPE子句,那么Oracle默认将SCOPE设置为BOTH。
注意:
- 最主要的区别是,动态参数是指在数据库运行过程中可以进行修改,静态参数是指在数据库运行过程中不可以进行修改。
- 如果当前数据库实例使用的是服务器初始化参数文件,那么对静态参数修改时,SCOPE子句只能设置为SPFILE。
- 如果当前数据库实例使用的是文本初始化参数文件,那么SCOPE子句的设置只能为MEMORY。
例如,修改动态参数JOB_QUERY_PROCESSES,可以根据修改后立即生效、下一次启动数据库实例时生效,以及当前立即生效且下一次数据库实例启动也生效这3种情况进行SCOPE子句的设置。
--修改后立即生效
ALTER SYSTEM SET JOB_QUERY_PROCESSES=50 SCOPE=MEMORY;
--下一次启动数据库实例时生效
ALTER SYSTEM SET JOB_QUERY_PROCESSES=50 SCOPE=SPFILE;
--当前立即生效且下一次数据库实例启动也生效
ALTER SYSTEM SET JOB_QUERY_PROCESSES=50 SCOPE=BOTH;
3.2 清除服务器初始化参数文件中的参数
清除SPFILE中的某个显示参数:
- SQL> ALTER SYSTEM RESET parameter_name [SCOPE=SPFILE];
清除后参数值恢复默认值。
4. 导出服务器初始化参数文件
导出原因:
- 创建服务器初始化参数文件的备份。
- 为了便于查找系统故障原因等,需要获取当前数据库实例所使用的 所有初始化参数值。
- 为了修改服务器初始化参数文件中参数值,先将服务器初始化参数文件导出为文本初始化参数文件,然后对文本初始化参数文件中的参数进行修改,最后根据修改后的文本初始化参数文件创建新的服务器初始化参数文件。
语法:
- SQL> CREATE PFILE[='path'] FROM SPFILE [='path'];
- 注:执行该语句必须有SYSDBA或SYSOPER权限。
5. 查看数据库初始化参数设置
- SHOW PARAMETERS:显示当前会话中所有初始化参数及其值
- SHOW SPPARAMETERS:显示服务器初始化参数文件中的参数及其值
- CREATE PFILE:创建文本初始化参数文件,然后浏览该文本初始参数文件了解初始化参数设置情况
- V$PARAMETER:数据库动态性能视图,包含当前会话中所有初始化参数及其值
- V$SPPARAMETER:数据库动态性能视图,包含服务器初始化参数文件中初始化参数及其值