设为首页 加入收藏

TOP

Oracle元数据重构实验(一)
2015-11-10 12:16:15 来源: 作者: 【 】 浏览:2
Tags:Oracle 数据 重构 实验

大部分数据字典是在sys和system用户schema下,普通用户只是通过同义词调用和访问对象,删除破坏的风险的是比较低的。在实践工作中,主要有两种情况会破坏元数据:管理员帐号误操作和系统内部运行数据损坏。无论是哪一种情况,元数据损坏的故障通常是很麻烦的,越是基础的元数据损坏,故障现象就越是紧急复杂和多变。


数据库组件之间,存在严格的依赖关系。一个基础元数据损坏,可能导致若干依赖的组件不能成功编译使用。如果是一些单纯的组件,如XDB、Data Pump的损坏,可以调用特定的创建脚本重建对象。但是如果是一些基础的组件错误,连带骨牌效应,就需要重建数据字典了。


重建数据字典是需要终止暂停数据库服务的,而且存在一定的风险,所以一定要慎重行事,选择适当的时间窗口进行操作。本篇主要介绍11gR2环境下如何进行元数据恢复。


1、环境说明


笔者使用Oracle 11gR2进行测试,版本编号为11.2.0.4。


[oracle@localhost ~]$ sqlplus /nolog


SQL*Plus: Release 11.2.0.4.0 Production on Sun Sep 27 11:18:12 2015


Copyright (c) 1982, 2013, Oracle.? All rights reserved.


在进行回复之前,要继续完善的备份操作,确保一旦操作失败,起码可以恢复到操作之前的情况,不会让问题变得更糟。


备份手段很多,笔者使用冷备份手段。注意:如果我们可以实现shutdown immediate完全关闭,只需要关闭后备份数据文件、控制文件就可以了。


首先自动生成备份语句。


SQL> select 'cp '||name||' /backup' from v$controlfile;


'CP'||NAME||'/BACKUP'


--------------------------------------------------------------------------------


cp /u01/app/oradata/SICSDB/controlfile/o1_mf_b0m00wf1_.ctl /backup


cp /u01/app/fast_recovery_area/SICSDB/controlfile/o1_mf_b0m00wfq_.ctl /backup


SQL> select 'cp '||file_name||' /backup' from dba_data_files;


'CP'||FILE_NAME||'/BACKUP'


--------------------------------------------------------------------------------


cp /u01/app/oradata/SICSDB/datafile/o1_mf_users_b0lzzg2m_.dbf /backup


(篇幅原因,有省略……)


cp /u01/app/oradata/SICSDB/datafile/o1_mf_uattestt_byr5560d_.dbf /backup


16 rows selected


关闭数据库,最好是完全关闭。


[oracle@localhost ~]$ sqlplus /nolog


SQL*Plus: Release 11.2.0.4.0 Production on Sun Sep 27 11:08:58 2015


Copyright (c) 1982, 2013, Oracle.? All rights reserved.


SQL> conn / as sysdba


Connected.


SQL> shutdown immediate;? ?


Database closed.


Database dismounted.


ORACLE instance shut down.


在操作系统层面执行语句。


[oracle@localhost ~]$ cp /u01/app/oradata/SICSDB/datafile/o1_mf_users_b0lzzg2m_.dbf /backup


(篇幅原因,有省略……)


?[oracle@localhost ~]$ cd /backup/


[oracle@localhost backup]$ ls -l


total 33586456


-rw-r-----. 1 oracle oinstall? ? 9748480 Sep 27 11:09 o1_mf_b0m00wf1_.ctl


-rw-r-----. 1 oracle oinstall? ? 9748480 Sep 27 11:10 o1_mf_b0m00wfq_.ctl


(篇幅原因,有省略……)


-rw-r-----. 1 oracle oinstall? 406331392 Sep 27 11:10 o1_mf_users_b0lzzg2m_.dbf


完成了备份,就可以开始进行修复。


2、修复元数据


首先启动数据库,进入upgrade模式。


[oracle@localhost ~]$ sqlplus /nolog


SQL*Plus: Release 11.2.0.4.0 Production on Sun Sep 27 11:18:12 2015


Copyright (c) 1982, 2013, Oracle.? All rights reserved.


SQL> conn / as sysdba


Connected to an idle instance.


SQL> startup upgrade


ORACLE instance started.


Total System Global Area 5344731136 bytes


Fixed Size? ? ? ? ? ? ? ? ? 2262656 bytes


Variable Size? ? ? ? ? ? 1207961984 bytes


Database Buffers? ? ? ? 4127195136 bytes


Redo Buffers? ? ? ? ? ? ? ? 7311360 bytes


Database mounted.


Database opened.


系列执行脚本一共有三个,分别进行不同的数据创建。执行脚本一定要在Server端进行,确保版本的一致性。首先执行catalog.sql脚本。


SQL> spool test.log


SQL> @?/rdbms/admin/catalog.sql


Grant succeeded.


PL/SQL procedure successfully completed.


TIMESTAMP


--------------------------------------------------------------------------------


COMP_TIMESTAMP CATALOG? ? 2015-09-27 11:20:34


第二步执行catproc.sql脚本。


SQL> @?/rdbms/admin/catproc.sql


PL/SQL procedure successfully completed.


SQL>?


SQL> SELECT dbms_registry_sys.time_stamp('CATPROC') AS timestamp FROM DUAL;


TIMESTAMP


--------------------------------------------------------------------------------


COMP_TIMESTAMP CATPROC? ? 2015-09-27 11:29:12


1 row selecte

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇CentOS7下MariaDB和phpMyAdmin安.. 下一篇由Oracle Bug引起的AWR Snapshot..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: