免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3577 | 回复: 4
打印 上一主题 下一主题

关于oracle 10中pfile 和spfile 的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-10-29 19:01 |只看该作者 |倒序浏览
我总感觉很多人翻译oracle的时候总会出错,与事实不符。
oracle 10g在启动时首先寻找spfile,如果找不到的话就去找pfile,但事实上我把spfile删除以后,数据库根本就无法启动!
但是我把pfile删除了启动数据库照样可以启动。
如下所示:


SQL> conn sys/admin as sysdba;
已连接。
SQL> show parameter spfile;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string D:\ORACLE10.2.0\DBS\SPFILEORCL
  .ORA
SQL> show parameter pfile;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string D:\ORACLE10.2.0\DBS\SPFILEORCL
  .ORA
SQL> create spfile from pfile;

文件已创建。 //这时候明明是以spfile启动,为什么还能从pfile创建spfile???
SQL> create pfile from spfile;

文件已创建。

您看,通过show parameter spfile可以看出当前使用的是spfile,但是执行命令create spfile from pfile 为什么会成功?



接下来:我关闭数据库删除spfile后执行以下命令:

SQL> conn sys/admin as sysdba;
已连接到空闲例程。
SQL> startup;
ORA-01565: error in identifying file 'D:\oracle10.2.0/dbs/spfileorcl.ora'
ORA-27041: unable to open file
OSD-04002: N^7(4r?*ND<~
O/S-Error: (OS 2) O5M3UR2;5=V86(5DND<~!#

报错!不是说了吗?如果找不到spfile他会找pfile的,但是他为什么报错????

恢复spfile后,启动正常。如下:

SQL> startup;
ORACLE 例程已经启动。

Total System Global Area 595591168 bytes
Fixed Size 1250332 bytes
Variable Size 155192292 bytes
Database Buffers 432013312 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。
数据库已经打开。
SQL> show parameter spfile;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string D:\ORACLE10.2.0\DATABASE\SPFIL
  EORCL.ORA


接下来,我删除ininorcl.ora,然后启动数据库:

SQL> conn sys/admin as sysdba;
已连接。
SQL> create spfile from pfile;
create spfile from pfile
*
ERROR 位于第 1 行:
ORA-32002: 无法创建已由实例使用的 SPFILE


SQL> show parameter spfile;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string D:\ORACLE10.2.0\DATABASE\SPFIL
  EORCL.ORA
SQL> show parameter pfile;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string D:\ORACLE10.2.0\DATABASE\SPFIL
  EORCL.ORA
SQL>

你看现在为什么用create spfile from pfile 就会报错??还有,这时的spfile为什么跑到database目录下了??
谁能告诉我???
我真的搞不清为什么?书上的为什么和我的实验不一样呢????

论坛徽章:
0
2 [报告]
发表于 2010-10-31 12:06 |只看该作者
说明你的问题:如果有spfile文件,Oracle使用该文件启动,如果没有,你想使用pfile启动数据库,你需要写明pfile的详细路径。启动后在使用pfile生成spfile文件,再使用spfile启动。当然你不觉得麻烦也可以每次都使用pfile文件启动。但是如果使用EM管理初始化参数文件,使用spfile更为方便一些。

你看的文档也许不是Oracle标准文档。

下面是一段说明:
SPFILE是Oracle 9i之后使用的新特性,它的优点是,PFILE不能联机修改,只有关闭数据库后才可以修改,而SPFILE可以联机修改。
PFILE和SPFILE之间的关系是,它们都是数据库启动时必须的参数文件,SPFILE时服务器端的参数文件。在开始创建数据库时,无论时手工建库(create database)还是采用DBCA(Database Configuration Assistant,数据库配置助手)创建数据库,都必须使用PFILE参数文件。一旦数据库创建完毕,必须通过PFILE文件来创建SPFILE文件。这样,Oracle才能直接使用SPFILE自动地、默认地(使用startup)启动数据库,而不必指定参数文件的具体位置(如果没有SPFILE文件,需要使用语句STARTUP PFILE=’pfile_name’语句)。

论坛徽章:
0
3 [报告]
发表于 2010-10-31 12:14 |只看该作者
本帖最后由 tacsoft 于 2010-10-31 12:18 编辑

这是Oracle 10g的标准文档有关启动的内容,我估计很多人翻译的不是Oracle标准文档,抛开文件的名字,你说的启动过程更像Linux启动时使用.bash_profile文件和profile的内容。哈哈
3 Starting Up and Shutting Down
Understanding Initialization Parameter Files
To start an instance, the database must read instance configuration parameters (the initialization parameters) from either a server parameter file (SPFILE) or a text initialization parameter file.

When you issue the SQL*Plus STARTUP command, the database attempts to read the initialization parameters from an SPFILE in a platform-specific default location. If it finds no SPFILE, it searches for a text initialization parameter file.

Note:

For UNIX or Linux, the platform-specific default location (directory) for the SPFILE and text initialization parameter file is:
$ORACLE_HOME/dbs

For Windows NT and Windows 2000 the location is:

%ORACLE_HOME%\database
In the platform-specific default location, Oracle Database locates your initialization parameter file by examining filenames in the following order:

1.spfile$ORACLE_SID.ora

2.spfile.ora

3.init$ORACLE_SID.ora

The first two filenames represent SPFILEs and the third represents a text initialization parameter file.

Note:

The spfile.ora file is included in this search path because in a Real Application Clusters environment one server parameter file is used to store the initialization parameter settings for all instances. There is no instance-specific location for storing a server parameter file.
For more information about the server parameter file for a Real Application Clusters environment, see Oracle Database Oracle Clusterware and Oracle Real Application Clusters Administration and Deployment Guide.

If you (or the Database Configuration Assistant) created a server parameter file, but you want to override it with a text initialization parameter file, you can specify the PFILE clause of the STARTUP command to identify the initialization parameter file.

STARTUP PFILE = /u01/oracle/dbs/init.ora
Starting Up with a Non-Default Server Parameter File

A non-default server parameter file (SPFILE) is an SPFILE that is in a location other than the default location. It is not usually necessary to start an instance with a non-default SPFILE. However, should such a need arise, you can use the PFILE clause to start an instance with a non-default server parameter file as follows:

1.Create a one-line text initialization parameter file that contains only the SPFILE parameter. The value of the parameter is the non-default server parameter file location.

For example, create a text initialization parameter file /u01/oracle/dbs/spf_init.ora that contains only the following parameter:

SPFILE = /u01/oracle/dbs/test_spfile.ora
Note:

You cannot use the IFILE initialization parameter within a text initialization parameter file to point to a server parameter file. In this context, you must use the SPFILE initialization parameter.

2.Start up the instance pointing to this initialization parameter file.

STARTUP PFILE = /u01/oracle/dbs/spf_init.ora

The SPFILE must reside on the machine running the database server. Therefore, the preceding method also provides a means for a client machine to start a database that uses an SPFILE. It also eliminates the need for a client machine to maintain a client-side initialization parameter file. When the client machine reads the initialization parameter file containing the SPFILE parameter, it passes the value to the server where the specified SPFILE is read.

论坛徽章:
3
CU大牛徽章
日期:2013-09-18 15:16:55CU大牛徽章
日期:2013-09-18 15:18:22CU大牛徽章
日期:2013-09-18 15:18:43
4 [报告]
发表于 2010-11-01 08:36 |只看该作者
楼主没有说清除环境

至于先spfile在pfile,这是不争的事实

可能是你的环境不符合而导致而成,你可以说出是那本书来

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
5 [报告]
发表于 2010-11-01 08:51 |只看该作者
可以在startup时通过pfile参数指定使用pfile来启动。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP