DATABASE/DB study

Oracle SQL Developer(SQL EXPORT, ERD, letters Breaks Solved)

개폰지밥 2020. 5. 21. 16:26
반응형

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;

 

우선 암복호화를 하기 위해서 numbervarchar2로 변경하겠다. (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를 해석할 수 있다면 테이블 간의 연관성과 관계의 전체적인 모습을 파악하고 데이터의 흐름과 프로세스를 확인하여 데이터를 효율적으로 조작하고 분석할 수 있습니다.

 

관계 : 개체 관계 표기법

ERDER 다이어그램이라고도 부르는데 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(*)

EMAIL

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로 값을 변경한 후 레지스트리편집기를 종료

 

시작 + Rcmd 입력해 커맨드 입력창 실행

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]

반응형