'Programming'에 해당되는 글 64건

  1. 2014.09.03 Oracle Data Dictionary (데이터 사전)
  2. 2013.12.09 JSTL Core
  3. 2013.10.18 JSTL (1)
  4. 2013.09.30 onchange 제거하기
  5. 2013.09.10 인덱스를 타지 않는 쿼리
  6. 2013.09.10 INDEX (인덱스)
  7. 2013.04.24 SQL LOADER란?
  8. 2013.04.24 오라클 백업 및 복구 (Export/Import) (1)
  9. 2013.04.24 DELETE, DROP, TRUNCATE의 비교
  10. 2013.02.06 log4j.properties 설정

Oracle Data Dictionary (데이터 사전)

Programming/DB관련 2014. 9. 3. 15:57

데이터 사전(Data Dictionary)이란 ?

데이터 사전(Data Dictionary)이란 대부분 읽기전용으로 제공되는 테이블 및 뷰들의 집합으로 데이터베이스 전반에 대한 정보를 제공

sql.bsq에 의해 생성되는 기본 TABLE과 catalog.sql와 catproc.sql같은 스크립트를 실행하여 생성되는 data dictionary VIEW로 구성됨


특징

Oracle 사용자 SYS는 데이터 사전의 모둔 기본 TABLE과 VIEW를 소유함다.

오라클은 DDL 명령이 실행 될 때 마다 데이터 사전을 Access 한다.

모든 Oracle 사용자는 DB 정보에 대한 읽기 전용 참조로 데이터 사전을 사용 할 수 있다.

DB작업동안 Oracle은 데이터 사전을 읽어 객체의 존재여부와 사용자에게 적합한 Access 권한이 있는지를 확인 한다. 또한 Oracle은 데이터 사전을 계속 갱신하여 DATABASE 구조, 감사, 사용자권한, 데이터등의 변경 사항을 반영 한다.


데이터 사전에 저장되는 내용

-. 오라클의 사용자 정보

-. 오라클 권한과 롤 정보

-. 데이터베이스 스키마 객체(TABLE, VIEW, INDEX, CLUSTER, SYNONYM, SEQUENCE..) 정보

-. 무결성 제약조건에 관한 정보

-. 데이터베이스의 구조 정보

-. 오라클 데이터베이스의 함수 와 프로지저 및 트리거에 대한 정보

-. 기타 일반적인 DATABASE 정보


데이터 사전의 종류

 DBA_

 DB 전체에 포함되는 모든 객체에 대한 자세한 정보

 ALL_

 자신이 생성한 객체와 다른 사용자가 만든 객체중에서 자신이 볼 수 있는 정보

 USER_

 자신이 생성한 모든 객체에 대한 정보

 V$_

 DB의 성능 분석/통계 정보를 제공하며 X$테이블에 대한 뷰

 X$_

 DB의 성능 분석/통계 정보를 제공하는 테이블



DBA_XXXX 데이터 사전

DBA권한을 가진 사용자 만이 조회할 수 있는 데이터 사전

모든 오라클 데이터베이스 객체에 대한 정보 조회 가능

SELECT ANY TABLE 권한이 있는 사용자 또한 질의 가능

데이터 사전의 동의어는 생성되지 않으며,다른 사용자가 질의 하려면 앞에 SYS.이라는 접두어를 붙여야 한다.

DBA_2PC_NEIGHBORS

분산 데이터베이스 옵션이 서버에 설치된 경우, 작업 도중에 분산 트랜젝션이 실패하면 복구할 때 참조

DBA_2PC_PENDING

분산 데이터베이스 옵션이 서버에 설치된 경우, 분산 변경작업을 하는 동안 트랜젝션은 실패한다. 이런 경우, 실패된 트랜젝션의 내용을 확인할 수 있음

DBA_ANALYZE_OBJECTS

테이블, 인덱스, 클러스트는 analyze문에 의해 통계정보를 분석한다. 이때 통계정보를 이 테이블에 저장함

DBA_AUDIT_EXISTS

database의 존재하는 audit을 출력

DBA_AUDIT_OBJECT

database object와 관련된 모든 audit trail을 출력

DBA_AUDIT_SESSION

세션 사용자의 로그온/오프 시간과 I/O 정보

DBA_AUDIT_STATEMENT

audit trail에 사용

DBA_AUDIT_TRAIL

database의 모든 audit trail을 출력

DBA_ADVISOR_FINDINGS

자동 데이터베이스 진단 모니터(ADDM)

DBA_CATALOG

모든 객체를 참조할 수 있음

DBA_CLU_COLUMNS

클러스트에 의해 만들어진 테이블의 컬럼 정보

DBA_CLUSTERS

생성된 클러스트에 대한 모든 종류와 구조에 대한 정보

DBA_COL_COMMENTS

테이블과 뷰의 주석을 확인

DBA_COL_PRIVS

컬럼레벨의 권한이 부여 되었거나 또는 부여 받은 내용, dba_tab_privs

DBA_COLL_TYPES

모든 컬렉션 타입에 관한 정보

DBA_CONS_COLUMNS

테이블에 정의된 제약조건의 일부인 열에 대한 정보

DBA_CONSTRAINTS

DB에 정의된 모든 제약조건에 대한 정보

DBA_DATA_FILES

저장되는 데이터 파일(*.dbf)의 위치를 확인. sysfiles

DBA_DATAPUMP_JOBS

현재 진행중인 data pump export에 관한 정보를 확인

DBA_DB_LINKS

다른 DB에 링크한 정보

DBA_DEPENDENCIES

객체간의 종속성에 대한 정보를 포함

DBA_ERRORS

SQL*Plus가 데이터베이스 내의 모든 객체에 대한 show errors 명령의 결과를 리턴하는데 사용

DBA_EXP_FILES

export 파일이름, 사용자, 시간에 관한 정보

DBA_EXP_OBJECTS

증가분(incremental export)에 의해 저장된 객체 정보

DBA_EXP_VERSION

최근의 export 버전 번호에 관한 정보

DBA_EXTENTS

세그먼트에 의해 할당되는 extents에 관한 정보(각 익스텐트의 크기와 경로에 대한 정보 포함)

DBA_EXTERNAL_LOCATIONS

외부 테이블 데이터의 위치 정보

DBA_EXTERNAL_TABLES

데이터베이스에 만들어진 외부 테이블에 대한 정보

DBA_FEATURE_USAGE_STATISTICS

AWR 영역을 통하여 어떤 통계들을 얻을 수 있음

DBA_FREE_SPACE

사용 가능한 공간의 크기

DBA_FREE_SPACE_COLAESCED

사용 가능한 공간을 수집하기 위한 정보를 얻기 위함

DBA_HIST_SNAPSHOT

작업로드 스냅샷이 실행된 내역에 대한 정보

DBA_HIST_WR_CONTROL

작업로드 스냅샷으로 설정된 자동정리기간, 보유기간에 대한 정보

DBA_IND_COLUMNS

인덱스에 대한 컬럼 정보

DBA_INDEXES

인덱스에 대한 컬럼 정보

DBA_JOBS

DB가 실행 중인 job

DBA_JOBS_RUNNING

DBMS_JOB 패키지에 의해 현재 실행되고 있는 작업

DBA_LOBS

데이터베이스 내의 모든 LOB를 확인

DBA_METHOD_PARAMS

객체 타입의 메소드에서 쓰이는 파라미터 정보

DBA_METHOD_RESULTS

메소드에서 호출자로의 리턴 타입에 대한 정보

DBA_OBJ_AUDIT_OPTS

객체 감사(AUDIT) 결과 조회,권한감사,문장감사

DBA_OBJECTS

데이터베이스 내에 생성되어 있는 모든 테이블, , 동의어, 프로시저등의 정보

DBA_OPTSTAT_OPERATIONS

dbms_stats 패키지가 실행된 모든 기록을 확인

DBA_PRIV_AUDIT_OPTS

권한 감사 (AUDIT) 결과 조회문장감사,객체 감사

DBA_PROCEDURES

프로시저와 함수에 대한 자세한 정보

DBA_PROFILES

프로파일이름과 자원의 제한 정보

DBA_QUEUE_TABLES

메시지 큐와 관련된 데이터를 조회

DBA_RECYCLEBIN

recyclebin , show recyclebin

DBA_ROLE_PRIVS

데이터베이스 내의 롤이나 사용자에 어떤 롤이 허용되어 있는지의 정보

DBA_ROLES

DBA의 모든 롤의 정보

DBA_ROLLBACK_SEGS

UNDO SEGMENTS의 정보

DBA_SCHEDULER_JOBS

스케줄된 job의 정보

DBA_SEGMENTS

테이블스페이스가 저장하고 있는 모든 세그먼트에 대한 정보 v$sort_segment,v$sort_usage

DBA_SEQUENCES

데이터베이스의 시퀀스에 대한 정보, user_sequences참조

DBA_SNAPSHOTS

현재 생성되어 있는 모든 스냅샷에 대한 정보

DBA_SOURCE

현재 로그인한 사용자가 만든 프로시져, 함수, 패키지의 소스(source) 프로그램 내용

DBA_STMT_AUDIT_OPTS

문장감사의 결과 조회권한 감사,객체 감사

DBA_SYNONYMS

테이블, , 프로시저 등을 통해 생성한 모든 동의어에 대한 정보

DBA_SYS_PRIVS

Role user에게 부여된 모든 시스템 권한을 조회, session_privs

DBA_TAB_COLUMNS

테이블, , 클러스트 들의 컬럼에 대한 설명을 담고 있음

DBA_TAB_COMMENTS

테이블과 뷰의 주석을 확인

DBA_TAB_PRIVS

DB내의 모든 개체 권한에 대한 정보 , dba_col_privs

DBA_TAB_STATISTICS

모든 테이블에 대한 통계, 테이블의 잠김을 확인

DBA_TABLES

데이터베이스내의 모든 테이블, user_tables와 비교

DBA_TABLESPACE_GROUPS

테이블 스페이스 그룹에 관한 정보

DBA_TABLESPACES

테이블스페이스에 관한 정보

DBA_TEMP_FILES

TEMPORARY TABLESPACE에 관한 정보

DBA_TRIGGERS

DB의 모든 트리거 정보

DBA_TRIGGER_COLS

트리거에 사용된 테이블 컬럼에 대한 정보, Trigger가 어떤 컬럼에 생성되었는지 확인

DBA_TS_QUOTAS

모든 사용자에 대한 tablespace 할당량에 대한 정보user_ts_quotas

DBA_TYPE_METHODS

객체 타입 내의 메소드에 대한 정보

DBA_TYPES

데이터베이스의 모든 객체 타입에 대한 정보

DBA_UNUSED_COL_TABS

alter table ... set unused column ...에 의해 사용하지 않는 컬럼의 표시 DDL , user_unused_col_tabs

DBA_UPDATABLE_COLUMNS

조인 뷰의 모든 열을 나열하고 이를 통해 데이터가 변경될 수 있는지를 표시

DBA_USERS

사용자에 관한 모든 정보(암호관리 포함)all_users,user_users

DBA_VIEWS

현재 데이터베이스에 생성되어 있는 모든 뷰에 대한 정보



ALL_XXXX 데이터 사전

한 특정 사용자가 조회 가능한 모든 데이터사전을 의미 

자신이 조회하려는 객체의 주인이 아니더라도 그 객체에 접근 할 수 있는 권한을 가지고 있다면 ALL_XXX 뷰를 통하여 조회 가능

ALL_ARGUMENTS

프로시저와 함수의 파라미터 및 리턴 타입에 대한 정보

ALL_CATALOG

모든 객체를 참조할 수 있음

ALL_CLUSTERS

모든 접근 가능한 클러스터 정보,user_clusters

ALL_COL_COMMENTS

모든 접근 가능한 컬럼의 주석정보,user_col_comments

ALL_COL_PRIVS

컬럼레벨의 권한이 부여 되었거나 또는 부여 받은 내용, user_col_privs

ALL_COL_PRIVS_MADE

각 사용자의 권한과 사용자 소유의 컬럼 개체 권한 뷰

ALL_COL_PRIVS_RECD

사용자 또는 public으로 주어진 개체에 대한 컬럼 개체권한 뷰

ALL_CONSTRAINTS

user access할 수 있는 constraint정보

ALL_CONS_COLUMNS

user access할 수 있는 컬럼별 constraint정보

ALL_DB_LINKS

다른 DB에 링크한 정보

ALL_DEF_AUDIT_OPTS

DEFAULT auditing option

ALL_DEPENDENCIES

객체간의 종속성에 대한 정보를 포함

ALL_ERRORS

프로시저, 함수, 패키지를 컴파일할 때 발생한 에러에 관한 정보, show errors를 실행하면 이 테이블을 참조함

ALL_JOBS

DNMS_JOB 패키지로 설정한 작업의 job queue의 내용

ALL_IND_COLUMNS

테이블에 정의된 인덱스에 관한 정보, user_ind_columns와 비교

ALL_INDEXES

테이블에 정의된 인덱스 정보, user_indexes와 비교

ALL_OBJECTS

데이터베이스 내에 생성되어 있는 모든 테이블, , 동의어, 프로시저등의 정보

ALL_PROCEDURES

생성된 모든 프로시저에 대한 정보

ALL_SNAPSHOTS

현재 생성되어 있는 모든 스냅샷에 대한 정보

ALL_SOURCE

현재 로그인한 사용자가 만든 프로시져, 함수, 패키지의 소스(source) 프로그램 내용

ALL_SYNONYMS

테이블, , 프로시저 등을 통해 생성한 모든 동의어에 대한 정보

ALL_TAB_COLUMNS

테이블, , 클러스트 들의 컬럼에 대한 설명을 담고 있음

ALL_TAB_COMMENTS

모든 접근 가능한 테이블의 주석정보, user_tab_comments, comment 명령어로 설정한 테이블에 대한 주석내용을 보임

ALL_TAB_PRIVS

테이블에 주어진 권한에 대한 정보

ALL_TAB_PRIVS_MADE

각 사용자의 권한과 사용자 소유의 개체 권한 뷰

ALL_TAB_PRIVS_RECD

사용자 또는 public으로 주어진 개체에 대한 개체권한 뷰

ALL_TABLES

준비된 테이블의 수

ALL_TRIGGER_COLS

트리거에 사용된 테이블 컬럼에 대한 정보, 트리거가 어떤 컬럼에 생성되었는지 확인

ALL_TRIGGERS

데이터베이스에 생성된 모든 트리거에 대한 정보

ALL_USERS

모든 사용자에 관한 정보 dba_users, user_users

ALL_VIEWS

현재 데이터베이스에 생성되어 있는 모든 뷰에 대한 정보



USER_XXXX 데이터 사전

한 특정 사용자에게 종속되어 있고, 그 사용자가 조회 가능한 데이터 사전 뷰들로 ALL_XXXX 데이터 사전의 모든 정보의 부분 집합

USER_ASSOCIATIONS

현재 user object와 관련된 통계자료를 조회

USER_AUDIT_OBJECT

현재 user object와 관련된 모든 auditing data를 조회

USER_AUDIT_SESSION

세션 사용자의 로그온/오프 시간과 I/O 정보

USER_AUDIT_STATEMENT

audit trail에 사용

USER_AUDIT_TRAIL

사용자에 대한 모든 audit trail을 출력

USER_CATALOG

사용자가 소유한 테이블에 관한 정보, select * from tab와 같음, cat이 시노님임

USER_CLU_COLUMNS

클러스트에 의해 만들어진 테이블의 컬럼 정보

USER_CLUSTERS

생성된 클러스트에 대한 모든 종류와 구조에 대한 정보로 사용자가 접근 가능한 클러스터 정보, 동의어:clu all_clusters

USER_COL_COMMENTS

컬럼에 대한 주석 내용

USER_COL_PRIVS

컬럼레벨의 권한이 부여 되었거나 또는 부여 받은 내용

USER_COL_PRIVS_MADE

사용자가 소유한 컬럼의 권한에 대한 뷰

USER_COL_PRIVS_RECD

개체 권한 피부여를 위한 컬럼의 뷰

USER_CONS_COLUMNS

현재 user가 가지고 있는 column에 할당된 제약조건에 대한 정보

USER_CONSTRAINTS

사용자의 테이블에 지정된 제약조건의 이름을 확인

USER_DB_LINKS

다른 DB에 링크한 정보

USER_DEPENDENCIES

객체간의 종속성에 대한 정보를 포함

USER_ERRORS

프로시저, 함수, 패키지를 컴파일할 때 발생한 에러에 관한 정보, show errors와 같음

USER_EXTENTS

세그먼트에 의해 할당되는 extents에 관한 정보(각 익스텐트의 크기와 경로에 대한 정보 포함)

USER_FREE_SPACE

남은 공간에 대한 정보, DBA_free_space와 비교

USER_IND_COLUMNS

index, 테이블명, 컬럼 명을 포함한 정보, ALL_ind_columns와 비교

USER_INDEXS

index의 이름 및 고유한 정보, ALL_indexes와 비교

IND는 user_indexes의 동의어임

USER_JOBS

사용자가 실행 중인 job

USER_OBJ_AUDIT_OPTS

user object auditing option 확인

USER_OBJECT_SIZE

PL/SQL 블럭의 크기에 대한 정보

USER_OBJECTS

현재 사용자가 소유한 객체에 대한 정보

USER_PASSWORD_LIMITS

현재 접속되어 있는 사용자의 암호 제한사항에 대한 정보

USER_PROCEDURES

사용자가 생성한 프로시저에 대한 정보

USER_RESYCLEBIN

recyclebin으로 시노님함, show recyclebin

USER_RESOURCE_LIMITS

현재 접속되어 있는 사용자의 자원 제한사항에 대한 정보

USER_ROLE_PRIVS

현재 접속되어 있는 사용자에게 부여된 역할 조회

USER_SEGMENTS

테이블스페이스가 저장하고 있는 모든 세그먼트에 대한 정보

USER_SEQUENCES

사용자가 설정한 시퀀스의 정보, DBA_sequences 참조

USER_SNAPSHOTS

현재 생성되어 있는 모든 스냅샷에 대한 정보

USER_SOURCE

현재 로그인한 사용자가 만든 프로시져, 함수, 패키지의 소스(source) 프로그램 내용

USER_SYNONYMS

테이블, , 프로시저 등을 통해 생성한 모든 동의어에 대한 정보

USER_SYS_PRIVS

사용자에게 주어진 권한을 확인

USER_TAB_COLUMNS

테이블, , 클러스트 들의 컬럼에 대한 설명을 담고 있음, cols가 동의어임

USER_TAB_COMMNETS

특정 테이블에 대한 모든 주석

USER_TAB_MODIFICATIONS

옵티마이저에 의해 테이블이 분석한 이후에 사용자에게 적용된 모든 변경 내용

USER_TAB_PRIVS

타 사용자에게 접근이 허용된 테이블

USER_TAB_PRIVS_MADE

사용자가 소유주인 개체 권한 뷰

USER_TAB_PRIVS_RECD

개체 권한 피부여자를 위한 뷰

USER_TABLES

사용자에게 속한 모든 테이블, tabs의 시노님, dba_tables와 비교

USER_TABLESPACES

사용자에게 속한 모든 테이블스페이스, dba_tablespaces와 비교

USER_TRIGGER_COLS

트리거에 사용된 테이블 컬럼에 대한 정보, Trigger가 어떤 컬럼에 생성되었는지 확인

USER_TRIGGERS

테이블에 만들어진 트리거에 대한 정보

USER_TS_QUOTAS

현재 사용자에 대한 tablespace 할당량에 대한 정보dba_ts_quotas

USER_UNUSED_COL_TABS

사용하지 않는 컬럼으로 설정된 컬럼 내용 조회dba_unused_col_tabs

USER_USERS

현재 접속중인 user access할 수 있는 user 정보 조회dba_users,all_users

USER_USTATS

현재 user object와 관련된 통계자료를 조회

USER_VIEWS

현재 데이터베이스에 생성되어 있는 모든 뷰에 대한 정보





V$access

세션에 의해 현재 lock 되어 있는 객체에 대한 정보

V$active_session_history

AWR 메모리 통계 영역에 저장되어져 있는 통계정보

V$archive

데이터베이스의 아카이브 파일에 대한 정보

V$archived_log

실제로 아카이브 디렉토리로부터 아카이브 파일들의 존재를 확인

V$backup

데이터 파일의 백업 상태

v$backup_datafile

백업된 데이터파일에 관한 정보

V$backup_files

백업된 데이터파일의 정보

V$backup_piece

rman에서 backup 명령으로 생성한 백업세트의 경로와 파일명

v$backup_redolog

백업된 redo log 파일에 관한 정보

V$backup_set

rman에서 backup 명령으로 생성한 백업세트수와 블록 크기

v$backup_spfile

백업된 spfile 파일에 관한 정보

DBA_object_tables

데이터베이스 내의 모든 객체 테이블에 대한 정보

DBA_object_size

PL/SQL 블럭의 크기에 대한 정보

V$bgprocess

백그라운드 프로세스 정보

V$buffer_pool

데이터베이스에 설정된 다중 풀 영역에 대한 정보

V$buffer_pool_statistics

데이터베이스에 설정된 다중 풀 영역에 대한 정보

V$CACHE

테이블이 버퍼 캐시 영역을 얼마나 필요로 하는지

V$circuit

MTS 환경에서 사용자 프로세서에 의해 사용된 서버 프로세스와 디스패쳐 프로세스에 대한 정보

V$controlfile

컨트롤파일의 위치확인

V$corrupt_xid_list

corrupt transaction한 트랜잭션 ID를 보임

V$database

데이터베이스명, 현재시점의 system change#, DB archive/noarchive여부

V$database_block_corruption

데이터의 오류블럭에 대한 정보

V$database_incarnation

database incarnation에 대한 정보

V$datafile

데이터파일의 크기, 이름, 상태,block 크기등에 대한 정보, 로그버퍼 영역 분석. v$dbfile

V$datafile_header

데이터파일 header에 대한 정보

V$db_cache_advice

캐시 메모리 정보

V$db_object_cache

공유 영역의 공유 풀 영역에서 캐시된 현재 존재하는 객체의 내용과 크기를 분석할 때 사용한다

V$db_pipes

DBMS_PIPE 패키지에 의해 전송된 메시지에 대한 정보

V$dba_objects

데이터베이스에 설정된 테이블의 정보

V$dbfile

v$datafile의 동적 뷰

V$dblink

현재 생성되어 있는 모든 database link 정보

V$diag_info

DIAGNOSTIC_DEST 매개변수로 지정한 정보

V$dispatcher

MTS 환경에서 인스턴스를 실행할 때 사용자 프로세스의 요구에 의해 서버에게 정보를 분배하여 주는 디스패쳐 프로세스에 대한 정보

V$enabledprivs

세션에 영향을 미치는 권한에 대한 정보

V$event_name

wait에 관한 정보

V$filemetric

filemetric에 관한 정보

V$filemetric_history

filemetric에 관한 실행 정보

V$filestat

현재 존재하는 데이터 타입의 물리적으로 읽은 횟수에 대한 정보로 서버튜닝에 유용함

V$fixed_table

v$로 참조할 수 있는 모든 동적 테이블 이름

V$fixed_view_definition

v$ 뷰가 어떤 x$ 테이블에 의해 사용되는지 알 수 있음

V$flashback_database_log

최대한 어느 시점까지 복구가 가능한지를 알려줌

V$instance

현재 INSTANCE 정보

V$latch

래치 정보

V$latchholder

프로세스와 래치(latch)가 현재 유효한 상태인지의 정보

V$latchname

래치 이름정보

V$librarycache

히트율과 reload비율을 분석

V$license

데이터베이스 접속 사용자 수를 참조할 때 사용

V$lock

해당 인스턴스의 lock에 대한 정보

V$log

리두로그 그룹,로그시스번호,멤버수, 리두로그파일 상태

V$log_history

resetlog 옵션을 수행하는 시점의 시스템체인지넘버(SCN)에 대한 정보. v$loghist가 동적 뷰임

V$loghist

v$log_history의 동적 뷰임

V$logfile

리두로그 파일 확인

V$metricname

AWR에 저장되어 있는 모든 메트릭스에 대한 정보

V$mttr_target_advice

FAST_START_MTTR_TRAGET 초기화 매개변수 최적화

V$mystat

현재 세션에 대한 통계정보

V$nls_valid_values

현재 데이터베이스에서 사용 가능한 언어의 종류

V$nls_parameters

전체 인스턴스에서 지원되는 국가 언어지원의 설정에 대한 정보, nls_session_parameters와 같음

V$object_dependency

공유 풀 영역에서 현재 로더 된 객체에 대한 종속성을 참조할 때 사용

V$object_usage

INDEX 모니터링

V$open_cursor

각각의 사용자 세션을 위해 오픈 되어 있는 커서 수에 대한 정보

V$option

현재 데이터베이스에 어떤 옵션이 설치되었는지 알 수 있음

V$parameter

현재 설정되어 있는 init.ora 파라미터의 내용, show parameters

V$process

프로세스에 관한 정보

V$pwfile_users

orapwd에 의해서 sysop 권한이 주어진 사용자에 관한 정보

V$queue

MTS 환경의 응답 큐/요구 큐에 대한 정보

V$recover_file

현재 복구되어야 할 데이터 파일에 대한 정보

V$recovery_log

아카이브 로그의 이름과 개수에 대한 정보, 미디어 복구를 처리하는 동안 v$log_history에 정보의 일부분을 저장함

V$reqdist

프로세스의 작업이 요구된 시간에 대한 정보

V$resource

데이터베이스에서 사용할 수 있는 자원에 대한 정보

V$restore_point

flashback database에서 사용할 수 있는 시점에 대한 정보

V$rman_encryption_algorithms

rman 툴에서 백업에 쓰일 암호화 알고리즘의 종류

V$rollname

ROLLBACK SEGMENT에 관한 정보

V$rollstat

데이터베이스에서 사용중인 언두 세그먼트에 대한 정보

V$rowcache

자료사전 탐색 성능 파악

V$servicemetric

servicemetric에 관한 정보

V$sess_io

현재 접속된 세션에 의해 실행된 논리적, 물리적 I/O의 양에 대한 정보

V$session

현재 인스턴스에 접속된 각 세션에 대한 정보

V$session_cursor_cache

세션을 사용하고 있는 동안 얼마나 많은 커서가 오픈 되었고, 얼마나 자주 사용되었는지에 대한 정보로 튜닝에 사용함, v$system_cursor_cache와 유사함

V$session_longops

트랜젝션의 진행상태 확인

V$session_wait

로그버퍼영역이 작아서 프로세스간의 경합을 확인

V$session_wait_class

각 세션의 wait class 정보

V$session_wait_history

현재 active한 세션에 대한 wait 사건 정보

V$sessmetric

session metric 정보

V$sesstat

v$sysstat 테이블에 보인 정보의 일부분으로, 모든 세션 정보

V$sga

SGA 영역에 할당한 메모리 구조의 정보

V$sgastat

메모리 영역인 SGA에 대한 사용현황 정보, 각 공유 서버 프로세스가 얼마나 많이 실행되었는지에 대한 정보도 포함

V$shared_pool_reserved

공유 풀 메모리의 낭비여부 파악

V$sort_segment

temporary tablespace에 생성되는 temporary segment에 대한 정보 dba_segments 참조

V$sort_usage

temporary tablespace에 생성되는 temporary segment에 대한 정보v$session 참조

V$spparameter

서버 파라메터 파일, spfile의 내용

V$sql

독립적인 SQL 문장이 얼마나 자주 사용되었는지에 대한 정보

V$sqlarea

공유 풀 영역을 검사

V$sqltext

공유 풀 영역에 공유된 커서의 SQL 문자 또는 SQL 텍스트 정보

V$statname

모든 사용자가 사용하는 UGA 영역의 크기 정보, v$sysstat 테이블의 상태정보

V$sysaux_occupants

sysaux 테이블스페이스에 대한 정보를 제공

V$sysmetric

현재 메모리에 저장되어 있는 메트릭스에 대한 현재 값

V$sysmetric_history

v$sysmetric의 실행 내역

V$sysstat

인스턴스가 시작된 이후의 로그온과 논리적, 물리적 I/O의 수 등의 상태에 대한 정보, v$statname으로 알 수 있음

V$system_cursor_cache

전체 시스템에서 사용된 모든 커서의 오픈 수와 비율등에 대한 정보, v$session_cursor_cache와 유사함

V$system_event

데이터베이스 내의 자원을 사용하기 위해 기다리는 시간에 대한 정보로 시스템의 성능 파악

V$system_parameter

DB의 파라메터에 관한 정보

V$system_wait_class

전체 시스템의 wait class 정보

V$tablespace

bigfile 여부를 확인, tablespace의 번호와 이름 정보

V$thread

병렬서버 환경에서 사용되는 메모리 영역에 대한 정보(동작중인 SID를 확인할 수 있음)

V$timer

자정 이후의 현재시각을 1/100초로 나타냄

V$timezone_names

Time zone을 조회

V$transaction

현재 진행중인 트랜젝션에 대한 정보로, 현재 사용중인 언두 세그먼트에 대한 정보를 자세히 볼 수 있음

V$type_size

데이터베이스 구성요소의 크기(테이블과 인덱스의 초기값과 next extent의 크기를 결정하기 위한 참조하는 일정한 크기)

V$undostat

undo segment에 관한 정보

V$version

version에 관한 정보

PATH_VIEW

XML 자원의 경로에 관한 정보

RESOURCE_VIEW

XML 자원의 경로에 관한 정보



AUDITING 관련 VIEW

SYS.AUD$

감사 추적 데이터를 저장하는 테이블임

STMT_AUDIT_OPTION_MAP

auditing의 옵션과 해당 번호를 출력

AUDIT_ACTIONS

감사 기능의 활성화에 위한 lookup 테이블

ALL_DEF_AUDIT_OPTS

default auditing option으로 설정된 객체 감사를출력

DBA_STMT_AUDIT_OPTS

statement auditing option을 확인

DBA_PRIV_AUDIT_OPTS

privilege auditing option을 확인

DBA_OBJ_AUDIT_OPTS

object auditing option을 확인

USER_OBJ_AUDIT_OPTS

user object auditing option을 확인

DBA_AUDIT_TRAIL

데이터베이스의 모든 audit trail을 출력

DBA_AUDIT_OBJECT

데이터베이스의 객체와 관련된 모든 감사 자료를 출력

USER_AUDIT_OBJECT

현재 사용자의 객체와 관련된 모든 감사 자료를 출력



참조 : http://funnymins.tistory.com/entry/Oracle-Data-Dictionary-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%82%AC%EC%A0%84

http://choiws.egloos.com/viewer/2000412


자료사전(data dictionary) VIEW : http://radiocom.kunsan.ac.kr/lecture/oracle/dictionary/dictionary_start.html

'Programming > DB관련' 카테고리의 다른 글

Oracle Data Dictionary (데이터 사전)  (0) 2014.09.03
인덱스를 타지 않는 쿼리  (0) 2013.09.10
INDEX (인덱스)  (0) 2013.09.10
SQL LOADER란?  (0) 2013.04.24
오라클 백업 및 복구 (Export/Import)  (1) 2013.04.24
DELETE, DROP, TRUNCATE의 비교  (0) 2013.04.24
Trackbacks 2 : Comments 0

Write a comment


JSTL Core

Programming/JSTL 2013. 12. 9. 11:14

코어태그의 구분

 ① 범위 변수를 생성하고 초기화하는 기능을 지원하는 태그

 ② 흐름을 제어할 수 있는 태그

 ③ URL 처리를 위한 태그

 ④ 예외 처리 태그 

 ⑤ 출력태그


 기능

 태그

 설명

 표현 언어 지원

 out

 표현식인 <%= %>를 대체

 JspWriter에 데이터를 출력할 때 사용하는 태그

 set

 변수에 값을 설정

 remove

 변수에 설정된 값을 제거

 catch

 예외 처리 시 사용

 흐름 제어

 if

 조건에 따라 처리를 달리 할 때 사용

 choose

 여러 조건에 따라 처리를 달리 할 때 사용

 forEach

 반복 처리를 위하여 사용

 fortokens

 구분자로 분리된 각각의 토큰을 처리 할 때 사용

 URL 관리

 import

 외부의 자원을 urf를 지정하여 가져다 사용

 redirect

 지정한 경로로 이동

 url

 url을 재 작성한다.



표현 언어를 지원 태그

① <c:out>

<c:out>은 JSP의 표현식 <%=  %>를 대체하는 데이터를 출력할 때 사용하는 태그이다.


형식

<c:out value="출력값" escapeXml="true | false" default=기본값" />


 속  성

 설  명

 value 

 JspWriter에 출력할 값을 지정

 escapeXml 

 true로 지정하면 < > & ' " 문자들이 각각 &lt; $gt; &amp; &#033; &#034;로 출력

 기본값 true, 생략 가능

 default 

 지정한 값이 없을 경우 출력할 값을 지정, 생략 가능


사용 예제 

<c:out value = "${age}" default = "${10}" />

<c:out value = "${age}">10</c:out>  (default의 경우 이와 같이 표현이 가능하다.)

> 변수 age에 저장한 값을 출력하되, 지정된 값이 없을 경우 10을 출력


② <c:set>

<c:set/> 태그는 JSP의 setAttribute()와 같은 역할

해당 범위의 변수를 생성하고 속성값을 정하는데 사용

지정된 변수가 이미 존재한다면 지정한 값이 할당

존재하지 않는다면 범위 변수가 새롭게 만들어지고 그 값으로 초기화 된다.


형식

<c:set var = "변수명" value = "설정값" target="객체" property="값" scope = "범위" />


 속  성

 설  명

 var 

 값을 지정할 변수의 이름

 value 

 변수에 저장할 값

 target

 값을 설정할 Property에 대한 객체

 property 값을 설정할 객체의 Property
 scope 

 변수의 유효 범위 설정 {page | request | session | application} , 기본값 page


사용 예제

<c:set var = "age" value = "${'30}"/>

> 변수 age에 30의 값을 지정

<c:set var = "age" value = "<%=user.getAge() %>" />

> 변수 age에 user 객체의 age값을 호출하여 지정

<c:set target = "${user} property = "age"> 30 </c:set>

> user 객체의 age 속성 값을 30으로 지정


③ <c:remove>

<c:remove> 태그는 JSP의 removeAttribute()와 같은 역할

해당 범위에 정의 된 변수 제거

var속성이 같으나 scope 속성이 다르면 다른 변수로 인식하여 제거되지 않음


형식

<c:remove var = "변수명" scope = "범위" /> 


사용 예

<c:remove var = "age" scope = "page" />

> 변수 age를 제거한다.


④ <c:catch>

예외 처리를 하기 위하여 사용


사용 예제

<c:catch var="errmsg">

<%=1/0%>

</c:catch>

<c:out value="${errmsg}" />

> 1/0 실행 시 발생하는 Exception을 errmsg에 지정하여 c:out 태그를 이용하여 출력



흐름 제어 태그

① <c:if>

<c:if/> 태그는 자바의 if 문과 비슷한 기능을 제공하나 else문은 지원하지 않는다.


형식

<c:if test="조건" var="변수명" scope="범위" />


 속  성

 설  명

 test

 조건 판별식 기술

 var

 test에 설정한 조건의 결과 값을 저장하는 변수 명

 scope

 변수의 유효 범위 설정 {page | request | session | application} , 기본값 page


사용 예제

<c:if test="${country != null}">

    국가명 : <c:out value="${country}" />

</c:if>

> country 값이 null 이 아니면 country 값을 출력


② <c:choose> <c:when> <c:otherwise>

<c:when>, <c:otherwise>는 <c:choose>의 서브 태그이다.

<c:choose>는 하나 이상의 <c:when>과 하나의 <c:otherwise> 서브 태그를 가진다. 


형식

<c:choose>

    <c:when test="조건"> true </c:when>

    <c:otherwise> false </c:otherwise>

</c:choose>

> 조건이 True라면 true를 출력하고, 그렇지 않을 경우 false를 출력


③ <c:forEach>

<c:forEach>는 배열이나 Collection 또는 Map에 저장되어 있는 값 들을 순차적으로 처리할 때 사용할 수 있는 태그

items 속성에 올 수 있는 것들로는 Map, 배열, Collection 이 있다.

<c:forEach>는 자바의 for문과 같이 지정한 횟수만큼 반복하는 용도로 쓸 수 있다.


형식

<c:forEach items="객체명" begin="시작" end="" step="증감" var="변수명" varStatus="상태변수">

    내용

</c:forEach>


 속  성

 설  명

 items

 속성에 컬렉션이나 배열 형태를 지정하여 객체의 인덱스 만큼 반복 가능

 begin

 시작 인덱스

 end

 끌 인덱스

 step 증감식 설정
 var

 반복 중일 경우 현재 반복하는 값을 기억하는 변수

 varStatus

 반복의 상태를 갖게 하는 변수


사용 예제

<c:forEach var="i" items="${member}" begin="0" end="5" varStatus="status">

index : ${status.index}

count : ${status.count}

name : ${i.name}

phone : ${i.phone}

</c:forEach>

> member 리스트를 0부터 5까지 반복하면서 각 반복의 index, count 값과 member에 저장된 name, phone 정보를출력


<c:forEach var="i" begin="0" end="10" step="2">

${I}

</c:forEach>

> 0부터 10까지 2씩 증가를 반복하며 홀수를 출력


 <c:forTokens>

java.util.Stringtokenizer를 이용하는 것과 같다.


형식

<c:forTokens items="객체명" delims="구분자" var="변수명" vatStatus="상태변수" begin="시작" end="" step="증감">

내용

</c:forTokens>


 속  성

 설  명

 items

 속성에 컬렉션이나 배열 형태를 지정하여 객체의 인덱스 또는 구분자로 나누어진 만큼 반복 가능

 delims 구분자

 begin

 시작 인덱스

 end

 끌 인덱스

 step 증감식 설정
 var

 반복 중일 경우 현재 반복하는 값을 기억하는 변수

 varStatus

 반복의 상태를 갖게 하는 변수


사용 예제

<c:forTokens items="123-456-789" delims="-" var="sel">

${sel}

</c:forTokens>

> -를 기준으로 items의 값을 구분하여 출력


<c:forTokens var="num" items="하나,둘,셋|넷|다섯,여섯" delims=",|" varStatus="sts">

<c:out value="${sts.count>:${num}"/>

</c:forTokens>

> ,와 |를 기준으로 items의 값을 구분하여 각각의 count 값과 items의 값을 하나씩 출력

> 1:하나 2:둘 3:셋 4:넷 5:다섯 6:여섯



Url 관리 태그

① <c:import>

jsp의 include와 동일한 역활

읽어온 데이터가 변수에 저장되기 때문에 쉽게 원하는 형태로 편집이 가능

웹 어플리케이션 내부의 자원 접근은 물론이고, http, ftp 같은 외부의 자원도 가져와 페이지에 귀속시킬 수 있다.

해당 주소의 컨텐츠 reader 객체로 읽어 올 수 있다.


<jsp:include> 와의 차이점

<jsp:include> 액션 태그는 현재 위치에 무조건 결과를 출력하는 반면, <c:import>태그는 EL변수에 보관 뒤 필요에 따라 알맞은 처리를 할 수 있다.


형식

<c:import url="읽어올 URL" var="변수명" context="컨텍스명" scope="범위" charEncoding="캐릭터 셋">

<c:param>

</c:import>


<c:import url="읽어올 URL" context="컨텍스명" varReader="객체" scope="범위" charEncoding="캐릭터 셋">

varReader를 사용하는 액션

</c:import>


 속  성

 설  명

 url

 읽어올 URL
 var

 읽어올 데이터를 저장할 변수 명

 context

 URL 접근 시 컨텍스의 이름

 scope

 변수의 공유 범위.
 charEncoding 읽어온 데이터의 캐릭터셋 지정
 varReader

 리소스의 내용을 Reader 객체로 읽어올 때 사용


사용 예제

<c:import url="http://www.naver.com" var="naver" scope="page" charEncoding="utf-8">

<c:out value="${naver}" />

</c:import>

> www.naver.com 페이지를 naver 변수에 utf-8 형식으로 담아 놓고, 사용하고자 하는 위치에 해당 페이지를 호출


② <c:url>

주소(URL)를 자동으로 생성하여 변수에 저장


형식

<c:url var="URL명" value="생성된 URL" context="컨텍스명" scope="범위" />


 속  성

 설  명

 var

 생성한 URL이 저장될 변수명
 value

 생성할 URL

 context

 URL 접근 시 컨텍스의 이름

 scope

 변수의 공유 범위.


③ <c:redirect>

다른 페이지로 이동 시 사용


형식

<c:redirect url="url" context="컨텍스명" />



참조 : http://tazz009.tistory.com/484

http://ihayatesw.tistory.com/155

http://mrtint.tistory.com/335

http://sinpk.tistory.com/entry/JSP-JSTL-CORE


'Programming > JSTL' 카테고리의 다른 글

JSTL Core  (0) 2013.12.09
JSTL  (1) 2013.10.18
Trackbacks 0 : Comments 0

Write a comment


JSTL

Programming/JSTL 2013. 10. 18. 16:39

JSTL (JavaServer Pages Standard Tag library)

표준 태그 라이브러리 - 일반적인 웹 어플리케이션 기능인 반복과 조건, 데이터 관리 포맷, XML 조작, 데이터베이스 엑서스를 구현하는 커스텀 태그 라이브러리 모음


종류

설명

prefix

uri

 core

 데이터 출력, 제어문, URL처리등 기본 기능

 c

 http://java.sun.com/jsp/jstl/core

 fmt

 I18N 데이터 포멧 기능

 fmt

 http://java.sun.com/jsp/jstl/fmt

 sql

 JDBC 작업 수행

 sql

 http://java.sun.com/jsp/jstl/sql

 xml

 XML 문서에 대한 처리

 x

 http://java.sun.com/jsp/jstl/xml

 functions

 콜렉션 처리, String 처리 등

 fn

 http://java.sun.com/jsp/jstl/functions


JSTL을 사용하기 위하여 아래 파일을 lib 폴더에 저장한다. 물론 아래 jar은 버전별 이름이 다르다.

파일

설명

 WEB-INF/lib/jstl.jar

 JSTL API 라이브러리

 WEB-INF/lib/standard.jar

 JSTL 구현 라이브러리


JSTL 적용 - JSTL을 사용하기 위하여 각 페이지 상단에 아래와 같이 선언문을 추가한다. (아래는 core의 예이다.)

<%@ taglib prefix="c" url="http://java.sun.com/jstl/core" %>



EL (Expression Language)

데이터 혹은 객체를 표현하는데 사용하는 스크립트 언어로 ${}를 사용한다. EL은 JSP에서 저장객체를 출력할 때 스크립팅을 사용하지 않을 수 있다.


EL의 기본객체

종류

기본 객체

예제

 JSP 저장영역

 pageScope - PageContext 속성

 requestScope - HttpServletRequest 속성

 sessionScope - HttpSession 속성

 applicationScope - ServletContext 속성

 ${requestScope.name}

 HTTP 요청 파라미터

 param - HttpServletRequest 파라미터

 paramValues - 동일 파라미터 이름에 값이 

  2개 이상 존재하는 경우

 ${param.name}

 JSP 객체

 pageContext - pageContext

 cookie - 이름을 키로, Cookie를 값으로 하는 

  java.util.Map

 header - 헤더 이름을 키로, 헤더 값을 값으로

  하는 java.util.Map

 headerValues - 동일 헤더 이름에 값이 2개 

  이상 존재하는 경우

 initParam - JSP 초기 변후

 ${cookie.JESSIONID.name}

 ${headerValues['HOST'][0]}


저장객체 접근

 EL

 Script

 ${param.name}

 request.getParameter("name");

 ${member}

 request.getAttribute("member");

  저장객체의 attribute에 자동으로 접근하는데 자동 검색 순위는 page, request, session, application이다.

 ${memeber.name}

  Member m = (Member)request.getAttribute("memeber");

  m.getName();

 Attribute 저장된 member의 name 속성(또는 키)에 접근 (도트의 왼쪽은 Beans 이거나 Map타입이어야 한다.)

 ${list["0"]}

  List list = (List)request.getAttirbute("list");

  list.get(0);

 Attribute 저장된 list를 가져온다.

 [] 안에 값은 list의 키 값 or 프로퍼티명 or 인덱스이다.

 []의 왼쪽은 Map, Beans, 배열, List 타입이 올 수 있다.

* EL에서는 해당 값이 null이거나 공백 일 경우에는 아무 내용도 표시하지 않고 에러도 발생하지 않는다.


산술 연산자

연산자

설명

예제

결과

 +

 더하기

 ${10 + 2}

 12

 -

 빼기

 ${10 - 2}

 8

 *

 곱하기

 ${10 * 2}

 20

 / 또는 div

 나누기

 ${10 / 2} 또는 ${10 div 2}

 5

 % 또는 mod

 나머지

 ${10 % 3} 또는 ${10 mod 

 1


* 숫자형이 아니면 숫자형으로 자동 전환을 한 후에 연산을 수행한다.

${"10" + 1}     // 101이 아닌 11을 출력한다.

${null + 1}     // null은 0으로 처리하여 1을 출력한다.

${"열" + 10}   // 숫자가 아니면 예외가 발생한다.


논리 / 관계 연산자

연산자

예제

결과

 == 또는 eq

 ${5 == 5} 또는 ${5 eq 5}

 true

 != 또는 ne

 ${5 != 5} 또는 ${5 ne 4}

 false

 < 또는 lt

 ${5 < 7} 또는 ${5 lt 7}

 true

 > 또는 gt

 ${5 > 7} 또는 ${5 gt 7}

 false

 <= 또는 le

 ${5 <= 5} 또는 ${5 le 5}

 true

 >= 또는 ge

 ${5 >= 6} 또는 ${5 ge 6}

 false

 && 또는 and

 ${true && false} 또는 ${true and false}

 false

 || 또는 or

 ${true || false} 또는 ${true or false}

 true

 ! 또는 not

 ${!true} 또는 ${not true}

 false

 empty

 ${empty name}

 name이 null이거나 빈 문자열이면 true

 not empty

 ${not empty name}

 name이 null도 아니고 빈 문자열도 아니면 true


삼항연산자 ?

예제) ${colors == null ? "transparent" : colors}


참고자료 : http://slog2.egloos.com/3581446http://blog.daum.net/kimslovehouse/8239530

'Programming > JSTL' 카테고리의 다른 글

JSTL Core  (0) 2013.12.09
JSTL  (1) 2013.10.18
Trackbacks 0 : Comments 1
  1. ㅁㅁㅁ 2014.02.21 14:50 Modify/Delete Reply

    퍼가도 될까여ㅛ ??? 공부할려고 하는데 ....

Write a comment


onchange 제거하기

Programming/JQuery 2013. 9. 30. 13:25

onchange 제거하기

 

기존 script를 이용한 onchange 예제

function domainSel() {
    document.getElementById("email2").value = document.getElementById("domainSel").value;

}

 

<tr>
    <th><label for="email1>이메일</label></th>
    <td>
        <input type="text" name="email1" id="email1" title="이메일1" value="<%=article.email1 %>" /> @
        <input type="text" name="email2" id="email2" title="이메일2" value="<%=article.email1 %>" />
        <select id="domainSel" name="domainSel" onchange="javascript:domainSel();" title="이메일 도메인">
            <option value="">이메일 도메인 선택</option>
        </select>
    </td>
</tr>

 

JQuery를 이용한 onchange

$("#domainSel").change(function(){
    var str="";
    $("#domainSel option:selected").each(function () {
        str=$(this).val();
    });

    $("#email2").val(str);

}).change();

 

<tr>
    <th><label for="email1>이메일</label></th>
    <td>
        <input type="text" name="email1" id="email1" title="이메일1" value="<%=article.email1 %>" /> @
        <input type="text" name="email2" id="email2" title="이메일2" value="<%=article.email1 %>" />
        <select id="domainSel" name="domainSel" title="이메일 도메인">
            <option value="">이메일 도메인 선택</option>
        </select>
    </td>
</tr>

 

 

ProtoType을 이용한 onchange 제거

$("domainSel").observe( "change", function() { 
    document.getElementById("email2").value = document.getElementById("domainSel").value;
});

jsp소스는 위와 동일하다.

 

 

'Programming > JQuery' 카테고리의 다른 글

onchange 제거하기  (0) 2013.09.30
div 숨기기 / 보이기 (jQeury 버전)  (0) 2012.11.20
jQuery checkbox 컨트롤  (0) 2012.11.20
jQuery - 폼 지원 메소드  (0) 2012.04.27
jQuery - 스타일 관련 메소드  (0) 2012.04.26
jQuery Event - Browser Events  (0) 2012.04.26
Trackbacks 0 : Comments 0

Write a comment


인덱스를 타지 않는 쿼리

Programming/DB관련 2013. 9. 10. 16:00

인덱스 컬럼 절을 변형한 경우

- 수식이나 함수 등으로 인덱스 컬럼 절을 변형하였을 경우

- 반드시 함수나 수식을 사용해야 하는 경우에는 인덱스 컬럼 부분에 적용하지 말고, 여기에 대입되는 컬럼이나 상수부분에 적용해야 한다.

SELECT column_name FROM table_name WHERE TO_CHAR(column_name, 'YYYYMMDD') = '20130909';

> SELECT column_name FROM table_name WHERE column_name = TO_DATE('20130909', 'YYYYMMDD');


SELECT column_name FROM table_name WHERE column_name * 100 > 10000;

> SELECT column_name FROM table_name WHERE column_name = 10000 / 100


내부적으로 데이터 형 변환이 일어난 경우

- 서로 대입되는 항목끼리 데이터 타입이 다르면 내부적인 형 변환에 의해 컬럼이 함수를 사용한 효과를 나타낸다.

SELECT column_name FROM table_name WHERE column_name  = '20130909'; // DATE 타입의 column

SELECT column_name FROM table_name WHERE column_name = TO_DATE('20130909', 'YYYYMMDD');


SELECT column_name FROM table_name WHERE column_name  = 100; // 문자 타입의 column

SELECT column_name FROM table_name WHERE column_name = '100';


조건절에 NULL 또는 NOT NULL을 사용하는 경우

- 기본적으로 인덱스를 구성한 컬럼 값이 전부 NULL이라면 인덱스는 이런 값을 저장하지 않는다.

따라서 NULL인 값이 많지 않아 인덱스를 통해 엑세스를 하고자 한다면 데이터 생성 시 디폴트로 0과 같이 데이터를 만들어주는 것이 좋다. 반대로, 만약 NOT NULL이 분석 대상이라면 해당 컬럼을 NULL 허용 컬럼으로 두는 것이 좋다.

SELECT column_name FROM table_name WHERE column_name IS NULL;

SELECT column_name FROM table_name WHERE column_name IS NOT NULL;

SELECT column_name FROM table_name WHERE column_name > '';

SELECT column_name FROM table_name WHERE column_name >= 0;


부정형으로 조건을 사용한 경우

- 부정문은 인덱스를 활용하지 못한다.

SELECT column_name FROM table_name WHERE column_name != 30;

SELECT column_name FROM table_name WHERE column_name < 30 AND column_name > 30;


또는 테이블을 한 번 더 읽어 NOT EXISTS를 사용

SELECT column_name FROM table_name WHERE NOT EXISTS 

   (SELECT column_name FROM table_name WHERE column_name = 30);


LIKE 연산자를 사용하였을 경우

LIKE 연산자를 이용하여 검색을 할 경우 %를 앞에 넣어 사용하게 되면 인덱스를 타지 않는다.

SELECT column_name FROM table_name WHERE column_name LIKE '%S%';

SELECT column_name FROM table_name WHERE column_name LIKE 'S%';


가능하면 INSTR을 사용하는 것도 나쁘지 않다.

INSTR('비교할 대상', '비교하고자하는 값', 비교를 시작할 위치, 검색된 결과의 순번);

SELECT column_name  FROM table_name WHERE INSTR(column_name  , 'cmp_value') > 0; 


OR 조건 사용

SELECT column_name FROM table_name1 t1, table_name2 t2

WHERE (t1.column_name1 = t2.column_name1 OR t1.column_name2 = t2.column_name2)

AND t1.column_name3 = 'cmp_value';


SELECT column_name FROM table_name1 t1, table_name2 t2

WHERE t1.column_name1 = t2.column_name1 AND t1.column_name3 = 'cmp_value';

UNION ALL

SELECT column_name FROM table_name1 t1, table_name2 t2

WHERE t1.column_name2 = t2.column_name2 AND t1.column_name3 = 'cmp_value';


참고자료 : 

데브기어_문효섭_효율적인 SQL 작성을 위한 SQL 프로파일링 및 튜닝_110909.pdf

'Programming > DB관련' 카테고리의 다른 글

Oracle Data Dictionary (데이터 사전)  (0) 2014.09.03
인덱스를 타지 않는 쿼리  (0) 2013.09.10
INDEX (인덱스)  (0) 2013.09.10
SQL LOADER란?  (0) 2013.04.24
오라클 백업 및 복구 (Export/Import)  (1) 2013.04.24
DELETE, DROP, TRUNCATE의 비교  (0) 2013.04.24
Trackbacks 0 : Comments 0

Write a comment


INDEX (인덱스)

Programming/DB관련 2013. 9. 10. 14:14

INDEX 란?

검색을 빠른 속도로 하기 위해서 사용
SQL 명령문의 처리 속도를 향상시키기 위해서 컬럼에 대해서 생성하는 오라클 객체이다.


index 사용해야할 경우
- 테이블에 행의 수가 많을 경우
- 조건절인 where문에 해당 컬럼이 많이 사용 될 경우
- 검색 결과가 데이터의 2% ~ 4% 정도일 경우(적은 양의 컬럼을 가져올 경우)

- join에 자주 사용되는 컬럼
- NULL을 포함하는 컬럼이 많은 경우


index 사용하지 말아야 하는 경우
- 테이블에 행의 수가 적을 경우
- where 문에 해당 컬럼이 자주 사용되지 않을 경우

- 검색 결과가 전체 데이터의 10% ~ 15% 이상 높을 경우(많은 양의 컬럼을 가져 올 경우)
- 테이블에 DML 작업이 많은 경우(입력,수정,삭제 등이 자주 발생 할 경우)


INDEX의 종류

고유 인덱스 : 유일한 값을 가지는 컬럼에 대해 생성하는 인덱스

CREATE UNIQUE INDEX idx_name ON table_name(column_name);

비고유 인덱스 : 중복간 값을 가지는 컬럼에 대해 생성하는 인덱스

CREATE INDEX idx_name ON table_name(column_name);

단일 인덱스 : 하나의 컬럼으로만 구성된 인덱스

결합 인덱스 : 두 개 이상의 컬럼을 결합하여 생성되는 인덱스, WHERE 절의 조건 비교에서 두 개 이상의 컬럼이 AND로 연결되어 자주 사용되는 경우에 주로 생성

CREATE INDEX index_name ON table_name(column_name1, column_name2);

Descending 인덱스 : 인덱스에서 정렬을 DESC, ASC할 수 있다.

함수기반 인덱스(FBI) : 오라클 8i부터 지원, 컬럼에 대한 연산이나 함수의 계산 결과를 인덱스로 생성 가능

CREATE INDEX index_name ON table_name(column1 - column2);


ORACLE INDEX 생성 및 삭제

index Dictionary (인덱스 사전)

- 인덱스가 어떤 테이블에 대해 생성되어 있고, 어떤 컬럼으로 구성되어 있는지에 대한 정보를 보고자 할 때 사용

USER_INDEXES :인덱스 이름 및 고유성을 포함, 테이블이 소유하고 있는 인덱스가 어떤 것이 있는지 확인

SELECT INDEX_NAME FROM USER_INDEXES WHERE TABLE_NAME = 'TEMP';

USER_IND_COLUMNS : 인덱스 이름, 테이블 이름, 열 이름 포함, 인덱스가 어떤 컬럼으로 구성되어 있는가 확인

SELECT INDEX_NAME, COLUMN_NAME FROM USER_IND_COLUMNS WHERE TABLE_NAME = 'TEMP';


CREATE INDEX (생성)

CREATE INDEX index명 ON table명(INDEX걸어줄 TABLE의 COLUMN명);

CREATE INDEX index_name ON table_name (column_name);

CREATE INDEX index_name ON table_name (column_name1,column_name2,column_name3);

복합 인덱스로 지정해준 테이블에서 복합 인덱스를 타게 하려면 복합 인덱스로 설정한 컬럼을 조회 쿼리에서 모두 조회 조건에 사용해야 인덱스를 탈 확률이 높아진다.


CREATE INDEX IDX_NAME ON TABLE_NAME(ROUND(PRICE1-PRICE2));

오라클의 경우 가공시킨 컬럼에도 적용이 가능하다. 하지만 조회 쿼리에서 인덱스를 타게 하려면 동일하게 조건을 주어야 한다.

ex) SELECT * FROM TABLE_NAME WHERE ROUND(PRICE1 - PRICE2) > 0;


DELETE INDEX (삭제)

기본적으로 INDEX의 소유자이거나 DROP ANY INDEX의 권한이 있어야 ㅎ

DROP INDEX index명;

DROP INDEX index_name;


ALTER INDEX (수정)

ALTER INDEX index명 RENAME TO 새로운 index명;

ALTER INDEX index_name RENAME TO new_index_name;

오라클 9i부터 사용 가능!


INDEX REBUILD

ALTER INDEX index명 REBUILD;

ALTER INDEX idx_name REBUILD;


INDEX 조회

SELECT object_name, object_type FROM user_objects WHERE object_type ='INDEX';

효율성이 떨어지면 인덱스를 재 생성해 주어야 한다.
컬럼의 데이터가 입력,수정,삭제될 경우 해당 컬럼에 의해 생성된 인덱스에 대해서 재구성 해야 된다.



원본 : http://hyun0412.tistory.com/?page=3

'Programming > DB관련' 카테고리의 다른 글

Oracle Data Dictionary (데이터 사전)  (0) 2014.09.03
인덱스를 타지 않는 쿼리  (0) 2013.09.10
INDEX (인덱스)  (0) 2013.09.10
SQL LOADER란?  (0) 2013.04.24
오라클 백업 및 복구 (Export/Import)  (1) 2013.04.24
DELETE, DROP, TRUNCATE의 비교  (0) 2013.04.24
Trackbacks 0 : Comments 0

Write a comment


SQL LOADER란?

Programming/DB관련 2013. 4. 24. 17:39
SQL LOADER란?

원본 : 기술노트[43회]_SQLloader.pdf

 



기존의 응용 프로그램 데이터나 다른 데이터베이스로 저장된 데이터를 오라클 데이터베이스 테이블에 넣기 위한 유틸리티로서 IBM의 DB2 load 유틸리티와 흡사하다.
오라클 데이터베이스를 설치하면 기본적으로 설치되며 간단하고 편리하게 데이터를 데이터베이스에 로드할 수 있다.

 

SQL LOADER의 특징
- SQL Loader는 하나 이상의 입력 파일을 사용할 수 있다.
- 로드 할 때 여러 개의 입력 레코드를 하나의 논리적 레코드로 결합할 수 있다.
- 입력 필드는 고정 길이 또는 가변 길이가 가능하다.
- 문자, 이진, 팩형 십진 형식(packed decimal format), 날짜 및 존 십진 형식(zoned decimal format)과 같은 임의의 형식이 입력 데이터가 될 수 있다.
- 데이터를 디스크, 테이프 또는 명명된 파이프와 같은 다양한 매체 유형에서 로드 할 수 있다.
- 데이터를 한번 실행하여 여러 테이블로 로드 할 수 있다.
- 테이블의 기존 데이터를 바꾸거나 추가하기 위해 옵션을 사용할 수 있다.
- 데이터 베이스 행을 저장하기 전에 SQL 함수를 입력 데이터에 적용할 수 있다.
- 규칙에 따라 열 값을 자동으로 생성할 수 있다. 예를 들어, 순차 키 값을 열에 생성하고 저장할 수 있다.

 

 

SQL LOADER는 5개의 (control file, data file, log file, bad file, discard file)을 사용한다.

 

컨트롤파일(Control File)
Control file 은 SQL Loader를 사용하는데 필수 적인 파일의 하나로써 데이터 정의어(DDL) 지침을 포함하는 텍스트 파일이다. 확장자는 'ctl'이다.

 

기능
- SQL Loader가 로드할 데이터를 찾을 위치 명시
- SQL Loader가 형식이 지정될 데이터를 예상하는 방법
- 데이터를 로드하는 동안 SQL Loader가 메모리 관리, 레코드 거부, 중단된 로드 처리 등을 구성하는 방법
- SQL Loader가 로드 중인 데이터를 조작하는 방법

 

컨트롤파일 작성시 고려사항
- 구문은 자유로운 형식이므로 여러 행으로 확장 될 수 있다.
- 대소문자를 구분하지 않는다.
- 작은 따옴표나 큰 따옴표로 묶인 문자열은 대소문자를 포함하여 문자 그대로 사용한다.
- 제어 파일 구문에서 주석은 주석의 시작을 나타내는 두 개의 하이픈(--)으로 표시한다.

 

컨트롤파일 형식

-- This is a sample control file 주석의 입력
LOAD DATA 새 데이터 로드가 시작됨을 의미 진행 중에 중단된 로드를 계속할 경우 CONTINUE LOAD DATA 문 사용
INFILE 'SAMPLE.DAT' 외부 데이터 파일 지정, 포함하지 않을 경우 '*'로 표시
BADFILE 'sample.bad' 거부된 레코드를 배치할 파일 이름을 지정
DISCARDFILE 'sample.dsc' 페기된 레코드를 배치할 파일 이름을 지정
REPLACE 테이블에 데이터를 삽입하는 방법 지정
- REPLACE : 테이블의 기존 행을 모두 삭제 하고 삽입
- APPEND : 새로운 행을 기존의 데이터에 추가
- INSERT : 비어 있는 테이블에 넣을 때 사용
- TRUNCATE : 테이블의 기존 데이터를 모두 삭제하고 삽입
INTO TABLE test 데이터를 로드 할 테이블 지정
WHEN (10) = '.' 데이터를 로드하기 전에 만족시켜야 할 각 레코드의 필드 조건을 지정
이 예제는 10번째 문자가 소수점인 경우에만 레코드를 삽입한다
FIELDS TERMINATED BY ',' 데이터 필드의 종결 문자를 지정

 

컨트롤파일 작성 예제

- 데이터를 포함하는 경우

LOAD DATA

INFILE *

REPLACE

INTO TABLE test

FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'

( NUMBER, NAME, PHONE)

BEGINDATA

1, “이규열”, "011-9401-0001"

2, “장동건”, "010-777-7777"

3, “신민아”, "010-555-4744"

- 데이터를 포함하지 않는 경우

LOAD DATA

INFILE „/SAMPLE/sql_loader.dat‟

REPLACE

INTO TABLE test

FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'

(NUMBER, NAME, PHONE)



데이터파일(Data File)

SQL Loader로부터 데이터베이스에 입력될 텍스트 형식으로 구성된 데이터 파일


특징

- SQL Loader는 제어 파일에 지정된 하나 이상의 파일에서 데이터를 읽는다.

- SQL Loader는 관점에서 데이터 파일의 데이터는 레코드로 구성

- 컨트롤 파일의 INFILE 매개변수에 레코드 형식을 명시하며, 그렇지 않으면 스트림 형식으로 인식



로그파일(Log File)

데이터 로드 상태 정보, 로드 된 행의 수, 로드 진행중 데이터 에러 때문에 거부된 행의 수, 버려진 행의 수등 자세한 테이블 로드 정보가 포함

즉, 로그 파일은 읽어들인 레코드 수, 데이터 로드 시간, 입력되지 않은 레코드의 수와 같은 정보 포함

기본적으로 컨트롤 파일과 동일한 이름으로 생성



배드파일(Bad File)

SQL Loader또는 오라클 데이터베이스가 거부한 레코드를 포함

문법구조 - 컨트롤 파일 내에서 badfile '파일명.bad'

배드파일에 기록되는 경우

- 입력 형식에 부적합할 경우 (ex. 구분자 누락, 필드의 최대 길이 초과 등)

- 제약조건을 위해 하였을 경우 (ex. 고유하지 않은 키 값, 필수 필드가 null, oracle 데이터 유형에 부적합 등)



디스카드파일(Discard File)

SQL Loader가 실행되는 동안 폐기 파일이라는 파일을 생성 가능

필요한 경우만 생성

컨트롤 파일에 명시한 WHEN절의 조건에 맞지 않는 데이터를 저장

배드 파일처럼 입력 형식으로 저장되므로 오류를 수정하여 재사용이 가능

문법구조 - 컨트롤 파일 내에서 discardfile '파일명.dsc'

- 명령 행에서 discard(파일명)

'Programming > DB관련' 카테고리의 다른 글

인덱스를 타지 않는 쿼리  (0) 2013.09.10
INDEX (인덱스)  (0) 2013.09.10
SQL LOADER란?  (0) 2013.04.24
오라클 백업 및 복구 (Export/Import)  (1) 2013.04.24
DELETE, DROP, TRUNCATE의 비교  (0) 2013.04.24
Character Functions (문자형 함수)  (0) 2012.11.12
Trackbacks 0 : Comments 0

Write a comment


오라클 백업 및 복구 (Export/Import)

Programming/DB관련 2013. 4. 24. 14:34

1. export / import
  가. 여러개의 테이블 중에서 특정 table만 백업/복구 하고자 할 때
  나. 오라클의 버전, 플랫폼이 서로 다른 상황에서의 서버간 데이터 이동 시(migration)

2. export 방식
- Conventional Path export : Evaluation Buffer를 사용하는 방식, DB Buffer cache에서 필요데이터를 Evaluation Buffer로 복사 후 데이터를 가공(text -> binary)하여 디스크에 파일로 저장함. export 작업 중에 발생하는 DDL, DML 등의 명령들은 백업파일에 반영되지 않는다.(백업 파일은 Evaluation Buffer을 이용하여 작업하기 때문)

- Direct Path export : DB Buffer Cache에서 데이터를 가공(text -> Binary)하여 디스크에 파일로 저장함, export 명령 이후에 백업대상이 되는 테이블스페이스나 테이블에 Lock이 발생하기 때문에 DDL, DML 작업은 실패 또는 보류 된다.

Export 시 direct 모드의 사용은 파라미터 DIRECT=Y 로 설정될 수 있다. Direct Path Export는 인스턴스의 다른 자원들과 경쟁하지 않으며 세션에 의해 사용되는 private area로 데이터 블록을 읽어 들인다.



 

사용자 삽입 이미지 사용자 삽입 이미지




3. export 옵션 및 사용예제
  Export 파라미터

- userid/passwd : export를 수행하는 계정/패스워드
- buffer : Evaluation Buffer크기 지정(용량이 클 수록 export 작업이 빨라진다)

  ex) exp system/oracle file=/backup/export/test06.dmp full=y buffer=1024000

- file : export 결과를 저장할 파일명

  ex) exp system/oracle tablespaces=(example, undotbs1) file=/backup/export/test04.dmp

- full : 전체 DB를 export 할 것인가 지정

  ex) exp system/oracle full=y file=/backup/export/test01.dmp
       exp system/oracle full=y file=/backup/export/test02.dmp direct=y
- owner : export 받을 사용자 이름지정
  ex) exp system/oracle file=/backup/export/test05.dmp owner=(scott, hr)

- tables : export 받을 테이블 이름 지정

  ex) exp userid=system/manager tables=(emp, dept, salgrade)

       exp userid=system/manager tables=(scott.emp%)

- tablespaces : exprot 받을 테이블스페이스 이름지정

  ex) exp yserid=system/manager tablespaces = (users))

- parfile : export 옵션을 미리 지정한 파라미터 파일지정

  ex) exp system/oracle parfile=par_full.dat

- query : 테이블의 특정 부분만을 Export 하기 위해서 사용 한다

  ex) exp scott/tiger query=\"where ename like \'F%\'\" tables=emp \ file=/export/test07.dmp

- rows : Export Dump 파일에 테이블 행(데이터) 포함 여부 표시 (Y)es/(N)o (default값은 y)

  만약 테이블 구조만 export하고 실제 row data는 백업을 원하지 않는 경우에는 rows=n 이라고 명시 한다.

  ex) exp userid=scott/tiger tables=(emp, dept) rows=n file=structure.dmp  (테이블의 구조만 exp)

 

4. import 옵션 및 사용예제
  Import 파라미터

- userid/passwd : import를 수행하는 계정/패스워드
- buffer : Evaluation Buffer크기 지정(용량이 클 수록 import 작업이 빨라진다)
- full : export  파일의 모든 데이터를 import 한다.

  ex) imp userid=system/manager full=y

- file : import 할 export 파일명 지정
- show : 데이터를 import 하지 않고 내용만 확인함

  ex) imp system/oracle file=/backup/export/test03.dmp full=y show=y log=test03.log

- ignore : import 작업 중 발생할 수 있는 에러를 무시하고 다음단계의 작업을 진행함

  ex) imp system/oracle file=/backup/export/test02.dmp ignore=y
- fromuser : export 할 당시의 object의 소유자 지정
- touser : import 할 object의 새 소유자 지정
  ex) imp userid=system/manager fromuser=scott touser=test

- tables : import 할 테이블 이름 지정

  ex) imp userid=system/manager tables=(scott.emp, scott.dept)
parfile : import 옵션을 미리 지정한 파라미터 파일지정


  Import 대상 서버에서 필요한 사전 작업
- Export 한 서버와 동일한 Tablespace 생성
- 충분한 크기의 Temporary Tablespace 확보
- Export 한 서버와 동일한 사용자 생성

참고 : export/import 계정
import 할 때 사용하는 계정은 export 할 때 사용한 계정이어야 한다. 이 계정이 같지 않으면 import 수행 시 오류가 발생한다.만일 export 계정을 잊었다면 덤프파일을 vi 편집기로 열어 확인할 수 있다.(2번째 줄)

참고 : import 작업 중 에러발생 시
import 작업을 진행하던 도중 에러가 발생해 같은 작업을 반복하게 되면, import 대상이 되는 테이블(제약조건이 없는)에 데이터가 중복 저장될 수 있다. 그러므로 같은 작업을 반복시에는 import 대상이 되는 테이블의 내용을 지우고(drop 또는 truncate) 진행해야 한다.

참고 : SYS 계정으로 생성된 Object export
일반적으로 SYS계정에서 생성된 객체는 export 명령어로 백업할 수 없으므로 주의해야 한다.
(단, 경우에 따라서 system 계정으로 백업이 가능하기도 하다)

 

참조 : http://www.jigi.net/4243, http://zolf.egloos.com/3351113

 

'Programming > DB관련' 카테고리의 다른 글

INDEX (인덱스)  (0) 2013.09.10
SQL LOADER란?  (0) 2013.04.24
오라클 백업 및 복구 (Export/Import)  (1) 2013.04.24
DELETE, DROP, TRUNCATE의 비교  (0) 2013.04.24
Character Functions (문자형 함수)  (0) 2012.11.12
DECODE 함수 (ORACLE)  (0) 2012.11.12
Trackbacks 0 : Comments 1
  1. gray 2013.08.10 12:07 Modify/Delete Reply

    내용좀 가져갈게요 출처밝혀요

Write a comment


DELETE, DROP, TRUNCATE의 비교

Programming/DB관련 2013. 4. 24. 14:33

TABLE에서 행을 삭제하는 세 가지 OPTION의 비교

TABLE에서 모든 행을 삭제하는 방법에는 다음과 같은 세 가지 OPTION이 있다.


 1. DELETE 명령어 사용
 
     DELETE 명령어를 사용하여 TABLE의 행을 삭제할 수 있다. 
     예를 들어 EMP TABLE에서 모든 행을 삭제하는 명령문은 다음과 같다.
 
     SQL>DELETE FROM emp;
 
     ◈ DELETE 문을 사용할 때 TABLE이나 CLUSTER에 행이 많으면 행이 삭제 될 때마다 
         많은 SYSTEM 자원이 소모된다. 
         예를 들어 CPU 시간,REDO LOG 영역,  TABLE이나 INDEX에 대한 ROLLBACK SEGMENT 
         영역 등의 자원이 필요하다.
     ◈ TRIGGER가 걸려있다면 각 행이 삭제될 때 실행된다.
     ◈ 이전에 할당되었던 영역은 삭제되어 빈 TABLE이나 CLUSTER에 그대로 남아 있게 된다.
        
 
2. DROP 과 CREATE 명령어 사용
 
     TABLE을 삭제한 다음 재생성할 수 있다. 
     예를 들어 EMP TABLE을 삭제하고 재생성하는 명령문은 다음과 같다.
 
     SQL>DROP TABLE emp;
     SQL>CREATE TABLE emp (......);
 
     ◈ TABLE이나 CLUSTER를 삭제하고 재생성하면 모든 관련된 INDEX, CONSTRAINT,
         TRIGGER도 삭제
되며, 삭제된 TABLE이나 CLUSTERED TABLE에 종속된 OBJECTS는 
         무효화 된다
.
     ◈ 삭제된 TABLE이나 CLUSTERED TABLE에 부여된 권한도 삭제된다.
 
 
3. TRUNCATE 명령어 사용
 
     SQL명령어 TRUNCATE를 사용하여 TABLE의 모든 행을 삭제할 수 있다.
     예를 들어 EMP TABLE을 잘라내는 명령문은 다음과 같다.
 
     SQL>TRUNCATE TABLE emp:
 
     ◈ TRUNCATE 명령어는 TABLE이나 CLUSTER에서 모든 행을 삭제하는 빠르고 
         효율적인 방법
이다.
     ◈ TRUNCATE 명령어는 어떤 ROLLBACK 정보도 만들지 않고 즉시 COMMIT한다.
     ◈ TRUNCATE 명령어는 DDL 명령문으로 ROLLBACK될 수 없다.
     ◈ TRUNCATE 명령문은 잘라 버릴 TABLE과 관련된 구조(CONSTRAINT, TRIGGER 등)과 
         권한에 영향을 주지 않는다. 
  
     ◈ TRUNCATE 명령문이 TABLE에서 ROW를 삭제하면 해당 TABLE에 걸려 있는 TRIGGER는 
         실행되지 않는다
.
     ◈ AUDIT 기능이 ENABLE되어 있으면, TRUNCATE 명령문은 DELETE 문에 해당하는 
         AUDIT 정보를 생성하지 않는다. 대신 발생한 TRUNCATE 명령문에 대한 
         단일 AUDIT RECORD를 생성한다.

 

원본 : http://www.oracleclub.com/article/1455

'Programming > DB관련' 카테고리의 다른 글

SQL LOADER란?  (0) 2013.04.24
오라클 백업 및 복구 (Export/Import)  (1) 2013.04.24
DELETE, DROP, TRUNCATE의 비교  (0) 2013.04.24
Character Functions (문자형 함수)  (0) 2012.11.12
DECODE 함수 (ORACLE)  (0) 2012.11.12
INNER JOIN & OUTER JOIN  (0) 2012.04.05
Trackbacks 0 : Comments 0

Write a comment


log4j.properties 설정

Programming/Spring 2013. 2. 6. 14:58

* 설정 준비

- log4j-1.x.xx.jar를 복사해서 eclipse/workspace/<프로젝트명>/WEB-INF/lib에 붙여넣기

- eclipse/workspace/<프로젝트명>/WEB-INF/src에 log4j.properties를 작성

- eclipse/workspace/<프로젝트명>/WEB-INF/web.xml에 아래 부분 추가

<init-param>

      <param-name>log4j-configuration</param-name>

      <param-value>/WEB-INF/src/log4j.properties</param-value>

</init-param>


-> 굳이 /WEB-INF/src에 log4j.properties를 작성하지 않아도 되는데, 이 properties 파일 위치를 바꿀 경우 web.xml의

param-value의 값도 바꾼 위치에 맞게 설정해준다.


자바 프로그램의 로깅에서 사실상 표준의 위치에 있는 Log4J의 설정 파일은 프로퍼티 형태의 log4j.properties와 XML 형태의 log4j.xml이 있다. 

XML 버전이 조금 늦게 나왔지만 향후에는 XML 설정파일만 지원하게 될 것이라는 얘기도 있지만, 프로퍼티 설정파일이 Java의 deprecated 메소드가 여전히 남아있는 것처럼 아주 없어질 것 같지는 않다.

한 가지 유의할 점은 Log4J가 자동 설정파일을 찾을 때 클래스패스에서 log4j.xml 파일을 먼저 찾고, 이 xml 파일이 없을 경우에만 log4j.properties를 찾는다는 것이다. 


* log4j.properties의 사용 예제

#로그설정(로그레벨 DEBUG ~ FATAL, OFF일경우 로그사용 안함), 사용 로그 이름
log4j.rootLogger=DEBUG, stdout, rolling


#stdout 로그 레벨 설정

log4j.appender.stdout.Threshold=WARN

Log Level
TRACE : 가장 상세한 정보를 나타낼 때 사용한다.
DEBUG : 일반 정보를 상세히 나타낼 때 사용한다.
INFO  : 일반 정보를 나타낼 때 사용한다.
WARN  : 에러는 아니지만 주의할 필요가 있을 때 사용한다.
ERROR : 일반 에러가 일어 났을 때 사용한다.
FATAL : 가장 크리티컬한 에러가 일어 났을 때 사용한다.


  FATAL > ERROR > WARN > INFO > DEBUG > TRACE


#stdout 콘솔 어펜더로 사용
log4j.appender.stdout=org.apache.log4j.ConsoleAppender


Appender

 Appender  설 명
 org.apache.log4j.AsyncAppender  비동기 출력 - 네트워크 전송등 조금 특수한 용도에 사용된다. 로그 이벤트를 queue에 모은후 다른 쓰레드에서 스케줄로 로그를 출력해주는것이다. 다른 Appender와 결합해서 사용한다.
 org.apache.log4j.ConsoleAppender

 stdout, stderr 출력 - Console

 org.apache.log4j.DailyRollingFileAppender  지정한 시간단위로 파일 출력- File
 org.apache.log4j.varia.ExternallyRolledFileAppender  외부 Roller로 출력
 org.apache.log4j.FileAppender

 파일 출력 - File

 org.apache.log4j.jdbc.JDBCAppender  데이터베이스로 출력
 org.apache.log4j.net.JMSAppender  JMS로 출력
 org.apache.log4j.lf5.LF5Appender  LogFactor5라는 스윙 로그뷰어로 출력
 org.apache.log4j.nt.NTEventLogAppender  Windows 이벤트 로그로 출력
 org.apache.log4j.varia.NullAppender  아무것도 안함
 org.apache.log4j.RollingFileAppender  파일 크기단위로 파일 출력 - File
 org.apache.log4j.net.SMTPAppender  메일로 출력
 org.apache.log4j.net.SocketAppender  외부 서버에 Socket으로 출력
 org.apache.log4j.net.SocketHubAppende  SocketServer로서 출력
 org.apache.log4j.net.SyslogAppender  Unix Syslog로 출력
 org.apache.log4j.net.TelnetAppender #FAE0D4


#stdout 패턴 레이아웃 사용
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout


Layout - 로그 출력을 어떤 형식으로 할지 구체적으로 지정해주는 부분

  org.apache.log4j.SimpleLayout

 기본 레이아웃

  org.apache.log4j.TTCCLayout 

 시간 출력에 특화된 레이아웃

  org.apache.log4j.HTMLLayout

 HTML형식으로 출력. 테이블 형식으로 각각의 로그를 출력한다.

  org.apache.log4j.XMLLayout

 XML형식으로 출력

  org.apache.log4j.PatternLayout

 사용자 마음대로 패턴을 지정하여 출력


#stdout 레이아웃 패턴 정의
log4j.appender.stdout.layout.ConversionPattern=%t> [%d{yyyy-MM-dd HH:mm:ss}] [%c{1}] [%L] [%p] %m %n


Options
%d : 로깅 이벤트가 일어난 날자(date)
%p : 로깅 이벤트의 priority
%t : 로깅 이벤트를 생성한 스레드 이름
%c : 로깅 이벤트의 category
%F : 로깅요청을 일으킨 파일 이름
%L : 로깅요청을 일으킨 파일의 행번호
%x : 로깅이벤트를 발생시킨 스레드에 관련된 내포검사항목  (Nested Diagnostic Context : NDC)을 출력
%C : 로깅요청을 일으킨 호출자의 완전한 클래스이름
%M : 로깅요청을 일으킨 메소드
%m : 메세지
%n : 플랫폼 독립적인 개행문자
%l : 소스코드의 위치정보를 출력한다. %C. %M(%F:%L) 의 축약형


#롤링파일 Appender 사용
log4j.appender.rolling=org.apache.log4j.RollingFileAppender
#롤링파일 로그에 대한 파일명 (경로 설정 가능 함)
log4j.appender.rolling.File=output.log

# Log File 뒤에 날짜 패턴 추가
log4j.appender.rolling.DatePattern='.'yyyyMMdd

# Tomcat Restart시 새로 작성 여부 (true - 기존파일에 추가, false - 새로 작성)
log4j.appender.rolling.Append=true

#로그파일 최대 크기
log4j.appender.rolling.MaxFileSize=1KB
#최대파일이 넘어갔을 경우 백업
log4j.appender.rolling.MaxBackupIndex=1
#롤링파일 패턴 레이아웃 사용
log4j.appender.rolling.layout=org.apache.log4j.PatternLayout
#롤링파일 패턴 정의
log4j.appender.rolling.layout.ConversionPattern=%t> [%d{yyyy-MM-dd HH:mm:ss}] [%c{1}] [%L] [%p] %m %n


참고 : ...까먹음,,;;
Trackbacks 0 : Comments 0

Write a comment