沒有備份的情況下如何處理logical & physical corrupt block
###生成測試表和索引
create tablespace tsind datafile '/oradata06/testaaaaa/tsind_1.dbf' size 32m;
create table t0609_2 tablespace TS0608 as select *from all_users where 0=1;
insert into t0609_2 select * from all_users where rownum<2;
commit;
alter table t0609_2 minimize records_per_block;
delete t0609_2;
commit;
insert into t0609_2 select *from all_users;
commit;
> desc t0609_2;
Name Null? Type
----------------------------------------------------------------------------------- -------- --------------------------------------------------------
USERNAME NOT NULL VARCHAR2(30)
USER_ID NOT NULL NUMBER
CREATED NOT NULL DATE
set linesize 150 pagesize 30
select dbms_rowid.rowid_relative_fno(rowid),dbms_rowid.rowid_block_number(rowid),username,user_id,created from t0609_2;
DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID) DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID) USERNAME USER_ID CREATED
------------------------------------ ------------------------------------ ------------------------------ ---------- -----------------
9 140 XS$NULL 2147483638 20150130 23:25:24
9 140 SYSADM11 57 20150324 19:03:42
9 141 SCOTT4 55 20150202 11:43:52
9 141 FSYSTEM 56 20150220 07:09:08
9 142 SCOTT3 54 20150201 21:01:12
9 142 SCOTT2 53 20150201 21:01:12
9 143 XDB 52 20150130 23:22:39
9 143 CTXSYS 49 20150130 22:32:12
9 144 REMOTE_SCHEDULER_AGENT 48 20150130 16:41:15
9 144 ANONYMOUS 41 20150130 16:21:49
9 145 MGMT_VIEW 39 20150109 21:13:05
9 145 SYSMAN 37 20150109 21:09:40
9 146 SCOTT 36 20141209 15:17:00
9 146 PPIP 35 20141202 16:06:22
9 147 APPQOSSYS 31 20141110 21:28:49
9 147 DBSNMP 30 20141110 21:28:47
9 148 ORACLE_OCM 21 20141110 21:18:49
9 148 DIP 14 20141110 21:18:04
9 149 OUTLN 9 20141110 21:16:14
9 149 SYSTEM 5 20141110 21:16:12
9 150 SYS 0 20141110 21:16:12
create index ind_t0609_2_uid on t0609_2(user_id) tablespace tsind;
////////////
// 方法1:使用dbms_repair.skip_corrupt_block跳過physical corrupt
////////////
---BBED physical corrupt block 9/140
set filename '/oradata06/testaaaaa/ts0608_1.dbf'
set block 140
BBED> print chkval_kcbh
ub2 chkval_kcbh @16 0x7fd8
BBED> modify /x 0x8888
File: /oradata06/testaaaaa/ts0608_1.dbf (0)
Block: 140 Offsets: 16 to 135 Dba:0x00000000
------------------------------------------------------------------------
88880000 01000000 00008e7c 6381b7a5 0b920000 00023200 02400088 000a0000
00010343 00c14286 2d6c0700 20020000 6381b7d8 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00010002 ffff0016 1f2d1f51
1f510000 00021f2d 1f470000 00000000 00000000 00000000
<32 bytes per line>
alter system flush buffer_cache;
---create admin_tables
exec dbms_repair.admin_tables(table_name=>'REPAIR_0609_2',table_type=>dbms_repair.REPAIR_TABLE,action=>dbms_repair.CREATE_ACTION,tablespace=>'XDBTS');
---check_object
variable v_corrupt_count number;
exec DBMS_REPAIR.CHECK_OBJECT (schema_name=>'SYS',object_name=>'T0609_2',object_type=>dbms_repair.TABLE_OBJECT,repair_table_name=>'REPAIR_0609_2',corrupt_count=>:v_corrupt_count);
print :v_corrupt_count
V_CORRUPT_COUNT
---------------
1
---repair_表內容,已被標記為corrupt
col REPAIR_DESCRIPTION format a30
col OBJECT_NAME format a10
set linesize 140
select object_id,relative_file_id,block_id,object_name,repair_description,marked_corrupt,check_timestamp,fix_timestamp from dba_REPAIR_0609_2;
OBJECT_ID RELATIVE_FILE_ID BLOCK_ID OBJECT_NAM REPAIR_DESCRIPTION MARKED_COR CHECK_TIMESTAMP FIX_TIMESTAMP
---------- ---------------- ---------- ---------- ------------------------------ ---------- ----------------- -----------------
36476 9 140 T0609_2 mark block software corrupt TRUE 20150609 15:58:10
---此時dump block 9/140的結果是:
Block dump from disk:
buffer tsn: 15 rdba: 0x0240008c (9/140)
scn: 0x0b92.6381b7d8 seq: 0x01 flg: 0x06 tail: 0xb7d80601
frmt: 0x02 chkval: 0x8888 type: 0x06=trans data
Hex dump of corrupt header 3 = CHKVAL
Dump of memory from 0x000000011085DA00 to 0x000000011085DA14
11085DA00 06A20000 0240008C 6381B7D8 0B920106 [.....@..c.......]
11085DA10 88880000 [....]
Hex dump of corrupt block
---因為執行完check_object後block已經被marked corrupt,所以再次執行fix_corrupt_blocks返回number of fixed block is 0
variable v_fix_count number;
exec DBMS_REPAIR.FIX_CORRUPT_BLOCKS(schema_name=>'SYS',object_name=>'T0609_2',object_type=>DBMS_REPAIR.TABLE_OBJECT,repair_table_name=>'REPAIR_0609_2',fix_count=>:v_fix_count);
print :v_fix_count
V_FIX_COUNT
-----------
0
---FTS訪問返回0 rows,無論結果集是否包含corrupt block裡的記錄
> select /*+ full(t0609_2) */ * from t0609_2;
select /*+ full(t0609_2) */ * from t0609_2
*
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 9, block # 140)
ORA-01110: data file 9: '/oradata06/testaaaaa/ts0608_1.dbf'
SQL> select /*+ full(t0609_2) */ * from t0609_2 where user_id<60;
select /*+ full(t0609_2) */ * from t0609_2 where user_id<60
*
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 9, block # 140)
ORA-01110: data file 9: '/oradata06/testaaaaa/ts0608_1.dbf'
> select /*+ full(t0609_2) */ * from t0609_2 where user_id<30;
select /*+ full(t0609_2) */ * from t0609_2 where user_id<30
*
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 9, block # 140)
ORA-01110: data file 9: '/oradata06/testaaaaa/ts0608_1.dbf'
---index訪問時如果結果集不包含corrupt block裡的記錄,能正常返回,否則可能會部分rows或者0 rows
***結果集不在corrupt,正常返回所有滿足條件的rows
> select /*+ index(t0609_2,ind_t0609_2_uid) */ * from t0609_2 where user_id<57;
USERNAME USER_ID CREATED
------------------------------ ---------- -----------------
SYS 0 20141110 21:16:12
SYSTEM 5 20141110 21:16:12
OUTLN 9 20141110 21:16:14
DIP 14 20141110 21:18:04
ORACLE_OCM 21 20141110 21:18:49
DBSNMP 30 20141110 21:28:47
APPQOSSYS 31 20141110 21:28:49
PPIP 35 20141202 16:06:22
SCOTT 36 20141209 15:17:00
SYSMAN 37 20150109 21:09:40
MGMT_VIEW 39 20150109 21:13:05
ANONYMOUS 41 20150130 16:21:49
REMOTE_SCHEDULER_AGENT 48 20150130 16:41:15
CTXSYS 49 20150130 22:32:12
XDB 52 20150130 23:22:39
SCOTT2 53 20150201 21:01:12
SCOTT3 54 20150201 21:01:12
SCOTT4 55 20150202 11:43:52
FSYSTEM 56 20150220 07:09:08
***結果集部分包含在corrupt blocks,返回non-corrupt block所含rows的情況
> select /*+index(t0609_2,ind_t0609_2_uid) */ * from t0609_2 where user_id<60;
USERNAME USER_ID CREATED
------------------------------ ---------- -----------------
SYS 0 20141110 21:16:12
SYSTEM 5 20141110 21:16:12
OUTLN 9 20141110 21:16:14
DIP 14 20141110 21:18:04
ORACLE_OCM 21 20141110 21:18:49
DBSNMP 30 20141110 21:28:47
APPQOSSYS 31 20141110 21:28:49
PPIP 35 20141202 16:06:22
SCOTT 36 20141209 15:17:00
SYSMAN 37 20150109 21:09:40
MGMT_VIEW 39 20150109 21:13:05
ANONYMOUS 41 20150130 16:21:49
REMOTE_SCHEDULER_AGENT 48 20150130 16:41:15
CTXSYS 49 20150130 22:32:12
XDB 52 20150130 23:22:39
ERROR:
ORA-01578: ORACLE data block corrupted (file # 9, block # 140)
ORA-01110: data file 9: '/oradata06/testaaaaa/ts0608_1.dbf'
***結果集部分包含在corrupt blocks,返回0 rows的情況
> select /*+ index(t0609_2,ind_t0609_2_uid) */ * from t0609_2 where user_id>50;
ERROR:
ORA-01578: ORACLE data block corrupted (file # 9, block # 140)
ORA-01110: data file 9: '/oradata06/testaaaaa/ts0608_1.dbf'
---建立orphan_ table
exec dbms_repair.admin_tables(table_name=>'ORPHAN_IND_0609_2',table_type=>dbms_repair.ORPHAN_TABLE,action=>dbms_repair.CREATE_ACTION,tablespace=>'XDBTS');
---使用DBMS_REPAIR.DUMP_ORPHAN_KEYS檢索出index中有多少條目對應於corrupt block裡的記錄
variable v_ind_corrupt number;
EXEC DBMS_REPAIR.DUMP_ORPHAN_KEYS (SCHEMA_NAME => 'SYS',OBJECT_NAME => 'IND_T0609_2_UID',OBJECT_TYPE => dbms_repair.index_object,REPAIR_TABLE_NAME => 'REPAIR_0609_2',ORPHAN_TABLE_NAME=> 'ORPHAN_IND_0609_2',KEY_COUNT =>:v_ind_corrupt);
print :v_ind_corrupt
V_IND_CORRUPT
-------------
2
---ORPHAN_IND_0609_2表中記錄了corrupt block裡的rowid
col index_name format a15
col table_name format a8
col keyrowid format a20
col key format a25
set linesize 140
select index_name,index_id,table_name,table_id,keyrowid,key,dump_timestamp from ORPHAN_IND_0609_2;
INDEX_NAME INDEX_ID TABLE_NA TABLE_ID KEYROWID KEY DUMP_TIMESTAMP
--------------- ---------- -------- ---------- -------------------- ------------------------- -----------------
IND_T0609_2_UID 36477 T0609_2 36476 AAAI58AAJAAAACMAAA *BAAAAAAGxRYwMSUn/g 20150609 16:56:39
IND_T0609_2_UID 36477 T0609_2 36476 AAAI58AAJAAAACMAAB *BAAAAAACwTr+ 20150609 16:56:39
---在無法recover corrupt block的情況下可以使用skip_corrupt_blocks跳過
exec DBMS_REPAIR.SKIP_CORRUPT_BLOCKS(schema_name=>'SYS',object_name=>'T0609_2',object_type=>DBMS_REPAIR.TABLE_OBJECT,flags=>dbms_repair.SKIP_FLAG);
***注意skip_corrupt_block的動作是可逆的,可以使用NOSKIP_FLAG來重現ORA-01578
exec DBMS_REPAIR.SKIP_CORRUPT_BLOCKS(schema_name=>'SYS',object_name=>'T0609_2',object_type=>DBMS_REPAIR.TABLE_OBJECT,flags=>dbms_repair.NOSKIP_FLAG);
> select owner,table_name,skip_corrupt from dba_tables where table_name='T0609_2';
OWNER TABLE_NAME SKIP_COR
------------------------------ ------------------------------ --------
SYS T0609_2 ENABLED
---測試一下跳過corrupt之後的全表以及索引掃描
**以下FTS訪問均沒有ORA-01578出現
select /*+ full(t0609_2) */ * from t0609_2;
select /*+ full(t0609_2) */ * from t0609_2 where user_id<60;
select /*+ full(t0609_2) */ * from t0609_2 where user_id<30;
**以下INDEX訪問也沒有ORA-01578出現
select /*+ index(t0609_2,ind_t0609_2_uid) */ * from t0609_2 where user_id<57;
select /*+ index(t0609_2,ind_t0609_2_uid) */ * from t0609_2 where user_id<60;
select /*+ index(t0609_2,ind_t0609_2_uid) */ * from t0609_2 where user_id>50;
dbms_repair.skip_corrupt_blocks雖然能夠方便的跳過corrupt block,但有可能帶來index訪問和FTS訪問結果不一致的情況,同樣的一條查詢語句第一條走索引,第二條走全表掃描,得到的結果卻不一樣
> select /*+ index(t0609_2,ind_t0609_2_uid) */ user_id from t0609_2 where user_id>56;
USER_ID
----------
57
2147483638
> select /*+ full(t0609_2) */ user_id from t0609_2 where user_id>56;
no rows selected
為了避免產生不一致的結果,需要重建索引,重建索引之前可以選擇將儲存在索引中的鍵值先儲存下來以儘可能挽回較多的資料,例如:
select /*+ index(t0609_2,ind_t0609_2_uid) */ user_id from t0609_2 minus select /*+ full(t0609_2) */ user_id from t0609_2;
USER_ID
----------
57
2147483638
---重建索引(注意必須在skip corrupt block的情況下才能重建索引,否則也會有ORA-01578)
exec DBMS_REPAIR.SKIP_CORRUPT_BLOCKS(schema_name=>'SYS',object_name=>'T0609_2',object_type=>DBMS_REPAIR.TABLE_OBJECT,flags=>dbms_repair.NOSKIP_FLAG);
> alter index ind_t0609_2_uid rebuild online;
alter index ind_t0609_2_uid rebuild online
*
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 9, block # 140)
ORA-01110: data file 9: '/oradata06/testaaaaa/ts0608_1.dbf'
exec DBMS_REPAIR.SKIP_CORRUPT_BLOCKS(schema_name=>'SYS',object_name=>'T0609_2',object_type=>DBMS_REPAIR.TABLE_OBJECT,flags=>dbms_repair.SKIP_FLAG);
> alter index ind_t0609_2_uid rebuild online;
Index altered.
> select /*+ index(t0609_2,ind_t0609_2_uid) */ user_id from t0609_2 where user_id>56;
no rows selected
> select /*+ full(t0609_2) */ user_id from t0609_2 where user_id>56;
no rows selected
////////////
// 方法2:使用dbms_repair.skip_corrupt_block跳過logical corrupt,和physical corrupt不同需要先使用fix_corrupt_blocks將logical corrupt block標記為soft corrupt block
////////////
###準備測試表
create tablespace ts0610 datafile '/oradata06/testaaaaa/ts0610_1.dbf' size 32m;
create table scott.t0610_1 tablespace ts0610 as select * from all_users;
alter system flush buffer_cache;
set linesize 120 pagesize 30
select distinct dbms_rowid.rowid_relative_fno(rowid),dbms_rowid.rowid_block_number(rowid) from scott.t0610_1;
DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID) DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)
------------------------------------ ------------------------------------
12 131
###BBED修改kdbhnrow,從21改為40
BBED> set filename '/oradata06/testaaaaa/ts0610_1.dbf'
FILENAME /oradata06/testaaaaa/ts0610_1.dbf
BBED> set block 131
BLOCK# 131
BBED> print kdbhnrow
sb2 kdbhnrow @126 21
BBED> set offset 126
OFFSET 126
BBED> examine /h
kdbh.kdbhnrow @126
-------------
0x0015
BBED> modify /x 0x0028
BBED> sum apply
Check value for File 0, Block 131:
current = 0x0b22, required = 0x0b22
BBED> print kdbhnrow
sb2 kdbhnrow @126 40
###select不受影響
> alter system flush buffer_cache;
System altered.
> select count(*) from scott.t0610_1;
COUNT(*)
----------
21
###使用dbms_repair.check_object檢測到有logical corrupt block
exec dbms_repair.admin_tables(table_name=>'REPAIR_0610_1',table_type=>dbms_repair.REPAIR_TABLE,action=>dbms_repair.CREATE_ACTION,tablespace=>'XDBTS');
variable v_corrupt_count number;
exec DBMS_REPAIR.CHECK_OBJECT (schema_name=>'SYS',object_name=>'T0609_2',object_type=>dbms_repair.TABLE_OBJECT,repair_table_name=>'REPAIR_0610_1',corrupt_count=>:v_corrupt_count);
print :v_corrupt_count
V_CORRUPT_COUNT
---------------
1
---DBA_REPAIR_0610_1裡的marked_corrupt=FALSE表示該block尚未被標記為soft corrupt
col REPAIR_DESCRIPTION format a30
col OBJECT_NAME format a10
set linesize 140
select object_id,relative_file_id,block_id,object_name,repair_description,marked_corrupt,check_timestamp,fix_timestamp from DBA_REPAIR_0610_1;
OBJECT_ID RELATIVE_FILE_ID BLOCK_ID OBJECT_NAM REPAIR_DESCRIPTION MARKED_COR CHECK_TIMESTAMP FIX_TIMESTAMP
---------- ---------------- ---------- ---------- ------------------------------ ---------- ----------------- -----------------
36543 12 131 T0610_1 mark block software corrupt FALSE 20150610 20:59:35
###為避免logical corrupt的影響擴散,使用dbms_repair.fix_corrupt_blocks標記為soft corrupt block
variable v_fix_count number;
exec DBMS_REPAIR.FIX_CORRUPT_BLOCKS(schema_name=>'SCOTT',object_name=>'T0610_1',object_type=>DBMS_REPAIR.TABLE_OBJECT,repair_table_name=>'REPAIR_0610_1',fix_count=>:v_fix_count);
print :v_fix_count
V_FIX_COUNT
-----------
1
---marked_corrupt=TRUE
> select object_id,relative_file_id,block_id,object_name,repair_description,marked_corrupt,check_timestamp,fix_timestamp from DBA_REPAIR_0610_1;
OBJECT_ID RELATIVE_FILE_ID BLOCK_ID OBJECT_NAM REPAIR_DESCRIPTION MARKED_COR CHECK_TIMESTAMP FIX_TIMESTAMP
---------- ---------------- ---------- ---------- ------------------------------ ---------- ----------------- -----------------
36543 12 131 T0610_1 mark block software corrupt TRUE 20150610 20:59:35 20150610 21:07:37
---marked corrupt後再次訪問該表出現了ORA-01578
> select * from scott.t0610_1;
select * from scott.t0610_1
*
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 12, block # 131)
ORA-01110: data file 12: '/oradata06/testaaaaa/ts0610_1.dbf'
###從dbv的輸出也可以看出一個block被標記為corrupt
file='/oradata06/testaaaaa/ts0610_1.dbf'
DBVERIFY: Release 11.2.0.3.0 - Production on Wed Jun 10 21:10:30 2015
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
DBVERIFY - Verification starting : FILE = /oradata06/testaaaaa/ts0610_1.dbf
DBV-00200: Block, DBA 50331779, already marked corrupt
DBVERIFY - Verification complete
Total Pages Examined : 4096
Total Pages Processed (Data) : 1
Total Pages Failing (Data) : 0
Total Pages Processed (Index): 0
Total Pages Failing (Index): 0
Total Pages Processed (Other): 130
Total Pages Processed (Seg) : 0
Total Pages Failing (Seg) : 0
Total Pages Empty : 3965
Total Pages Marked Corrupt : 1
Total Pages Influx : 0
Total Pages Encrypted : 0
Highest block SCN : 1669611986 (2962.1669611986)
###dump block 12/131發現seq: 0xff
Block dump from disk:
buffer tsn: 18 rdba: 0x03000083 (12/131)
scn: 0x0b92.63844acd seq: 0xff flg: 0x04 tail: 0x4acd06ff
frmt: 0x02 chkval: 0xf6df type: 0x06=trans data
Hex dump of block: st=0, typ_found=1
---在無法recover corrupt block的情況下可以使用skip_corrupt_blocks跳過
exec DBMS_REPAIR.SKIP_CORRUPT_BLOCKS(schema_name=>'SCOTT',object_name=>'T0610_1',object_type=>DBMS_REPAIR.TABLE_OBJECT,flags=>dbms_repair.SKIP_FLAG);
---跳過以後不報ORA-01578錯誤了
> select * from scott.t0610_1;
no rows selected
////////////
// 方法3:使用rowid scan的方式從含有physical/logical corrupt block的表裡抽出其它完好的資料
////////////
###sys.t0609_2表
> select dbms_rowid.rowid_relative_fno(rowid),dbms_rowid.rowid_block_number(rowid),username,user_id,created from t0609_2;
DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID) DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID) USERNAME USER_ID CREATED
------------------------------------ ------------------------------------ ------------------------------ ---------- -----------------
10 155 FSYSTEM 56 20150220 07:09:08
10 155 SCOTT4 55 20150202 11:43:52
10 156 XDB 52 20150130 23:22:39
10 156 CTXSYS 49 20150130 22:32:12
10 157 REMOTE_SCHEDULER_AGENT 48 20150130 16:41:15
10 157 ANONYMOUS 41 20150130 16:21:49
10 158 SYSADM11 57 20150324 19:03:42
10 158 XS$NULL 2147483638 20150130 23:25:24
10 159 ORACLE_OCM 21 20141110 21:18:49
10 159 DIP 14 20141110 21:18:04
10 160 OUTLN 9 20141110 21:16:14
10 160 SYSTEM 5 20141110 21:16:12
10 161 SYS 0 20141110 21:16:12
10 161 MGMT_VIEW 39 20150109 21:13:05
10 162 SYSMAN 37 20150109 21:09:40
10 162 SCOTT 36 20141209 15:17:00
10 163 PPIP 35 20141202 16:06:22
10 163 APPQOSSYS 31 20141110 21:28:49
10 164 DBSNMP 30 20141110 21:28:47
###破壞block 10/160
RMAN> recover datafile 10 block 160 clear;
Starting recover at 20150610 21:28:29
using channel ORA_DISK_1
Finished recover at 20150610 21:28:29
> select dbms_rowid.rowid_relative_fno(rowid),dbms_rowid.rowid_block_number(rowid),username,user_id,created from t0609_2;
ERROR:
ORA-01578: ORACLE data block corrupted (file # 10, block # 160)
ORA-01110: data file 10: '/oradata06/testaaaaa/ts0609_1.dbf'
###構造能夠繞過block 10/160的rowid range
***low range of rowid: 10/160 row_number=0
> select data_object_id from dba_objects where object_name='T0609_2';
DATA_OBJECT_ID
--------------
36541
select DBMS_ROWID.ROWID_CREATE(rowid_type=>1,object_number=>36541,relative_fno=>10,block_number=>160,row_number=>0) low_rid from dual;
LOW_RID
------------------
AAAI69AAKAAAACgAAA
***high range of rowid: 10/161 row_number=0
select DBMS_ROWID.ROWID_CREATE(rowid_type=>1,object_number=>36541,relative_fno=>10,block_number=>161,row_number=>0) high_rid from dual;
HIGH_RID
------------------
AAAI69AAKAAAAChAAA
###將完好的記錄select出來
select * from t0609_2 where rowid
union all
select * from t0609_2 where rowid>='AAAI69AAKAAAAChAAA';
USERNAME USER_ID CREATED
------------------------------ ---------- -----------------
FSYSTEM 56 20150220 07:09:08
SCOTT4 55 20150202 11:43:52
XDB 52 20150130 23:22:39
CTXSYS 49 20150130 22:32:12
REMOTE_SCHEDULER_AGENT 48 20150130 16:41:15
ANONYMOUS 41 20150130 16:21:49
SYSADM11 57 20150324 19:03:42
XS$NULL 2147483638 20150130 23:25:24
ORACLE_OCM 21 20141110 21:18:49
DIP 14 20141110 21:18:04
SYS 0 20141110 21:16:12
MGMT_VIEW 39 20150109 21:13:05
SYSMAN 37 20150109 21:09:40
SCOTT 36 20141209 15:17:00
PPIP 35 20141202 16:06:22
APPQOSSYS 31 20141110 21:28:49
DBSNMP 30 20141110 21:28:47
17 rows selected.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/53956/viewspace-1733252/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 無備份情況下undo檔案損壞處理Oracle
- xcodebuild -workspace 情況下,部分坑的處理XCodeUI
- Laravel-admin 處理 select 有 data 鍵的情況Laravel
- 如何處理瀏覽器的斷網情況?瀏覽器
- 檢查備份情況的指令碼指令碼
- Oracle-無備份情況下,如何手動恢復控制檔案Oracle
- 如何這沒有顯示器的情況下獲取樹莓派IP?樹莓派
- 沒有介面文件的情況下如何開展介面自動化測試?
- 開始使用 Org 模式吧,在沒有 Emacs 的情況下模式Mac
- JPA EntityManager 在沒有實體類的情況下返回Map
- 禪道備份處理
- Invoca:85%的客戶互動在沒有人工的情況下得到處理
- 如何在不使用POJO程式碼的情況下建立Java批處理插入 -DZone JavaPOJOJava
- Java程式異常處理的特殊情況Java
- 不應該在沒有 sudo 的情況下執行 Docker 的原因Docker
- 在沒有curl和wget情況下傳送HTTP請求wgetHTTP
- cell single block physical read等待事件BloC事件
- 【產品經理入門記】產品經理如何入門,沒人帶的情況下如何學習?
- 哪些情況應該廢標,廢標後如何處理
- 總結kafka的consumer消費能力很低的情況下的處理方案Kafka
- Mercury Research:2021年 x86處理器市場份額情況
- session儲存資料庫中以及禁用cookie情況下的處理Session資料庫Cookie
- Serv-u 備份處理
- PG監控或判斷邏輯備份是否正常的方法,在pg_dump沒有引數記錄日誌資訊的情況下
- 拼多多沒有流量怎麼辦?如何處理?
- 【伺服器資料恢復】伺服器還原了2年前的舊快照並且沒有最新備份情況下的資料恢復伺服器資料恢復
- SQL中除數為0處理情況演示SQL
- SYSAUX表空間佔用過大情況下的處理(AWR資訊過多)UX
- Nature回應:為什麼在沒有程式碼的情況下發布AlphaFold3?
- js的請求一般情況下在哪些地方會有快取的處理?JS快取
- Java培訓簡述如何處理沒有被捕獲的異常Java
- 處理OGG-02198 Incompatible record (logical EOF) in trail fileAI
- 框架下載後解壓失敗,有沒有遇到同樣情況的?框架
- win10備份空間不足怎麼辦_win10備份空間不足如何處理Win10
- windows 批處理備份目錄指令碼Windows指令碼
- ABAP 動態備份自建表資料到新表(自建表有資料的情況下要改欄位長度或者其他)
- win10備份不成功怎麼處理_win10備份不成功如何解決Win10
- 29. - -次js請求- -般情況下有哪些地方會有快取處理?JS快取
- SAP 沒有QM02許可權的情況下如何為一個質量通知單單據上傳附件?