> 안녕하세요. 오라클 초보입니다.
> 제가 unused 키워드를 이용하여 사용하지 않는 칼럼을 만들었는데...
>
> alter table test set unused column num;
>
> 이런식으로요... num 칼럼을 안쓰는 터라 그냥 안보이게 해바렸죠...
> 그런데 다시 쓸일이 생겨서 복구를 할려는데.. 이게 안되네요...
>
> unused 대신에 used 키워드를 쓰면 될꺼 같은데 안되네요...
> 이거 복구하는 방법 좀 갈켜주세용...^^;;;
>
> 고수님들 부탁합니다.
저도 8i는 현재 테스트용으로 사용중이라 자세히는 알지 못합니다.
매뉴얼을 참조하여 잠깐 테스트한 바에 의하면 다음과 같은 결론이 나오는군요.
unused 는 칼럼을 drop 하는 옵션 중의 하나입니다.
그래서 unused를 사용하면 실제로 디스크상의 스페이스는 재사용할 수 없고
데이타도 있지만 drop 된 것과 같다고 합니다.
그리고 USER_UNUSED_COL_TABS, DBA_UNUSED_COL_TABS, ALL_UNUSED_COL_TABS 를
통해서 삭제된 칼럼을 확인할 수 있다고 합니다.
그리고 비록 데이타 있다고 하더라도 확인할 수 없고,
같은 이름의 칼럼은 새롭게 만들수 있다고 하네요.
그런데 새로 만드니까 당연히 데이타는 하나도 없겠지요?
아래 매뉴얼 일부와 테스트 결과입니다.
SET UNUSED
--------------------------
marks one or more columns as unused. Specifying this clause does
not actually remove the target columns from each row in the table
(that is, it does not restore the disk space used by these columns).
Therefore, the response time is faster than it would be if you execute
the DROP clause.
You can view all tables with columns marked as unused in the data
dictionary views USER_UNUSED_COL_TABS, DBA_UNUSED_COL_
TABS, and ALL_UNUSED_COL_TABS. For information on these
views, see Oracle8i Reference.
Unused columns are treated as if they were dropped, even though
their column data remains in the table’s rows. After a column has
been marked as unused, you have no access to that column. A
"SELECT *" query will not retrieve data from unused columns. In
addition, the names and types of columns marked unused will not be
displayed during a DESCRIBE, and you can add to the table a new
column with the same name as an unused column.
SQL> create table t1 as select * from emp ;
Table created.
SQL> desc t1
Name Null? Type
----------------------------------------- -------- ----------------
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
SQL> select EMPNO, SAL from t1;
EMPNO SAL
---------- ----------
7369 800
7499 1600
7521 1250
7566 2975
7654 1250
7698 2850
7782 2450
7788 3000
7839 5000
7844 1500
7876 1100
EMPNO SAL
---------- ----------
7900 950
7902 3000
7934 1300
SQL> alter table t1 set unused ( SAL ) ;
Table altered.
SQL> desc t1
Name Null? Type
----------------------------------------- -------- ---------------------
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
SQL> alter table t1 add ( SAL NUMBER(7,2) ) ;
Table altered.
SQL> desc t1
Name Null? Type
----------------------------------------- -------- ------------------
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
SAL NUMBER(7,2)
SQL> select EMPNO, SAL from t1 ;
EMPNO SAL
---------- ----------
7369
7499
7521
7566
7654
7698
7782
7788
7839
7844
7876
EMPNO SAL
---------- ----------
7900
7902
7934
|