Database초보우낙

2.(새로운 오라클 기능 1) 보이지않는 컬럼 본문

oracle 12c

2.(새로운 오라클 기능 1) 보이지않는 컬럼

오운학 2024. 4. 26. 10:37

오라클 12c 버전부터 "보이지 않는 컬럼" 기능이 도입이 되었습니다

 

* 보이지 않은 컬럼 기능의 유효성
1) 보안강화 :
특정 데이터의 보안을 유지하는 경우 , 중요한 컬럼을 기본적으로 감춰서 데이터 보안을 강화합니다.

2) 성능 최적화 :
데이터 베이스에서 보이지 않는 컬럼을 설정하면, 일반적인 쿼리작업에서 해당 컬럼이 자동으로 무시됩니다. 이는 쿼리 성능을 향상시키는데 도움이 됩니다. 대량의 데이터를 다루는 복잡한 쿼리의 경우 불필요한 컬럼을 계산에서 제외함으로써 더 빠른 처리가 가능합니다

3) 유연한 데이터 관리 :
데이터 마이그레이션중에 유용하게 사용될 수 있습니다.예를 들어 데이터 필드를 새로운 형식이나 구조를 점진적으로 변환하려고 할때 기존 컬럼을 설정하고 새로운 컬럼을 도입할 수 있습니다.
이렇게하면 기존 애플리케이션은 영향을 받지않고 데이터 스키마 변경을 점진적으로 진행할 수 있습니다.

4) 테이블의 컬럼 순서를 변경할 수 있습니다.
er 다이어그램에 나온 테이블의 컬럼 순서와 동일하게 DB컬럼 순서를 맞춰야할 때 이 기능이 유용합니다.

 

 

 

테이블을 생성하고 데이터를 삽입

create table test2
(reg_no number(10),
message varchar2(100),
userid varchar2(10) invisible);

insert into test2 values(1,'aaa');
insert into test2 values(2,'bbb');

select * from test2;

 

문제1. 데이터를 삽입하고 보이지 않은 컬럼도 보이게 출력하세요

insert into test2 value(3,'ccc','scott');

보이지 않은 컬럼이 있는경우 insert를 할때는 컬럼명을 다 기술해줘야한다

insert into test2(reg_no,message,userid) values(3,'ccc','scott');

 

 

 

* 로 모든 테이블을 볼려고해도 보이지 않은 컬럼은 안보인다

보이지 않는 컬럼을 볼려면 따로 컬럼명을 써줘야한다.

 

고객데이터의 보안을 위해서 DB쪽에서 중요한 컬럼에 대해 보이지 않는 컬럼으로 지정하는 기술

 


 

문제2. test2 테이블의 message와 userid 컬럼의 순서를 변경해서 보이게 하세요

alter table test2 modify message invisible;
select * from test2

alter table test2 modify userid visible;
select * from test2;

alter table test2 modify message visible;
select * from test2;

 




위의 기능을 모르는 dba들은 다음과 같이 컬럼 순서를 변경합니다.

※ 데이터 이행과 이관을 할때 꼭 알아야하는 주요용어 2가지? 

1. ctas 용어 :      

drop  table  emp_to_be; 

create  table  emp_to_be
	as
		select  empno,ename, job, mgr, hiredate, comm,deptno,sal
		from emp; 

drop  table  emp;

rename  emp_to_be  to emp;



 위의 작업으로 컬럼명을 변경하는 것은 부담이 큽니다.
 drop 도 해야하고 테이블을 생성해야하기 때문에 대용량 테이블이면 공간이
 많이 차지하게 됩니다.


2. itas 용어 :    

create  table   emp_backup
    as
        select  *
        from  emp
        where  1= 2; 

insert   into   emp_backup
select  empno,ename, job, mgr, hiredate,sal, comm, deptno
from emp;



문제1.  컬럼을 안보이게 하는 기능을 이용해서 emp 테이블의 empno 맨 뒤로
          보내시오 !

 

 

alter table emp modify empno invisible;

alter table emp modify empno visible;