代码改变世界

Oracle参数文件基础

2016-06-24 14:25  magnes  阅读(1758)  评论(0编辑  收藏  举报

在Oracle中,参数文件是一类较为重要的文件。在Oracle数据库启动时,是通过读取参数文件来构建实例的。参数文件指定了数据库和实例的名字,内存组件的大小和构成,控制文件的位置,强制和非强制进程的相关设置等信息。实例启动后数据库将处于nomount状态。

一、参数文件的类型

1、静态参数文件(pfile):静态参数文件也称初始化文件,它是文本文件,通过客户端工具sqlplus等来读取并启动实例。

2、链接参数文件(ifile):链接参数文件时在pfile中指定的参数文件,这里可以理解为一种参数文件的通用模板。下面是一个在pfile中使用ifile的例子:

ifile='/u01/oracle/dbs/pfile'
thread=1
instance_name=node1
instance_number=1

 

ifile='/u01/oracle/dbs/pfile'
thread=2
instance_name=node2
instance_number=2

3、动态参数文件(spfile):从9i开始,Oracle引入了一种新的参数文件类型---动态参数文件。动态参数文件也称服务器端参数文件,它是二进制文件,只能通过alter system命令来修改。修改spfile中的参数的语句如下所示:

alter system set 参数名 = 参数值 scope = memory | spfile | both;

scope各取值的含义:

  • memory:修改内存中的参数值,并立即生效,数据库重启后修改失效。
  • spfile:修改参数文件中的参数值,无法立即生效,数据库重启后方可生效。
  • both:在memory和spfile中都生效。

二、还原参数

还原参数时必须指定sid,根据scope的取值不同,sid应取不同的值。还原参数的语句为:alter system reset 参数名 scope = spfile | memory sid='sid' | '*'

 

# 当scope=spflie时,sid='*',否则将会报错。
SQL> show parameter log_archive_dest_1

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_1                   string      LOCATION=/u02/arch_log
log_archive_dest_10                  string
 
SQL> alter system reset log_archive_dest_1 scope=spfile sid='*';
System altered.
 
# 重启后再次查看该参数
SQL> show parameter log_archive_dest_1

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_1                   string
log_archive_dest_10                  string
 
# 当scope=memory时,sid='sid',否则将会报错,但此时reset并不成功。
SQL> show parameter log_archive_dest_1

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_1                   string      LOCATION=/u02/arch_log
log_archive_dest_10                  string

SQL> alter system reset log_archive_dest_1 scope=spfile sid='testdb';
System altered.

SQL> show parameter log_archive_dest_1

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_1                   string      LOCATION=/u02/arch_log
log_archive_dest_10                  string
 
# reset时,由于不同的scope所使用的sid是不一样的,所以scope不能设置both,否则将会报错。
SQL> alter system reset log_archive_dest_1 scope=both sid='testdb';
alter system reset log_archive_dest_1 scope=both sid='testdb'
*
ERROR at line 1:
ORA-32010: cannot find entry to delete in SPFILE
SQL> alter system reset log_archive_dest_1 scope=both sid='*';
alter system reset log_archive_dest_1 scope=both sid='*'
*
ERROR at line 1:
ORA-32009: cannot reset the memory value for instance * from instance testdb

  

三、v$parameter视图

SQL> select isdefault,ismodified,issys_modifiable,isses_modifiable from v$parameter where name='instance_name';

ISDEFAULT ISMODIFIED ISSYS_MOD ISSES
--------- ---------- --------- -----
TRUE      FALSE      FALSE     FALSE
  • isdefault:该字段说明参数是否为默认值。
  • ismodified:该字段说明参数可在何种环境下修改:modified(会话级)、system_modified(系统级)、false(实例启动后不能修改)。
  • issys_modifiable:该字段说明将对参数做何种修改:immediate(修改立即生效)、deferred(延迟生效)、spfile(重启后生效)、false(实例启动后不能修改)。
  • isses_modifiable:该字段说明参数是否可在session级修改。

四、其他参数文件知识

  • Oracle参数文件默认保存位置,在Linux中,其保存在$ORACLE_HOME/dbs目录下,在windows中,其保存在$ORACLE_HOME\database目录下。
  • 根据spfile创建pfile:create pfile='/u02/backup' from spfile
  • 根据pfile创建spfile:create spfile from pfile='u02/backup'
  • Oracle启动时,读取参数文件的顺序:spfile@.ora ---> spfile.ora ---> init@.ora(init.ora)
  • 使用指定的参数文件启动数据库:startup nomount pfile='参数文件名',如果参数文件不再当前路径,需添加路径信息。
  • 确定实例使用何种参数文件
SQL> show parameter spfile

NAME                                 TYPE        VALUE
------------------------------------ ----------- --------------------------------------------------------
spfile                               string      /u01/app/oracle/product/10.2.0/db_1/dbs/spfiletestdb.ora