本节主要讲解数据库的参数文件。可以通过Net Services Administrator‘s Guide了解如何配置和建立tnsnames.ora(查找网络上的服务器)、listener.ora(启动网络监听器)、sqlnet.ora(解析连接中出现的连接字符串)、cman.ora和ldap.ora等文件。 1. 参数 查
本节主要讲解数据库的参数文件。可以通过Net Services Administrator‘s Guide了解如何配置和建立tnsnames.ora(查找网络上的服务器)、listener.ora(启动网络监听器)、sqlnet.ora(解析连接中出现的连接字符串)、cman.ora和ldap.ora等文件。
1. 参数
查看参数的方法:
l V$视图:V$PARAMETER
想了解V$视图或者字典视图可以查看Oracle Database Reference手册。
l SHOW PARAMETER
l 函数:DBMS_UTILITY.GET_PARAMETER_VALUE
提供给所有用户查询V$parameter参数的API,一些值设置内存的参数和值过大的参数都会查询受限。
2. 初始文件
初始文件(init.ora)是oracle历史遗留的参数文件,在9i Release 1引入了新的参数文件:服务器参数文件。
如果参数使用默认值,可以不在参数文件设置该参数。使用该参数文件的主要目的是获得数据库名和控制文件的位置。
l 初始文件的命名约定默认为:
init$ORACLE_SID.ora (Unix/Linux)
init%Oracle_SID%.ora (Windows)
l 默认的存放路径为:
$ORACLE_HOME/dbs (Unix/Linux)
$ORACLE_HOME%\DATABASE (Windows)
l 指定实例加载的参数文件:
在默认参数文件中可以使用IFILE指令,当前文件将包含指定文件的内容:
IFILE=/u01/app/oracle/admin/orcl/pfile/init.ora.0520152052
可以在默认路径上的参数文件中引用其他路径上的参数文件。
另外也可以使用pfile=filename选项,加载指定路径上的参数文件,而 不需要在默认路径,例如:startup pfile=/u01/app/oracle/admin/orcl/pfile/init.ora.0520152052。
l init.ora参数文件中参数修改:
init.ora是文本文件,可以使用任何文本编辑器进行直接修改。ORACLE数据库本身没有提供命令可以用来维护init.ora参数文件的参数。如果实例使用的init.ora参数文件,即使使用ALTER SYSTEM命令来参数值,但也不会对init.ora文件发生修改,作为实例的永久性改变。只有对用于启动数据库的init.ora参数文件进行手动修改,才能保证作为数据库启动的默认值,作为一个永久性有效的修改。
当视图启动数据库时,如果你是远程还是本地,都需要在远程的客户机上还是数据库主机本地都要有数据库参数文件。因此就会导致出现多份参数文件的情况,而它们之间更新并不会有效的同步,这将导致启动数据库参数不一致的问题。为了规范数据库参数管理,由此引入了服务器参数文件。
3. 服务器参数文件
服务器参数文件(SPFILE)为了解决init.ora参数文件的弊端而产生的:
1. SPFILE必须存储在数据库服务器上,而不能在客户机上使用,保证了参数的单一信息来源。
2. 提供ALTER SYSTEM命令修改参数写入SPFILE,不需要进行手动参数维护。
l SPFILE的默认命名约定:
spfile$ORACLE_SID.ora (Unix/Linux)
spfile$ORACLE_SID%.ora (Windows)
SPFIlE的默认路径:
$ORACLE_HOME/dbs/ (Unix/Linux)
%ORACLE_HOME/database/ (Windows)
l 查看参数spfile:
并没有创建spfile文件。
l 创建spfile文件,并改用spfile启动数据库:
这样将根据默认路径下的init.ora创建spfile文件,我们也可以指定来源的pfile和生成的spfile:
create spfile=$ORACLE_HOME/dbs/spfileepps.orafrom pfile $ORACLE_HOME/dbs/initepps.ora
重启数据库实例后,查看spfile参数:
数据库实例使用了spfile启动。
l 设置SPFILE中的参数值:
SPFILE是二进制文件,无法用文本编辑器直接编辑,因而提供了ALTER SYSTEM命令进行修改:
Alter system serparameter=value
表示可选部分,管道符号(|)表示取候选列表中的一个选项。
comment=‘text’是一个与此参数设置有关的可选注释。这个注释会出现在V$PARAMETER的UPDATE_COMMENT字段中。
deferred指定系统修改是否只对以后的会话生效(对当前会话无效,包括执行此修改的会话)。默认情况下,ALTER SYSTEM 命令会立即生效,但是有些参数不能”立即”修改,只能为新建立的会话修改这些参数。可以查询V$PARAMETER看必须使用deferred的参数:
SCOPE=MEMORY|SPFILE|BOTH指示了这个参数设置的“作用域”:
SCOPE=MEMORY只在实例中修改,数据库重启后将不再保存。
SCOPE=SPFILE只修改SPFILE中的值。数据库重启并再次处理SPFILE之前,这个修改不会生效。有些参数只能使用这个选项来修改。
SCOPE=BOTH是指内存和SPFILE中都会完成参数修改。
使用SPFILE参数文件,默认作用域值为BOTH;使用init.ora参数文件,默认值为MEMORY,唯一的合法值。
sid=‘sid|*’主要用于集群环境,默认值为sid=‘*’。
l 取消SPFILE中的值设置
取消参数值的设置,使用系统指定的默认值,使用ALTER SYSTEM命令但使用RESET子句:
Alter systemreset parameter
这样设置之后,该参数会从spfile参数中删除掉。
l 从SPFILE创建PFILE
这是将spfile的二进制文件转化为一个纯文本文件:
createpfile=$ORACLE_HOME/dbs/initepps.ora from spfile $ORACLE_HOME/dbs/spfileepps.ora
这样做的目的:
1. 创建一个“一次性的”参数文件,用于启动数据库来完成维护,其中设置一些维护时使用的特殊参数设置。启动时使用pfile=
2. 维护修改历史,在注释中记录修改。在参数的每一次修改之前,将spfile创建一个文本文件作为备份。
l 修正被破坏的SPFILE
如果SPFILE遭遇破坏或者丢失,可以使用以下方法恢复。
SPFILE是二进制文件,不能直接查看参数配置,但是可以通过strings指令查看:
也可以从警告日志中获取相关的参数设置(警告日志将在警告日志部分讲解):
将这参数设置复制出来,创建PFILE文件,然后在创建SPFILE文件,这样就可以实现恢复了。