oracle10g的spfile与pfile

本文介绍了Oracle数据库中spfile和pfile的概念及其区别。spfile是二进制文件,提高了系统的安全性,而pfile是文本文件。文章还详细解释了如何在不同情况下创建和使用这两种文件,并提供了实例说明。

  1.spfile是Oracle9i之后引入的,目的是提高系统安全性。在Oracle8i下初始化参数文件为文本文件,可以使用文本编辑器进行编辑,当需要修改初始化参数时,需要在init.ora文件中修改,再重新启动数据库实例。在Oracle10g,引入了服务器参数文件(spfile),可以简化初始化参数的管理。spfile文件是一个二进制文件,不能使用文本编辑器(虽然文本编辑器打开后,能够看到参数内容),否则可能造成Oracle无法识别spfile文件。
以下以我自己系统安装的Oracle与大家讨论这二者的用法:
D盘是Oracle10g的主安装目录,分别在

(1)D:/oracle/product/10.2.0/admin/orcl/pfile/init.ora.3142010101424

(2)D:/oracle/product/10.2.0/db_1/database/initorcl.ora

(3)D:/oracle/product/10.2.0/db_1/dbs/SPFILEORCL.ORA

3个位置可以找到pfile、spfile的位置和spfile,其中(1)就是那个文本文件pfile,(2)指的是(3)的位置,(3)就是哪个二进制文件spfile,如果spfile被损坏了,那么重新启动数据库就会报找不到spfile的错误,这事需要通过pfile创建spfile:
create spfile from pfile='D:/oracle/product/10.2.0/admin/orcl/pfile/init.ora.3142010101424';
并且重新启动数据库时用startup pfile='D:/oracle/product/10.2.0/admin/orcl/pfile/init.ora.3142010101424'。
如果(2)被修改了路径,那么3的位置要做相应的调整,不然数据库重启启动会报同样的错误。
如果(1)被损坏或删除,数据库可以照常启动,但为了保险,我们还是重新创建一个新的pfile:
create pfile='D:/oracle/product/10.2.0/admin/orcl/pfile/init.ora.3142010101424' from spfile;


  2.查看系统是以pfile还是spfile 启动:
Select isspecified,count(*) from v$spparameter group by isspecified;
如果 isspecified里有true,表明用spfile进行了指定配置
如果全为false,则表明用pfile启动


  3.使用SPfile的好处:
Spfile 改正了pfile管理混乱的问题,在多结点的环境里,pfile会有多个image
启动时候需要跟踪最新的image。这是个烦琐的过程。
用spfile以后,所有参数改变都写到spfile里面(只要定义 scope=spfile或both),参数配置有个权威的来源。

 

  4.从spfile获取pfile
Create pfile='d:pfileSID.ora' from spfile;
Create pfile='d:pfileSID.ora' from spfile='spfile_location';

 

  5.从pfile获取spfile
Create spfile from pfile='Your_pfile_location'
Create spfile='spfile_location' from pfile='Your_pfile_location'
 
  6.动态修改参数
 alter system set parameter=Value scope=spfile|both|memory
 
  7.Startup nomount的时候需要读去spfile或pfile,两者共存,spfile优先

 

  8.试验心得:

 环境:window2003  Oracle10g

 问题描述:一个数据库实例,包含二个数据库(test,orcl),因为设置错误的参数造成orcl数据库spfile文件损坏。通过create spfile生成文件后,一次一只能启动一个数据库。

解决过程:


C:/Documents and Settings/hsx>set oracle_sid=orcl

C:/Documents and Settings/hsx>sqlplus/nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 星期六 5月 15 17:37:34 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

SQL> conn sys/sys as sysdba
已连接到空闲例程。
SQL> create spfile from pfile='D:/oracle/product/10.2.0/admin/orcl/pfile/init.or
a.3142010101424';

文件已创建。

SQL> startup pfile='D:/oracle/product/10.2.0/admin/orcl/pfile/init.ora.314201010
1424'
ORACLE 例程已经启动。

Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             167775108 bytes
Database Buffers          436207616 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
数据库已经打开。
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             184552324 bytes
Database Buffers          419430400 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
数据库已经打开。
SQL> Select isspecified,count(*) from v$spparameter group by isspecified;

ISSPEC   COUNT(*)
------ ----------
TRUE           23
FALSE         236


备注:假如有多个数据库的话,可以通过设置set oracle_sid, 然后pfile单独启动

Oracle 数据库管理中,从 SPFILE 创建 PFILE 是一个常见的操作,通常用于数据库启动或参数文件的调试。以下是具体的操作步骤和相关示例。 ### 创建 PFILE 的基本命令 当数据库使用 SPFILE 启动时,可以通过 SQL*Plus 使用以下命令创建 PFILE: ```sql CREATE PFILE FROM SPFILE; ``` 此命令会将当前实例使用的 SPFILE 转换为 PFILE,并保存在默认位置,通常是 `$ORACLE_HOME/dbs` 目录下。默认生成的 PFILE 名为 `init<ORACLE_SID>.ora`。 ### 指定 SPFILEPFILE 的路径 如果需要指定 SPFILE 的路径以及生成的 PFILE 的位置,可以使用以下命令格式: ```sql CREATE PFILE='/path/to/pfile.ora' FROM SPFILE='/path/to/spfile'; ``` 例如,参考引用中的示例,可以使用如下命令: ```sql CREATE PFILE FROM SPFILE='+DATA/DB0410_NRT1PV/PARAMETERFILE/spfile.262.1133756061'; ``` 执行该命令后,Oracle 会根据提供的 SPFILE 生成一个 PFILE 文件。在 SQL*Plus 中,会提示用户输入 SPFILE 的路径,如果使用变量 `&1`,系统会要求输入具体的路径值 [^2]。 ### 使用 PFILE 启动数据库 在某些情况下,比如需要修改 SPFILE 内容或者调试参数,可以先通过 SPFILE 生成 PFILE,然后使用 PFILE 启动数据库。例如: ```sql STARTUP PFILE='/u01/app/oracle/admin/NDLNE/pfile/init.ora' NOMOUNT; ``` 这条命令会以指定的 PFILE 启动数据库实例,但不会挂载数据库。接着可以使用 PFILE 创建新的 SPFILE: ```sql CREATE SPFILE FROM PFILE='/u01/app/oracle/admin/NDLNE/pfile/init.ora'; ``` 完成 SPFILE 的创建后,可以挂载数据库并继续进行其他操作 [^3]。 ### 总结 从 SPFILE 创建 PFILE 是一个简单但重要的操作,尤其在数据库维护和参数调整时非常有用。通过 SQL*Plus 的 `CREATE PFILE` 命令,可以轻松地完成这一操作,并根据需要指定文件路径。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值