
1.10 Oracle数据库初始化参数
Oracle提供了许多的初始化参数,通过这些参数可以对数据库及实例进行设置。管理员可以查看这些参数的设置,也可以修改这些参数的值。初始化参数具有以下功能:
●对实例进行设置,如设置SGA中每种缓冲区的大小;
●设置数据库的属性,如设置数据块的大小;
●对用户进程进行设置,如设置最大的并发用户进程数;
●指定数据库中一些重要文件的路径;
●对数据库资源的使用进行限制。
1.10.1 参数文件
初始化参数的值存储在参数文件中。Oracle提供了许多初始化参数,但是在参数文件中只对少量的初始化参数进行了设置,其他大部分参数都采用默认值。在下面的有关章节中将介绍如何创建参数文件。
在Oracle数据库中有两种参数文件:一种称为服务器参数文件,这是一个二进制文件,文件的命名规则是Spfile<sid>.ora,其中<sid>代表实例的名称;另一种文件称为文本参数文件,这是一个文本文件,用户可以直接修改文件内容,文件的命名规则是init<sid>.ora。这两个文件默认都存放在Oracle安装目录的dbs子目录(UNIX/Linux平台)或DATABASE子目录(Windows平台)中。
在启动实例时,Oracle将在指定目录下先查找服务器参数文件,如果这个文件不存在,就继续查找文本参数文件。如果这两个文件都不存在,用户就需要在命令行中指定参数文件的路径。例如,在SQL*Plus中通过以下命令启动实例:
SQL>startup pfile='/gchch/home/oracle/init.ora' [00023]
其中pfile用于指定一个文本参数文件。也可以通过以下命令在启动实例时指定一个服务器参数文件:
SQL>startup spfile='/gchch/home/oracle/spfile.ora' [00024]
需要注意的是,如果用户通过SQL*Plus远程登录,并且希望通过文本参数文件启动实例,那么必须通过pfile指定参数文件的路径,而这个文件是存储在执行SQL*Plus命令的用户端,而不是存储在服务器端。
1.10.2 初始化参数的查看
管理员可以通过EM或SQL*Plus查看初始化参数的设置。例如,在SQL*Plus中通过执行以下命令查看数据块的大小:
SQL>show parameter db_block_size; [00025]
如果不知道某个初始化参数的具体名称,但是知道这个参数的某一部分,也可以通过这种方式查看初始化参数的值。例如,以下命令用于查看包含字符串“db_block_”的所有参数:
SQL>show parameter db_block; [00026]
也可以通过执行SELECT命令,从动态性能视图v$parameter查看初始化参数的信息。例如:
select name,value from v$parameter WHERE name like '%db_block%';
1.10.3 初始化参数的修改
根据作用范围的不同,把初始化参数分为3种类型,包括静态参数、实例参数、会话参数。其中,静态参数不能修改,自从数据库创建之后这些参数就一直保持某个特定值,如表示数据块大小的db_block_size。实例参数和会话参数可以修改,其中实例参数在整个实例范围内有效,这样的参数只能由SYS用户修改。会话参数只在当前会话范围内有效,会话结束后参数就失去作用,每个用户都可以修改自己的会话参数。
为了查看初始化参数的详细信息,可以在SQL*Plus或SQL Developer中执行以下SELECT命令:

以上代码中各列含义如表1-5所示。
表1-5

有两种方法可以用来修改初始化参数,一种方法是直接编辑文本参数文件,然后重新启动实例,这样,新的参数值就会起作用;另一种方法是在EM或SQL*Plus动态修改。Oracle推荐使用后一种方法,因为这种方法可以把对数据库系统的影响减到最小。
有些参数修改后立即起作用,有些参数修改后必须重新启动实例才能起作用。在SQL*Plus中修改初始化参数的命令是ALTER SYSTEM。例如:
SHOW GRANTS FOR 'jack' @'localhost';
SQL>ALTER SYSTEM SET utl_file_dir= '/gchch/oracle/dict'; [00028]
这条命令在执行时将产生错误信息,原因是这个参数的值不能立即起作用,必须把实例重新启动后参数才能生效。在修改参数时,可以通过SCOPE关键字指定参数什么时候生效。例如:
SQL>ALTER SYSTEM SET utl_file_dir= '/gchch/oracle/dict1 SCOPE=SPFILE; [00029]
SCOPE有3个可选值,其含义如表1-6所示。
表1-6
