테이블 read only 설정
2010. 1. 27. 16:39ㆍOracle/Oracle Tip
반응형
[출처 : PRODBA 의 가을바람님의 글을 보고 테스트를 해보았습니다.]
1. 트리거의 이용
SQL> create or replace trigger emp_sal_read_only --트리거 이름
2 before insert or update or delete
3 on emp --원하는 테이블명
4 begin
5 raise_application_error
6 (-20001,'Table EMP is read only, You cannot make changes to the data.');
7 end;
8 /
Trigger created.
SQL> delete from emp;
delete from emp
*
ERROR at line 1:
ORA-20001: Table EMP is read only, You cannot make changes to the data.
ORA-06512: "SCOTT.EMP_SAL_READ_ONLY", 줄 2에서
ORA-04088: 트리거 'SCOTT.EMP_SAL_READ_ONLY'의 수행시 오류
SQL> drop trigger emp_sal_read_only;
Trigger dropped.
SQL> delete from emp;
14 rows deleted.
SQL> rollback;
Rollback complete.
SQL>
2. read only tablespace 를 이용
SQL> select * from tab
TNAME TABTYPE CLUSTERID
---------- -------------- ----------
DEPT TABLE
EMP TABLE
BONUS TABLE
SALGRADE TABLE
AA TABLE
SALES TABLE
DEPT_TEST TABLE
EMP_TEST TABLE
NUM_TEST TABLE
9 rows selected.
SQL> create tablespace temp_readonly
2 datafile '/oracle/oradata/PROD/Disk5/temp_readonly.dbf' size 5M reuse
3 autoextend on;
Tablespace created.
SQL> alter table emp_test move tablespace temp_readonly;
Table altered.
SQL> alter tablespace temp_readonly read only;
Tablespace altered.
SQL> delete from emp_test;
delete from emp_test
*
ERROR at line 1:
ORA-00372: 파일 7는 지금 수정될 수 없습니다
ORA-01110: 7 데이터 파일: '/oracle/oradata/PROD/Disk5/temp_readonly.dbf'
SQL> drop tablespace temp_readonly including contents and datafiles cascade constraints;
Tablespace dropped.
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
---------- -------------- ----------
DEPT TABLE
EMP TABLE
BONUS TABLE
SALGRADE TABLE
AA TABLE
SALES TABLE
DEPT_TEST TABLE
NUM_TEST TABLE
8 rows selected. --> emp_test가 사라졌네요..잉ㅜㅜ 조심하세요!!
나의 의견 :
1. 트리거를 이용한 방법은 새롭게 알게된 것이며, 테스트 해 본 결과 유용하게 쓰일 것 같습니다.
2. 테이블을 옮기고 테이블스페이스를 다시 수정하고 번거로운 작업있긴하지만,
이것 또한 테이블을 read only하는데 유용한 정보입니다.
위 내용과 무관하지만 테이블스페이스를 삭제하면 그 안에 데이터도 사라진다는 것 또한 잊지마세요!!
반응형
'Oracle > Oracle Tip' 카테고리의 다른 글
long형 replace (0) | 2011.01.24 |
---|---|
LONG과 CLOB 에 대한 데이터 이전. (0) | 2011.01.04 |
tablespace 생성 스크립트 (0) | 2010.04.30 |
1년치 날짜 생성. (0) | 2010.01.14 |
유용 update문 (0) | 2009.12.09 |