`

(转)Oracle中PFILE和SPFILE的使用

阅读更多

 

      在9i以前,Oracle使用pfile存储初始化参数设置,这些参数在实例启动时被读取,任何修改需要重起实例才能生效,使用spfile你可以使用 ALTER SYSTEM或者ALTER SESSION来动态修改那些可动态修改的参数,所有更改可以立即生效,你可以选择使更改只应用于当前实例还是同时应用到spfile。这就使得所有对 spfile的修改都可以在命令行完成,我们可以彻底告别手工修改初始化参数文件,这就大大减少了人为错误的发生。

      SPFILE是一个二进制文件,可以使用RMAN进行备份,这样实际上Oracle把参数文件也纳入了备份恢复管理。除了第一次启动数据库需要 PFILE(然后可以根据PFILE创建SPFILE),我们可以不再需要PFILE,ORACLE强烈推荐使用spfile,应用其新特性来存储和维护初始化参数设置。

 

一. 创建SPFILE

缺省的,ORACLE使用PFILE启动数据库,SPFILE必须由PFILE创建,新创建的SPFILE在下一次启动数据库时生效,CREATE SPFILE需要SYSDBA或者SYSOPER的权限:

语法如下:

CREATE SPFILE[='SPFILE-NAME'] FROM PFILE[='PFILE-NAME']



例:

SQL> create spfile from pfile;

缺省的,spfile创建到系统缺省目录

(Unix: $ORACLE_HOME/dbs; NT: $ORACLE_HOME\database)


如果SPFILE已经存在,那么创建会返回以下错误:

SQL> create spfile from pfile;

create spfile from pfile

ERROR 位于第 1 行:

ORA-32002: 无法创建已由例程使用的 SPFILE



判断是否使用了SPFILE,你可以使用SHOW命令来显示参数设置,如果以下结果value列返回空值,那么说明你在使用pfile:

SQL> SHOW PARAMETER spfile

NAME TYPE   VALUE

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

spfile string   %ORACLE_HOME%\DATABASE\SPFILE%ORACLE_SID%.ORA


二. 使用SPFILE


重新启动数据库,使用startup命令,Oralce将会按照以下顺序在缺省目录中搜索参数文件:

a.    spfile${ORACLE_SID}.ora

缺省目录

UNIX: ${ORACLE_HOME}/dbs/

NT: ${ORACLE_HOME}\database

b.    spfile.ora

缺省目录

UNIX: ${ORACLE_HOME}/dbs/

NT: ${ORACLE_HOME}\database

c. init${ORACLESID}.ora

缺省目录

UNIX: ${ORACLE_HOME}/dbs/

NT: ${ORACLE_HOME}\database or

${ORACLE_HOME}\admin\db_name\pfile\

创建了spfile,重新启动数据库,Oracle会按顺序搜索以上目录,spfile就会自动生效。



三. 使用pfile/spfile启动数据库

如果你想使用pfile启动数据库,你可以在启动时指定pfile或者删除spfile.

SQL> startup pfile='E:\Oracle\admin\eyglen\pfile\init.ora';

你不能以同样的方式指定spfile。



四. 修改参数

可以通过ALTER SYSTEM或者导入导出来更改SPFILE的内容。

ALTER SYSTEM增加了一个新选项:SCOPE。SCOPE参数有三个可选值:MEMORY ,SPFILE , BOTH

MEMORY:只改变当前实例运行

SPFILE:只改变SPFILE的设置

BOTH:改变实例及SPFILE

注意:不带参数的ALTER SYSTEM语句等同于scope=both,如果修改静态参数,那么需要指定SPFILE参数,否则将会报错。


五. 导出SPFILE文件

SPFILE文件可以导出为文本文件,使用导出、创建过程你可以向SPFILE中添加参数。

SQL> create pfile='e:\initeyglen.ora' from spfile;

文件已创建。

然后我们可以使用这个pfile,或者手动修改其中的参数以启动数据库。

我们修改这个pfile,增加一行

*.log_archive_start=true

使用这个PFILE启动数据库

SQL> startup pfile='e:\initeyglen.ora'

ORACLE 例程已经启动。

数据库装载完毕。

数据库已经打开。

SQL> show parameter log_archive_start

NAME TYPE              VALUE

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

log_archive_start Boolean   TRUE


然后我们可以使用新的PFILE创建SPFILE

SQL> create spfile from pfile='e:\initeyglen.ora';

文件已创建。

重新启动数据库,新的SPFILE生效。

SQL> startup

ORACLE 例程已经启动。

数据库装载完毕。

数据库已经打开。

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


六. 关于920/10的PFILE

在$ORACLE_BASE\admin\db_name\spfile下,你很可能可以看到一个类似这样[init.ora.192003215317]名字的文件,这就是初始化

参数文件,只是跟上了时间戳。

对于Oracle920,缺省的就使用spfile启动,但是这个spfile不是凭空而来,而是根据这个文件创建而来,你可以去掉这个长后缀,就是标准的pfile文件了。

如果手动创建数据库,可以看到以下的过程:
SQL> create spfile='e:\oracle\ora10G\database\spfilesunny.ora'    FROM pfile='E:\oracle\admin\sunny\scripts\init.ora';

文件已创建。

如果你想要使用pfile启动数据库,那么你可以把spfile改名,NT缺省位于$ORACLE_HOME\database下,这样Oracle就不会使用这个spfile了 。

 

 

===========================

//另附一篇文章:

ORACLE初始化参数文件SPFILE、PFILE介绍


分享到:
评论

相关推荐

    Oracle参数文件PFILE和SPFILE介绍

    PFILE属于静态文件,修改之后的参数需要重启Oracle服务器才能生效;SPFILE属于动态文件,参数修改后立即使之生效,且为二进制文件,更加的安全。

    原创文档详细说明ORACLE10G参数文件PFILE与SPFILE

    原创文档详细说明ORACLE10G参数文件PFILE与SPFILE, 超级详细

    asm指定路径对pfile和spfile相互创建

    因为asm磁盘组路径的原因,不能直接对pfile-spfile进行创建,需要指定路径进行创建,不然就会报错.

    spfile&pfile

    針對oracle 的參數檔spfile&pfile的分析討論

    oracle spfile

    oracle spfile/pfile详解; 深入spfile 及 pfile的区别

    RAC中创建spfile

    RAC中创建spfile的各种方法,有截图,说明,对新人帮助很大

    数据库创建spfile及修改最大连接数

    创建spfile并修改数据库连接数

    在Oracle关闭情况下如何修改spfile的参数

    大家都知道在Oracle中pfile参数是可以手动更改的,但是spfile是二进制文件所以不可以手动更改,但我最近遇到了一个问题,修改参数错误,导致Oracle启动不了,一定要修改spfile该怎么办呢?下面通过这篇文章来一起看...

    平安数据库试题

    create spfile from pfile,启动数据库即可,
也可以alter system set parametervalue=parametervalue scope = spfile
数据库重启后参数生效、 a. 从spfile生成pfile,修改pfile,再从pfile生成spfile b. 直接用VI...

    深入解析Oracle.DBA入门进阶与诊断案例

    3.2.8 重置SPFILE中设置的参数 120 3.2.9 判断是否使用了SPFILE 120 3.2.10 SPFILE的备份与恢复 121 3.2.11 Oracle 11g参数文件恢复 127 3.2.12 如何设置Events事件 128 3.2.13 导出SPFILE文件 129 3.3...

    oracle - answer

    (1) CREATE SPFILE FROM PFILE=path (2) CREATE PFILE FROM SPFILE (3) SELECT NAME,VALUE FROM V$PARAMETER (4) ALTET SESSION SET NLS_DATE_FORMAT=’YYYY-MM-DD HH24:MI:SS’ Ch6 (1) ALTER ...

    oracle实验报告

    本数据库(oracle)7个实验报告用于和大家交流,我将这次报告所需要的表和数据材料能够拿出来的都放了在同一个包里的,希望大家能够去看看并且多提点意见,同时我将第一个报告(手工创建数据库库)的记录也放在了包...

    Oracle自学(学习)材料 (共18章 偏理论一点)

    3 管理 Oracle 实例 目标 3-2 初始化参数文件 3-3 PFILE initSID.ora 3-5 PFILE 例子 3-6 SPFILE spfileSID.ora 3-7 创建一个 SPFILE 3-8 SPFILE 例子 3-9 Oracle 管理文件 3-10 Oracle 管理文件例子 3-11 打开一个...

    ORACLE初始化参数文件详细文档

    另外有一个pfile文件(mypfile.ora),里面包括三个参数,其中指定了spfile为前面的spfile文件 processes=100 sessions=100 spfile='myspfile.ora' processes=180 当使用mypfile.ora启动数据库时,会按如下顺序读取...

    oracle 12c 数据库 教程

    可以将 spfile 转换为 pfile 6 注意:scope 的取值有三个:memory、spfile、both 7 一个表空间(tablespace)由一组段组成 8 Tablespaces(表空间) 8 system sysaux temp undo 8 ...

    Oracle面试问题-技术篇

    解答:使用create spfile from pfile 命令. 4.解释data block , extent 和 segment的区别(这里建议用英文术语) 解答:data block是数据库中最小的逻辑存储单元。当数据库的对象需要更多的物理存储空间时,连续...

    Oracle9i的init.ora参数中文说明

    值范围: Oracle8i National Language Support Guide 中指定的任何有效的10 字节字符串。 默认值: BINARY nls_currency: 说明: 为 L 数字格式元素指定用作本地货币符号的字符串。该参数的默认值由 NLS_TERRITORY ...

    ORACLE配置文件优化

    如何配置INIT.ORA,SPFILE,PFILE,index如何优化,数据库优化

    创建物理dataguard

    6、通过pfile创建spfile并用新的spfile重起数据库,datagurard必须使用spfile 5 四、从数据库上的准备工作 6 1、在从数据库端创建主数据的datafiles的拷贝 6 2、为从数据库创建控制文件 6 3、拷贝刚才的主数据库...

    使用RMAN迁移数据库到异机

    迁移数据库的方法有多种,较为常用的则是使用RMAN来迁移。...  4、为目标数据库创建pfile或spfile(使用RMAN还原或复制原pfile到目的服务器)  5、还原控制文件  6、还原数据文件  7、OPEN 数据库

Global site tag (gtag.js) - Google Analytics