FK가 걸려있는 테이블에서 암복호화 테스트를 해보고 싶었다.
하지만 외래키가 있는 테이블을 암호화 하면 에러가 뜬다.
당연히 외래키가 걸려있으므로 부모 테이블을 변경할 수 없음. (무결성에 위배되기 때문)
그래서 FK를 삭제 후 다시 재 생성 해야하는데 쉽게 재생성 하는 방법을 찾다가
Oracle SQL Developer에서 제공해주는 테이블 SQL문과 DDL Save를 이용하여 제약조건을 다시 쉽게 추가하였다.
먼저 암/복호화 테스트
(물론 외래키가 걸려있지 않은 다른 데이터는 암/복호화가 잘 되는 것을 확인할 수 있다.)
외래키 삭제
Alter table [스키마.]테이블명 drop constraints 제약조건명;
select constraint_name, constraint_type, table_name, search_condition from user_constraints where table_name = 'EMPLOYEES';
alter employees drop constraints FK_EMP_DEP_ID;
우선 암복호화를 하기 위해서 number를 varchar2로 변경하겠다. (employees, departments 둘다 변경)
alter table employees modify department_id VARCHAR2(50);
alter table departments modify department_id VARCHAR2(50);
그러면 ORA-01439: column to be modified must be empty to change datatype 01439. 00000 - "column to be modified must be empty to change datatype"
이미 숫자 데이터가 들어가 있어서 그렇다. 숫자 데이터를 지우고 다시 변경
Delete문
Delete [from] [스키마.]테이블명 where delete 조건;
데이터 다시 추가
insert into employees values('111111','111111-1111111');
insert into departments values('111111','seulgi');
외래키 SQL문 이용해서 쉽게 생성
다시 외래키를 생성하고 싶으면 테이블의 SQL 문을 이용하여 쉽게 생성할 수 있다.
테이블 더블클릭 후 관련 sql문을 그대로 복사 붙여넣기 하면 된다.
다시 생성된 것을 확인할 수 있다
DDL SAVE
하지만 이미 FK를 삭제 한 후여서 DDL문을 확인할 수 없는 문제를 방지하기 위해서 DDL 파일을 저장 할 수 있다.
저장하고 싶은 테이블 마우스 오른쪽 클릭 -> Quick DDL -> Save to File
예를 들어 primary key를 삭제 하기 전에 저장해놓고 primary key를 삭제 한 후 기존 primary key sql문을 복사 붙여넣기 하면 쉽게 primary key를 쉽게 생성할 수 있다!
============================================================================
ERD: 데이터베이스 개체 설계도
ERD(Entity Relationship Diagram)는 개체(테이블) 간의 관계를 이해하기 쉽게 그림으로 표현한 것으로 데이터를 조작하고 분석하는 기초 자료로 활용됩니다. DB의 설계 도면이라고 할 수 있습니다.
ERD를 해석할 수 있다면 테이블 간의 연관성과 관계의 전체적인 모습을 파악하고 데이터의 흐름과 프로세스를 확인하여 데이터를 효율적으로 조작하고 분석할 수 있습니다.
관계 : 개체 관계 표기법
ERD는 ER 다이어그램이라고도 부르는데 E는 개체(entity)라는 의미고 R은 관계(relation)라는 의미입니다. 개체는 정보를 저장하고 관리하기 위한 집합이자 식별 가능한 것입니다.
Oracle SQL Developer에서 ERD를 확인하는 방법
File -> Data Modeler -> Import -> Data Dictionary
접속할 계정 선택 후 다음
DB 선택 후 다음
임포트하려는 객체 선택 후 다음
테이블의 키와 제약 조건 확인 시 예
KEY |
NULL 가능 여부 |
열 이름 |
데이터 타입 |
P |
No(*) |
EMPLOYEE_ID |
NUMBER(6,0) |
U |
No(*) |
|
VARCHAR2(25 BYTE) |
F |
No(*) |
JOB_ID |
VARCHAR2(10 BYTE) |
F |
Yes |
DEPARTMENT_ID |
NUMBER(4,0) |
P: 기본 키 (Primary key)
No(*): NOT NULL(*)
U: 고유 키 (Unique key)
F: 외래 키 (foreign key)
PF*:복합 키 : 하나 이상의 키 값을 조합하여 만든 키 기본 키 이자 외래 키라는 의미
즉 어떤 컬럼을 primary key로 생성하고 나중에 외래키로도 생성했을 때 PF라고 뜨게 된다.
============================================================================
ORACLE SQL Developer 글씨깨짐 해결
에러를 보려고 하는데 계속 ???? ??????(거꾸로) 이런식으로 떠서 에러를 해결 할 수없다! 그래서 글씨깨짐을 해결하려고 한다.
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
KOREAN_KOREA.KO16MSWIN949로 값을 변경한 후 레지스트리편집기를 종료
시작 + R로 cmd 입력해 커맨드 입력창 실행
sqlplus /nolog
conn /as sysdba;
update props$ set VALUE$='KO16MSWIN949' where name='NLS_CHARACTERSET';
update props$ set VALUE$='AMERICAN_AMERICA.KO16MSWIN949' where name='NLS_LANGUAGE';
commit;
shutdown immediate;
startup
select name, value$ from sys.props$;
쿼리문 결과
NAME |
VALUE$ |
NLS_LANGUAGE |
AMERICAN_AMERICA.KO16MSWIN949 |
NLS_TERRITORY |
AMERICA |
NLS_CHARACTERSET |
KO16MSWIN949 |
DB 재연결 후
잘 출력되는 것을 확인할 수 있다.
출처: https://secuinfo.tistory.com/entry/WEB-Server-8 [Song's Lab]
'DATABASE > DB study' 카테고리의 다른 글
Big data insert sql script (0) | 2020.05.22 |
---|---|
Database Object (check, view, index, synonym, sequence) (0) | 2020.04.17 |
Database package (0) | 2020.03.16 |
merge, insert, alter, delete (0) | 2020.03.12 |
BLOB data create & Encryption/Decryption (0) | 2020.01.17 |
댓글