在Oracle 11g 以前,我们可以从spfile来创建pfile,或者利用pfile来创建spfile。 在Oracle 11g中,在管理spfile方面得到增强,可以从memory来创建pfile和spfile。
语法如下:
创建 PFILE [= 'pfile_name' ]
FROM { { SPFILE [= 'spfile_name'] } |内存 } ;
创建 SPFILE [= 'spfile_name' ]
FROM { { PFILE [= 'pfile_name' ] } |内存 } ;
示例:
[15:43 oracle@dave /u01/backup]$ora和
SQL*Plus: 发布 11.2.0.3.0 生产于 2012 年 10 月 12 日星期五 15:43:22
版权所有 (c) 1982、2011、甲骨文。保留所有权利。
连接到:
Oracle 数据库 11g 企业版发布 11.2.0.3.0 - 64 位生产
使用分区、OLAP、数据挖掘和实际应用程序测试选项
SQL> create pfile from memory;
File created.
SQL> create spfile from memory;
create spfile from memory
*
ERROR at line 1:
ORA-32002: cannot createSPFILE already being used by the instance
--对于open 状态的实例,不能从memory创建spfile。
SQL> startup mount force;
ORACLE 实例已启动。
系统全局总区域 730714112 字节
固定大小2231952字节
可变大小285213040字节
数据库缓冲区 419430400 字节
重做缓冲区23838720字节
数据库已装入。
SQL>从 v$database 中选择open_mode;
OPEN_MODE
--------------------
安装
SQL>从内存创建 spfile;
从内存创建 spfile
*
第 1 行错误:
ORA-32002:无法创建实例已在使用的SPFILE
--mount 状态也不可以使用
SQL>启动 nomount force;
ORACLE 实例已启动。
系统全局总区域 730714112 字节
固定大小2231952字节
可变大小285213040字节
数据库缓冲区 419430400 字节
重做缓冲区23838720字节
SQL>从内存创建 spfile;
从内存创建 spfile
*
第 1 行错误:
ORA-32002:无法创建实例已在使用的SPFILE
--nomount 状态也不可以
SQL> 关机中止;
ORACLE 实例已关闭。
SQL>从内存创建 spfile;
create spfile from memory
*
ERROR at line 1:
ORA-00922: missing or invalid option
--数据库关闭后,语法不可以用。
我们用pfile启动数据库,在来创建spfile:
SQL> startuppfile='/u01/app/oracle/product/11.2.0/db_1/dbs/initdave.ora'
ORACLE instance started.
Total System Global Area 730714112 bytes
Fixed Size 2231952 bytes
Variable Size 285213040 bytes
Database Buffers 419430400 bytes
Redo Buffers 23838720 bytes
Database mounted.
Database opened.
SQL> create spfile from memory;
File created.
--这次创建成功。
注意:
(1)如果是RAC 环境,那么生成的脚本会包含所有节点的参数。
(2)执行这个命令需要使用sysdba或sysoper角色来执行。