恢復SET UNUSED操作

2021-05-26 07:10:22 字數 2245 閱讀 9048

可以使用 set unused 選項標記一列或者多列不可用。

使用drop set unused 選項刪除被被標記為不可用的列。

語法:alter table table set unused (collist多個) 或者 alter table table set unused column col單個;

alter table table drop unused columns;

set unused不會真地刪除字段,可恢復。

如何修復被設定為unused的字段,以下的方法可以恢復(以下步驟執行前要做好備份),沒有經驗的dba不要輕易嘗試。

建立實驗表test_unused_columns

1、create table test_unused_columns

test_1 varchar2(2),

test_2 varchar2(2),

test_3 varchar2(2),

test_4 varchar2(2),

test_5 varchar2(2)

insert into test_unused_columns values('a1','a2','a3','a4','a5');

insert into test_unused_columns values('b1','b2','b3','b4','b5');

insert into test_unused_columns values('c1','c2','c3','c4','c5');

commit;

2、select * from test_unused_columns;

--查詢結果

test_1  test_2  test_3  test_4  test_5

a1      a2      a3      a4      a5

b1      b2      b3      b4      b5

c1      c2      c3      c4      c5

3、 ---設定test_5不可用

alter table test_unused_columns set unused column test_5; 

select * from test_unused_columns;

--查詢結果

test_1  test_2  test_3  test_4

a1      a2      a3      a4    

b1      b2      b3      b4     

c1      c2      c3      c4 

以下進行恢復

1、用管理員身份登入,sys、system均可

2、查詢test_unused_columns在資料庫中分配的編號

sselect obj# from obj$ where name='test_unused_columns';

--查詢結果

obj#

select col#,intcol#,name from col$ where obj#=53916;

--查詢結果

col#  intcol#  name

1      1        test_1

2      2        test_2

3      3        test_3

4      4        test_4

0      5        sys_c00005_11022820:28:45$

3、更新

update col$ set col#=intcol# where obj#=53916;

update tab$ set cols=cols+1 where obj#=53916;

update col$ set name='test_5' where obj#=53916 and col#=5;

update col$ set property=0 where obj#=53916;

commit;

4、重啟資料庫

select * from test_unused_columns;

--查詢結果

test_1  test_2  test_3  test_4  test_5

a1      a2      a3      a4      a5

b1      b2      b3      b4      b5

c1      c2      c3      c4      c5

恢復完成

恢復SET UNUSED操作

邊學習邊分享哈,以下方法已經過本人測試 可以使用 set unused 選項標記一列或者多列不可用。使用drop set unused 選項刪除被被標記為不可用的列。語法 alter table table set unused collist多個 或者 alter table table set ...

rman 恢復操作

rman恢復機制 修復命令 restore object name option 子主題 2 恢復命令 recover device type object name option 子主題 2 noarchivelog 模式下恢復的步驟 以dba許可權登陸sql plus sys oacl as s...

git reflog恢復本地操作 誤操作

git reflog 可以檢視所有分支的所有操作記錄 包括 包括commit和reset的操作 包括已經被刪除的commit記錄,git log則不能察看已經刪除了的commit記錄 具體乙個例子,假設有三個commit,git st commit3 add test3.c commit2 add ...