加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

oracle11g pfile 与spfile

(2013-05-31 00:11:02)
标签:

oracle

pfile

spfile

it

分类: IT

今天,改动了oracle数据库实例的启动配置文件,导致数据库不能启动,出现各种错误,幸好在网上搜到了大量的解决方案,虽然不全符合,但综合起来最终解决问题。

 

首先描述一下问题:

我误改了 D:\oracle\app\Administrator\product\11.2.0\dbhome_1\database\下的SPFILEMYORCL.ORA文件。

“D:\oracle\app\Administrator\product\11.2.0\dbhome_1”是我Oracle的安装路径,SPFILEMYORCL.ORA是我的数据库实例MYORCL的启动文件,是个二进制的文件,我用editplus改了里面的内容,结果导致数据库无法连接。通过检查D:\oracle\app\Administrator\product\11.2.0\dbhome_1\database\下的oradim.log文件(应该是启动数据库的日志文件记录各种启动的信息包括出错信息)得出错误信息为:

“Thu May 30 01:34:54 2013
D:\oracle\app\Administrator\product\11.2.0\dbhome_1\bin\oradim.exe -startup -sid myorcl -usrpwd *  -log oradim.log -nocheck 0
Thu May 30 01:34:54 2013
ORA-01078: failure in processing system parameters
LRM-00109: ???????????????? 'D:\ORACLE\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\DATABASE\SPFILEMYORCL.ORA'”

 

解决方法:

我觉得问题肯定在SPFILEMYORCL.ORA这个文件上,于是又将它用editplus改回原来的样子,但是还是不行,我估计我应该是因为强行改动二进制文件的内容破坏了其结构,所以必须得换一个新的SPFILEMYORCL.ORA文件。

第一种方法:

利用pfile生成spfile但是oracle11g 不知道pfile在哪(最后才发现是在"D:\oracle\app\Administrator\admin\myorcl\pfile"目录下的init.ora.322013175024),我就新建一个数据库利用新数据库的spfile生成pfile,再修改里面的参数,最后由新的pfile生成目标spfile。新建数据库mydb生成“D:\oracle\app\Administrator\product\11.2.0\dbhome_1\database\SPFILEMYDB.ORA”,设置默认数据库位mydb,用sqlplus语句进入mydb,生成mydb的pfile,语句为:

SQL> CREATE pfile from spfile='D:\oracle\app\Administrator\product\11.2.0\dbhome_1\database\SPFILEMYDB.ORA';

其中spfile='D:\oracle\app\Administrator\product\11.2.0\dbhome
_1\database\SPFILEMYDB.ORA'表示spfile文件是位于D:\oracle\app\Administrator\product\11.2.0\dbhome_1\database\下的SPFILEMYDB.ORA;此时生成INITmydb.ORA文件,同样在同一目录下。INITmydb.ORA就是所谓的pfile,这个不是二进制文件,可以用editplus打开,如下所示:

mydb.__db_cache_size=373293056
mydb.__java_pool_size=4194304
mydb.__large_pool_size=4194304
mydb.__oracle_base='D:\oracle\app\Administrator'#ORACLE_BASE set from environment
mydb.__pga_aggregate_target=398458880
mydb.__sga_target=591396864
mydb.__shared_io_pool_size=0
mydb.__shared_pool_size=201326592
mydb.__streams_pool_size=0
*.audit_file_dest='D:\oracle\app\Administrator\admin\mydb\adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='D:\oracle\app\Administrator\oradata\mydb\control01.ctl','D:\oracle\app\Administrator\oradata\mydb\control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='mydb'
*.diagnostic_dest='D:\oracle\app\Administrator'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=mydbXDB)'
*.local_listener='LISTENER_MYDB'
*.memory_target=988807168
*.nls_language='SIMPLIFIED CHINESE'
*.nls_territory='CHINA'
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'
将其中的mydb全部替换成myorcl再保存为INITmyorcl.ORA,这样目标pfile就生成了。接下来就是生成myorcl的spfile了,语句为:

SQL> CREATE spfile from pfile='D:\oracle\app\Administrator\product\11.2.0\dbhome_1\database\initmyorcl.ora';生成了SPFILEMYORCL.ORA文件,重启myorcl数据库,这时仍然不成功,但错误已经不是

“Thu May 30 01:34:54 2013
D:\oracle\app\Administrator\product\11.2.0\dbhome_1\bin\oradim.exe -startup -sid myorcl -usrpwd * -log oradim.log -nocheck 0
Thu May 30 01:34:54 2013
ORA-01078: failure in processing system parameters
LRM-00109: ???????????????? 'D:\ORACLE\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\DATABASE\SPFILEMYORCL.ORA'”

说明文件可用,问题就快解决了,这时我怀疑是因为pfile是copy mydb的可能会有些数值不合适所以-----

用第二种方法:将pfile文件换成开始说的D:\oracle\app\Administrator\admin\myorcl\pfile"目录下的init.ora.322013175024,再:

 SQL> CREATE spfile from pfile='D:\oracle\app\Administrator\admin\myorcl\pfile\init.ora.322013175024';

重启myorcl数据库,可以连接。

好了,到此结束,第一次写,肯定有很多表述不清的地方,望见谅,如有疑问可留言。http://www/uc/myshow/blog/misc/gif/E___6726EN00SIGG.gifpfile 与spfile" TITLE="oracle11g pfile 与spfile" />

 

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有