你的位置:欧美黄瓜视频在线观看_呦男呦女视频精品导航_少妇苏霞白洁刺激A片_美女被强奷到高潮免费_强奷乱码中文字幕在线_久久青青草原一区二区_变态乱另类仑小说专区 > 少妇富婆按摩偷人A片 >


成人在线手机直播视频软件Oracle 数据坏块的 N 种成立样式

发布日期:2022-07-16 14:11    点击次数:178


成人在线手机直播视频软件Oracle 数据坏块的 N 种成立样式

国产精品微信播放器破解版成人在线手机直播视频软件 弁言

Oracle 数据库的运行不能幸免的会遭遇各式各种的纰谬,就比如数据表出现坏块,此时亚洲日本国产精品色戒,你这张表的数据就无法探访了,有什么好的目的不错复原呢?

什么,你莫得遭遇过?😱

😏 那就祝你不久的翌日遭遇,哈哈开个打趣~ 玩归玩,闹归闹,涵养必须要熟习!👍🏻

一、先容

今天就给大家讲讲如那边理数据表的坏块情况!🎉

关于 Oracle 数据块物理损坏 的情形,频繁不错分为两种情况:

有备份,通过 RMAN 复原

无备份,通过 DBMS_REPAIR 成立

1、RMAN

有备份的情况下,这是很盼望的情形,咱们不错径直通过 RMAN 块介质复原(BLOCK MEDIA RECOVERY)功能来完成受损块的复原。

《安娜卡列尼娜》中说到:幸福的家庭都是相似的,不幸的家庭各有各的不幸。这句话在文章上也同样适用,虽然质量差的文章各有各的缺点,但好文章却几乎都有相同的特质:读者看得懂,读起来有趣,读完觉得有价值。

之所以我能从一本书都记不住,到现在的一天阅读一本书,写作一本书评,就是因为我改变了看书的策略,先从读书最低的等级开始入门,我想读了关于如何阅读的大部分书籍,今天分享的就是其中一本,叫做《如何有效阅读一本书》。

这里我是不提议复原所有数据库大要数据库文献来成立这些小数受损的数据块,有点耗损时辰。

可参考官方文档:Block Media Recovery with RMAN

2、DBMS_REPAIR

那如若莫得任何备份若何办? (PS:备份大于一切!)

咱们不错使用 Oracle 自带的 DBMS_REPAIR 包来已矣成立。

📢 防范: 使用 DBMS_REPAIR 包来成立, 一级并非整个复原,而是秀丽坏块,然后辩别其进行探访,这部分被秀丽的数据也就丢失了,这是无法幸免的。

可参考MOS文档:DBMS_REPAIR SCRIPT (Doc ID 556733.1)

二、实战环境准备

1、环境装置可参考我的一键装置剧本:Oracle 数据库一键装置,从未如斯通俗

cd /Volumes/DBA/voracle/github/single_db vagrant up vagrant ssh 

亚洲日本国产精品色戒

2、测试数据准备

创建表空间:

create tablespace eason datafile '/oradata/orcl/eason.dbf' size 1g autoextend on; 

创建用户:

create user eason identified by eason default tablespace eason; grant dba to eason; 

创建测试表:

create table hyj as select * from dba_objects; 

创建表索引:

create index i_hyj on hyj(object_id); 

3、检察表有关信息

检察表段上的有关信息:

select segment_name , header_file , header_block,blocks from dba_segments where segment_name ='HYJ';  

查出包含行纪录的数据块:

select distinct dbms_rowid.rowid_block_number(rowid) from eason.hyj order by 1;  DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID) ------------------------------------                                 1411                                 1412                                 1413         ...         ...         ...                                  2665                                 2666                                 2667  1232 rows selected. 

select * from dba_extents where segment_name='HYJ'; 

📢 防范: 这里看到 HEADER_BLOCK 和 BLOCK_ID 不一致,其实一个 segment 的第一个区的第一个块是 FIRST LEVEL BITMAP BLOCK,第二个块是 SECOND LEVEL BITMAP BLOCK,这两个块是用来措置 free block 的,第三个块是 PAGETABLE SEGMENT HEADER,少妇饥渴的放荡小说这个块才是 segment 里的 HEADER_BLOCK。

4、RMAN 备份

最初,咱们先做一个全备份,用来演示 RMAN 成立坏块!

run { allocate channel c1 device type disk; allocate channel c2 device type disk; crosscheck backup; crosscheck archivelog all; sql"alter system switch logfile"; delete noprompt expired backup; delete noprompt obsolete device type disk; backup database include current controlfile format '/backup/backlv_%d_%T_%t_%s_%p'; backup archivelog all DELETE INPUT; release channel c1; release channel c2; } 

5、模拟坏块

龙套 1468、1688、2468 数据块的实质:亚洲日本国产精品色戒

dd if=/dev/zero of=/oradata/orcl/eason.dbf bs=8192 conv=notrunc seek=1468 count=1 dd if=/dev/zero of=/oradata/orcl/eason.dbf bs=8192 conv=notrunc seek=1688 count=1 dd if=/dev/zero of=/oradata/orcl/eason.dbf bs=8192 conv=notrunc seek=2468 count=1 

断根 buffer cache 的实质:

alter system flush buffer_cache; 

再次查询表 hyj,此时查询还是报错,发现存坏块:

select * from eason.hyj; 

 

虽然,也不错使用 bbed 进行坏块模拟!

6、坏块搜检

底下再先容几种发现坏块的样式:

(1)使用 DBV 搜检面前文献的坏块:

dbv file=/oradata/orcl/eason.dbf blocksize=8192; 

使用 DBV搜检,相似发现了坏块!

(2)使用 rman 搜检数据库坏块:

## 搜检对应的数据文献 backup check logical validate datafile 5; ## 搜检面前数据库 backup validate check logical database; 

辘集 V$DATABASE_BLOCK_CORRUPTION 视图检察,愈加便捷:

select * from V$DATABASE_BLOCK_CORRUPTION; 

使用 RMAN 搜检后,相似发现了坏块!

(3)通过数据库的告警日记也不错发现报错:

(4)通过报错信息快速查找对应的坏表,纪律填写数据文献 ID 5 和 坏块 ID 1468:

SELECT tablespace_name, segment_type, owner, segment_name FROM dba_extents         WHERE file_id = &fileid and &blockid between block_id AND block_id + blocks - 1; 

执行环境准备已矣,底下初始实战!

三、实战演示

今天,我策画使用上述先容的 2 种样式来演示!

1、RMAN 成立

由于咱们之前还是备份了,因此径直使用备份来复原坏块:

blockrecover datafile 5 block 1468; 

blockrecover datafile 5 block 1688,2468; 

使用相似的样式,纪律成立坏块 1688,2468,成立凯旋后,查询已复原闲居!

再次搜检坏块情况:

backup validate check logical database; select * from V$DATABASE_BLOCK_CORRUPTION; 

坏块还是都被复原,况兼数据莫得丢失!

2、DBMS_REPAIR 成立

最初,依然使用 dd 先模拟坏块:

dd if=/dev/zero of=/oradata/orcl/eason.dbf bs=8192 conv=notrunc seek=3333 count=1 dd if=/dev/zero of=/oradata/orcl/eason.dbf bs=8192 conv=notrunc seek=3368 count=1 dd if=/dev/zero of=/oradata/orcl/eason.dbf bs=8192 conv=notrunc seek=4000 count=1 

 

在莫得备份的前提下,咱们就无法做到无损成立坏块了,需要蚀本对应坏块的数据。

(1)创建 repair 表,用于纪录需要被成立的表:

begin dbms_repair.admin_tables (      table_name => 'REPAIR_TABLE',      table_type => dbms_repair.repair_table,      action => dbms_repair.create_action,      tablespace => 'USERS'); end; / 

(2)创建 Orphan Key 表,用于纪录在表块损坏后那些孤单索引,也等于指向坏块的那些索引 :

begin dbms_repair.admin_tables (      table_name => 'ORPHAN_KEY_TABLE',      table_type => dbms_repair.orphan_table,      action => dbms_repair.create_action,      tablespace => 'USERS'); end; / 

(3)搜检坏块亚洲日本国产精品色戒,检测对象上受损的情形,并复返受损块数为 3:

declare   num_corrupt int; begin   num_corrupt := 0; DBMS_REPAIR.CHECK_OBJECT (   schema_name =>'EASON',   object_name =>'HYJ',   repair_table_name =>'REPAIR_TABLE',   corrupt_count =>num_corrupt);   dbms_output.put_line('number corrupt:' 


    热点资讯

    相关资讯