Oracle pfile

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34556414/article/details/84060733

Pfile和实例的启动有密切关系的。

 

数据库启动分三个阶段:

(1)在nomount状态的时候会给实例分配相应的内存和启动后台进程,内存的参数需要获得相应的大小,这些大小从spfile里面去获取(初始化参数文件,pfile和spfile),有一些是oracle内部的默认值,还有一部分是手工配置的。(读取参数文件)

(2)在nomount状态进入到mount状态,mount状态需要读取控制文件,必须保证所有的控制文件都是可读的,可访问的,这样才可以保证数据库实例启动到mount状态。(读取控制文件)

(3)在mount状态读取控制文件内容,去检查所有数据库的数据文件,日志文件是否可以正常访问,还要检查数据库的一致性,当以上都没问题才进入open状态。(读取控制文件,检查数据,日志文件,检查数据库一致性)

 

 

Pfile是初始化参数文件,当数据库实例启动到nomount状态时候,需要读取pfile参数文件获取到相应的参数配置。

 

Pfile的位置:

[oracle@Database2 ~]$ cd $ORACLE_HOME/dbs

[oracle@Database2 dbs]$ ls

hc_oradb.dat  initoradba.ora  orapworadb      spfileoradb.ora

init.ora      lkORADB         snapcf_oradb.f

 

Pfile的名字是init+实例名字(SID).ora,spfile名字是spfile+实例名.ora

Pfile:(1)这个文件是文本文件,所以这个文件可以通过手工编辑(2)编辑完之后实例重新启动才会生效(3)pfile文件可以通过spfile文件来创建

由于修改参数要编辑文件,编辑完之后还要重启才可以生效,所以一般使用spfile。

 

 

判断数据库使用了pfile启动还是使用了spfile启动使用下面命令就可以判断

SQL> show parameter spfile;  --可以看到当前实例是使用了spfile来启动

 

NAME      TYPE   VALUE

------------------------------------ -------------------- ------------------------------

spfile      string   /u01/app/oracle/product/11.2.0

  /db_1/dbs/spfileoradb.ora

 

SQL> create pfile from spfile;  --生成pfile

 

File created.

 

 

当存在spfile和pfile,实例先去读取spfile,如果spfile不存在,那么会去读取pfile,如果两个都不存在,实例启动就会失败。

 

[oracle@Database2 dbs]$ ls

hc_oradb.dat  initoradba.ora  lkORADB     snapcf_oradb.f

init.ora      initoradb.ora   orapworadb  spfileoradb.ora

[oracle@Database2 dbs]$ rm -rf spfileoradb.ora  --将spfile删除

 

SQL> startup force nomount;  --启动到nomount状态下

ORACLE instance started.

 

Total System Global Area 1068937216 bytes

Fixed Size     2260088 bytes

Variable Size   671089544 bytes

Database Buffers   390070272 bytes

Redo Buffers     5517312 bytes

SQL> show parameter spfile;  --可以看到spfile对应的值是空值,说明启动是使用pfile来启动的

 

NAME      TYPE   VALUE

------------------------------------ -------------------- ------------------------------

spfile

 

 

 

[oracle@Database2 ~]$ cd $ORACLE_HOME/dbs

[oracle@Database2 dbs]$ ls   --在ORACLE_HOME/dbs下面有一个参数的模板文件init.ora

hc_oradb.dat  init.ora  initoradba.ora  initoradb.ora  lkORADB  orapworadb  snapcf_oradb.f

 

 

[oracle@Database2 dbs]$ more init.ora  --在这个模板参数文件里面有一些最基本参数的信息,这个模板适合手工建库,先修改这个模板文件将数据库启动到nomount状态,然后再后续进行DBCA建库。(init.ora是用来快速生成一个pfile文件的)

db_name='ORCL'

memory_target=1G

processes = 150

audit_file_dest='<ORACLE_BASE>/admin/orcl/adump'

audit_trail ='db'

db_block_size=8192

db_domain=''

db_recovery_file_dest='<ORACLE_BASE>/flash_recovery_area'

db_recovery_file_dest_size=2G

diagnostic_dest='<ORACLE_BASE>'

dispatchers='(PROTOCOL=TCP) (SERVICE=ORCLXDB)'

open_cursors=300

remote_login_passwordfile='EXCLUSIVE'

undo_tablespace='UNDOTBS1'

# You may want to ensure that control files are created on separate physical

# devices

control_files = (ora_control1, ora_control2)

compatible ='11.2.0'

猜你喜欢

转载自blog.csdn.net/qq_34556414/article/details/84060733