"ORACLE 테이블 컬럼"의 두 판 사이의 차이
DB CAFE
8번째 줄: | 8번째 줄: | ||
1. 테이블 생성일자 보기 | 1. 테이블 생성일자 보기 | ||
− | <source lang="sql"> SELECT SUBSTRB(OBJECT_NAME, 1, 15) AS OBJECT_NAME | + | <source lang="sql"> |
− | + | SELECT SUBSTRB(OBJECT_NAME, 1, 15) AS OBJECT_NAME | |
, CREATED | , CREATED | ||
, LAST_DDL_TIME | , LAST_DDL_TIME | ||
, TIMESTAMP | , TIMESTAMP | ||
, STATUS | , STATUS | ||
− | + | FROM USER_OBJECTS | |
− | FROM USER_OBJECTS WHERE OBJECT_NAME = UPPER('&테이블명') AND OBJECT_TYPE = 'TABLE'; </source> | + | WHERE OBJECT_NAME = UPPER('&테이블명') |
+ | AND OBJECT_TYPE = 'TABLE'; </source> | ||
2. 테이블의 크기 및 블록 보기 | 2. 테이블의 크기 및 블록 보기 | ||
− | <source lang="sql"> SELECT SUBSTR(SEGMENT_NAME, 1, 20), BYTES, BLOCKS FROM USER_SEGMENTS WHERE SEGMENT_NAME = UPPER('&테이블명'); </source> | + | <source lang="sql"> |
+ | SELECT SUBSTR(SEGMENT_NAME, 1, 20), BYTES, BLOCKS | ||
+ | FROM USER_SEGMENTS | ||
+ | WHERE SEGMENT_NAME = UPPER('&테이블명'); | ||
+ | </source> | ||
3. 파티션 테이블의 파티션 범위 보기 | 3. 파티션 테이블의 파티션 범위 보기 | ||
<source lang="sql"> | <source lang="sql"> | ||
− | SELECT SUBSTRB(PARTITION_NAME, 1, 30) AS PARTITION_NAME, SUBSTRB(TABLESPACE_NAME, 1, 30) AS TABLESPACE_NAME, HIGH_VALUE | + | SELECT SUBSTRB(PARTITION_NAME, 1, 30) AS PARTITION_NAME -- 파티셔닝 명 |
+ | , SUBSTRB(TABLESPACE_NAME, 1, 30) AS TABLESPACE_NAME -- 테이블스페이스명 | ||
+ | , HIGH_VALUE | ||
FROM USER_TAB_PARTITIONS | FROM USER_TAB_PARTITIONS | ||
WHERE TABLE_NAME = UPPER('&테이블명'); | WHERE TABLE_NAME = UPPER('&테이블명'); | ||
42번째 줄: | 49번째 줄: | ||
5. CONSTRAINT 보기 | 5. CONSTRAINT 보기 | ||
− | <source lang="sql"> SELECT DECODE(A.CONSTRAINT_TYPE, 'P', 'Primary Key', 'R', 'Foreign Key', 'C', 'Table Check', 'V', 'View Check', 'U', 'Unique', '?') | + | <source lang="sql"> |
− | + | SELECT DECODE(A.CONSTRAINT_TYPE, 'P', 'Primary Key', 'R', 'Foreign Key', 'C', 'Table Check', 'V', 'View Check', 'U', 'Unique', '?') AS "유형" | |
− | |||
, SUBSTRB(A.CONSTRAINT_NAME, 1, 25) AS CONSTRAINT_NAME | , SUBSTRB(A.CONSTRAINT_NAME, 1, 25) AS CONSTRAINT_NAME | ||
, B.POSITION | , B.POSITION | ||
, SUBSTRB(B.COLUMN_NAME, 1, 25) AS COLUMN_NAME | , SUBSTRB(B.COLUMN_NAME, 1, 25) AS COLUMN_NAME | ||
− | |||
FROM DBA_CONSTRAINTS A | FROM DBA_CONSTRAINTS A | ||
− | |||
, DBA_CONS_COLUMNS B | , DBA_CONS_COLUMNS B | ||
− | + | WHERE A.CONSTRAINT_NAME = B.CONSTRAINT_NAME | |
− | WHERE A.CONSTRAINT_NAME = B.CONSTRAINT_NAME AND A.OWNER = 'E_LUCIS' AND A.TABLE_NAME = UPPER('&테이블명') ORDER BY 1, 2, 3; </source> | + | AND A.OWNER = 'E_LUCIS' |
+ | AND A.TABLE_NAME = UPPER('&테이블명') | ||
+ | ORDER BY 1, 2, 3; </source> | ||
6. 특정 테이블의 스키마 구조 확인 | 6. 특정 테이블의 스키마 구조 확인 | ||
− | <source lang="sql"> /* | + | <source lang="sql"> |
− | + | /* | |
보통 토드나 기타 오라클 클라이언트 툴을 이용해서 테이블 구조를 확인 해도 됩니다. | 보통 토드나 기타 오라클 클라이언트 툴을 이용해서 테이블 구조를 확인 해도 됩니다. | ||
하지만 수많은 테이블을 전체 보고 싶을 경우 아래 쿼리를 이용하면 한번에 확인이 가능합니다. | 하지만 수많은 테이블을 전체 보고 싶을 경우 아래 쿼리를 이용하면 한번에 확인이 가능합니다. | ||
− | |||
*/ | */ | ||
67번째 줄: | 72번째 줄: | ||
SELECT OWNER | SELECT OWNER | ||
− | |||
, TABLE_NAME | , TABLE_NAME | ||
, COLUMN_NAME | , COLUMN_NAME | ||
75번째 줄: | 79번째 줄: | ||
, NULLABLE | , NULLABLE | ||
, COMMENTS | , COMMENTS | ||
− | |||
FROM (SELECT A.OWNER | FROM (SELECT A.OWNER | ||
− | |||
, A.TABLE_NAME | , A.TABLE_NAME | ||
, A.COLUMN_ID | , A.COLUMN_ID | ||
90번째 줄: | 92번째 줄: | ||
, A.COMMENTS | , A.COMMENTS | ||
, ROW_NUMBER() OVER (PARTITION BY A.OWNER, A.TABLE_NAME, A.COLUMN_ID ORDER BY A.COLUMN_ID, B.POSITION) RN | , ROW_NUMBER() OVER (PARTITION BY A.OWNER, A.TABLE_NAME, A.COLUMN_ID ORDER BY A.COLUMN_ID, B.POSITION) RN | ||
− | FROM (SELECT | + | FROM (SELECT COL.OWNER |
, COL.TABLE_NAME | , COL.TABLE_NAME | ||
, COL.COLUMN_ID | , COL.COLUMN_ID | ||
100번째 줄: | 102번째 줄: | ||
, COL.NULLABLE | , COL.NULLABLE | ||
, COM.COMMENTS | , COM.COMMENTS | ||
− | FROM | + | FROM DBA_TAB_COLUMNS COL |
, DBA_COL_COMMENTS COM | , DBA_COL_COMMENTS COM | ||
− | WHERE | + | WHERE COL.COLUMN_NAME = COM.COLUMN_NAME |
− | AND | + | AND COL.OWNER = COM.OWNER |
− | AND | + | AND COL.TABLE_NAME = COM.TABLE_NAME |
− | AND | + | AND COM.OWNER =:IN_OWNER |
− | AND | + | AND COM.TABLE_NAME LIKE:IN_TABLE_NAME || '%') A |
, DBA_CONS_COLUMNS B | , DBA_CONS_COLUMNS B | ||
WHERE B.TABLE_NAME(+) = A.TABLE_NAME | WHERE B.TABLE_NAME(+) = A.TABLE_NAME |
2018년 8월 24일 (금) 15:55 판
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
테이블 정보[편집]
1. 테이블 생성일자 보기
SELECT SUBSTRB(OBJECT_NAME, 1, 15) AS OBJECT_NAME
, CREATED
, LAST_DDL_TIME
, TIMESTAMP
, STATUS
FROM USER_OBJECTS
WHERE OBJECT_NAME = UPPER('&테이블명')
AND OBJECT_TYPE = 'TABLE';
2. 테이블의 크기 및 블록 보기
SELECT SUBSTR(SEGMENT_NAME, 1, 20), BYTES, BLOCKS
FROM USER_SEGMENTS
WHERE SEGMENT_NAME = UPPER('&테이블명');
3. 파티션 테이블의 파티션 범위 보기
SELECT SUBSTRB(PARTITION_NAME, 1, 30) AS PARTITION_NAME -- 파티셔닝 명
, SUBSTRB(TABLESPACE_NAME, 1, 30) AS TABLESPACE_NAME -- 테이블스페이스명
, HIGH_VALUE
FROM USER_TAB_PARTITIONS
WHERE TABLE_NAME = UPPER('&테이블명');
4. 파티션 테이블 쿼리 추출 자동생성 스크립트
-- MIG_ADM.MIG_TABLES 은 사용자가 만든 임시테이블임
SELECT 'SELECT dbms_metadata.get_ddl(''TABLE'','''||A.TABLE_NAME||''','''||A.OWNER||''') DDL_QUERY from dual;'
FROM MIG_ADM.MIG_TABLES A
WHERE A.SYSTEM_CODE = 'LC1'
AND A.PARTITION_YN = 'Y';
5. CONSTRAINT 보기
SELECT DECODE(A.CONSTRAINT_TYPE, 'P', 'Primary Key', 'R', 'Foreign Key', 'C', 'Table Check', 'V', 'View Check', 'U', 'Unique', '?') AS "유형"
, SUBSTRB(A.CONSTRAINT_NAME, 1, 25) AS CONSTRAINT_NAME
, B.POSITION
, SUBSTRB(B.COLUMN_NAME, 1, 25) AS COLUMN_NAME
FROM DBA_CONSTRAINTS A
, DBA_CONS_COLUMNS B
WHERE A.CONSTRAINT_NAME = B.CONSTRAINT_NAME
AND A.OWNER = 'E_LUCIS'
AND A.TABLE_NAME = UPPER('&테이블명')
ORDER BY 1, 2, 3;
6. 특정 테이블의 스키마 구조 확인
/*
보통 토드나 기타 오라클 클라이언트 툴을 이용해서 테이블 구조를 확인 해도 됩니다.
하지만 수많은 테이블을 전체 보고 싶을 경우 아래 쿼리를 이용하면 한번에 확인이 가능합니다.
*/
--: 관리자용
SELECT OWNER
, TABLE_NAME
, COLUMN_NAME
, PK
, COLUMN_NAME
, DATA_TYPE || '( ' || NVL(DATA_TYPE_2, DATA_LENGTH) || ' )' DATA_TYPE
, NULLABLE
, COMMENTS
FROM (SELECT A.OWNER
, A.TABLE_NAME
, A.COLUMN_ID
, B.POSITION PK
, A.COLUMN_NAME
, A.DATA_TYPE
, A.DATA_PRECISION || DECODE(A.DATA_SCALE, NULL, NULL, ',' || A.DATA_SCALE) DATA_TYPE_2
, A.DATA_LENGTH
, A.DATA_PRECISION
, A.DATA_SCALE
, A.NULLABLE
, A.COMMENTS
, ROW_NUMBER() OVER (PARTITION BY A.OWNER, A.TABLE_NAME, A.COLUMN_ID ORDER BY A.COLUMN_ID, B.POSITION) RN
FROM (SELECT COL.OWNER
, COL.TABLE_NAME
, COL.COLUMN_ID
, COL.COLUMN_NAME
, COL.DATA_TYPE
, COL.DATA_LENGTH
, COL.DATA_PRECISION
, COL.DATA_SCALE
, COL.NULLABLE
, COM.COMMENTS
FROM DBA_TAB_COLUMNS COL
, DBA_COL_COMMENTS COM
WHERE COL.COLUMN_NAME = COM.COLUMN_NAME
AND COL.OWNER = COM.OWNER
AND COL.TABLE_NAME = COM.TABLE_NAME
AND COM.OWNER =:IN_OWNER
AND COM.TABLE_NAME LIKE:IN_TABLE_NAME || '%') A
, DBA_CONS_COLUMNS B
WHERE B.TABLE_NAME(+) = A.TABLE_NAME
AND B.COLUMN_NAME(+) = A.COLUMN_NAME) X
WHERE X.RN = 1 ORDER BY X.TABLE_NAME, X.COLUMN_ID;
--: 일반 사용자 용
SELECT TABLE_NAME , COLUMN_NAME , PK , COLUMN_NAME , DATA_TYPE || '( ' || NVL(DATA_TYPE_2, DATA_LENGTH) || ' )' DATA_TYPE , NULLABLE , COMMENTS
FROM (SELECT A.TABLE_NAME , A.COLUMN_ID , B.POSITION PK , A.COLUMN_NAME , A.DATA_TYPE
, A.DATA_PRECISION || DECODE(A.DATA_SCALE, NULL, NULL, ',' || A.DATA_SCALE) DATA_TYPE_2
, A.DATA_LENGTH , A.DATA_PRECISION , A.DATA_SCALE , A.NULLABLE , A.COMMENTS
, ROW_NUMBER() OVER (PARTITION BY A.TABLE_NAME, A.COLUMN_ID
ORDER BY A.COLUMN_ID, B.POSITION) RN
FROM (SELECT COL.TABLE_NAME , COL.COLUMN_ID , COL.COLUMN_NAME , COL.DATA_TYPE , COL.DATA_LENGTH
, COL.DATA_PRECISION , COL.DATA_SCALE , COL.NULLABLE , COM.COMMENTS
FROM USER_TAB_COLUMNS COL
, USER_COL_COMMENTS COM
WHERE COL.COLUMN_NAME = COM.COLUMN_NAME
AND COL.TABLE_NAME = COM.TABLE_NAME
AND COM.TABLE_NAME LIKE:IN_TABLE_NAME || '%') A
, USER_CONS_COLUMNS B
WHERE B.TABLE_NAME(+) = A.TABLE_NAME AND B.COLUMN_NAME(+) = A.COLUMN_NAME
) X
WHERE X.RN = 1 ORDER BY X.TABLE_NAME, X.COLUMN_ID;
7. 사용자별 오브젝트 수
SELECT OWNER AS "OWNER"
, SUM(DECODE(OBJECT_TYPE, 'TABLE', 1, 0)) AS "TABLE"
, SUM(DECODE(OBJECT_TYPE, 'INDEX', 1, 0)) AS "INDEX"
, SUM(DECODE(OBJECT_TYPE, 'SYNONYM', 1, 0)) AS "SYNONYMS"
, SUM(DECODE(OBJECT_TYPE, 'SEQUENCE', 1, 0)) AS "SEQUENCES"
, SUM(DECODE(OBJECT_TYPE, 'VIEW', 1, 0)) AS "VIEWS"
, SUM(DECODE(OBJECT_TYPE, 'CLUSTER', 1, 0)) AS "CLUSTERS"
, SUM(DECODE(OBJECT_TYPE, 'DATABASE LINK', 1, 0)) AS "DBLINKS"
, SUM(DECODE(OBJECT_TYPE, 'PACKAGE', 1, 0)) AS "PACKAGES"
, SUM(DECODE(OBJECT_TYPE, 'PACKAGE BODY', 1, 0)) AS "PACKAGE_BODY"
, SUM(DECODE(OBJECT_TYPE, 'PROCEDURE', 1, 0)) AS "PROCEDURES"
, SUM(DECODE(OBJECT_TYPE, 'FUNCTION', 1, 0)) AS "FUNCTION"
FROM DBA_OBJECTS GROUP BY OWNER;
8. 상호 DB간에 컬럼 이름 비교
/*
양쪽 DB에서 사용하는 테이블 중에서 컬럼 이름 다른 항목을 찾는다.
*/
SELECT A.TABLE_NAME
, A.COLUMN_NAME
, A.COLUMN_ID
, A.DATA_TYPE || '(' || A.DATA_LENGTH || ')' DATA_TYPE
FROM USER_TAB_COLUMNS@LINK_ESTDB A WHERE A.TABLE_NAME =:IN_TABLE_NAME AND NOT EXISTS
(SELECT 'X'
FROM USER_TAB_COLUMNS B
WHERE B.TABLE_NAME = A.TABLE_NAME
AND B.COLUMN_NAME = A.COLUMN_NAME);
SELECT A.TABLE_NAME, A.COLUMN_NAME, A.COLUMN_ID FROM USER_TAB_COLUMNS@LINK_ESTDB A WHERE A.TABLE_NAME =:IN_TABLE_NAME MINUS SELECT A.TABLE_NAME, A.COLUMN_NAME, A.COLUMN_ID FROM USER_TAB_COLUMNS A WHERE A.TABLE_NAME =:IN_TABLE_NAME