设为首页 收藏本站
查看: 676|回复: 0

[经验分享] 关于Oracle 01122,01110,01207的错误和解决

[复制链接]
YunVN网友  发表于 2016-8-13 06:46:45 |阅读模式
  原创于2007年04月12日,2009年10月15日迁移至此。
  

  windows xp,数据库oracle 10.2.0。1
没有备份,基本上是默认安装,好像还不是归档模式

症状:sqlplus只有sysdba用户能进去,其他用户进去一概报:ora-01033:oracle正在初始化或关闭
而且sysdba用户进去之后能执行select sysdate from dual,但是执行select usernam from all_users就
报错了,ORA-01219: 数据库未打开: 仅允许在固定表/视图中查询

关闭数据库
shutdown abort

启动
sqlplus / as sysdba
startup

启动信息如下:
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  293601280 bytes
Fixed Size                  1248624 bytes
Variable Size             121635472 bytes
Database Buffers          167772160 bytes
Redo Buffers                2945024 bytes
数据库装载完毕。
ORA-01122: 数据库文件 1 验证失败
ORA-01110: 数据文件 1:
'F:ORACLEPRODUCT10.2.0DB_1ORADATAORCLDWSYSTEM01.DBF'
ORA-01207: 文件比控制文件更新 - 旧的控制文件
在楼上兄弟们的帮助下终于把数据库恢复,再次感谢上面的兄弟们,和推荐我来这边的兄弟
以下将解决方法共享一下,其实楼上的兄弟们说的基本上都是对的,只是说的还不够详细和具体,因此对我这种菜菜还是有点困难的

ORA-01207:文件比控制文件更新 - 旧的控制文件
根据oracle文档的解释:
Cause: The control file change sequence number in the datafile isgreater than the number in the control file. This implies that thewrong control file is being used. Note that repeatedly causing thiserror can make it stop happening without correcting the real problem.Every attempt to open the database will advance the control file changesequence number until it is great enough.
Action: Use the current control file or do BACKUP CONTROLFILE RECOVERYto make the control file current. Be sure to follow all restrictions ondoing a BACKUP CONTROLFILE RECOVERY.

Solution:
1.        Check alert file,kill monitor process
2.        Startup mount,
3.        “alter database backup control to trace”
4.        Find the trace file,and open it
5.        Startup nomount
6.        recreate controlfile using resetlogs
7.        “recover database using backup controlfile”
8.        “alter database open resetlogs;”
9.        “alter tablespace temp add tempfile '.dbf' reuse;”

其实跟楼上的兄弟们说的差不多,以下再详细步骤:

1.SQL>shutdown abort    如果数据库是打开状态,强行关闭

2.SQL>sqlplus / as sysdba

3.SQL>startup
ORACLE 例程已经启动。

Total System Global Area 293601280 bytes
Fixed Size 1248624 bytes
Variable Size 121635472 bytes
Database Buffers 167772160 bytes
Redo Buffers 2945024 bytes
数据库装载完毕。
ORA-01122: 数据库文件 1 验证失败
ORA-01110: 数据文件 1:
'F:ORACLEPRODUCT10.2.0DB_1ORADATAORCLDWSYSTEM01.DBF'
ORA-01207: 文件比控制文件更新 - 旧的控制文件

4.SQL>alter database backup controlfile to trace as 'f:aa';
数据库已更改。

5.SQL>shutdown immediate 如果数据库是打开状态,则关闭
ORA-01109: 数据库未打开
已经卸载数据库

6.SQL>startup nomount;  
ORACLE 例程已经启动。
Total System Global Area 105979576 bytes
Fixed Size 454328 bytes
Variable Size 79691776 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes

7.Editplus之类的编辑器打开在第四步生成的f:aa文件;
其实在这个文件中的已经告诉你咋样恢复你的数据库了,找到STARTUP NOMOUNT字样,然后下面可以看到类似语句,这个文件有好几个类似的生成控制文件语句,主要针对不懂的环境执行不同的语句,象我的数据库没有做任何备份,也不是在归档模式,就执行这句
CREATE CONTROLFILE REUSE DATABASE "ORCLDW" NORESETLOGS  NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 'F:ORACLEPRODUCT10.2.0DB_1ORADATAORCLDWREDO01.LOG'  SIZE 50M,
GROUP 2 'F:ORACLEPRODUCT10.2.0DB_1ORADATAORCLDWREDO02.LOG'  SIZE 50M,
GROUP 3 'F:ORACLEPRODUCT10.2.0DB_1ORADATAORCLDWREDO03.LOG'  SIZE 50M
DATAFILE
'F:ORACLEPRODUCT10.2.0DB_1ORADATAORCLDWSYSTEM01.DBF',
'F:ORACLEPRODUCT10.2.0DB_1ORADATAORCLDWUNDOTBS01.DBF',
'F:ORACLEPRODUCT10.2.0DB_1ORADATAORCLDWSYSAUX01.DBF',
'F:ORACLEPRODUCT10.2.0DB_1ORADATAORCLDWUSERS01.DBF',
'F:ORACLEPRODUCT10.2.0DB_1ORADATAORCLDWEXAMPLE01.DBF'
CHARACTER SET ZHS16GBK
;
执行上面这段语句,这个语句重建控制文件,然后你可以看着f:aa文件完成下面的恢复工作了,

8.SQL>RECOVER DATABASE        (恢复指定表空间、数据文件或整个数据库)

9.SQL>ALTER DATABASE OPEN    打开数据库


恭喜你,你的数据库出院了,itpub真是妙手回春阿  

如果不行,那只能说明一个问题,你实在太背了, 赶紧发帖求医:)

(注意:
数据库的启动(STARTUP)
启动一个数据库需要三个步骤:

   1、 创建一个Oracle实例(非安装阶段)

   2、 由实例安装数据库(安装阶段)

   3、 打开数据库(打开阶段)

在Startup命令中,可以通过不同的选项来控制数据库的不同启动步骤。
1、STARTUP NOMOUNT
NONOUNT选项仅仅创建一个Oracle实例。读取init.ora初始化参数文件、启动后台进程、初始化系统全局区(SGA)。Init.ora文件定义了实例的配置,包括内存结构的大小和启动后台进程的数量和类型等。实例名根据Oracle_SID设置,不一定要与打开的数据库名称相同。当实例打开后,系统将显示一个SGA内存结构和大小的列表
2.STARTUP MOUNT
该命令创建实例并且安装数据库,但没有打开数据库。Oracle系统读取控制文件中关于数据文件和重作日志文件的内容,但并不打开该文件。这种打开方式常在数据库维护操作中使用,如对数据文件的更名、改变重作日志以及打开归档方式等。在这种打开方式下,除了可以看到SGA系统列表以外,系统还会给出"数据库装载完毕"的提示。
3.STARTUP
该命令完成创建实例、安装实例和打开数据库的所有三个步骤。此时数据库使数据文件和重作日志文件在线,通常还会请求一个或者是多个回滚段。这时系统除了可以看到前面StartupMount方式下的所有提示外,还会给出一个"数据库已经打开"的提示。此时,数据库系统处于正常工作状态,可以接受用户请求。

  如果采用STARTUP NOMOUNT或者是STARTUP MOUNT的数据库打开命令方式,必须采用ALTERDATABASE命令来执行打开数据库的操作。例如,如果你以STARTUPNOMOUNT方式打开数据库,也就是说实例已经创建,但是数据库没有安装和打开。这是必须运行下面的两条命令,数据库才能正确启动。

ALTER DATABASE MOUNT;
ALTER DATABASE OPEN;

  而如果以STARTUP MOUNT方式启动数据库,只需要运行下面一条命令即可以打开数据库:

    ALTER DATABASE OPEN.

4、其他打开方式

  除了前面介绍的三种数据库打开方式选项外,还有另外其他的一些选项。

  (1) STARTUP RESTRICT

  这种方式下,数据库将被成功打开,但仅仅允许一些特权用户(具有DBA角色的用户)才可以使用数据库。这种方式常用来对数据库进行维护,如数据的导入/导出操作时不希望有其他用户连接到数据库操作数据。

  (2) STARTUP FORCE

  该命令其实是强行关闭数据库(shutdown abort)和启动数据库(startup)两条命令的一个综合。该命令仅在关闭数据库遇到问题不能关闭数据库时采用。

  (3) ALTER DATABASE OPEN READ ONLY;

  该命令在创建实例以及安装数据库后,以只读方式打开数据库。对于那些仅仅提供查询功能的产品数据库可以采用这种方式打开。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-256962-1-1.html 上篇帖子: Oracle数据恢复、数据库恢复、灾难恢复专题 下篇帖子: 如何让ORACLE索引不起作用(不可见)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表