생계/Oracle2021. 10. 23. 20:32

DBMS_XMLGEN.GETXMLTYPE 는 동적쿼리 처럼 쓸수 있어서 활용도가 높다.
lob 타입의 경우 가공이 불가한 제약이 있는데 이 함수를 써서 타입을 변경 할 수 있다.

-- 테이블 정의서 gen
SELECT rownum as "순번"
, A.COMMENTS AS "항목명"
, A.COLUMN_NAME AS "항목ID"
, ( SELECT 'PK'
FROM DBA_IND_COLUMNS IC
WHERE IC.TABLE_OWNER = :OWNER
AND IC.TABLE_NAME = A.TABLE_NAME
AND IC.COLUMN_NAME = A.COLUMN_NAME
AND IC.INDEX_NAME LIKE 'PK#_%' ESCAPE '#'
) AS "KEY"
, A.DATA_TYPE AS "TYPE"
, A.DATA_LENGTH AS "길이"
, ' ' AS "항목설명"
,(SELECT '시퀀스 '||'SQ_'||Q.TAB_NM||'_01'
FROM SEQ_INFO Q
WHERE Q.DBNAME = A.OWNER
AND Q.TAB_NM = A.TABLE_NAME
AND Q.COL_NM = A.COLUMN_NAME
) AS "COLUMN RULE"
, ' ' AS "개인신용정보구분"
, DECODE(A.NULLABLE,'N', 'NOT NULL','')||' '||DATA_DEFAULT AS "NULL (DEFAULT)"
FROM (
SELECT T.OWNER,
T.TABLE_NAME,
M.COMMENTS,
C.COLUMN_NAME,
C.DATA_TYPE,
C.DATA_LENGTH,
C.NULLABLE,
CASE WHEN DATA_DEFAULT IS NOT NULL THEN
'('|| REPLACE(DBMS_XMLGEN.GETXMLTYPE('SELECT DATA_DEFAULT FROM DBA_TAB_COLUMNS WHERE TABLE_NAME='
||''''||C.TABLE_NAME||''''||' AND COLUMN_NAME='||''''||C.COLUMN_NAME||'''').EXTRACT('//text()')
,'&'||'apos;','''') || ')' END DATA_DEFAULT,
C.COLUMN_ID
FROM DBA_TABLES T
,DBA_TAB_COLUMNS C
,DBA_COL_COMMENTS M
WHERE 1=1
AND T.TABLE_NAME = :TAB_NM
AND T.TABLE_NAME = C.TABLE_NAME
AND C.TABLE_NAME = M.TABLE_NAME(+)
AND C.COLUMN_NAME = M.COLUMN_NAME(+)
ORDER BY COLUMN_ID
) A



-- 전체 테이블 rows 조회
SELECT OWNER,
TABLE_NAME,
DBMS_XMLGEN.GETXMLTYPE('SELECT COUNT(*) CNT FROM '
||T.OWNER||'.'||TABLE_NAME ).EXTRACT('//text()') CNT
FROM DBA_TABLES T
WHERE TABLE_NAME LIKE 'T%'
AND OWNER ='AA'

반응형
Posted by 돌고래트레이너
생계/DA2021. 10. 16. 20:49

 

1. 엔터티 정의

 - 엔터티 후보 수집 -> 엔터티 후보 선정 -> 엔터티 확정

2. 식별자 정의

 - 식별자 부여 -> 식별자 확정

3. 관계 정의

 - 관계 형태 설정 -> 식별/비식별 관계설정 -> M:N 관계 해소

4. 속성 정의

 - 속성후보수집 -> 속성후보선정 -> 속성확정 -> 속성검증

5. 정규화/이력관리

- 정규화 -> 이력관리 결정

6. 데이터 모델 검증

 - 사례데이터 작성 -> 데이터 모델 보완 

 

반응형

'생계 > DA' 카테고리의 다른 글

RDBMS 에서의 관계 라는 것  (0) 2023.12.12
이력 모델  (0) 2023.12.09
엔터티 통합과 분리  (0) 2023.12.09
엔터티 유형 분류  (0) 2023.11.29
데이터 표준화 관련 (용어 단어 도메인 코드)  (0) 2020.01.30
Posted by 돌고래트레이너
생계/Oracle2021. 10. 9. 16:33

오라클 디비는 아래의 단계를 거쳐서 기동이 되며, 정상 open 이 되어야 client 에서 사용가능한 상태가 된다. 

shutdown -> nomount -> mount -> open 


Step 1) shutdown (closed)

  오라클 process 가 완전히 종료된 상태

   ps -ef | grep ora_  명령어를 치면 떠있는 프로세스가 없다.  


Step 2) nomount

  오라클 프로세스가 SGA, 버퍼캐쉬 등 자신이 사용할 메모리영역을 os 로 부터 할당 받는 단계.

  오라클 초기화 파라미터 파일(spfile,pfile) 에 명시된 레시피를 참조하여 인스턴스를 생성한다. 

  참조할 파라미터 파일은 아래처럼 직접 명시할수도 있다 

STARTUP NOMOUNT pfile=C:\oracle\database\initora.ora 


Step 3) mount 

  datafile 등이 instance 에 붙는(mounted) 단계

  no mount 단계에서 인스턴스가 생성이 되면 초기화 파라미터에 명시된 컨트롤 파일 경로를 참고하여

 우리가 데이터베이스라고 부르는 데이터 파일들에 마운트를 시도한다. 

[initSID.ora]  

*.control_files='/home/oracle/control01.ctl' ,


Step 4) open 

컨트롤 파일과 데이터 파일간의 정합성을 체크하고 이상이 없다면 데이터베이스는 open 상태가 된다.   

만약 일부 데이터 파일이 문제가 있다면 컨트롤 파일을 수정해서 일부만 open 할수 있고, 

불완전복구나 백업된 컨트롤파일이 아닌 컨트롤 파일로 오픈할 경우엔는 resetlogs 를 써야 open 이 가능하다. 

 

 

반응형
Posted by 돌고래트레이너