Oracle提供了许多的初始化参数,通过这些参数对数据库及实例进行设置。
管理员可以查看这些参数的设置,也可以修改这些参数的值。
初始化参数具有以下功能:
·对实例进行设置,如设置SGA 中每种缓冲区的大小。
·设置数据库的属性,如设置数据块的大小。
·对用户进程进行设置,如设置最大的并发用户进程数。
.指定数据库中一些重要文件的路径。
·对数据库资源的使用进行限制。
参数文件
初始化参数的值存储在参数文件中。
Oracle提供了许多初始化参数,但是在参数文件中只对少量的初始化参数进行了设置,其他大部分参数都采用默认值。
在Oracle数据库中有两种参数文件,其中一种称为服务器参数文件,这是一个二进制文件,文件的命名规则是spfile<sid>.ora,其中<sid>代表实例的名称。
另一个文件称为文本参数文件,这是一个文本文件,用户可以直接修改文件内容,文件的命名规则是init<sid>.ora。
这两个文件默认都存放在Oracle安装目录的dbs子目录( UNIX/Linux平台)或database子目录( Windows平台)中。
在启动实例时, Oracle将在指定目录先查找服务器参数文件,如果这个文件不存在,就继续查找文本参数文件。
如果这两个文件都不存在,用户就需要在命令行中指定参数文件的路径。
例如,在SQL*Plus 中通过以下命令启动实例:
startup pfile=‘/export/home/oracle/init.ora‘
其中pfile用于指定一个文本参数文件。
也可以通过以下命令在启动实例时指定一个服务器参数文件:
startup spfile=‘/export/home/oracle/spfile.ora‘
需要注意的是,如果用户通过SQL*Plus远程登录,并且希望通过文本参数文件启动实例,那么必须通过pfile指定参数文件的路径,而这个文件是存储在执行SQL*Plus命令的客户端,而不是存储在服务器端。
初始化参数的查看
管理员可以通过EM 或SQL*Plus 中查看初始化参数的设置。
例如,在SQL*Plus 中通过执行以下命令查看数据块的大小:
show parameter db_block size
如果不知道某个初始化参数的具体名称,但是知道这个参数的某一部分,也可以通过这种方式查看初始化参数的值。
例如,以下命令用于查看包含字符串“ log_archive_”的所有参数:
show parameter log archive_
也可以通过执行SELECT命令,从动态性能视图v$parameter查看初始化参数的信息。
例如:
SELECT value FROM v$parameter WHERE name=‘db_block_size‘;
初始化参数的修改:
根据作用范围的不同,把初始化参数分为三种类型包括:静态参数、实例级参数、会话级参数。
其中静态参数是不能修改的,自从数据库创建之后这些参数就一直保持某个特定值,如表示数据块大小的DB_BLOCK_SIZE。
实例级参数和会话级参数是可以修改的,其中实例级参数在整个实例范围内有效,这样的参数只能由SYS用户修改。
会话级参数只在当前会话范围内有效,会话结束后参数就失去作用,每个用户都可以修改自己的会话级参数。
为了查看初始化参数的详细信息,可以在SQL*Plus 中执行以下SELECT命令:
SELECT value, isdefault, isses_modifiable, issys_modifiable, ismodified FROM v$parameter WHERE name=‘utl_file_dir‘;
有两种方法可以用来修改初始化参数,一种方法是直接编辑文本参数文件,然后重新启动实例,这样新的参数值就会起作用;另一种方法是在EM或SQL*Plus 中动态修改。
Oracle推荐使用后一种方法,因为这种方法可以把对数据库系统的影响减到最小。
有些参数修改以后立即起作用,有些参数修改以后必须重新启动实例才能起作用。
在SQL*Plus 中修改初始化参数的命令是ALTER SYSTEM 。
例如:
ALTER SYSTEM SET utl_file_dir=‘D:\oracle\product\10.2.0\db_1\database‘;
这条命令在执行时将产生错误信息,原因是这个参数的值不能立即起作用,必须把实例后参能生效。
在修改参数时,可以通过SCOPE关键字指定参数什么时候生效。
例如:
ALTER SYSTEM SET utl_file_dir=‘D:\oracle\product\10.2.0\db_1\database‘ scope=spfile;
SCOPE有三个可选值,含义如下:
MEMORY :参数值立即其作用,但是实例重新启动后新的参数值将失效。
SPFILE :将参数值记录在服务器参数文件中,重新启动实例后参数值将生效。
BOTH :一方面参数值立即生效,另一方面把参数值记录在服务器参数文件中,这样就可以永久其作用。这个值是默认值。
下面是动态性能视图v$parameter的相关信息:
V$PARAMETER
displays information about the initialization parameters(初始化参数) that are currently in effect(有效的) for the session. A new session inherits parameter values from the instance-wide values displayed by the V$SYSTEM_PARAMETER
view.
Column | Datatype | Description |
---|---|---|
NUM
|
NUMBER
|
Parameter number |
NAME
|
VARCHAR2(80)
|
Name of the parameter |
TYPE
|
NUMBER
|
Parameter type:
|
VALUE
|
VARCHAR2(4000)
|
Parameter value for the session (if modified within the session); otherwise, the instance-wide parameter value |
DISPLAY_VALUE
|
VARCHAR2(4000)
|
Parameter value in a user-friendly format. For example, if the VALUE column shows the value 262144 for a big integer parameter, then theDISPLAY_VALUE column will show the value 256K .
|
DEFAULT_VALUE
|
VARCHAR2(255)
|
The default value for this parameter |
ISDEFAULT
|
VARCHAR2(9)
|
Indicates whether the parameter is set to the default value ( TRUE ) or the parameter value was specified in the parameter file (FALSE )
|
ISSES_MODIFIABLE
|
VARCHAR2(5)
|
Indicates whether the parameter can be changed with ALTER SESSION (TRUE ) or not (FALSE )
|
ISSYS_MODIFIABLE
|
VARCHAR2(9)
|
Indicates whether the parameter can be changed with ALTER SYSTEM and when the change takes effect:
|
ISPDB_MODIFIABLE
|
VARCHAR2(5)
|
Indicates whether the parameter can be modified inside a PDB ( TRUE ) or not (FALSE ).
In a non-CDB, the value of this column is |
ISINSTANCE_MODIFIABLE
|
VARCHAR2(5)
|
For parameters that can be changed with ALTER SYSTEM , indicates whether the value of the parameter can be different for every instance (TRUE ) or whether the parameter must have the same value for all Real Application Clusters instances (FALSE ). If the ISSYS_MODIFIABLE column is FALSE , then this column is always FALSE .
|
ISMODIFIED
|
VARCHAR2(10)
|
Indicates whether the parameter has been modified after instance startup:
|
ISADJUSTED
|
VARCHAR2(5)
|
Indicates whether Oracle adjusted the input value to a more suitable value (for example, the parameter value should be prime, but the user input a non-prime number, so Oracle adjusted the value to the next prime number) |
ISDEPRECATED
|
VARCHAR2(5)
|
Indicates whether the parameter has been deprecated ( TRUE ) or not (FALSE )
|
ISBASIC
|
VARCHAR2(5)
|
Indicates whether the parameter is a basic parameter ( TRUE ) or not (FALSE )
|
DESCRIPTION
|
VARCHAR2(255)
|
Description of the parameter |
UPDATE_COMMENT
|
VARCHAR2(255)
|
Comments associated with the most recent update |
HASH
|
NUMBER
|
Hash value for the parameter name |
CON_ID
|
NUMBER
|
The ID of the container to which the data pertains. Possible values include:
|