分类: Oracle
2008-05-07 16:26:49
判断是否使用了SPFILE,可以使用以下方法:
1.查询v$parameter动态视图,如果以下查询返回空值,那么你在使用pfile.
SQL> SELECT name,value FROM v$parameter WHERE name='spfile'; NAME VALUE ------------ --------------------------------- spfile %ORACLE_HOME%\DATABASE\SPFILE%ORACLE_SID%.ORA |
2.或者你可以使用SHOW命令来显示参数设置,如果以下结果value列返回空值,那么说明你在使用pfile:
SQL> SHOW PARAMETER spfile NAME TYPE VALUE ------------------------- ------ --------------- spfile string %ORACLE_HOME%\DATABASE\SPFILE%ORACLE_SID%.ORA |
3.查询v$spparameter视图
如果以下查询返回0值,表示你在使用pfile,否则表明你使用的是spfile:
SQL> SELECT COUNT(*) FROM v$spparameter WHERE value IS NOT NULL; COUNT(*) ---------- 32 |
或者使用以下查询,如果true值返回非0值,那么说明我们使用的是spfile.
SQL> SELECT isspecified, COUNT (*) FROM v$spparameter 2 GROUP BY isspecified; ISSPECIFIED COUNT(*) ------------ ---------- FALSE 226 TRUE 33 |
更为直接的:
SQL> select decode(count(*), 1, 'spfile', 'pfile' ) USED 2 from v$spparameter 3 where rownum=1 and isspecified='TRUE' 4 /
------------ spfile |
SPFILE文件
SPFILE文件可以导出为文本文件,使用导出、创建过程你可以向SPFILE中添加参数。
SQL> create pfile='e:\initeyglen.ora' from spfile; 文件已创建。 SQL> SHUTDOWN immediate 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 |
Initeyglen.ora文件的内容:
*.aq_tm_processes=1 *.background_dump_dest='e:\Oracle\admin\eyglen\bdump' *.compatible=' *.control_files='e:\Oracle\oradata\eyglen\control01.ctl', 'e:\Oracle\oradata\eyglen\control02.ctl', 'e:\Oracle\oradata\eyglen\control03.ctl' *.core_dump_dest='e:\Oracle\admin\eyglen\cdump' *.db_block_size=8192 *.db_cache_size=25165824 *.db_domain='' *.db_file_multiblock_read_count=16 *.db_name='eyglen' *.dispatchers='(PROTOCOL=TCP) (SERVICE=eyglenXDB)' *.fast_start_mttr_target=300 *.hash_join_enabled=TRUE *.instance_name='eyglen' *.java_pool_size=33554432 *.job_queue_processes=10 *.large_pool_size=8388608 *.open_cursors=300 *.pga_aggregate_target=25165824 *.processes=150 *.query_rewrite_enabled='FALSE' *.remote_login_passwordfile='EXCLUSIVE' *.shared_pool_size=50331648 *.sort_area_size=524288 *.sql_trace=FALSE *.star_transformation_enabled='FALSE' *.timed_statistics=TRUE *.undo_management='AUTO' *.undo_retention=10800 *.undo_tablespace='UNDOTBS1' *.user_dump_dest='e:\Oracle\admin\eyglen\udump' |
然后我们可以使用这个pfile,或者手动修改其中的参数以启动数据库。
我们修改这个pfile,增加一行:
*.log_archive_start=true |
使用这个PFILE启动数据库:
ORACLE 例程已经启动。 Total System Global Area 135338868 bytes Fixed Size 453492 bytes Variable Size 109051904 bytes Database Buffers 25165824 bytes Redo Buffers 667648 bytes 数据库装载完毕。 数据库已经打开。 SQL> SHOW parameter log_archive_start NAME TYPE VALUE ------------------------------------ -------- ------------ log_archive_start boolean TRUE SQL> |
然后我们可以使用新的PFILE创建SPFILE
SQL> CREATE spfile FROM pfile='e:\initeyglen.ora'; 文件已创建。 |
重新启动数据库,新的SPFILE生效。
SQL> STARTUP ORACLE 例程已经启动。 Total System Global Area 135338868 bytes Fixed Size 453492 bytes Variable Size 109051904 bytes Database Buffers 25165824 bytes Redo Buffers 667648 bytes 数据库装载完毕。 数据库已经打开。 SQL> SHOW parameter spfile NAME TYPE VALUE --------------------- ------ ---------------------------- spfile string %ORACLE_HOME%\DATABASE\SPFILE%ORACLE_SID%.ORA SQL> show parameter log_archive_start NAME TYPE VALUE --------------------- ------ ---------------------- log_archive_start boolean TRUE SQL> |
920的PFILE
在$ORACLE_BASE\admin\db_name\spfile下,你很可能可以看到一个类似这样
[init.ora.192003215317]名字的文件,这就是初始化参数文件,只是跟上了时间戳。
对于Oracle920,缺省的就使用spfile启动,但是这个spfile 不是凭空而来,而是根据这个文件创建而来,你可以去掉这个长后缀,就是标准的pfile文件了。
如果你想要使用pfile启动数据库,那么你可以把spfile改名,NT缺省位于$ORACLE_HOME\database下,这样Oracle就不会使用这个spfile了 。
你使用create pfile from spfile命令创建的pfile,也应该在这个目录下
以下是一个完整的例子:
E:\Oracle\Ora9ir2\database>dir *.ora 驱动器 E 中的卷是 Doc 卷的序列号是 E:\Oracle\Ora9iR2\database 的目录 2003-02-26 10:49 1,028 INITeyglen.ORA 2003-02-10 14:35 2,048 PWDeyglen.ORA 2003-02-26 11:05 3,584 SPFILEEYGLEN.ORA 3 个文件 6,660 字节 0 个目录 937,455,616 可用字节 E:\Oracle\Ora9iR2\database> SQLPLUS /nolog SQL*Plus: Release Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. SQL> CONNECT / as sysdba 已连接到空闲例程。 SQL> startup ORACLE 例程已经启动。 Total System Global Area 135338868 bytes Fixed Size 453492 bytes Variable Size 109051904 bytes Database Buffers 25165824 bytes Redo Buffers 667648 bytes 数据库装载完毕。 数据库已经打开。 SQL> SHOW parameter spfile NAME TYPE VALUE -------------------- ------- ---------- spfile string %ORACLE_HOME%\DATABASE\SPFILE%ORACLE_SID%.ORA SQL> SHUTDOWN immediate 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> host rename SPFILEEYGLEN.ORA SPFILEEYGLEN.ORA.bak SQL> host dir *.ora 驱动器 E 中的卷是 Doc 卷的序列号是 E:\Oracle\Ora9iR2\database 的目录 2003-02-26 10:49 1,028 INITeyglen.ORA 2003-02-10 14:35 2,048 PWDeyglen.ORA 2 个文件 3,076 字节 0 个目录 937,435,136 可用字节 SQL> STARTUP ORACLE 例程已经启动。 Total System Global Area 135338868 bytes Fixed Size 453492 bytes Variable Size 109051904 bytes Database Buffers 25165824 bytes Redo Buffers 667648 bytes 数据库装载完毕。 数据库已经打开。
NAME TYPE VALUE ------------------------------------ ---------- ---------- spfile string SQL> SQL> host rename SPFILEEYGLEN.ORA.bak SPFILEEYGLEN.ORA SQL> SHUTDOWN immediate 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> startup ORACLE 例程已经启动。 Total System Global Area 135338868 bytes Fixed Size 453492 bytes Variable Size 109051904 bytes Database Buffers 25165824 bytes Redo Buffers 667648 bytes 数据库装载完毕。 数据库已经打开。
NAME TYPE VALUE --------------------- ------ -------------- spfile string %ORACLE_HOME%\DATABASE\SPFILE%ORACLE_SID%.ORA SQL> |