東坡下載:內(nèi)容最豐富最安全的下載站!

首頁編程開發(fā)數(shù)據(jù)庫 → 怎么修復數(shù)據(jù)庫 修復數(shù)據(jù)庫壞塊方法

怎么修復數(shù)據(jù)庫 修復數(shù)據(jù)庫壞塊方法

相關文章發(fā)表評論 來源:本站整理時間:2014/10/16 10:46:24字體大。A-A+

更多

作者:專題點擊:158次評論:0次標簽: 數(shù)據(jù)庫 數(shù)據(jù)庫壞塊 修復數(shù)據(jù)庫

怎么修復數(shù)據(jù)庫?下面以修復數(shù)據(jù)庫壞塊為例,為大家介紹修復數(shù)據(jù)庫壞塊方法,詳細如下:

PART1

修復數(shù)據(jù)庫壞塊

dbv

你也可以用dbv工具看一下你現(xiàn)在其他的數(shù)據(jù)文件有沒有還有壞塊的

dbv file='yourfilename'

恢復方法:

當Oracle數(shù)據(jù)庫出現(xiàn)壞塊時,Oracle會在警告日志文件(alert_SID.log)中記錄壞塊的信息:

ORA-01578: ORACLE data block corrupted (file # 7, block # )

ORA-01110: data file : '/oracle1/oradata/V920/oradata/V816/users01.dbf'

其中,<AFN>代表壞塊所在數(shù)據(jù)文件的絕對文件號,代表壞塊是數(shù)據(jù)文件上的第幾個數(shù)據(jù)塊

出現(xiàn)這種情況時,應該首先檢查是否是硬件及操作系統(tǒng)上的故障導致Oracle數(shù)據(jù)庫出現(xiàn)壞塊。在排除了數(shù)據(jù)庫以外的原因后,再對發(fā)生壞塊的數(shù)據(jù)庫對象進行處理。

1.確定發(fā)生壞塊的數(shù)據(jù)庫對象

SELECT tablespace_name,

segment_type,

owner,

segment_name

FROM dba_extents

WHERE file_id =

AND between block_id AND block_id+blocks-1;

2.決定修復方法

如果發(fā)生壞塊的對象是一個索引,那么可以直接把索引DROP掉后,再根據(jù)表里的記錄進行重建;

如果發(fā)生壞塊的表的記錄可以根據(jù)其它表的記錄生成的話,那么可以直接把這個表DROP掉后重建;

如果有數(shù)據(jù)庫的備份,則恢復數(shù)據(jù)庫的方法來進行修復;

如果表里的記錄沒有其它辦法恢復,那么壞塊上的記錄就丟失了,只能把表中其它數(shù)據(jù)壞上的記錄取出來,然后對這個表進行重建。

3.用Oracle提供的DBMS_REPAIR包標記出壞塊

exec DBMS_REPAIR.SKIP_CORRUPT_BLOCKS('','');

4.使用Create table as select命令將表中其它塊上的記錄保存到另一張表上

create table corrupt_table_bak

as

select * from corrupt_table;

5.用DROP TABLE命令刪除有壞塊的表

drop table corrupt_table;

6.用alter table rename命令恢復原來的表

alter table corrupt_table_bak

rename to corrupt_table;

7.如果表上存在索引,則要重建表上的索引

PART2

2014.7.22研究恢復數(shù)據(jù)庫壞塊:

Oracle調(diào)用標準C的系統(tǒng)函數(shù),對數(shù)據(jù)塊進行讀寫操作,因此,壞塊是有可能由以下幾種原因產(chǎn)生:

硬件的I/O錯誤

操作系統(tǒng)的I/O錯誤或緩沖問題

內(nèi)存或paging問題

磁盤修復工具

一個數(shù)據(jù)文件的一部分正在被覆蓋

Oracle試圖訪問一個未被格式化的系統(tǒng)塊失敗

數(shù)據(jù)文件部分溢出

Oracle或者操作系統(tǒng)的bug

遇到“ORA-01578:ORACLE data block corrupted”錯誤

處理方法:1.rman的recover命令可以在數(shù)據(jù)庫保持open狀態(tài)下只恢復受損的數(shù)據(jù)塊

2.如果沒有備份,萬不得已之下也可以采用DBMS_REPAIR包的存儲過程將受損壞塊隔離,同時盡可能地挽救部分數(shù)據(jù)。

rman backup命令也是檢查壞數(shù)據(jù)塊的好工具  一旦讀取ORA-19566  即可有問題

此時可用backup validate tablespace user觀察詳細的信息,可查看到壞塊數(shù)與跟蹤文件

grep‘corrupt’/u01/app/oracle/diag/rdbms/br/br/trace/**.trc

恢復數(shù)據(jù)塊:rman》recover datafile 5 block 203;

批量恢復受損的數(shù)據(jù)塊:recover corruption list;

數(shù)據(jù)塊壞塊一號壞塊,需要做:

run{

sql 'alter database datafile 5 offline';

restore datafile 5;

recover datafile 5;

sql'alter database datafile 5 online'

}

使用exp/imp恢復

在這種情況下肯定會造成數(shù)據(jù)的丟失,在這種情況下應采取將數(shù)據(jù)導出然后重建表再進行導入的方法,來盡量恢復損壞數(shù)據(jù)塊中的數(shù)據(jù),但是在有壞塊的情況下是不允許導出的,如下命令:Exp test/test file=t.dmp tables=t;

導出命令在執(zhí)行中會報ORA-01578錯誤,在這錯誤提示中會提示那個文件號的文件以及這個文件中的哪個塊被損壞,如:ORA—01578:ORACLE 數(shù)據(jù)塊損壞(文件號 4,塊號 35)

針對以上的提示首先查詢那些對象被損壞:

Select tablespace_name,segment_type,owner,segment_name From dba_extents Where file_id=4 and 35 between block_id and block_id+blocks-1;

如果被損壞的塊是索引,通?梢酝ㄟ^索引重建來解決,如果損壞的是數(shù)據(jù)(segment_type為table),那么通過設置如下內(nèi)部事件使得Exp操作跳過壞塊。

Alter session set events=’10231 trace name context forever,level 10’;

然后重新執(zhí)行導出命令,導出相關的表,然后執(zhí)行Drop Table命令刪除相關表,之后重建表最后導入數(shù)據(jù)。

使用DBMS_REPAIR恢復

用DBMS_REPAIR當然也會丟失數(shù)據(jù)。這里不做詳細的介紹,有興趣的可以查看oracle的在線文

3、使用dbms_repair包進行壞塊處理

1)首先建立repair_table,用于存放dbms_repair.check_object檢測出來的壞塊信息

SQL> declare

2begin

3dbms_repair.admin_tables

4(table_name => 'REPAIR_TABLE',--表名

5table_type => dbms_repair.repair_table,

6action => dbms_repair.create_action,

7tablespace => 'USERS');--用于指定該表存放的表空間

8end;

9/

PL/SQL 過程已成功完成。

SQL> col owner format a10

SQL> col object_name format a20

SQL> col object_type format a20

SQL> select owner, object_name, object_type

2from dba_objects

3where object_name like '%REPAIR_TABLE';

OWNEROBJECT_NAMEOBJECT_TYPE

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

SYSREPAIR_TABLETABLE

SYSDBA_REPAIR_TABLEVIEW

Oracle自動創(chuàng)建了一個DBA_REPAIR_TABLE視圖。

2)使用dbms_repair.check_object進行壞塊檢測

SQL> set serveroutput on size 100000;

SQL> declare

2rpr_count int;

3begin

4rpr_count := 0;

5dbms_repair.check_object(

6schema_name => 'SYS',--指定對象模式,也就是對象的所有者

7object_name => 'TEST',--指定對象名,也就是表名

8repair_table_name => 'REPAIR_TABLE',

9corrupt_count => rpr_count);

10dbms_output.put_line('repair block count: '

11||to_char(rpr_count));

12end;

13/

repair block count: 4

PL/SQL 過程已成功完成。

SQL> select object_name, block_id, corrupt_type, marked_corrupt,

2corrupt_description, repair_description

3from repair_table;

OBJECT_NAMEBLOCK_ID CORRUPT_TYPE MARKED_COR

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

CORRUPT_DESCRIPTION

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

REPAIR_DESCRIPTION

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

TEST196148 TRUE

mark block software corrupt

TEST206148 TRUE

mark block software corrupt

TEST236148 TRUE

mark block software corrupt

TEST316148 TRUE

mark block software corrupt

通過運行dbms_repair.check_object,將壞塊信息存放到了repair_table表中,其中有個字段marked_corrupt,用于標識該塊是否被標識為壞塊,當被標識為true時,即該塊被標識為壞塊。其中這一步跟oracle文檔中的描述有點進入,根據(jù)oracle文檔,當執(zhí)行完dbms_repair.check_object時,并不會進行壞塊標識,也就是marked_corrupt列的值應該為false,而只有當執(zhí)行dbms_repair.fix_corrupt_blocks過程后才會進行壞塊標識。

3)使用dbms_repair.fix_corrupt_blocks進行壞塊標識

SQL> declare

2fix_block_count int;

3begin

4fix_block_count := 0;

5dbms_repair.fix_corrupt_blocks (

6schema_name => 'SYS',

7object_name => 'TEST',

8object_type => dbms_repair.table_object,

9repair_table_name => 'REPAIR_TABLE',

10fix_count => fix_block_count);

11dbms_output.put_line('fix blocks count: ' ||

12to_char(fix_block_count));

13end;

14/

fix blocks count: 0

PL/SQL 過程已成功完成。

我們可以見到到fix blocks count=0,即在上一步進行check_object時已經(jīng)進行了壞塊標識了,這一步其實可以省略。(不過沒有測試過。

SQL> select count(*) from test;

select count(*) from test

*

第 1 行出現(xiàn)錯誤:

ORA-01578: ORACLE 數(shù)據(jù)塊損壞 (文件號 7, 塊號 19)

ORA-01110: 數(shù)據(jù)文件 7: 'G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\TEST01.DBF'

此時進行查詢?nèi)匀粓箦e,因為我們只是將壞塊進行了標識,當進行全表掃描的時候,仍然會查詢到壞塊而報錯。

4)使用dbms_repair.dump_orphan_keys過程來保存壞塊的索引鍵值,然后再執(zhí)行skip_corrupt_blocks過程之后,我們才能重建索引,不然重建索引時新的索引仍然會引用壞塊。首先要建立ORPHAN_KEY_TABLE,此表就是用來存放壞塊的索引鍵值。

SQL> declare

2begin

3dbms_repair.admin_tables

4(table_name => 'ORPHAN_KEY_TABLE',

5table_type => dbms_repair.orphan_table,

6action => dbms_repair.create_action,

7tablespace => 'USERS');

8end;

9/

PL/SQL 過程已成功完成。

然后執(zhí)行過程dbms_repair.dump_orphan_keys將壞塊鍵值存放到上面所創(chuàng)建的表中:

SQL> declare

2orph_count int;

3begin

4orph_count:= 0;

5dbms_repair.dump_orphan_keys (

6schema_name => 'SYS',

7object_name => 'ID_INX',--索引的名字

8object_type => dbms_repair.index_object,

9repair_table_name => 'REPAIR_TABLE',--從這個表中獲得壞塊的信息

10orphan_table_name => 'ORPHAN_KEY_TABLE',

11key_count => orph_count);

12dbms_output.put_line('orphan-index entries: ' || to_char(orph_count));

13end;

14/

orphan-index entries: 491

PL/SQL 過程已成功完成。

SQL> declare

2orph_count int;

3begin

4orph_count:= 0;

5dbms_repair.dump_orphan_keys (

6schema_name => 'SYS',

7object_name => 'NAME_INX',

8object_type => dbms_repair.index_object,

9repair_table_name => 'REPAIR_TABLE',

10orphan_table_name => 'ORPHAN_KEY_TABLE',

11key_count => orph_count);

12dbms_output.put_line('orphan-index entries: ' || to_char(orph_count));

13end;

14/

orphan-index entries: 491

PL/SQL 過程已成功完成。

對每個索引都要進行dump_orphan_keys。

SQL> select index_name, count(*) from orphan_key_table

2group by index_name;

INDEX_NAMECOUNT(*)

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

ID_INX491

NAME_INX491

5)使用skip_corrupt_blocks,使查詢或者DML時跳過壞塊

SQL> declare

2begin

3dbms_repair.skip_corrupt_blocks (

4schema_name => 'SYS',

5object_name => 'TEST',

6object_type => dbms_repair.table_object,

7flags => dbms_repair.skip_flag);

8end;

9/

PL/SQL 過程已成功完成。

SQL> select table_name, skip_corrupt from dba_tables

2where table_name = 'TEST';

TABLE_NAMESKIP_COR

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

TESTENABLED

6)使用dbms_repair.rebuild_freelists重建freelists,使得該塊不再被放到freelists,當中,也就是該塊將不會再被使用。

SQL> declare

2begin

3dbms_repair.rebuild_freelists (

4schema_name => 'SYS',

5object_name => 'TEST',

6object_type => dbms_repair.table_object);

7end;

8/

declare

*

第 1 行出現(xiàn)錯誤:

ORA-10614: Operation not allowed on this segment

ORA-06512: 在 "SYS.DBMS_REPAIR", line 400

ORA-06512: 在 line 3

不過我們可以看到,對于SYS用戶下面的對象好像不能進行此操作。

4、重建索引

SQL> select count(id) from test;

COUNT(ID)

----------

19998

SQL> select count(name) from test;

COUNT(NAME)

-----------

19998

SQL> select count(*) from test;

COUNT(*)

----------

19507

我們可以看到上面的三個查詢,對于第1和第2個使用索引進行查詢和不使用索引進行查詢的結(jié)果是不一樣的。下面我們使用rebuild試試。

SQL> alter index id_inx rebuild;

索引已更改。

SQL> alter index name_inx rebuild;

索引已更改。

SQL> select count(id) from test;

COUNT(ID)

----------

19998

SQL> select count(name) from test;

COUNT(NAME)

-----------

19998

SQL> select count(*) from test;

COUNT(*)

----------

19507

可以是不能通過rebuild來重建索引的。只能通過DROP然后再CREATE。

SQL> drop index id_inx;

索引已刪除。

SQL> drop index name_inx;

索引已刪除。

SQL> create index id_inx on test(id);

索引已創(chuàng)建。

SQL> create index name_inx on test(name);

索引已創(chuàng)建。

SQL> select count(id) from test;

COUNT(ID)

----------

19507

SQL> select count(name) from test;

COUNT(NAME)

-----------

19507

SQL> select count(*) from test;

COUNT(*)

----------

19507

到此該表已經(jīng)可以正常使用了,但同時也丟失了一些數(shù)據(jù),所以在使用dbms_repair進行恢復的時候要充分考慮到數(shù)據(jù)的重要性和恢復的后果。同時也應該考慮是否有其它別的恢復方法,不然貿(mào)貿(mào)然的行事最后可能得不償失。

PART2

2014.7.22研究恢復數(shù)據(jù)庫壞塊:

Oracle調(diào)用標準C的系統(tǒng)函數(shù),對數(shù)據(jù)塊進行讀寫操作,因此,壞塊是有可能由以下幾種原因產(chǎn)生:

硬件的I/O錯誤

操作系統(tǒng)的I/O錯誤或緩沖問題

內(nèi)存或paging問題

磁盤修復工具

一個數(shù)據(jù)文件的一部分正在被覆蓋

Oracle試圖訪問一個未被格式化的系統(tǒng)塊失敗

數(shù)據(jù)文件部分溢出

Oracle或者操作系統(tǒng)的bug

遇到“ORA-01578:ORACLE data block corrupted”錯誤

處理方法:1.rman的recover命令可以在數(shù)據(jù)庫保持open狀態(tài)下只恢復受損的數(shù)據(jù)塊

2.如果沒有備份,萬不得已之下也可以采用DBMS_REPAIR包的存儲過程將受損壞塊隔離,同時盡可能地挽救部分數(shù)據(jù)。

rman backup命令也是檢查壞數(shù)據(jù)塊的好工具  一旦讀取ORA-19566  即可有問題

此時可用backup validate tablespace user觀察詳細的信息,可查看到壞塊數(shù)與跟蹤文件

grep‘corrupt’/u01/app/oracle/diag/rdbms/br/br/trace/**.trc

恢復數(shù)據(jù)塊:rman》recover datafile 5 block 203;

批量恢復受損的數(shù)據(jù)塊:recover corruption list;

數(shù)據(jù)塊壞塊一號壞塊,需要做:

run{

sql 'alter database datafile 5 offline';

restore datafile 5;

recover datafile 5;

sql'alter database datafile 5 online'

}

使用exp/imp恢復

在這種情況下肯定會造成數(shù)據(jù)的丟失,在這種情況下應采取將數(shù)據(jù)導出然后重建表再進行導入的方法,來盡量恢復損壞數(shù)據(jù)塊中的數(shù)據(jù),但是在有壞塊的情況下是不允許導出的,如下命令:Exp test/test file=t.dmp tables=t;

導出命令在執(zhí)行中會報ORA-01578錯誤,在這錯誤提示中會提示那個文件號的文件以及這個文件中的哪個塊被損壞,如:ORA—01578:ORACLE 數(shù)據(jù)塊損壞(文件號 4,塊號 35)

針對以上的提示首先查詢那些對象被損壞:

Select tablespace_name,segment_type,owner,segment_name From dba_extents Where file_id=4 and 35 between block_id and block_id+blocks-1;

如果被損壞的塊是索引,通?梢酝ㄟ^索引重建來解決,如果損壞的是數(shù)據(jù)(segment_type為table),那么通過設置如下內(nèi)部事件使得Exp操作跳過壞塊。

Alter session set events=’10231 trace name context forever,level 10’;

然后重新執(zhí)行導出命令,導出相關的表,然后執(zhí)行Drop Table命令刪除相關表,之后重建表最后導入數(shù)據(jù)。

使用DBMS_REPAIR恢復

用DBMS_REPAIR當然也會丟失數(shù)據(jù)。這里不做詳細的介紹,有興趣的可以查看oracle的在線文

3、使用dbms_repair包進行壞塊處理

1)首先建立repair_table,用于存放dbms_repair.check_object檢測出來的壞塊信息

SQL> declare

2begin

3dbms_repair.admin_tables

4(table_name => 'REPAIR_TABLE',--表名

5table_type => dbms_repair.repair_table,

6action => dbms_repair.create_action,

7tablespace => 'USERS');--用于指定該表存放的表空間

8end;

9/

PL/SQL 過程已成功完成。

SQL> col owner format a10

SQL> col object_name format a20

SQL> col object_type format a20

SQL> select owner, object_name, object_type

2from dba_objects

3where object_name like '%REPAIR_TABLE';

OWNEROBJECT_NAMEOBJECT_TYPE

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

SYSREPAIR_TABLETABLE

SYSDBA_REPAIR_TABLEVIEW

Oracle自動創(chuàng)建了一個DBA_REPAIR_TABLE視圖。

2)使用dbms_repair.check_object進行壞塊檢測

SQL> set serveroutput on size 100000;

SQL> declare

2rpr_count int;

3begin

4rpr_count := 0;

5dbms_repair.check_object(

6schema_name => 'SYS',--指定對象模式,也就是對象的所有者

7object_name => 'TEST',--指定對象名,也就是表名

8repair_table_name => 'REPAIR_TABLE',

9corrupt_count => rpr_count);

10dbms_output.put_line('repair block count: '

11||to_char(rpr_count));

12end;

13/

repair block count: 4

PL/SQL 過程已成功完成。

SQL> select object_name, block_id, corrupt_type, marked_corrupt,

2corrupt_description, repair_description

3from repair_table;

OBJECT_NAMEBLOCK_ID CORRUPT_TYPE MARKED_COR

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

CORRUPT_DESCRIPTION

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

REPAIR_DESCRIPTION

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

TEST196148 TRUE

mark block software corrupt

TEST206148 TRUE

mark block software corrupt

TEST236148 TRUE

mark block software corrupt

TEST316148 TRUE

mark block software corrupt

通過運行dbms_repair.check_object,將壞塊信息存放到了repair_table表中,其中有個字段marked_corrupt,用于標識該塊是否被標識為壞塊,當被標識為true時,即該塊被標識為壞塊。其中這一步跟oracle文檔中的描述有點進入,根據(jù)oracle文檔,當執(zhí)行完dbms_repair.check_object時,并不會進行壞塊標識,也就是marked_corrupt列的值應該為false,而只有當執(zhí)行dbms_repair.fix_corrupt_blocks過程后才會進行壞塊標識。

3)使用dbms_repair.fix_corrupt_blocks進行壞塊標識

SQL> declare

2fix_block_count int;

3begin

4fix_block_count := 0;

5dbms_repair.fix_corrupt_blocks (

6schema_name => 'SYS',

7object_name => 'TEST',

8object_type => dbms_repair.table_object,

9repair_table_name => 'REPAIR_TABLE',

10fix_count => fix_block_count);

11dbms_output.put_line('fix blocks count: ' ||

12to_char(fix_block_count));

13end;

14/

fix blocks count: 0

PL/SQL 過程已成功完成。

我們可以見到到fix blocks count=0,即在上一步進行check_object時已經(jīng)進行了壞塊標識了,這一步其實可以省略。(不過沒有測試過!)

SQL> select count(*) from test;

select count(*) from test

*

第 1 行出現(xiàn)錯誤:

ORA-01578: ORACLE 數(shù)據(jù)塊損壞 (文件號 7, 塊號 19)

ORA-01110: 數(shù)據(jù)文件 7: 'G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\TEST01.DBF'

此時進行查詢?nèi)匀粓箦e,因為我們只是將壞塊進行了標識,當進行全表掃描的時候,仍然會查詢到壞塊而報錯。

4)使用dbms_repair.dump_orphan_keys過程來保存壞塊的索引鍵值,然后再執(zhí)行skip_corrupt_blocks過程之后,我們才能重建索引,不然重建索引時新的索引仍然會引用壞塊。首先要建立ORPHAN_KEY_TABLE,此表就是用來存放壞塊的索引鍵值。

SQL> declare

2begin

3dbms_repair.admin_tables

4(table_name => 'ORPHAN_KEY_TABLE',

5table_type => dbms_repair.orphan_table,

6action => dbms_repair.create_action,

7tablespace => 'USERS');

8end;

9/

PL/SQL 過程已成功完成。

然后執(zhí)行過程dbms_repair.dump_orphan_keys將壞塊鍵值存放到上面所創(chuàng)建的表中:

SQL> declare

2orph_count int;

3begin

4orph_count:= 0;

5dbms_repair.dump_orphan_keys (

6schema_name => 'SYS',

7object_name => 'ID_INX',--索引的名字

8object_type => dbms_repair.index_object,

9repair_table_name => 'REPAIR_TABLE',--從這個表中獲得壞塊的信息

10orphan_table_name => 'ORPHAN_KEY_TABLE',

11key_count => orph_count);

12dbms_output.put_line('orphan-index entries: ' || to_char(orph_count));

13end;

14/

orphan-index entries: 491

PL/SQL 過程已成功完成。

SQL> declare

2orph_count int;

3begin

4orph_count:= 0;

5dbms_repair.dump_orphan_keys (

6schema_name => 'SYS',

7object_name => 'NAME_INX',

8object_type => dbms_repair.index_object,

9repair_table_name => 'REPAIR_TABLE',

10orphan_table_name => 'ORPHAN_KEY_TABLE',

11key_count => orph_count);

12dbms_output.put_line('orphan-index entries: ' || to_char(orph_count));

13end;

14/

orphan-index entries: 491

PL/SQL 過程已成功完成。

對每個索引都要進行dump_orphan_keys。

SQL> select index_name, count(*) from orphan_key_table

2group by index_name;

INDEX_NAMECOUNT(*)

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

ID_INX491

NAME_INX491

5)使用skip_corrupt_blocks,使查詢或者DML時跳過壞塊

SQL> declare

2begin

3dbms_repair.skip_corrupt_blocks (

4schema_name => 'SYS',

5object_name => 'TEST',

6object_type => dbms_repair.table_object,

7flags => dbms_repair.skip_flag);

8end;

9/

PL/SQL 過程已成功完成。

SQL> select table_name, skip_corrupt from dba_tables

2where table_name = 'TEST';

TABLE_NAMESKIP_COR

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

TESTENABLED

6)使用dbms_repair.rebuild_freelists重建freelists,使得該塊不再被放到freelists,當中,也就是該塊將不會再被使用。

SQL> declare

2begin

3dbms_repair.rebuild_freelists (

4schema_name => 'SYS',

5object_name => 'TEST',

6object_type => dbms_repair.table_object);

7end;

8/

declare

*

第 1 行出現(xiàn)錯誤:

ORA-10614: Operation not allowed on this segment

ORA-06512: 在 "SYS.DBMS_REPAIR", line 400

ORA-06512: 在 line 3

不過我們可以看到,對于SYS用戶下面的對象好像不能進行此操作。

4、重建索引

SQL> select count(id) from test;

COUNT(ID)

----------

19998

SQL> select count(name) from test;

COUNT(NAME)

-----------

19998

SQL> select count(*) from test;

COUNT(*)

----------

19507

我們可以看到上面的三個查詢,對于第1和第2個使用索引進行查詢和不使用索引進行查詢的結(jié)果是不一樣的。下面我們使用rebuild試試。

SQL> alter index id_inx rebuild;

索引已更改。

SQL> alter index name_inx rebuild;

索引已更改。

SQL> select count(id) from test;

COUNT(ID)

----------

19998

SQL> select count(name) from test;

COUNT(NAME)

-----------

19998

SQL> select count(*) from test;

COUNT(*)

----------

19507

可以是不能通過rebuild來重建索引的。只能通過DROP然后再CREATE。

SQL> drop index id_inx;

索引已刪除。

SQL> drop index name_inx;

索引已刪除。

SQL> create index id_inx on test(id);

索引已創(chuàng)建。

SQL> create index name_inx on test(name);

索引已創(chuàng)建。

SQL> select count(id) from test;

COUNT(ID)

----------

19507

SQL> select count(name) from test;

COUNT(NAME)

-----------

19507

SQL> select count(*) from test;

COUNT(*)

----------

19507

到此該表已經(jīng)可以正常使用了,但同時也丟失了一些數(shù)據(jù),所以在使用dbms_repair進行恢復的時候要充分考慮到數(shù)據(jù)的重要性和恢復的后果。同時也應該考慮是否有其它別的恢復方法,不然貿(mào)貿(mào)然的行事最后可能得不償失。


  • 共享電動單車
  • 合肥app大全
  • 抗癌
  • 聲母韻母ppt
共享電動單車
(44)共享電動單車

共享電動單車是一種新的交通工具,通過掃碼開鎖,循環(huán)共享。目前市場主要有:小蜜電動單車、享騎電單車、芒果電單車、途爾電單車、七號電單車、蜜蜂出行、177共享電動車、獵吧出行,功能都是大同小異的,這里為您提供的是各企業(yè)專用的app,希望能幫助到您的出行。

共享電動單車一小時能跑多少公里

這要看電動車幾v的,電機幾瓦的。48v,電機500瓦的載個人可以開到40/每小時。60v電機1000瓦可以開到50/每小時。像自行車一樣的電動車就是每小時30km最高了。新國標規(guī)定是25/每小時。70V的電池原則上是沒有的。目前的鉛蓄電池是12V/塊拼裝,多用的是3塊、4塊串聯(lián),即36V、48V,另有18V的四塊串聯(lián)為64V,你說的70V的原則上是沒有的。電動車能跑多少公里,行業(yè)里叫續(xù)行里程,它不僅和電池電壓、電流有關系,還和電機類型、額定功率、輸出效率、負荷量等有關系。按64V20A電池,500W電摩電機計算的話,續(xù)行里程大約等于=20/(500W/64V/20A)*80%*30公里/小時=61.44公里。也就是說,如果你的電動車在正常條件下行駛下(道路狀況良好,氣溫在10度以上35度以下,僅載1人情況下),電機效率可達80%,那么,你可以續(xù)行61公里左右

支付寶共享單車怎么使用

直接打開支付寶掃碼就可以使用了。

現(xiàn)在,只要找到車身二維碼,再打開支付寶掃一掃,就可以解鎖騎走了,而不再需要安裝各自的APP。這六家共享單車分別是:ofo、永安行、小藍、Hellobike、funbike(凡騎)、優(yōu)拜。

在新版支付寶首頁,還單獨上線了一個獨立的“共享單車”應用,點開之后就能快速了解附近有哪些單車離自己最近、哪些免押、哪些有騎行優(yōu)惠。

為了讓大家盡快適應從支付寶掃單車,支付寶推出了優(yōu)惠活動, 4月29日-5月7日期間,凡騎、Hellobike、ofo、小藍、永安、優(yōu)拜六大共享單車使用支付寶客戶度掃一掃,可免費騎車。

此外,通過支付寶掃一掃騎車,且單次騎行超過5分鐘用戶,即可參與瓜分千萬紅包大獎的活動。


...更多>>
  • 螞蟻電動單車1.2.3 安卓版

    11-09 / 10.4M

    推薦理由:螞蟻電單車是一款由無錫螞蟻出行服務有限公司打造而來的共享電單車服務軟件,用戶隨時線上定位找到周邊的共
  • i騎樂電動單車1.4.2 最新安卓版app

    11-09 / 13.7M

    推薦理由:i騎樂共享電單車致力于電單車分時租賃服務,以優(yōu)惠的價格,為用戶解決10公里內(nèi)的出行問題。i騎樂電單車創(chuàng)新
  • 騎電動單車2.20 中文免費版app

    11-09 / 32.3M

    推薦理由:騎電單車為你提供了一種全新的出行方式,綠色出行,省時省力●在你身邊7*24小時為你服務●地圖找車、提前預
  • 7號電單車app3.5.5 安卓版

    11-09 / 15.5M

    推薦理由:7號電單車app是一款可以免費租賃電動車、自行單車的公共車輛租賃平臺,價格優(yōu)惠、方便實用、安全保證,滿足
  • 芒果電單車2.1.8 安卓手機版

    11-12 / 17.4M

    推薦理由:芒果電單車是一款無樁共享智能電單車分時租賃app。它為用戶提供了方便快捷的出行體驗。手機一掃即可開鎖,讓
  • 享騎電單車app4.3.3 最新安卓版

    11-09 / 22.0M

    推薦理由:享騎電單車app是一款創(chuàng)新型的解決短途出行的手機軟件,無需依賴固定的車樁和站點,通過物聯(lián)網(wǎng)技術(shù)和單車共享
合肥app大全
(61)合肥app大全

合肥古為淮夷地,商朝稱虎方,西周稱夷虎。周時廬子國建都于此。秦始皇二十六年(前221年),廢分封,立郡縣,合肥屬九江郡。這里為您提供的是一系例合肥有關的app,是合肥新生活必備的手機軟件,包括出行,購物,聚會等。

...更多>>
  • 合肥機動車輛違章查詢12.0 官方正版

    11-08 / 199KB

    推薦理由:可以查詢車輛違章查詢,駕駛證計分,駕駛?cè)诉`章信息,根據(jù)用戶輸入的車輛信息(車輛號牌號碼、號牌種類、車
  • 合肥丁幼兒家長1.3 中文正版app

    11-08 / 55.2M

    推薦理由:合肥丁幼是一款移動數(shù)字育兒園的手機應用。通過合肥丁幼,育兒機構(gòu)可以實現(xiàn)信息化統(tǒng)一管理;教師可以輕松完
  • 合肥通app1.0.1安卓版

    10-15 / 36.0M

    推薦理由:專為合肥市民打造的綜合性服務平臺,合肥通app就是一款便民利民的手機軟件,能為廣大用戶提供許多便捷的功能
  • 合肥充電app1.0 安卓最新版

    10-12 / 8.6M

    推薦理由:這款軟件是一款可以尋找充電地方的軟件,在上面你可以通過定位找到眾多的充電樁,本軟件定位只能適合在合肥
  • 合肥租房軟件1.1.5 安卓版

    04-09 / 21.3M

    推薦理由:合肥租房app是一款在線掌上租房軟件,軟件是由合肥市人民政府辦公廳聯(lián)合推出的租房軟件,軟件為用戶帶來的全
  • 合肥軌道手機客戶端1.0.1 蘋果版

    03-15 / 74M

    推薦理由:合肥軌道公共服務APP是一款由安徽合肥軌道交通公司推出的手機客戶端,用戶通過這款軟件能直接便捷出行,隨時
抗癌
(21)抗癌

確認了李詠的確逝世的消息后,很多人的反應還是不敢相信,太突然,明明感覺不久前才見過他啊。根據(jù)哈文的微博,李詠已經(jīng)在美國抗癌17個月,所以大家一定要保證身體,多鍛煉,這里為您提供一些app,讓癌遠離!主要是一些如何防治,以及一些如何運動的app

...更多>>
  • 蛇行運動手游1.8 安卓最新版

    10-12 / 35.2M

    推薦理由:這是一款經(jīng)典的貪吃蛇游戲,不一樣的是你在通過數(shù)字板塊之前需要將周圍的黃色食物吃完,使得你的身體變得越
  • 簡康運動app1.0 蘋果版

    10-11 / 39.9M

    推薦理由:隨著生活條件的變好,健身成了許多人的生活的一部分,健身可以讓你的生活更豐富!小編愛來了簡康運動app,這
  • 我愛籃球運動app1.0.0 安卓版

    10-09 / 5.0M

    推薦理由:一款籃球賽事服務軟件,我愛籃球運動app這里有最新的籃球賽事信息,可以關注比賽時間,觀看比賽,記錄每個籃
  • 新運動助手2.0.0 安卓手機版

    10-02 / 1.6M

    推薦理由:很多的人都是非常的喜歡刷一些微信或者是qq上面的步數(shù),可以使用這款最新的新運動助手app,直接的快速的對你
  • 運動小智腹部訓練app0.1.7 安卓版

    09-26 / 43.7M

    推薦理由:智能健身運動平臺,運動小智腹部訓練app專門針對你的腹部贅肉而打造,幫你減掉多余的肉,訓練簡單,有智能語
  • 定向運動手游1.1.5 安卓最新版

    09-01 / 86.0M

    推薦理由:這個一個運動跑步的游戲,非常新穎的玩法,3d人物風格,地圖上會給你設定一個目標,你需要通過手機掌握出路
聲母韻母ppt
(16)聲母韻母ppt

聲母,是使用在韻母前面的輔音,跟韻母一齊構(gòu)成的一個完整的音節(jié)。其他漢藏語系語言也有類似的結(jié)構(gòu)。一般由輔音充當,即首輔音。韻母是指中國漢語音韻學術(shù)語,漢語字音中聲母、字調(diào)以外的部分。舊稱為韻。韻母由韻頭(介音)、韻腹(主要元音)、韻尾三部分組成;按韻母結(jié)構(gòu)可分為單韻母、復韻母、鼻韻母。

...更多>>
  • 部編版ang eng ing ong 教案ppt課件

    10-24 / 17.6M

    推薦理由:教學目標1.學會后鼻韻母ang、eng、ing、ong和整體認讀音節(jié)ying及ying的四聲,讀準音,認清形,正確書寫。2.學會
  • 拼音an.en.in.un.vn教案ppt

    10-24 / 1.1M

    推薦理由:an讀安,en讀恩,in讀因,un讀溫,vn讀韻前鼻音尾韻母指的是鼻韻母中以-n為韻尾的韻母。普通話中的前鼻音尾
  • 漢語拼音ie ue er教案PPT

    10-24 / 1.1M

    推薦理由:教學目標1、學會復韻母ieüe、特殊韻母er及其四聲讀準音認清形,正確書寫。2、學習聲母與復韻母ieüe組成的
  • ao ou iu 優(yōu)秀教學ppt

    10-24 / 2.2M

    推薦理由:1、認讀復韻母ɑo⑴出示奧運福娃、奧運主會場、奧運標志,讓學生說名稱。(設計意圖:聯(lián)系學生喜愛的福娃形
  • ai ei ui 教學設計ppt課件

    10-24 / 2.4M

    推薦理由:小朋友,你們好!就在剛才,我遇見了六位老朋友。聽說我來上課,就嚷嚷著要一同來,你們歡迎嗎?一起喊出他
  • zh ch sh r公開課教案ppt

    10-24 / 2.7M

    推薦理由:本課共包括四部分內(nèi)容:第一部分是情境圖;第二部分是zh、ch、sh、r和整體認讀音節(jié)zhi、chi、shi、ri兩拼音

相關評論

閱讀本文后您有什么感想? 已有 人給出評價!

  • 2791 喜歡喜歡
  • 2101 頂
  • 800 難過難過
  • 1219 囧
  • 4049 圍觀圍觀
  • 5602 無聊無聊
熱門評論
最新評論
發(fā)表評論 查看所有評論(0)
昵稱:
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
字數(shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)