问题:
Oracle在nomount状态:只启动实例而不加载数据库,用于创建数据库或重建控制文件。
启动实例时会在$ORACLE_HOME/dbs目录中按如下顺序搜索启动参数文件:spfileSID.ora,
spfile.ora和initSID.ora。可以在startup命令后面通过pfile参数来手工指定启动参数文件。
我们怎么证明spfile和pfile的启动顺序呢?
理论:
在oracle10g以后log_archive_start参数已经废弃,不再使用,如果在归档模式下开启此
参数将报错.
实验:
1.启动数据库
SQL> startup;
ORACLE 例程已经启动。
Total System Global Area 548225024 bytes
Fixed Size 1334436 bytes
Variable Size 427819868 bytes
Database Buffers 109051904 bytes
Redo Buffers 10018816 bytes
数据库装载完毕。
数据库已经打开。
2.查看log_archive_start的原始参数为false
SQL> show parameter log_archive_start;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_start boolean FALSE
查看spfile的数值
SQL> show parameter spfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string D:\APP\ADMINISTRATOR\PRODUCT\1
1.1.0\DB_1\DATABASE\SPFILETICK
ET.ORA
3.修改log_archive_start的数值,修改之后spfile文件数据变化.
SQL> alter system set log_archive_start=true scope=spfile;
系统已更改。
4.正常启动报错,说明默认读取的spfile文件.
SQL> shutdown ;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE 例程已经启动。
Total System Global Area 548225024 bytes
Fixed Size 1334436 bytes
Variable Size 427819868 bytes
Database Buffers 109051904 bytes
Redo Buffers 10018816 bytes
数据库装载完毕。
数据库已经打开。
5.关闭重新读取pfile文件启动正常,说明数据库默认先读spfile,在spfile不存在的情况下读取pfile
SQL> shutdown ;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> host del D:\app\Administrator\product\11.1.0\db_1\database\INITticket.ORA
SQL> startup ;
ORACLE 例程已经启动。
Total System Global Area 548225024 bytes
Fixed Size 1334436 bytes
Variable Size 427819868 bytes
Database Buffers 109051904 bytes
Redo Buffers 10018816 bytes
数据库装载完毕。
数据库已经打开。
6.重新生成spfile文件
SQL> create spfile from pfile;
文件已创建。
SQL> spool off;
备注:在数据启动之后想看数据库是spfile方式启动还是pfile方式启动;
通过:
SQL> show parameter spfile;
如果有value的值,表示是spfile方式启动的,没有值表示为pfile方式启动.