刚才在学习ORACLE的过程中做了下实验,结果不小心误操作导致数据库打不开了。我大概说一下情况吧以下是我记得笔记:
添加control file的方法
① 通过SPFILE
SQL>alter system set control_files='D:\ORACLE\PRODUCT\10.2.\ORADATA\ORCL\CONTROL01.CTL','D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL','D:\ORACLE\PRODUCT\10.2.\ORADATA\ORCL\CONTROL03.CTL','D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL04.CTL' SCOPE=SPFILE;
再去响应的目录D:\ORACLE\PRODUCT\10.2.\ORADATA\ORCL中复制出一份控制文件CONTROL04.CTL。此时在SQL*PLUS 中shutdown,再startup,通过命令show parameter control则可以看到修改的结果。
② 通过PFILE
直接用NOTEPAD打开PFILE进行相应的修改,再去相应的目录D:\ORACLE\PRODUCT\10.2.\ORADATA\ORCL中复制出一份控制文件CONTROL04.CTL。完了在SQL*PLUS 中shutdown,再通过startup pfile=PFILE的路径启动ORACLE,这时show parameter control则可以看到修改的结果。
我先通过方法①创建了CONTROL04.CTL,为了保持PFILE和SPFILE的一致,我使用了命令create pfile from spfile。此时还正常。
接下来我用方法②创建了control05.ctl,但我并没有使用命令alter system set control_files='D:\ORACLE\PRODUCT\10.2.\ORADATA\ORCL\CONTROL01.CTL','D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL','D:\ORACLE\PRODUCT\10.2.\ORADATA\ORCL\CONTROL03.CTL','D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL04.CTL','D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL05.CTL' SCOPE=SPFILE; 而是直接使用了create spfile from pfile
此时shutdown,再startup就启动不起来了。
现在不管从SQL*PLUS还是命令行,用任何用户都登陆不进去,提示错误ORA-01033请问有什么解决办法没有,谢谢了!
添加control file的方法
① 通过SPFILE
SQL>alter system set control_files='D:\ORACLE\PRODUCT\10.2.\ORADATA\ORCL\CONTROL01.CTL','D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL','D:\ORACLE\PRODUCT\10.2.\ORADATA\ORCL\CONTROL03.CTL','D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL04.CTL' SCOPE=SPFILE;
再去响应的目录D:\ORACLE\PRODUCT\10.2.\ORADATA\ORCL中复制出一份控制文件CONTROL04.CTL。此时在SQL*PLUS 中shutdown,再startup,通过命令show parameter control则可以看到修改的结果。
② 通过PFILE
直接用NOTEPAD打开PFILE进行相应的修改,再去相应的目录D:\ORACLE\PRODUCT\10.2.\ORADATA\ORCL中复制出一份控制文件CONTROL04.CTL。完了在SQL*PLUS 中shutdown,再通过startup pfile=PFILE的路径启动ORACLE,这时show parameter control则可以看到修改的结果。
我先通过方法①创建了CONTROL04.CTL,为了保持PFILE和SPFILE的一致,我使用了命令create pfile from spfile。此时还正常。
接下来我用方法②创建了control05.ctl,但我并没有使用命令alter system set control_files='D:\ORACLE\PRODUCT\10.2.\ORADATA\ORCL\CONTROL01.CTL','D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL','D:\ORACLE\PRODUCT\10.2.\ORADATA\ORCL\CONTROL03.CTL','D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL04.CTL','D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL05.CTL' SCOPE=SPFILE; 而是直接使用了create spfile from pfile
此时shutdown,再startup就启动不起来了。
现在不管从SQL*PLUS还是命令行,用任何用户都登陆不进去,提示错误ORA-01033请问有什么解决办法没有,谢谢了!
解决方案 »
- OUT-10133:登台区无效,此登台区中没有可用于安装的windows NT,windows2000的顶级组件
- oracle 在toad中怎么执行多条DDL语句
- 求助,power designer反向工程导出E-R图问题
- oracle通过透明网关访问sybase时,为什么不能增,删,改呢,只能select
- ORA-01994: GRANT failed: password file missing or disabled
- 函数里面创建临时表报错问题,请各们大侠们帮小妹看看,谢谢!
- 请教,转换结果集 的sql。
- 简单问题,抬手得分!!!!!
- 帮我写个求最大值的查询语句?
- 急:.net连接oracle9的问题
- plsql写入注册表问题
- 小女有难~~~~(>_<)~~~~ 大量数据查询问题
可在cmd
sqlplus /nolog
conn / as sysdba
就提示权限不足我在网上查了下解决办法
在SQLNET.ORA里加上SQLNET.AUTHENTICATION_SERVICES = (NTS)
在initorcl.ora里的那个remote_login_passwordfile='EXCLUSIVE'可还是不行
用create pfile='指定一个pfile.ora路径' from spfile;然后用文本编译器打开上一步指定的pfile.ora文件,找到control_files这行,手工把你的control05.ctl去掉。关闭你的oracle的服务,然后启动服务然后用startup pfile='第一步指定的pfile.ora路径'启动实例,如果提示数据已打开的错误,就先shutdown immediate关闭,然后再用该命令打开如果能够成功打开的话。用create spfile from pfile='第一步指定的pfile.ora路径'保存spfile。
create pfile='D:\pfile.ora' from spfile
*
µÚ 1 ÐгöÏÖ´íÎó:
ORA-27046: 文件大小不是逻辑块大小的倍数
我之前创建都可以的,现在报这个错
分开来,看看哪一步有错误.
你是不是直接改的spfile文件呀,感觉好像是不是spfile文件已经坏掉了。你找一个pfile的备份,或者是手工写一个pfile,然后直接从pfile启动试试。
我刚才去别人那拷来了他的SPFILE和PFILE想覆盖我的试试,我先把我的复制了一份出去,把新拷过来的SPFILE和PFILE拷进D:\oracle\product\10.2.0\db_1\database,重启服务。在连接数据库时提示错误ora-27101 shared memory realm does not exist。
我想那算了吧,等公司的DBA来了我让他帮我看看。
可我起码得恢复现场嘛,我就把他的SPFILE和PFILE删掉,重新把我的SPFILE和PFILE复制回去。
接下来在打开FORMS的时候提示连接,我就试试,结果突然发现可以连接上了可现在执行create pfile from spfile或者create spfile from pfile就会出现
ORA-27046: 文件大小不是逻辑块大小的倍数
我用NOTEPAD打开过SPFILE并修改过其中内容,可我后来又改回去了,不过估计还是造成损坏了。
那二进制文件可以用ULTRAEDIT编辑吗?
create spfile='D:\spfile.ora' from pfile;
是可以成功的
只是create pfile='D:\pfile.ora' from spfile;会报错估计正如楼上所说的SPFILE坏掉了,可我现在数据库正处于打开状态。
我该如何修复一下损坏的SPFILE呢?
用create spfile='D:\spfile.ora' from pfile;的结果去覆盖损坏的SPFILE?
spfile也是一种方法。手工写一个pfile然后和方法一,也是一种简易方法。
create spfile from pfile='可以成功启动的pfile文件路径';你可以看看这个文章
http://www.inthirties.com/?p=438
我使用
create spfile from pfile='可以成功启动的pfile文件路径';
重新创建了一个SPFILE放置到D:\oracle\product\10.2.0\db_1\database目录下。
并且把原先的SPFILE删掉,数据库可以正常启动了。顺带问一下,有没有什么好的工具可以编辑这些二进制文件呢?
可以用ULTRAEDIT编辑吗?
你在sqlplus中就可以修改spfile了.
1. create pfile = 'XXXX.ora' from spfile
2. vi xxxx.ora
3. create spfile from pfile = 'XXXX.ora'
重启数据库生效
ALTER SYSTEM SET parameter = value [ SCOPE= { MEMORY | SPFILE | BOTH } ]
来修改SPFILE中的相关参数?呵呵,可能平常习惯于直接打开文件修改内容了,所以总想用个什么软件来把SPFILE打开直接修改。