用事实说话,无猜想,无推断:
C:\Documents and Settings\Administrator.WWW-9C571C50D8E>sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on 星期六 7月 2 10:49:26 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn /as sysdba
已连接到空闲例程。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 281021316 bytes
Database Buffers 322961408 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。
数据库已经打开。
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string E:\ORACLE\PRODUCT\10.2.0\DB_1\
DBS\SPFILEFANTASY.ORA --此处value有值,证明数据库默认使用spfile参数文件(二进制)启动数据库,路径为$ORACLE_HOME\DBS\SPFILEFANTASY.ORA
SQL> select value from v$spparameter where name='control_files';
VALUE
--------------------------------------------------------------------------------
E:\oracle\product\10.2.0\oradata\fantasy\control01.ctl
E:\oracle\product\10.2.0\oradata\fantasy\control02.ctl
E:\oracle\product\10.2.0\oradata\fantasy\control03.ctl
E:\oracle\product\10.2.0\oradata\fantasy\control04.ctl
SQL> select value from v$system_parameter where name='control_files';
VALUE
--------------------------------------------------------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADATA\FANTASY\CONTROL01.CTL, E:\ORACLE\PRODUCT\10.2.0
\ORADATA\FANTASY\CONTROL02.CTL, E:\ORACLE\PRODUCT\10.2.0\ORADATA\FANTASY\CONTROL
03.CTL, E:\ORACLE\PRODUCT\10.2.0\ORADATA\FANTASY\CONTROL04.CTL
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> exit
从 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options 断开
C:\Documents and Settings\Administrator.WWW-9C571C50D8E>sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on 星期六 7月 2 10:52:25 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn /as sysdba
已连接到空闲例程。
SQL> create pfile from spfile; --手动创建pfile参数文件
文件已创建。
SQL> startup pfile=E:\oracle\product\10.2.0\db_1\database\initfantasy.ora --数据库从pfile参数文件(文本)启动,路径为$ORACLE_HOME\database\initfantasy.ora
ORACLE 例程已经启动。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 281021316 bytes
Database Buffers 322961408 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。
数据库已经打开。
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string --此处value为null,证明是以pfile参数文件启动的
SQL> select value from v$spparameter where name='control_files';
VALUE
--------------------------------------------------------------------------------
SQL> select value from v$system_parameter where name='control_files';
VALUE
--------------------------------------------------------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADATA\FANTASY\CONTROL01.CTL, E:\ORACLE\PRODUCT\10.2.0
\ORADATA\FANTASY\CONTROL02.CTL, E:\ORACLE\PRODUCT\10.2.0\ORADATA\FANTASY\CONTROL
03.CTL, E:\ORACLE\PRODUCT\10.2.0\ORADATA\FANTASY\CONTROL04.CTL
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> exit
从 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options 断开
C:\Documents and Settings\Administrator.WWW-9C571C50D8E>sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on 星期六 7月 2 10:54:37 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn /as sysdba
已连接到空闲例程。
SQL> create spfile from pfile; --手动创建spfile参数文件
文件已创建。
SQL> startup --pfile与spfile同时存在,数据库优先以spfile参数文件启动
ORACLE 例程已经启动。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 281021316 bytes
Database Buffers 322961408 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。
数据库已经打开。
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string E:\ORACLE\PRODUCT\10.2.0\DB_1\
DATABASE\SPFILEFANTASY.ORA --手动创建的spfile参数文件路径已变,为$ORACLE_HOME\database\SPFILEFANTASY.ORA
SQL> select value from v$spparameter where name='control_files';
VALUE
--------------------------------------------------------------------------------
E:\oracle\product\10.2.0\oradata\fantasy\control01.ctl
E:\oracle\product\10.2.0\oradata\fantasy\control02.ctl
E:\oracle\product\10.2.0\oradata\fantasy\control03.ctl
E:\oracle\product\10.2.0\oradata\fantasy\control04.ctl
SQL> select value from v$system_parameter where name='control_files';
VALUE
--------------------------------------------------------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADATA\FANTASY\CONTROL01.CTL, E:\ORACLE\PRODUCT\10.2.0
\ORADATA\FANTASY\CONTROL02.CTL, E:\ORACLE\PRODUCT\10.2.0\ORADATA\FANTASY\CONTROL
03.CTL, E:\ORACLE\PRODUCT\10.2.0\ORADATA\FANTASY\CONTROL04.CTL
--pfile/spfile历史
9i之前,Oracle实例只能使用文本类型的参数文件PFILE(Parameter File)来存储实例的相关设定;
当使用alter system set parameter=value修改当前参数时,必须手动同步修改PFILE的内容,当下次重启时,才能让实例参数值与之前设定的一致。
9i之后,引入了新类型参数文件,称为服务器参数文件SPFILE(Server Parameter File);
与pfile相比,spfile的内容具有持续性,即当使用alter system set parameter=value修改参数值时,Oracle服务器自动修改spfile的内容。
--创建服务器参数文件
初始的spfile可以由pfile产生,当Oracle软件安装完成后,$ORACLE_HOME/dbs路径下有一个默认参数文件init.ora
create spfile from pfile;
create spfile ['=spfile_name'] from pfile ['=pfile_name'];
create pfile ['=pfile_name'] from spfile ['=spfile_name'];
11g之后,可以将实例的参数值作为源创建spfile或pfile:
create spfile from memory;
create pfile from memory;
--使用服务器参数文件
SQL>startup pfile=/home/oracle/initorcl.ora --使用pfile启动实例
如果startup后面没有指定参数文件,则先寻找$ORACLE_HOME/dbs路径下的spfile.ora;
若找不到spfile.ora,则查看spfile.ora是否存在;
如果还是没有,才会使用init.ora作为启动实例时使用的参数文件
SQL>startup
搜寻参数文件的顺序如下:
$ORACLE_HOME/dbs/spfile.ora (UNIX) --%ORACLE_HOME\database\spfile.ora (Windows)
$ORACLE_HOME/dbs/spfile.ora (UNIX) --%ORACLE_HOME\database\spfile.ora (Windows)
$ORACLE_HOME/dbs/init.ora (UNIX) --%ORACLE_HOME\database\init.ora (Windows)
若以上位置都找不到,则会出现找不到init.ora的错误提示,其实是个误导信息,错误原因不在pfile,而在于前两个spfile不存在
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\SPFILEFANTASY.ORA
/*若value值为某个spfile参数文件的名称,则表示实例是由spfile启动的;若value值为空,则表示此实例是由pfile启动的*/
[本帖最后由 lchh0917 于 2011-7-2 16:19 编辑]