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