행위

"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 "유형"
            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   COL.OWNER
+
           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     DBA_TAB_COLUMNS COL
+
                       FROM   DBA_TAB_COLUMNS COL
 
                           , DBA_COL_COMMENTS COM
 
                           , DBA_COL_COMMENTS COM
                       WHERE     COL.COLUMN_NAME = COM.COLUMN_NAME
+
                       WHERE COL.COLUMN_NAME = COM.COLUMN_NAME
                       AND       COL.OWNER = COM.OWNER
+
                       AND   COL.OWNER = COM.OWNER
                       AND       COL.TABLE_NAME = COM.TABLE_NAME
+
                       AND   COL.TABLE_NAME = COM.TABLE_NAME
                       AND       COM.OWNER =:IN_OWNER
+
                       AND   COM.OWNER =:IN_OWNER
                       AND       COM.TABLE_NAME LIKE:IN_TABLE_NAME || '%') A
+
                       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 추천메뉴 바로가기



테이블 정보[편집]



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