ORACLE 자료2015.11.16 14:27

오라클에서 모든 테이블에 코멘트를 달았을 경우,

테이블명은 생각이 나지 않고 코멘트의 일부 내용으로 해당 테이블들을 조회할 수 있다.

 

 

SELECT A.TABLE_NAME

           , B.COMMENTS

   FROM ALL_TABLES A

           , ALL_TAB_COMMENTS B

 WHERE A.TABLE_NAME = B.TABLE_NAME

     AND B.COMMENTS LIKE '%티스토리%'

 ORDER BY A.TABLE_NAME;

 

코멘트를 달았을 때 티스토리가 들어있는 테이블명을 조회할 수 있다.

 

저작자 표시 비영리 변경 금지
신고
Posted by 아이캣츠
ORACLE 자료2015.11.16 14:18

1. 전체 DB LINK 조회 쿼리

   SELECT *

      FROM ALL_DB_LINKS;

 

2. DB LINK 생성 방법

    CREAE DATABASE LINK 링크명

    CONNECT TO 계정 ID

    IDENTIFIED BY 계정 PW;

 

 3. DB_LINK 삭제 방법

    DROP DATABASE LINK 링크명;

 

저작자 표시 비영리 변경 금지
신고
Posted by 아이캣츠
ORACLE 자료2015.11.16 14:14

1. 오라클에서 특정 TABLESPACE의 DATAFILE을 확인하는 방법은 아래의 쿼리를

    통해 확인한다.

 

    SELECT *

       FROM DBA_DATA_FILES

     WHERE TABLESPACE_NAME = '';

 

 

2. TABLESPACE별 사용량 추이를 확인하기 위해서는 아래의 쿼리를 통해 확인한다.

 

SELECT TSPACE,TOTAL,U_MB,F_MB,F_PER,PIECES, SYSDATE
  FROM (
  SELECT ROWNUM ID,TSPACE,TOTAL,U_MB,F_MB,F_PER,PIECES
   FROM (
     SELECT DF.TABLESPACE_NAME TSPACE,
         ROUND(DF.TBS_BYTE /1048576,2) TOTAL,
         ROUND((DF.TBS_BYTE - FS.FREE_BYTE)/1048576,2) U_MB,
         ROUND(FS.FREE_BYTE /1048576,2) F_MB,
         ROUND((FS.FREE_BYTE/DF.TBS_BYTE) *100,0) F_PER,
         FS.PIECES PIECES,
         ROUND(FS.MAX_FREE /1048576,2) MAX_F_MB
         FROM   ( SELECT TABLESPACE_NAME, SUM(BYTES) TBS_BYTE
         FROM DBA_DATA_FILES GROUP BY TABLESPACE_NAME ) DF,
         ( SELECT TABLESPACE_NAME, MAX(BYTES) MAX_FREE,
           SUM(BYTES) FREE_BYTE, COUNT(*) PIECES
         FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME ) FS,
         ( SELECT TABLESPACE_NAME, INITIAL_EXTENT, NEXT_EXTENT
         FROM DBA_TABLESPACES ) DB
         WHERE DF.TABLESPACE_NAME = DB.TABLESPACE_NAME
         AND   DF.TABLESPACE_NAME = FS.TABLESPACE_NAME(+)
         ORDER BY 5 DESC
      )
      ORDER BY ID DESC
  )
  WHERE ROWNUM<200;

 

 3. 특정 TABLESPACE의 TABLE 정보 조회  방법은 아래의 쿼리를 통해 확인한다.

SELECT *
FROM ALL_TABLES
WHERE TABLESPACE_NAME = '';

 

 

저작자 표시 비영리 변경 금지
신고
Posted by 아이캣츠
ORACLE 자료2015.11.16 14:07

1. 오라클에서 테이블의 컬럼 추가 하는 방법

 - ALTER TABLE employees ADD (e_name varchar2(20));

 

2. 오라클에서 테이블의 컬럼명 변경하는 방법

 - ALTER TABLE employees RENAME COLUMN e_name to employee_name;

 

3. 오라클에서 테이블의 컬럼 삭제 하는 방법

 - ALTER TABLE employees DROP (employee_name);

 

 

 

 

저작자 표시 비영리 변경 금지
신고
Posted by 아이캣츠
ORACLE 자료2015.11.16 14:04

오라클은 기본적으로 No Archive Log Mode이므로 Archive Log Mode로 운영하기 위해서는 별도로 설정을 해주어야 한다.

 

아카이브 모드를 확인하는 방법은 다음과 같다.

 

1. 아카이브 모드(archive mode)를 확인하기 위해서는 먼저 sysdba로 로그인을 한다.

 

    $ sqlplus / as sysdba

    SQL>

 

2. 아카이브 모드 여부를 확인하기 위해 조회한다.

    SQL> archive log list;

            Database log mode              Archive Mode
            Automatic archival             Enabled
            Archive destination            /arch_cos
            Oldest online log sequence     4840
            Next log sequence to archive   4842
            Current log sequence           4842

 

 

아카이브 모드란 DML이나 DDL등의 명령어로 작업을 하면 모든 작업의 기록이 리두로그 파일에 저장이 되는데, 작업의 양이 많아지면

리두 로그 파일에 기옥하는 내용도 많아진다. 그러면 리두로그 파일을 늘려야 하는데 계속 증가하는 것이 아니라 몇 개의 리두로그 파일을

만들어 놓고 번갈아 가면서 기록하는 구조가 오라클 구조이다. 번갈아 가면서 기록을 하게 되면 새로운 작업의 내용이 예전의 작업 내용을

덮어쓰므로 예전의 작업한 내용을 잃게 되는 문제가 있다. 이 문제를 해결하기 위한 방법이 리두로그 파일의 내용을 다른 디렉토리에 자동으로

복사해서 저장하도록 운영하는 방법이 아카이브 모드이다.

 

3. 온라인 리두로그에 대한 정보

  1) 그룹과 멤버에 대한 정보

     SELECT group#

                , members

                , bytes

                , archived

                , status

         FROM v$log;

 

        - CURRENT : LGWR Process가 현재 사용중인 상태

        - ACTIVE : 사용중이지는 않지만 긴 트랜잭션으로 인해 Recovery가 필요한 상태

        - INACTIVE : Recovery에도 필요하지 않은 상태

 

  2) 리두로그파일에 대한 정보 조회

     SELECT group#

                , status

                , member

       FROM v$logfile;

 

저작자 표시 비영리 변경 금지
신고
Posted by 아이캣츠
ORACLE 자료2015.06.26 08:41

 [ORACLE] ORACLE RANDOM 함수 활용하기 - DBMS_RANDOM.VALUE

 

   경품 행사 추첨 같이 무작위로 행을 SELECT 해야 하는 경우 DBMS_RANDOM.VALUE 함수를 활용하여

   데이터를 추출할 수 있다.

 

   예시)

 

1. select level,                          --distinct 100000
       round(dbms_random.value(1,10))  --distinct 10
from dual connect by level <= 100000;

 

 

2. SELECT *
  FROM
      (SELECT *
         FROM SMS.SC_SHOPMST
        ORDER BY DBMS_RANDOM.VALUE)
WHERE ROWNUM < 10;

 

 

3. SELECT trunc(DBMS_RANDOM.VALUE(1000, 10000)) || DBMS_RANDOM.STRING('A', 3) AS val
      FROM DUAL;

  

 

DBMS_RANDOM.STRING('A',3)에서

   'U'는 대문자로만

   'L'은 소문자로만

   'A'는 대, 소문자 혼합

   'X'는 대문자, 숫자 혼합임

    뒤에 3은 길이를 표현

 

  

유용한 함수이오니 활용해 보시기 바랍니다.

 

저작자 표시 비영리 변경 금지
신고
Posted by 아이캣츠
ORACLE 자료2015.01.16 15:12

[ORACLE] ID/PW 없이 sqlplus sysdba로 로그인 하기

 

 


 

 

sqlplus / as sysdba 또는

sqlplus '/as sysdba'로 로그인이 가능하다.

 

 

저작자 표시 비영리 변경 금지
신고
Posted by 아이캣츠