参数及参数文件 参数及参数文件
在 Oracle 数据库中,有一系列的初始化参数用来进行数据库约束和资源限制,这些参数
通常存储在一个参数文件中,在数据库实例启动时读取并加载。
初始化参数对数据库来说非常重要,很多参数通过合理的调整可以极大的ᨀ高数据库性
能。本章对初始化参数和参数文件进行相关探讨。
3.1初始化参数的分类
按照得出方式不同,初始化参数可以分为三类:
3.2.1 推导参数(Derived Parameters)
推导参数通常来自于其他参数的运算,依赖其他参数得出。所以这类参数通常不需要修
改。如果强制修改,那么修改值会覆盖推导值。
常见的此类参数有很多,例如:SESSIONS 参数,在 Oracle 11gR2 文档中,该参数按以下
公式运算得出:
(1.5 * PROCESSES) + 22
缺省的,当 PROCESSES 被修改时,此参数会自动计算并生效。以下是一个示范数据库
中这两个参数的设置:
SQL> select name,value from v$parameter where name in ('processes','sessions');
NAME VALUE
-------------------- --------------------
processes 200
sessions 322
Processes 参数代表操作系统上能够并发向 Oracle 数据库发起的连接进程数量。如果该参
数设置过低,则在应用并非高时,超过 Processes 数量的进程将无法连接到数据库。所以在规
划数据库时,合理设置 Processes 参数是十分重要的。但是注意,很多时候由于应用的异常可
能导致业务环境的进程数量激增,所以在生产环境中对进程数量进行必要监控是必需的。
以下是一个生产环境中遇到的相关案例,数据库告警日志文件中记录了如下错误:
Thu Jul 17 14:40:18 2008
Process J001 died, see its trace file
Thu Jul 17 14:40:18 2008
kkjcre1p: unable to spawn jobq slave process
日志ᨀ示 J001 进程死掉,数据库不能创建 JOBQ 的从属进程(Slave Process)。由于 Job
书名书名书名书名书名书名书名书名书名书名书名书名书名书名
·2·
进程是动态创建的,如果数据库的进程数量超过,就可能出现 JOB 进程无法创建的问题。检
查相关的 TRACE 文件,可以发现如下错误信息:
Died during process startup with error 20 (seq=14510)
OPIRIP: Uncaught error 20. Error stack:
ORA-00020: maximum number of processes (500) exceeded
数据库的ᨀ示是,最大数量的进程数量 500 超过,数据库不再允许更多的进程连接,此
时新的连接请求都会收到错误ᨀ示,甚至 DBA 也无法登陆数据库。除了重启数据库之外,可
以通过 Kill 掉部分进程,然后通过 DBA 身份连接到数据库,诊断分析并解决具体问题。
但是由于 processes 参数是静态参数,修改该参数后需要重新启动数据库才能生效。在数
据库启动时,会预先为 Processes 分配内存地址空间,并向 Shared Pool 注册,所以该参数无法
动态修改。缺省的每个进程会在共享池中分配 4 Bytes 的注册空间:
SQL> select name,value from v$parameter where name ='processes';
NAME VALUE
-------------------- ------------------------------
processes 150
SQL> select * from v$sgastat where name='processes';
POOL NAME BYTES
------------ -------------------- ----------
shared pool processes 600
通常在创建数据库时,建议将该参数修改为 500:
SQL> alter system set processes=500 scope=spfile;
System altered.
重启之后可以看到数据库进程内存分配的变化:
SQL> select name,value from v$parameter where name ='processes';
NAME VALUE
------------------------------ ------------------------------
processes 500
SQL> select * from v$sgastat where name='processes';
POOL NAME BYTES
------------------------ ------------------------------ ----------
shared pool processes 2000
3.2.2 操作系统依赖参数
某些参数的有效值或者取值范围依赖或者受限于操作系统,比如 db_cache_size 参数,设
置 Oracle 使用的 Buffer Cache 内存大小,该参数的最大值就要受限于物理内存。这一类参数
通常被称为操作系统依赖参数。
3.2.3 可变参数
第 1 章 章名章名章名章名章名
·3·
可变参数包含绝大多数潜在影响系统性能的可调整参数,某些可变参数设置的是限制条
件,如 OPEN_CURSORS;有的参数是设置容量,如 DB_CACHE_SIZE 等。这类参数通常可
以为 DBA 或最终用户调整,从而产生限制或性能变化,对 Oracle 至关重要。
初始化参数通常还有一些其他分类方式:
按照修改方式划分,初始化参数又可以分为静态参数和动态参数。
静态参数只能在参数文件中修改,在重新启动后方能生效;动态参数可以动态调整,调
整后通常可以立即生效。
按照获取方式不同,初始化参数又可以分为显示参数和隐含参数。
显示参数可以通过 v$parameter 查询得到;而隐含参数通常以“_”开头,必须通过查询
系统表方能获得。
总之,虽然分类方式不同,但是参数都是这些,我们更多需要了解的是这些参数的用途。
3.2.4 废弃参数
由于 Oracle 数据库的参数众多,在新版本中可能废弃很多旧的参数,了解这些废弃参数,明
确废弃原因,是 DBA 需要关注的内容之一.
在 Oracle Database 11gR2 中,有大约 130 个参数被废弃:
SQL> select * from v$version where rownum <2;> select count(*) from V$OBSOLETE_PARAMETER;
COUNT(*)
----------
131
SQL> select * from V$OBSOLETE_PARAMETER;
NAME ISSPE
---------------------------------------------------------------- -----
spin_count FALSE
use_ism FALSE
lock_sga_areas FALSE
instance_nodeset FALSE
这个视图的创建语句如下:
SQL> select view_definition from v$fixed_view_definition
2 where view_name='GV$OBSOLETE_PARAMETER';
VIEW_DEFINITION
书名书名书名书名书名书名书名书名书名书名书名书名书名书名
·4·
---------------------------------------------------------------------------------------
select inst_id,kspponm,decode(ksppoval,0,'FALSE','TRUE') from x$ksppo
底层的 X$SPPO 是这些废弃参数的来源.
3.2.5 初始化参数的获取
Oracle 的初始化参数可以通过 V$PARAMETER 视图查询得到,在 SQL*PLUS 之中,我
们经常可以通过 show parameter 命令来显示某些参数的设置值,例如(以下输出来自
Oracle10gR2 环境):
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 900M
sga_target big integer 900M
使用 sql_trace 的跟踪当前会话,可以获得 show parameter 的内部操作,跟踪大致步骤如下:
alter session set sql_trace=true;
show parameter sga
alter session set sql_trace=false
在 user_dump_dest 目录下找到刚刚生成的跟踪文件,可以发现 SQL*Plus 的 Show 命令的
本质是通过如下一条 SQL 查询得到的数据库参数:
SELECT NAME NAME_COL_PLUS_SHOW_PARAM,DECODE(TYPE,1,'boolean',2,'string',3,
'integer',4,'file',5,'number', 6,'big integer', 'unknown') TYPE,
DISPLAY_VALUE VALUE_COL_PLUS_SHOW_PARAM
FROM V$PARAMETER
WHERE UPPER(NAME) LIKE UPPER('%sga%') ORDER BY NAME_COL_PLUS_SHOW_PARAM,ROWNUM
注意这里的 UPPER 函数的应用使得 show 命令可以忽略大小写,在 Oracle 8.1.5 中还并不
是这个样子,一条 show parameter SGA/sga 在 Oracle 8.1.5 中的输出结果是不同的:
SQL> select * from v$version where rownum <2;> show parameter sga
NAME TYPE VALUE
------------------------------ ------- ----------------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
SQL> show parameter SGA
第 1 章 章名章名章名章名章名
·5·
在 Oracle 8.1.5 中,这条后台的 SQL 是如下模样:
SELECT SUBSTR (NAME, 1, 36) NAME,
DECODE (TYPE, 1, 'boolean', 2, 'string', 3, 'integer') TYPE,
SUBSTR (VALUE, 1, 20) VALUE
FROM v$parameter WHERE NAME LIKE '%SGA%' ORDER BY NAME
如果再细致一点观察前面的 SQL,也许你会发现一些奇怪的地方,这就是两个字段别名
的设置:
NAME NAME_COL_PLUS_SHOW_PARAM
DISPLAY_VALUE VALUE_COL_PLUS_SHOW_PARAM
执行 show parameter 命令的输出并未显示这两个别名,原因何在呢?
我们知道,当启动SQL*Plus工具时,会自动调用$ORACLE_HOME/sqlplus/admin/glogin.sql
文件执行一系列的参数设置(可以通过修改这个参数文件来变更 SQL*Plus 登录后的一些显
示),打开这个文件可以发现如下两行定义:
-- Defaults for SHOW PARAMETERS
COLUMN name_col_plus_show_param FORMAT a36 HEADING NAME
COLUMN value_col_plus_show_param FORMAT a30 HEADING VALUE
这就是原因所在。
最常见的对于 glogin.sql 的修改是增加用户名和数据库ᨀ示,可以在该文件中增加如下一
行:
set sqlprompt "_user @ _connect_identifier>"
常用的设置还有
set sqlprompt "&_user> "
set sqlprompt "_user _privilege> "
此后登陆 SQL*Plus 就会自动在ᨀ示符前显示用户名和实例信息,从 Oracle10g 开始,每
次会话创建都会自动调用 glogin.sql 文件,而 Oracle10g 之前则只会在 SQL*Plus 启动时调用该
文件:
[oracle@danaly admin]$ sqlplus eygle/eygle
SQL*Plus: Release 10.2.0.1.0 - Production on Fri Feb 15 23:46:00 2008
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options
EYGLE @ danaly>connect / as sysdba
Connected.
SYS @ danaly>connect eygle/eygle
Connected.
EYGLE @ danaly>
书名书名书名书名书名书名书名书名书名书名书名书名书名书名
·6·
继续前面的讨论,show parameter 既然是从 V$PARAMETER 视图来查询参数设置,那么
这个视图的定义就决定了能够获得的内容输出。
通过 V$PARAMETER 视图的创建语句我们可以观察到,实际上 V$PARAMETER 视图过滤
掉了以“_”开头的一系列参数:
SELECT x.inst_id, x.indx + 1, ksppinm, ksppity, ksppstvl, ksppstdf,
DECODE (BITAND (ksppiflg / 256, 1), 1, 'TRUE', 'FALSE'),
DECODE (BITAND (ksppiflg / 65536, 3),
1, 'IMMEDIATE', 2, 'DEFERRED', 3, 'IMMEDIATE', 'FALSE'),
DECODE (BITAND (ksppstvf, 7), 1, 'MODIFIED', 4, 'SYSTEM_MOD', 'FALSE'),
DECODE (BITAND (ksppstvf, 2), 2, 'TRUE', 'FALSE'), ksppdesc, ksppstcmnt
FROM x$ksppi x, x$ksppcv y
WHERE (x.indx = y.indx)
AND ((TRANSLATE (ksppinm, '_', '#') NOT LIKE '#%') OR (ksppstdf = 'FALSE') )
这些以“_”开头的初始化参数通常被称为隐含参数,Oracle 通常不建议修改这些参数,
但是因为某些隐含参数有着特殊的功能,逐渐被越来越多的人所熟知。
从 V$PARAMETER 视图的创建语句中我们可以发现,这个视图实际上是建立在两个底层
数据字典表 X$KSPPI 和 X$KSPPCV 之上的。
通过以下查询我们可以从内部表直接获得所有参数及其᧿述信息:
SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.KSPPDESC PDESC
FROM SYS.x$ksppi x, SYS.x$ksppcv y
WHERE x.indx = y.indx
AND x.ksppinm LIKE '%&par%';
比较常用的几个隐含参数有:
NAME VALUE PDESC
------------------------------ ---------- ------------------------------------------------
_allow_resetlogs_corruption FALSE allow resetlogs even if it will cause corruption
_offline_rollback_segments offline undo segment list
_corrupted_rollback_segments corrupted undo segment list
在后文我们会介绍一下这几个参数的重要用途。
3.2.6 初始化参数的可选项目
Oracle 的很多参数具有多个不同的可选值,可以通过 V$PARAMETER_VALID_VALUES
来进行查询,例如以下查询获得 cursor_sharing 参数的三个可选设置:
SQL> select * from V$PARAMETER_VALID_VALUES where name like '%cursor%';
NUM NAME ORDINAL VALUE ISDEFAULT
---------- ------------------------------ ---------- -------------------- ----------
901 cursor_sharing 1 FORCE FALSE
第 1 章 章名章名章名章名章名
·7·
901 cursor_sharing 2 EXACT TRUE
901 cursor_sharing 3 SIMILAR FALSE
这个视图是基于 X$KSPVLD_VALUES 建立起来的,也可以查询 X$视图来直接获得这些
设置选项:
SQL> SELECT
2 INST_ID,
3 PARNO_KSPVLD_VALUES pvalid_par#,
4 NAME_KSPVLD_VALUES pvalid_name,
5 VALUE_KSPVLD_VALUES pvalid_value,
6 DECODE(ISDEFAULT_KSPVLD_VALUES, 'FALSE', '', 'DEFAULT' ) pvalid_default
7 FROM
8 X$KSPVLD_VALUES
9 WHERE
10 LOWER(NAME_KSPVLD_VALUES) LIKE LOWER('%&1%')
11 ORDER BY
12 pvalid_par#,pvalid_default,pvalid_Value
13 /
Enter value for 1: cursor
old 10: LOWER(NAME_KSPVLD_VALUES) LIKE LOWER('%&1%')
new 10: LOWER(NAME_KSPVLD_VALUES) LIKE LOWER('%cursor%')
INST_ID PAR# PARAMETER VALUE DEFAULT
---------- ------ ------------------------------------ -------- -------
1 901 cursor_sharing EXACT DEFAULT
1 cursor_sharing FORCE
1 cursor_sharing SIMILAR
1 1003 _optimizer_extended_cursor_sharing NONE
1 _optimizer_extended_cursor_sharing UDO
3.2参数文件
参数文件是一个包含一系列参数及参数对应值的操作系统文件。
参数文件有两种类型:
u 初始化参数文件(Initialization Parameters Files)- Oracle9i 之前 Oracle 一直采用 pfile
方式存储初始化参数,该文件为文本文件。可以手工修改。
u 服务器参数文件(Server Parameter Files)- 从 Oracle9i 开始,Oracle 引入的 spfile 文
件,该文件为二进制格式,不能通过手工修改。
书名书名书名书名书名书名书名书名书名书名书名书名书名书名
·8·
从操作系统上我们也可以看到这两者的区别,INIT 文件为 ASCII 文本文件,SPFILE 为数
据文件:
[oracle@jumper oracle]$ cd $ORACLE_HOME/dbs
[oracle@jumper dbs]$ file initconner.ora
initconner.ora: ASCII text
[oracle@jumper dbs]$ file spfileconner.ora
spfileconner.ora: data
在 9i 以前,Oracle 使用 pfile 存储初始化参数设置,参数文件的修改需要手工进行,这些
参数在实例启动时被读取,通过 pfile 的修改需要重起实例才能生效;从 Oracle9i 开始,Oracle
引入 spfile 文件,使用 spfile 你可以通过命令来修改参数(如在 SQL*Plus 中通过 ALTER
SYSTEM 修改参数),不再需要通过手工修改,对于动态参数所有更改可以立即生效,同时你
可以选择使更改只应用于当前实例还是同时应用到 spfile ,对于静态参数我们只能将变更应用
到 spfile 文件,这些变更在数据库重启后生效。
SPFILE 的引入使得对于参数的修改都可以在命令行完成,我们可以彻底告别手工修改初
始化参数文件的历史,这就大大减少了人为错误的发生。
另外 SPFILE 是一个二进制文件,可以使用 RMAN 进行备份,这样实际上 Oracle 把参数
文件也纳入了 Oracle 的备份恢复体系。
随着SPFILE的引入,一个新的视图V$SPPARAMETER被引入,这个视图用于记录SPFILE
文件中设置的初始化参数:
SQL> select sid,name,value from v$spparameter where value is not null;
SID NAME VALUE
---------- ------------------------------ ------------------------------------------
* processes 1000
* sessions 555
* sga_target 1241513984
……………
smsdb1 instance_number 1
smsdb2 instance_number 2
* undo_management AUTO
smsdb1 undo_tablespace UNDOTBS1
smsdb2 undo_tablespace UNDOTBS2
注意查询输出结果中的 SID 项,如果 SID 为“*”则意味着参数设置对 RAC 集群中的所
有实例有效,如果是指定了实例名称的,则只对相应实例生效;对于单实例数据库,则 SID
项设置皆为“*”( 通过 sql_trace 或者 autotrace 功能可以发现,v$spparameter 视图是建立在一
个新的 X$KSPSPFILE 数据字典表之上的)。
3.2.1 PFILE 和 SPFILE
除了第一次启动数据库需要 PFILE(然后可以根据 PFILE 创建 SPFILE),数据库可以不
第 1 章 章名章名章名章名章名
·9·
再需要 PFILE,ORACLE 强烈推荐使用 spfile,应用其新特性来存储和维护初始化参数设置。
当使用 DBCA 自定义(不使用模版)创建数据库时,在最后一个步骤,选择生成数据库
创建脚本,可以将创建数据库所需要执行的脚本保存下来。通过这些脚本,可以进一步研究
Oracle 数据库的创建过程(当然也可以通过手工执行这些脚本,手工创建数据库):
以 Windows 为例,在 scripts 目录下,通常可以看到这样一些脚本(根据安装选项不同,
脚本可能不同):
C:\oracle\admin\eygle\scripts>dir
2005-01-06 13:23 918 CreateDB.sql
2005-01-06 13:23 631 CreateDBCatalog.sql
2005-01-06 13:23 134 CreateDBFiles.sql
2005-01-06 13:23 781 eygle.bat
2005-01-06 13:23 2,847 init.ora
2005-01-06 13:24 409 postDBCreation.sql
手工创建过程通常可以通过 eygle.bat 批处理文件执行开始,系统会根据脚本自动执行创
建过程。我们不打算过多介绍数据库创建过程,和本章内容有关的是,这里存在一个 init.ora 文
件(或 init.ora.<时间戳>文件),这个文件是根据创建数据库之前定义的参数自动生成的,该参
数文件被用来在创建过程中启动数据库,通过 CreateDB.sql 可以看到这个引用:
connect SYS/change_on_install as SYSDBA
书名书名书名书名书名书名书名书名书名书名书名书名书名书名
·10·
set echo on
spool C:\oracle\ora92\assistants\dbca\logs\CreateDB.log
startup nomount pfile="C:\oracle\admin\eygle\scripts\init.ora";
CREATE DATABASE eygle
MAXINSTANCES 1 MAXLOGHISTORY 1 MAXLOGFILES 5 MAXLOGMEMBERS 3 MAXDATAFILES 100
DATAFILE 'd:\oradata\eygle\system01.dbf' SIZE 250M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE
UNLIMITED EXTENT MANAGEMENT LOCAL
在数据库创建完成之后,Oracle 调用 postDBCreation.sql 脚本来进行一系列的后续处理,
最后 Oracle 通过 init.ora 文件创建了 spfile 文件,该脚本的内容大致如下:
connect SYS/change_on_install as SYSDBA
set echo on
spool C:\oracle\ora92\assistants\dbca\logs\postDBCreation.log
@C:\oracle\ora92\rdbms\admin\utlrp.sql;
shutdown ;
connect SYS/change_on_install as SYSDBA
set echo on
spool C:\oracle\ora92\assistants\dbca\logs\postDBCreation.log
create spfile='C:\oracle\ora92\database\spfileeygle.ora'
FROM pfile='C:\oracle\admin\eygle\scripts\init.ora';
startup ;
这就是从 Oracle9i 开始的 pfile 和 spfile 的交接。建议每个试图深入学习 Oracle 的人都仔
细研究一下自动建库的脚本,深入了解该过程非常有助于 Oracle 学习与领悟。
3.2.2 获取参数的视图
数据库的参数设置存储在数据字典表中,进而通过视图展现出来,前文已经ᨀ到了两个
相关视图:V$PARAMETER 和 V$SPPARAMETER。除了这两个重要视图之外,常用的还有
一个 V$SYSTEM_PARAMETER 视图。
由于 Oracle 数据库是一个多用户数据库系统,所以不同会话之间可能存在不同的参数设
置,V$SYSTEM_PARAMETER 视图用于显示当前对于实例(INSTANCE)级别生效的参数设
置,可以被认为是系统(SYSTEM)级别的参数设置;当一个会话(SESSION)创建时,会
首先从 V$SYSTEM_PARAMETER 继承参数设置,而 V$PARAMETER 正是用于显示在会话
级别生效的参数设置,如果在会话级别修改了参数设置,这里的参数值就可能和
V$SYSTEM_PARAMETER 显示的有所不同。
扩展一下介绍,对应于 V$PARAMETER 视图,还存在一个 V$PARAMETER2 视图,这
个视图和 V$PARAMETER 的区别在于,对于存在多个参数值的参数,在这个视图中分多行记
录,例如对于 CONTROL_FILES 参数在 V$PARAMETER 中显示如下:
SQL> select name,value from v$parameter where name='control_files';
NAME
第 1 章 章名章名章名章名章名
·11·
---------------
VALUE
--------------------------------------------------------------------------------
control_files
/data1/oradata/phsdb/control01.ctl, /data1/oradata/phsdb/control02.ctl, /data1/o
radata/phsdb/control03.ctl
而在 V$PARAMETER2 则分为三条记录显示:
SQL> select name,value from v$parameter2 where name='control_files';
NAME VALUE
--------------- --------------------------------------------------
control_files /data1/oradata/phsdb/control01.ctl
control_files /data1/oradata/phsdb/control02.ctl
control_files /data1/oradata/phsdb/control03.ctl
类似的对于 V$SYSTEM_PARAMETER 视图,也存在一个对应的
V$SYSTEM_PARAMETER2 视图。
我们前边ᨀ到当在 SQL*Plus 中使用 show parameter 命令时,实际上在后台查询的是
V$PARAMETER 视图;从 Oracle Database 11g 开始,SQL*Plus 增加了一个命令 show
spparameter 用于显示 V$SPPARAMETER 视图中的参数设置:
SQL> select * from v$version where rownum <2;> show parameter memory_target
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
memory_target big integer 800M
SQL> show spparameter memory_target
SID NAME TYPE VALUE
-------- ----------------------------- ----------- ----------------------------
* memory_target big integer 800M
这是 Oracle Database 11g 在易用性方面的一个小小增强。
3.2.3 SPFILE 的创建
从 Oracle9i 开始,缺省的,ORACLE 使用 SPFILE 启动数据库,从上一节的数据库创建过
程我们也可以看到,SPFILE 必须由 PFILE 创建,新创建的 SPFILE 在下一次启动数据库时生
效。
CREATE SPFILE 需要 SYSDBA 或者 SYSOPER 的权限,其语法如下,注意其中 MEMORY
的选项是自 Oracle 11g 引入的:
书名书名书名书名书名书名书名书名书名书名书名书名书名书名
·12·
例如:
SQL> create spfile from pfile;
缺省的,spfile 会创建到系统缺省目录,在 Unix 下的缺省目录为 $ORACLE_HOME/dbs
在 Windows 上的缺省目录为$ORACLE_HOME\database。
如果 SPFILE 已经存在,那么创建会返回以下错误:
SQL> create spfile from pfile;
create spfile from pfile
*
ERROR 位于第 1 行:
ORA-32002: 无法创建已由例程使用的 SPFILE
这也可以用来判断当前是否使用了 SPFILE 文件。然而意外的时,Oracle 并没有向其他文
件一样,在运行期间保持锁定,让我们作以下试验:
SQL> host rename SPFILEEYGLEN.ORA SPFILEEYGLEN.ORA.BAK
SQL> alter system set db_cache_size=24M scope=both;
系统已更改。
SQL> host dir *.ora
E:\Oracle\Ora9iR2\database 的目录
2003-02-10 14:35 2,048 PWDeyglen.ORA
SQL> alter system set db_cache_size=24M scope=spfile;
alter system set db_cache_size=24M scope=spfile
*
ERROR 位于第 1 行:
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
SQL> host rename SPFILEEYGLEN.ORA.BAK SPFILEEYGLEN.ORA
SQL> alter system set db_cache_size=24M scope=spfile;
系统已更改。
由于运行期并不锁定 spfile,所以 spfile 可能会意外丢失,如果发生此类情况,Oracle 会
不允许使用 create spfile from pfile 缺省命令来重建 spfile(因 ORA-32002 错误而失败),但是
此时可以创建一个自定义名称的 spfile 文件,然后重命名为缺省名称即可。
第 1 章 章名章名章名章名章名
·13·
3.2.4 由内存创建参数文件
从 Oracle 11g 开始,为了增强参数文件的恢复,一个新的命令被引入用于从当前运行实例
创建参数文件,这个命令是:
create
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




