4.10.3 初始化参数的修改
根据作用范围的不同,我们把初始化参数分为三种类型包括:静态参数、实例级参数、会话级参数。其中静态参数是不能修改的,自从数据库创建之后这些参数就一直保持某个特定值,如表示数据块大小的DB_BLOCK_SIZE。实例级参数和会话级参数是可以修改的,其中实例级参数在整个实例范围内有效,这样的参数只能由SYS用户修改。会话级参数只在当前会话范围内有效,会话结束后参数就失去作用,每个用户都可以修改自己的会话级参数。
为了查看初始化参数的详细信息,可以在SQL*Plus中执行以下SELECT命令:
SQL>SELECT value, isdefault, isses_modifiable, issys_modifiable, ismodified
FROM v$parameter
WHERE name='utl_file_dir'
各列含义如下:
ISDEFAULT 指定当前参数是否采用了默认值。
ISSES_MODIFIABLE 指定当前参数是否可以在一个会话中进行修改。
ISSYS_MODIFIABLE 指定当前参数是否可以在实例范围内进行修改。
IS_MODIFIED 指定自动实例最近启动以来,当前参数是否被修改过。
有两种方法可以用来修改初始化参数,一种方法是直接编辑文本参数文件,然后重新启动实例,这样新的参数值就会起作用;另一种方法是在EM或SQL*Plus中动态修改。Oracle推荐使用后一种方法,因为这种方法可以把对数据库系统的影响减到最小。
有些参数修改以后立即起作用,有些参数修改以后必须重新启动实例才能起作用。在SQL*Plus中修改初始化参数的命令是ALTER SYSTEM。例如:
SQL>ALTER SYSTEM SET utl_file_dir='/export/oracle/dict';
这条命令在执行时将产生错误信息,原因是这个参数的值不能立即起作用,必须把实例后参能生效。在修改参数时,可以通过SCOPE关键字指定参数什么时候生效。例如:
SQL>ALTER SYSTEM SET utl_file_dir='/export/oracle/dict'SCOPE=SPFILE;
SCOPE有三个可选值,含义如下:
MEMORY:参数值立即其作用,但是实例重新启动后新的参数值将失效。
SPFILE:将参数值记录在服务器参数文件中,重新启动实例后参数值将生效。
BOTH:一方面参数值立即生效,另一方面把参数值记录在服务器参数文件中,这样就可以永久其作用。这个值是默认值。