电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

Oracle物理结构故障的处理方法

16页
  • 卖家[上传人]:luobi****88888
  • 文档编号:133229483
  • 上传时间:2020-05-25
  • 文档格式:DOC
  • 文档大小:53.50KB
  • / 16 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、Oracle快速删除重复的记录做项目的时候,一位同事导数据的时候,不小心把一个表中的数据全都搞重了,也就是说,这个表里所有的记录都有一条重复的。这个表的数据是千万级的,而且是生产系统。也就是说,不能把所有的记录都删除,而且必须快速的把重复记录删掉。对此,总结了一下删除重复记录的方法,以及每种方法的优缺点。为了陈诉方便,假设表名为Tbl,表中有三列col1,col2,col3,其中col1,col2是主键,并且,col1,col2上加了索引。1、通过创建临时表可以把数据先导入到一个临时表中,然后删除原表的数据,再把数据导回原表,SQL语句如下:create table tbl_tmp (select distinct * from tbl);truncate table tbl;/清空表记录insert into tbl select * from tbl_tmp;/将临时表中的数据插回来。这种方法可以实现需求,但是很明显,对于一个千万级记录的表,这种方法很慢,在生产系统中,这会给系统带来很大的开销,不可行。2、利用rowid在Oracle中,每一条记录都有一个rowid,rowid在整

      2、个数据库中是唯一的,rowid确定了每条记录是Oracle中的哪一个数据文件、块、行上。在重复的记录中,可能所有列的内容都相同,但rowid不会相同。SQL语句如下:delete from tbl where rowid in (select a.rowid from tbl a, tbl b where a.rowidb.rowid and a.col1=b.col1 and a.col2 = b.col2)如果已经知道每条记录只有一条重复的,这个sql语句适用。但是如果每条记录的重复记录有N条,这个N是未知的,就要考虑适用下面这种方法了。3、利用max或min函数这里也要使用rowid,与上面不同的是结合max或min函数来实现。SQL语句如下delete from tbl awhere rowid not in (select max(b.rowid) from tbl b where a.col1=b.col1 and a.col2 = b.col2);/这里max使用min也可以或者用下面的语句delete from tbl awhere rowid(select max(b

      3、.rowid) from tbl b where a.col1=b.col1 and a.col2 = b.col2);/这里如果把max换成min的话,前面的where子句中需要把跟上面的方法思路基本是一样的,不过使用了group by,减少了显性的比较条件,提高效率。SQL语句如下:deletefrom tbl where rowid not in (select max(rowid) from tbl tgroup by t.col1, t.col2);delete from tbl where (col1, col2) in (select col1,col2 from tblgroup bycol1,col2havingcount(*) 1)and rowidnotin(selectmin(rowid)fromtblgroup bycol1,col2havingcount(*) 1)还有一种方法,对于表中有重复记录的记录比较少的,并且有索引的情况,比较适用。假定col1,col2上有索引,并且tbl表中有重复记录的记录比较少,SQL语句如下4、利用group by,提高效率O

      4、racle物理结构故障的处理方法:Oracle物理结构故障是指构成数据库的各个物理文件损坏而导致的各种数据库故障。这些故障可能是由于硬件故障造成的,也可能是人为误操作而引起。所以我们首先要判断问题的起因,如果是硬件故障则首先要解决硬件问题。在无硬件问题的前提下我们才能按照下面的处理方发来进一步处理。控制文件损坏:控制文件记录了关于Oracle的重要配置信息,如数据库名、字符集名字、各个数据文件、日志文件的位置等等信息。控制文件的损坏,会导致数据库异常关闭。一旦缺少控制文件,数据库也无法启动,这是一种比较严重的错误。可以通过查询数据库的日志文件来定位损坏了的控制文件。日志文件位于$ORACLE_BASE/admin/bdump/alert_ORCL.ora.损坏单个控制文件:1. 确保数据库已经关闭,如果没有用下面的命令来关闭数据库:svrmgrlshutdown immediate;2. 查看初始化文件$ORACLE_BASE/admin/pfile/initORCL.ora,确定所有控制文件的路径。3. 用操作系统命令将其它正确的控制文件覆盖错误的控制文件。4. 用下面的命令重新启动

      5、数据库svrmgrlstartup;5. 用适当的方法进行数据库全备份。损坏所有的控制文件:1. 确保数据库已经关闭,如果没有用下面的命令来关闭数据库:svrmgrlshutdown immediate;2. 从相应的备份结果集中恢复最近的控制文件。对于没有采用带库备份的点可以直接从磁带上将最近的控制文件备份恢复到相应目录;对于采用带库备份的点用相应的rman脚本来恢复最近的控制文件。3. 用下面的命令来创建产生数据库控制文件的脚本:svrmgrlstartup mount;svrmgrlalter database backup controlfile to trace noresetlogs;4. 修改第三步产生的trace文件,将其中关于创建控制文件的一部分语句拷贝出来并做些修改,使得它能够体现最新的数据库结构。假设产生的sql文件名字为createcontrol.sql.注意:Trace文件的具体路径可以在执行完第3)步操作后查看$ORACLE_BASE/admin/bdump/alert_ORCL.ora文件来确定。5. 用下面命令重新创建控制文件:svrmgrlshutdo

      6、wn abort;svrmgrlstartup nomount;svrmgrlcreatecontrol.sql;6. 用适当的方法进行数据库全备份。重做日志文件损坏:数据库的所有增、删、改都会记录入重做日志。如果当前激活的重做日志文件损坏,会导致数据库异常关闭。非激活的重做日志最终也会因为日志切换变为激活的重做日志,所以损坏的非激活的重做日志最终也会导致数据库的异常终止。在ipas/mSwitch中每组重做日志只有一个成员,所以在下面的分析中只考虑重做日志组损坏的情况,而不考虑单个重做日志成员损坏的情况。确定损坏的重做日志的位置及其状态:1. 如果数据库处于可用状态:select * from v$logfile;svrmgrlselect * from v$log;2. 如果数据库处于已经异常终止:svrmlgrstartup mount;svrmgrlselect * from v$logfile;svrmgrlselect * from v$log;其中,logfile的状态为INVALID表示这组日志文件出现已经损坏;log状态为Inactive:表示重做日志文件处于非激活状

      7、态;Active: 表示重做日志文件处于激活状态;Current:表示是重做日志为当前正在使用的日志文件。损坏的日志文件处于非激活状态:1. 删除相应的日志组:svrmgrlalter database drop logfile group group_number;2. 重新创建相应的日志组:svrmgrlalter database add log file group group_number (log_file_descritpion,) size log_file_size;损坏的日志文件处于激活状态且为非当前日志:1. 清除相应的日志组:svrmgrlalter database clear unarchived logfile group group_number;损坏的日志文件为当前活动日志文件:用命令清除相应的日志组:svrmgrlalter database clear unarchived logfile group group_number;如果清除失败,则只能做基于时间点的不完全恢复。打开数据库并且用适当的方法进行数据库全备份:svrmgrlalter dat

      8、abase open;部分数据文件损坏:若损坏的数据文件属于非system表空间,则数据库仍然可以处于打开状态可以进行操作,只是损坏的数据文件不能访问。这时在数据库打开状态下可以单独对损坏的数据文件进行恢复。若是system表空间的数据文件损坏则数据库系统会异常终止。这时数据库只能以Mount方式打开,然后再对数据文件进行恢复。可以通过查看数据库日志文件来判断当前损坏的数据文件到底是否属于system表空间。非system表空间的数据文件损坏1. 确定损坏的文件名字:svrmgrlselect name from v$datafile where status=INVALID;2. 将损坏的数据文件处于offline状态:svrmgrlalter database datafile datafile_name offline;3. 从相应的备份结果集中恢复关于这个数据文件的最近的备份。对于没有采用带库备份的点可以直接从磁带上恢复;对于用带库备份的点用相应的rman脚本来恢复。4. 恢复数据文件:svrmgrlalter database recover datafile file_na

      9、me;5. 使数据库文件online:svrmgrlalter database datafile datafile_name online;6. 用适当的方法进行数据库全备份。system表空间的数据文件损坏:1. 以mount方式启动数据库svrmgrlstartup mount;2. 从相应的备份结果集中恢复关于这个数据文件的最近的备份。对于没有采用带库备份的点可以直接从磁带上恢复;对于用带库备份的点用相应的rman脚本来恢复。3. 恢复system表空间:svrmgrlalter database recover datafile datafile_name;4. 打开数据库:svrmgrlalter database open;5. 用适当的方法进行数据库全备份。表空间损坏:若非system表空间已经损坏,则数据库仍然可以处于打开状态可以进行操作,只是损坏的表空间不能访问。这样在数据库打开状态下可以单独对损坏的表空间进行恢复。若是system表空间损坏则数据库系统会异常终止。这时数据库只能以Mount方式打开,然后再对表空间进行恢复。可以通过查看数据库日志文件来判断当前损坏的表空间是否是system表空间.非system表空间损坏:1. 将损坏的表空间处于offline状态:svrmgrlalter tablespace tablespace_name offline;2. 从相应的备份结果集中恢复关于这个表空间最近的备份。对于没有采用带库备份的点可以直接从磁带上恢复;对于用带库备份的点用相应的rman脚本来恢复。3.

      《Oracle物理结构故障的处理方法》由会员luobi****88888分享,可在线阅读,更多相关《Oracle物理结构故障的处理方法》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.