Microsoft Word - 기술노트[22회]_AUDIT_ver1.3

Save this PDF as:
 WORD  PNG  TXT  JPG

Size: px
Start display at page:

Download "Microsoft Word - 기술노트[22회]_AUDIT_ver1.3"

Transcription

1 Goodus 기술노트 [22 회 ] AUDIT Author 고형덕, 노재구 Creation Date Last Updated Version 1.1 Copyright(C) 2004 Goodus Inc. All Rights Reserved Version 변경일자 변경자 ( 작성자 ) 주요내용 노재구 문서최초작성 2 3

2 Contents 1. Audit Audit 란? Database Audit Overview 예제 1 (AUDIT_TRAIL=DB) 예제 2 (AUDIT_TRAIL=DB_EXTENDED, Oracle Database 10g New Feature) Controlling the Growth and Size of the Standard Audit Trigger 를이용한 Audit FGA(Fine-Grained Auditing) Fine-Grained Auditing 이란? Fine-Grained Auditing 특징 Oracle 9i Database FGA 예제 Oracle Database 10g FGA 예제 1 STATEMENT_TYPE, AUDIT_TRAIL Oracle Database 10g FGA 예제 2 AUDIT_COLUMN_OPTS Database Auditing과 FGA의비교 부록 Trigger를이용한 DML Auditing AUDIT_UTIL PACKAGE SQL Tips for Developer Oracle 소식 Pro-Active Tuning Service

3 Audit 1.1. Audit 란? Auditing 기능은사용자의행동을감시하거나데이터베이스에관한통계자료를얻는목적으로사용된다. Auditing 기능을사용함으로써누가어떠한테이블을언제사용하고, 언제어떤작업을하는지를기록할수있다. 데이터베이스사용자는일정한권한을부여받아데이터를조작 (Insert, Update, Delete) 하거나조회 (Select) 할수있다. 권한을받은사용자는주어진권한을이용하여원래의목적에맞지않는, 접근해서는안되는중요한데이터를조회하거나변경할수도있다. 이러한일들을막기위해서사용자가데이터를조회, 조작할때마다이에대한정보를기록하여, 누가언제, 무엇을했는지확인하는방법이필요하다. 이것을 감사 (Audit) 라고한다 Database Audit Overview 데이터베이스에영향을끼치는작업을감시하거나특정데이터베이스작업에대한데이터를모니터하고수집한다. 이벤트에대한정보는 Audit Trail 에저장된다. - Database Aduting 을통해데이터베이스의모든연결에대해감사가가능하다. 승인되지않은사용자가테이블에서데이터를삭제하고있는경우, DBA 는데이터베이스에있는테이블에서의행에대한성공적인삭제여부를감시하는데사용된다. - 특정데이터베이스작업을모니터링하고, 그에대한데이터를모으는데사용될수있다. 예를들어, DBA 는갱신중인테이블, 수행한논리적 I/O 횟수및시스템이바쁜시간에연결한동시 User 수에대한통계를수집할수있다. - DBA 에의해활성화또는비활성화할수있다. - 컬럼의값에대한기록은불가능하다. 그림 1 Database Audit 1. Enable/Disable Database Auditing (Setting Audit Parameter) - 데이터베이스감사 (Database Auditing) 설정은 DBA 에의해가능하다. Init 파라메터중 AUDIT_TRAIL 을이용하여데이터베이스감사기능을활성화또는비활성화시킬수있다. AUDIT_TRAIL Value TRUE / DB DB_EXTENDED Description Audit 를활성화함. Audit 결과는 SYS.AUD$ 에저장 Audit Trail 정보에 SQLBIND, SQLTEXT 추가됨. (Oracle Database 10g New Feature) OS OS 에서허용하는경우활성화, Audit 결과는파일로저장됨. FALSE / NONE Audit 를비활성화함. 표 1 - AUDIT_TRAIL Parameter Values - 3 -

4 2. Specify Audit Options - Audit 명령을사용하여 Audit 할명령, User, Object, Privilege 를지정한다. Audit Record 가발생할때마다생성할지, Session 당한번생성할지를결정할수있다. 즉, 다음과같은 3 가지종류가있다. Statement Auditing SQL 명령문의유형에따른 Auditing 설정 ex) AUDIT TABLE BY SCOTT BY ACCESS WHENEVER SUCCESSFUL; : scott 유저가테이블에관련된명령 (create table, drop table 등 ) 이성공한경우기록된다. Privilege Auditing 사용되는 PRIVILEGE 에따른 Auditing 설정 ex) AUDIT CREATE TABLE BY SCOTT BY SESSION; : scott 유저가 create table 권한이필요한명령을수행시기록 Object Auditing 특정스키마의개체의명령문에대한 Auditing 설정 ex) AUDIT ALL ON SCOTT.EMP; : scott.emp 테이블에대한모든명령 (select, insert, update, delete, drop 등 ) 에관한사항이기록된다. 설정된 AUDIT 기능은 NOAUDIT 명령으로제거할수있다. ex) NOAUDIT ALL ON SCOTT.EMP; 3. Execute Command - 사용자가 SQL 또는 PL/SQL 문을실행할때 Server Process 는 Audit 옵션을검색하여실행중인 Statement 가감사대상에포함되는지여부를먼저결정한다. 4. Generate Audit Trail - audit_trail 파라메터에정의된값에따라 OS 의파일또는데이터베이스내에 SYS.AUD$ 에 Audit Trail 레코드를생성한다. 이작업은사용자의 Transaction 과무관하므로 Transaction Rollback 이수행될지라도 Audit Trail 레코드는그대로유지된다. 단, Audit Trail 레코드는구문의 execute 단계에서생성되므로 Parsing 단계에서오류가발생하면생성되지않는다. 5. Review Audit Information - Audit 를통해생성된정보는아래의 Audit Trail Data Dictionary 뷰를통해확인할수있다. OS 에생성된 Audit Trail 인경우 OS Utility 를사용하여확인한다. 이정보를토대로의심이가는작업을확인하거나데이터베이스작업에대한모니터링할수있다. View Description STMT_AUDIT_OPTION_MAP Audit 옵션타입코드에대한정보를보여준다. AUDIT_ACTIONS Audit Trail Action 타입코드에대한설명을포함한다. ALL_DEF_AUDIT_OPTS Object 가생성될대적용될수있는기본적인 Object-auditing 옵션을보여준다. DBA_STMT_AUDIT_OPTS 시스템과사용자에걸쳐현재시스템의 Audit 옵셥을보여준다. DBA_PRIV_AUDIT_OPTS 시스템과사용자에걸쳐 Audit 되고있는현재시스템권한을보여준다. DBA_OBJ_AUDIT_OPTS USER_OBJ_AUDIT_OPTS DBA_AUDIT_TRAIL USER_AUDIT_TRAIL DBA_AUDIT_OBJECT USER_AUDIT_OBJECT 모든 Object 에대한 Audit 옵션을보여준다. USER 뷰는현재사용자가소유한모든 Object 의 Audit Option 을보여준다. 모든 Audit Trail 엔트리를리스트한다. USER 뷰는현재사용자에관련된 Audit Trail 엔트리를보여준다. 시스템의모든 Object 에대한 Audit Trail 레코드를포함한다. USER 뷰는현재사용자가접근할수있는 Object 와관련된구문에대한 Audit Trail 레코드를리스트한다

5 DBA_AUDIT_SESSION USER_AUDIT_SESSION DBA_AUDIT_STATEMENT USER_AUDIT_STATEMENT CONNECT 와 DISCONNECT 에관련된모든 Audit Trail 레코드를리스트한다. USER 뷰는현재사용자에대한연결설정과해제에관련된모든 Audit Trail 레코드를리스트한다. 데이터베이스전반적으로 GRANT, REVOKE, AUDIT, NOADUIT, ALTER SYSTEM 구문과관계되는 Audit Trail 레코드를리스트한다. USER 뷰는현재사용자와관련된내용만을보여준다. DBA_AUDIT_EXISTS AUDIT EXISTS 와 AUDIT NOT EXISTS 와관련된 Audit Trail 엔트리를리스트한다. 표 2 - Audit Trail Data Dictionary Views 1.3. 예제 1 (AUDIT_TRAIL=DB) SQL*Plus: Release Production on Thu Aug 2 15:25: Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. SQL> connect /as sysdba SQL> show parameter audit_trail NAME TYPE VALUE audit_trail string DB -- Object Audit 설정 SQL> select owner, object_name, object_type, sel from dba_obj_audit_opts 2 where object_name = 'EMP' and owner = 'SCOTT'; OWNER OBJECT_NAME OBJECT_TYPE SEL SCOTT EMP TABLE -/- SQL> audit select on scott.emp by session whenever successful; Audit succeeded. SQL> select owner, object_name, object_type, sel from dba_obj_audit_opts 2 where object_name = 'EMP' and owner = 'SCOTT'; OWNER OBJECT_NAME OBJECT_TYPE SEL SCOTT EMP TABLE S/S SQL> select * from dba_obj_audit_opts 2 where object_name = 'EMP' and owner = 'SCOTT'; OWNER OBJECT_NAME OBJECT_TYPE ALT AUD COM DEL GRA IND INS LOC REN SEL UPD REF EXE CRE REA WRI SCOTT EMP TABLE -/- -/- -/- -/- -/- -/- -/- -/- -/- S/S -/- -/- -/- -/- -/- -/- * dba_obj_audit_opts 는 object에설정할수있는각 audit option을 column으로하고있으며, 내용은 [A/S]/[A/S] 의형식을갖는다. / 의앞부분은 successful일경우, 뒷부분은 not successful일경우를표시한다. * A는 by access, S는 by session을의미한다. by access는해당명령이내려질때마다정보를기록하고, by sessoin은접속된세션에대하여하나의레코드만생성한다

6 SQL> select count(*) from sys.aud$; COUNT(*) SQL> connect scott/tiger SQL> select * from emp where sal > 3000; 인사급여테이블에 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO KING PRESIDENT 17-NOV SQL> connect / as sysdba SQL> select count(*) from sys.aud$; COUNT(*) SQL> select os_username, username, timestamp, owner, obj_name, action_name, ses_actions, returncode 2 from dba_audit_object; OS_USERNAME USERNAME TIMESTAMP OWNER OBJ_NAME ACTION_NAME SES_ACTIONS RETURNCODE oracle SCOTT 02-AUG-07 SCOTT EMP SESSION REC S * returncode 가 0 인경우는 SUCCESS 임을의미한다. * by session 로설정한경우 audit 를설정한경우 action_name 은 SESSION REC 으로표시된다. * ses_actions columns 은총 13 가지의 action(alter, audit, comment, delete, grant, index, insert, lock, rename, select, update, reference, execute) 에대한 Audit 정보를포함한다. 각 Action 에대해모두성공하였다면 S 를실패하였다면 F 로표현되며성공과실패가모두있었다면 B 로표현된다. * by access 로설정한경우 action_name 컬럼에해당 action( 예 : delete, insert) 등이바로기술된다. -- Private Audit 설정 SQL> select * from dba_priv_audit_opts; USER_NAME PROXY_NAME PRIVILEGE SUCCESS FAILURE CREATE ANY RULE BY ACCESS NOT SET ALTER ANY RULE BY ACCESS NOT SET EXECUTE ANY RULE BY ACCESS NOT SET SQL> audit create session by scott; Audit succeeded. SQL> select * from dba_priv_audit_opts; USER_NAME PROXY_NAME PRIVILEGE SUCCESS FAILURE SCOTT CREATE SESSION BY ACCESS BY ACCESS CREATE ANY RULE BY ACCESS NOT SET ALTER ANY RULE BY ACCESS NOT SET - 6 -

7 EXECUTE ANY RULE BY ACCESS NOT SET -- connect session SQL> connect scott/tiger -- disconnect session SQL> disconnect Disconnected from Oracle9i Enterprise Edition Release bit Production With the Partitioning option JServer Release Production SQL>! date Thu Aug 2 18:09:24 KORDT 2007 SQL> connect /as sysdba SQL> alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss'; Session altered. SQL> select os_username, username, timestamp, action_name, logoff_time, logoff_lread, logoff_pread 2 from dba_audit_session 3 where username = 'SCOTT'; OS_USERNAME USERNAME TIMESTAMP ACTION_NAME LOGOFF_TIME LOGOFF_LREAD LOGOFF_PREAD oracle SCOTT :08:56 LOGOFF :08: 다른쪽터미널에서 Scott 유저로접속하고다시조회하면, SQL> select os_username, username, timestamp, action_name, logoff_time, logoff_lread, logoff_pread 2 from dba_audit_session 3 where username = 'SCOTT'; OS_USERNAME USERNAME TIMESTAMP ACTION_NAME LOGOFF_TIME LOGOFF_LREAD LOGOFF_PREAD oracle SCOTT :08:56 LOGOFF :08: oracle SCOTT :55:59 LOGON -- Statement Aduit 설정 -- 존재하지않는오브젝트에대한구문을실행시에 Audit Trail 작성 SQL> audit not exists by test; SQL> select * from dba_stmt_audit_opts ; USER_NAME PROXY_NAME AUDIT_OPTION SUCCESS FAILURE SCOTT NOT EXISTS BY ACCESS BY ACCESS SQL> conn scott/tiger SQL> grant select on not_exist_table to tester; grant select on not_exist_table to tester * ERROR at line 1: ORA-00942: table or view does not exist SQL> select os_username,username,timestamp,obj_name,action_name, 2 obj_privilege, grantee - 7 -

8 3 from dba_audit_statement; OS_USERNAME USERNAME TIMESTAMP OBJ_NAME ACTION_NAME OBJ_PRIVILEGE GRANTEE oracle SCOTT 04-AUG-07 NOT_EXIST_TABLE GRANT OBJECT Y TESTER * 3 가지타입의 Audit Trail 이생성되는예제를보았듯이누가언제무슨작업을하겨고했는지알수있다. 하지만, 위의결과에서는어떤구문을실행했을때 Auditing 되었는지정확히알수가없고, Object Audit 에서볼수있듯이어떤데이터를조회했는지알수가없다 예제 2 (AUDIT_TRAIL=DB_EXTENDED, Oracle Database 10g New Feature) SQL> show parameter audit_trail NAME TYPE VALUE audit_trail string DB_EXTENDED SQL> connect /as sysdba SQL> audit insert on scott.emp by access; Audit succeeded. SQL> select owner, object_type, object_name, ins from dba_obj_audit_opts 2 where owner = 'SCOTT' and object_name = 'EMP'; OWNER OBJECT_TYPE OBJECT_NAME INS SCOTT TABLE EMP A/A SQL> desc dba_audit_object Name Null? Type OS_USERNAME VARCHAR2(255) USERNAME VARCHAR2(30) USERHOST VARCHAR2(128) TERMINAL VARCHAR2(255) client pc 명 : 사용자를짐작할수있음 TIMESTAMP DATE OWNER VARCHAR2(30) OBJ_NAME VARCHAR2(128) ACTION_NAME VARCHAR2(28) NEW_OWNER VARCHAR2(30) NEW_NAME VARCHAR2(128) SES_ACTIONS VARCHAR2(19) COMMENT_TEXT VARCHAR2(4000) SESSIONID NOT NULL NUMBER ENTRYID NOT NULL NUMBER STATEMENTID NOT NULL NUMBER RETURNCODE NOT NULL NUMBER PRIV_USED VARCHAR2(40) CLIENT_ID VARCHAR2(64) - 8 -

9 ECONTEXT_ID SESSION_CPU EXTENDED_TIMESTAMP PROXY_SESSIONID GLOBAL_UID INSTANCE_NUMBER OS_PROCESS TRANSACTIONID SCN SQL_BIND SQL_TEXT VARCHAR2(64) NUMBER TIMESTAMP(6) WITH TIME ZONE NUMBER VARCHAR2(32) NUMBER VARCHAR2(16) RAW(8) NUMBER NVARCHAR2(2000) NVARCHAR2(2000) * ORACLE Database 10g 에서 AUD$ 테이블에는위 DBA 뷰에서보듯이 SQL_BIND 와 SQL_TEXT 두컬럼이추가되었다. SQL> select username, owner, obj_name, action_name, ses_actions, returncode, timestamp, 2 sql_bind, sql_text 3 from dba_audit_object; no rows selected SQL> conn scott/tiger SQL> variable empno number; SQL> variable ename varchar2(8); SQL> begin 2 :empno := 9999; 3 :ename := 'TESTER'; 4 end; 5 / PL/SQL procedure successfully completed. SQL> insert into emp values (:empno, :ename, 'MANAGER', 7499, SYSDATE, 3000, '', 20); 1 row created. SQL> commit; Commit complete. SQL> connect / as sysdba SQL> select username, owner, obj_name, action_name, ses_actions, returncode, timestamp, 2 sql_bind, sql_text 3 from dba_audit_object; USERNAME OWNER OBJ_NAME ACTION_NAME SES_ACTIONS RETURNCODE TIMESTAMP SQL_BIND SQL_TEXT SCOTT SCOTT EMP INSERT 0 05-AUG-07 #1(4):9999 #2(6):TESTER insert into emp values (:empno, :ename, 'MANAGER', 7499, SYSDATE, 3000, '', 20) - 9 -

10 1.5. Controlling the Growth and Size of the Standard Audit Audit Trail 이쌓이는 SYS.AUD$ 테이블은 SYSTEM 테이블스페이스생성된다. 그러므로 SYS.AUD$ 테이블에데이터가쌓임으로써 SYSTEM 테이블에대하여경합등부담을줄수있다. 예를들어, CREATE SESSION 에대한 AUDITING 을수행할때세션의사용량에따라엄청난데이터가축척될수있다. 그러므로불필요한 AUDIT 의사용은데이터베이스의성능을저하시킬수있다. 그러므로불필요한 Audit 기능은제한하고, Audit 하는기간동안 SYS.AUD$ 테이블의크기를적절히유지하도록해야한다. Purging Audit Record from the Audit Trail Archiving Audit Trail Information Reducing the Size of the Audit Trail 제어방법에대한예시는다음과같다. -- Purging Audit Record from the Audit Trail DELETE FROM SYS.AUD$; DELETE FROM SYS.AUD$ WHERE obj$name = EMP ; TRUNCATE TABLE SYS.AUD$; -- Archiving Audit Trail Information INSERT INTO table SELECT FROM SYS.AUD$ exp '"sys/sys as sysdba" ' file=aud.dmp tables=aud$; -- Reducing the Size of the Audit Trail : Archiving 과 Purging 을이용한관리 1. SYS.AUD$ 에대한백업을수행한다. - Export 등 2. sys 유저로접속한다. 관리자에의한수행 3. TRUNCATE TABLE SYS.AUD$; (HWM 의이동으로 extent 할당을해제하여테이블내공간을줄임.) 4. Audit Trail Record 가많이생성되면 1 번부터재수행한다 Trigger 를이용한 Audit 앞서말했듯이 10g 이전의 Audit 의기능에는바운드변수 (SQL_BIND) 와구문 (SQL_TEXT) 를알수있는방법이없었다. 그리고 Oracle 9i Database 에서 FGA(Find-Grained Auditing) 을사용하면좀더다양하고세부적인 Auditing 이가능하다. 우선, FGA 를사용하지않고구현할수있는방법을알아보겠다. 그리고 FGA 는뒤에서설명하기로하겠다. 낮은버전의오라클 (8i 이하 ) 이나오라클이제공하지않는 AUDITING 을구현하기위해서 Trigger 를이용할수있다. 이는 Trigger 를사용하여데이터의액세스나조작이일어나기전에그내용을관리자가관리하는테이블로저장하는방식이다. 단순한 AUDITING 또는 AUDIT 로인한부담을줄이기위해데이터베이스사용자에의해개발된 AUDIT 기능이라고보면될것이다. 트리거를이용하여사용자에의한트랜잭션에대한로그를남길수있다. 하지만자칫 Trigger 의내용으로인해실제구문의수행시간및리소스사용에영향을최소한으로줄여야한다. 다음은트리거를이용하여특정테이블의변경된내용을 Auditing 하는예제이다

11 1. AUDIT 테이블생성. connect / as sysdba CREATE TABLE emp_audit ( old_empno NUMBER(4), old_ename VARCHAR2(10), old_job VARCHAR2(9), old_mgr NUMBER(4), old_hiredate DATE, old_sal NUMBER(7,2), old_comm NUMBER(7,2), old_deptno NUMBER(2), new_empno NUMBER(4), new_ename VARCHAR2(10), new_job VARCHAR2(9), new_mgr NUMBER(4), new_hiredate DATE, new_sal NUMBER(7,2), new_comm NUMBER(7,2), new_deptno NUMBER(2), changed_by VARCHAR2(8), change_type CHAR(1), timestamp DATE ); Table created. 2. TRIGGER 생성. CREATE OR REPLACE TRIGGER LogEmpChanges BEFORE INSERT OR DELETE OR UPDATE ON scott.emp FOR EACH ROW DECLARE v_changetype CHAR(1); BEGIN /* Use 'I' for an INSERT, 'D' for DELETE, and 'U' for UPDATE. */ IF INSERTING THEN v_changetype := 'I'; ELSIF UPDATING THEN v_changetype := 'U'; ELSE v_changetype := 'D'; END IF; INSERT INTO emp_audit ( change_type, changed_by, timestamp, old_empno, old_ename, old_job, old_mgr, old_hiredate, old_sal, old_comm, old_deptno, new_empno, new_ename, new_job, new_mgr, new_hiredate, new_sal, new_comm, new_deptno) VALUES ( v_changetype, USER, SYSDATE, :old.empno, :old.ename, :old.job, :old.mgr, :old.hiredate, :old.sal, :old.comm, :old.deptno, :new.empno, :new.ename, :new.job, :new.mgr, :new.hiredate, :new.sal, :new.comm, :new.deptno); END LogEmpChanges; / PL/SQL procedure successfully completed

12 connect scott/tiger INSERT INTO emp VALUES ( 9999, 'TESTER', 'CLERK', 7782, SYSDATE, 1000, 0, 10); COMMIT; UPDATE emp SET comm = 300 WHERE empno = 9999; COMMIT; DELETE FROM emp WHERE empno = 9999; COMMIT; connect /as sysdba SELECT OLD_EMPNO, OLD_ENAME, OLD_COMM, NEW_EMPNO, NEW_ENAME, NEW_COMM, CHANGED_BY, CHANGE_TYPE, TIMESTAMP FROM EMP_AUDIT; OLD_EMPNO OLD_ENAME OLD_COMM NEW_EMPNO NEW_ENAME NEW_COMM CHANGED_BY CH TIMESTAMP TESTER 0 SCOTT I 01-AUG TESTER TESTER 300 SCOTT U 01-AUG TESTER 300 SCOTT D 01-AUG-07 * Before Trigger 로인하여사용자가 DML 작업을수행할때해당테이블의변경전후의 column 값및변경된시간등을 emp_audit 테이블에기록한다. * 부록 1. 에는위와같은소스를자동생성해주는샘플 Package 를작성해보았다. 해당테이블의정보를추출하여 audit trail record 를담을테이블과이벤트를처리할트리거를자동생성하고제거할수있는패키지이다. 다시말해, 편의상구문을자동생성하고, 실행시키는루틴을포함시켜놓았다. 오라클의제공하는 Audit 기능을대체할수있도록응용해보기바란다

13 2. FGA(Fine-Grained Auditing) 2.1. Fine-Grained Auditing 이란? 데이터베이스감사 (Database Auditing) 기능을사용하여특정스키마내의테이블에 SELECT 에관한 Auditing 을설정하였을경우해당테이블의조회관련된모든수행기록이 Audit Trail Record 의형태로저장될것이다. 이런경우실제로원하지않는결과까지도모두기록되어 Audit Trail 의양은상당히많아질것이다. 그리고이들데이터에서특정컬럼에대한조회내역직접적으로사용된 SELECT 문을찾기는어려울것이다. FGA(Fine-Grained Auditing) 은이러한문제에대한해결책을제시했다. Oracle 9i Database 에등장한 FGA 는특정데이터를조회하는경우에만감사가가능하도록설정할수있다. Oracle Database 10g 에서는 Oracle 9i Database 에서 SELECT 만가능했던 FGA 의영역을 DML 까지확장하며완성되었다 Fine-Grained Auditing 특징 더상세한레벨의감사기능을제공한다. 선택적인감사를위한조건으로 SQL 의 WHERE 절을기반으로한다. 값에의한감사뿐만아니라특정컬럼의참조또는액세스여부에대해서도 Auditing 이가능하다. DBMS_FGA 패키지를이용하여활성화 / 비활성화한다. CBO(Cost Based Optimizer) 인경우에정상적으로작동한다. ( 인스턴스레벨의 CBO 설정및테이블에대한분석 (Analyze) 이되어있어야하며 SQL 에힌트가없어야한다.) Oracle Database 9i 에서는 SELECT 문에서만가능하며, Oracle Database 10g 에서는 Insert, Update, Delete, Merge 문에대해서도가능하다. Oracle Database 10g 에서는컬럼에대한옵션 (audit_column_opts) 지정으로 DBMS_FGA.ALL_COLUMNS / DBMS_FGA.ANY_COLUMNS 를사용할수있다. FGA 에서 Audit Trail Record 는 SYS.FGA_LOG$ 에저장된다. Parameter Name Data Types Description object_schema VARCHAR2 설정하고자하는스키마명 object_name VARCHAR2 설정하고자하는오브젝트명 ( 테이블, 뷰명 ) policy_name VARCHAR2 Policy 명 (Unique) audit_condition VARCHAR2 상세감사조건, 스키마오브젝트에대한논리적인데이터그룹에상응하는 WHERE절지칭 SQL문의조건절에해당하는부분이명시적묵시적으로이조건에만족할경우 Audit Trail을생성함. 조회결과의일부가조건에해당되는경우도 Audit Trail을생성함 audit_column VARCHAR2 감사대상이되는컬럼을지정함. Oracle 9i Database에서는한개의컬럼만지정이가능했으나, Oracle Database 10g부터는하나이상의컬럼의지정이가능. handler_schema VARCHAR2 FGA에의해 Audit Trail이생성될때실행시킬프로시저의소유자 handler_module VARCHAR2 FGA에의해 Audit Trail이생성될때실행시킬프로시저생성패턴 : PROCEDURE <fname>{ obect_schema VARCHAR2, object_name VARCHAR2, policy_name VARCHAR2} AS enable BOOLEAN FGA 활성화여부 TRUE로지정해야활성화됨. statement_type(10g) VARCHAR2 FGA가작동하는쿼리타입지정 (INSERT/DELETE/UPDATE, SELELCT) audit_trail(10g) AUDIT_TRAIL=> DBMS_FGA.DB_EXTENDED 로설정되는경우 BINARY_INTEGER SYS.FGA_log$ 의 LSQLTEXT, LSQLBIND 컬럼에 Audit Trail이 IN DEFAULT 생성된다. audit_column_opts(10g) BINARY_INTEGER IN DEFAULT AUDIT_COLUMN 에나열된컬럼중에서나열된컬럼중모두엑세스될때 Audit Trail 을생성하도록하는 DBMS_FGA.ALL_COLUMNS 옵션과 AUDIT_COLUMN 에나열된컬럼중에서하나라도엑세스될때 AUDIT TRAIL 이생성되도록지정하는 DBMS_FGA.ANY_COLUMNS 옵션이있다. 표 3 DBMS_FGA.ADD_POLICY 프로시져

14 Parameter Name Data Types Description object_schema VARCHAR2 해제하고자하는스키마명 object_name VARCHAR2 해제하고자하는오브젝트명 ( 테이블, 뷰명 ) policy_name VARCHAR2 Policy 명 표 4 DBMS_FGA.DROP_POLICY 2.3. Oracle 9i Database FGA 예제 CONNECT system/manager CREATE USER scott IDENTIFIED BY tiger DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp; User created. GRANT CONNECT, RESOURCE TO scott; Grant succeeded. CREATE USER alice IDENTIFIED BY alice DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp; User created. GRANT CONNECT, RESOURCE TO alice; Grant succeeded. CONNECT SQLPLUS scott/tiger ANALYZE TABLE emp COMPUTE STATISTICS; Table analyzed. ANALYZE TABLE dept COMPUTE STATISTICS; Table analyzed. GRANT SELECT ON emp TO alice; Grant succeeded. GRANT SELECT ON dept TO alice; Grant succeeded

15 CONNECT system/manager -- FGA 설정 EXECUTE DBMS_FGA.ADD_POLICY( object_schema => 'SCOTT', - object_name => 'emp', - policy_name => 'aud_emp_sal_mgr', - audit_condition => 'deptno in (10, 20) ', - audit_column => 'sal, mgr', - handler_schema => 'system', - handler_module => 'INS_EMP_TRAIL', - enable => TRUE ); PL/SQL procedure successfully completed. CREATE TABLE aud_emp_trail ( object_schema VARCHAR2(80), object_name VARCHAR2(80), policy_name VARCHAR2(80)); Table created. CREATE OR REPLACE PROCEDURE system.ins_emp_trail ( p_object_schema VARCHAR2, p_object_name VARCHAR2, p_policy_name VARCHAR2) AS BEGIN INSERT INTO system.aud_emp_trail VALUES ( p_object_schema, p_object_name, p_policy_name ); END; / Procedure created. CONNECT ALICE/ALICE SELECT * FROM scott.emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO SMITH CLERK DEC ALLEN SALESMAN FEB WARD SALESMAN FEB JONES MANAGER APR MARTIN SALESMAN SEP BLAKE MANAGER MAY CLARK MANAGER JUN SCOTT ANALYST DEC KING PRESIDENT 17-NOV TURNER SALESMAN SEP ADAMS CLERK JAN JAMES CLERK DEC FORD ANALYST DEC MILLER CLERK JAN rows selected. -- 모든데이터가조회되므로 audit_condition 을만족한다

16 SELECT empno, ename, sal FROM scott.emp; EMPNO ENAME SAL SMITH ALLEN WARD JONES MARTIN BLAKE CLARK SCOTT KING TURNER ADAMS JAMES FORD MILLER rows selected. -- 역시 WHERE 절이존재하지않고, 조회하는컬럼중에 sal 이있으므로 Audit Trail 생성된다. CONNECT system/manager SELECT ename FROM scott.emp WHERE deptno = 20; ENAME SMITH JONES SCOTT ADAMS FORD -- Audit Column 에도존재하지않고, Audit Condition 에만족하지않으므로 Audit Trail 이생성되지않는다. SELECT ename, sal, mgr FROM scott.emp WHERE deptno = 30; ENAME SAL MGR ALLEN WARD MARTIN BLAKE TURNER JAMES rows selected. -- Audit Column 에는존재하는 WHERE 절에만족하는데이터가 Audit Condition 에만족하는데이터를포함하지않으므로 Audit Trail 이생성되지않는다. COL db_user FORMAT A10 COL sql_bind FORMAT A40 COL sql_text FORMAT A60 col policy_name for a20 SET LINESIZE

17 SELECT TO_CHAR(timestamp, 'YYMMDDHH24MI') AS timestamp, db_user, policy_name, sql_text,userhost FROM dba_fga_audit_trail; TIMESTAMP DB_USER POLICY_NAME SQL_TEXT USERHOST ALICE AUD_EMP_SAL_MGR SELECT * FROM scott.emp PC ALICE AUD_EMP_SAL_MGR SELECT empno, ename, sal FROM scott.emp PC1 COLUMN object_schema FORMAT A15 COLUMN object_name FORMAT A15 COLUMN POLICY_NAME FORMAT A15 SELECT * FROM aud_emp_trail; OBJECT_SCHEMA OBJECT_NAME POLICY_NAME SCOTT EMP AUD_EMP_SAL_MGR SCOTT EMP AUD_EMP_SAL_MGR 2.4. Oracle Database 10g FGA 예제 1 STATEMENT_TYPE, AUDIT_TRAIL SQL> show parameter audit_trail NAME TYPE VALUE audit_trail string NONE SQL> BEGIN 2 DBMS_FGA.ADD_POLICY(object_schema => 'SCOTT', 3 object_name => 'EMP', 4 policy_name => 'POL_SCOTT_EMP', 5 audit_condition => 'sal > 3000', 6 enable => TRUE, 7 statement_types => 'SELECT, INSERT', 8 audit_trail => DBMS_FGA.DB_EXTENDED); 9 END; 10 / PL/SQL procedure successfully completed. SQL> SELECT object_schema, object_name, policy_name, policy_text, policy_column, enabled 2 FROM dba_audit_policies; OBJECT_SCHEM OBJECT_NAME POLICY_NAME POLICY_TEXT POLICY_COLUMN ENA SCOTT EMP POL_SCOTT_EMP sal > 3000 YES SQL> SELECT timestamp, object_name, scn, sql_text, sql_bind 2 FROM dba_fga_audit_trail; no rows selected SQL> insert into emp values (:empno, :ename, 'MANAGER', 7499, SYSDATE, 3100, '', 20); 1 row created

18 SQL> select * from emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO TESTER MANAGER AUG ALLEN SALESMAN FEB WARD SALESMAN FEB JONES MANAGER APR MARTIN SALESMAN SEP BLAKE MANAGER MAY CLARK MANAGER JUN SCOTT ANALYST DEC KING PRESIDENT 17-NOV JONES MANAGER APR MARTIN SALESMAN SEP BLAKE MANAGER MAY CLARK MANAGER JUN SCOTT ANALYST DEC KING PRESIDENT 17-NOV rows selected. SQL> insert into emp values (8888, 'TESTER2', 'SALESMAN', 7499, SYSDATE, 3200, 10, 30); 1 row created. SQL> delete from emp where empno = 9999; 1 row deleted. SQL> select timestamp, object_name, scn, sql_bind, sql_text, 2 from dba_fga_audit_trail; TIMESTAMP OBJECT_NAME SCN SQL_BIND SQL_TEXT :36:21 EMP 0 #1(4):9999 #2(6):TESTER insert into emp values (:empno, :ename, 'MANAGER', 7499, SYSDATE, 3100, '', 20) :36:26 EMP E+12 select * from emp; :36:34 EMP 0 insert into emp values (8888, 'TESTER2', 'SALESMAN', 7499, SYSDATE, 3200, 10, 30) * Oracle Database 10g 부터 statement_types 과 audit_trail 이추가되었다. Oracle 9i Database 에서 SELECT 문만 auditing 이가능했지만 Oracle Database 10g 에서는 INSERT, DELETE, UPDATE, MERGE 에대해서도가능하다. 또한 audit_trail 파라메터에 DBMS_FGA.DB_EXTENDED 로설정하므로 init parameter 의 audit_trail 파라메터와무관하게 FGA 가설정만으로수행된구문과바인드정보를볼수있다. * 위예제에서보았듯이 statement_types 가 SELECT, INSERT 이므로두가지의구문형식에대해서만 Auditing 되며, DELETE 는 Auditing 되지않았다. 그리고 audit_trail 이 DB_EXTENEDED 로설정되어 sql_bind, 와 sql_text 에대해서도 audit trail 이작성되었다

19 2.5. Oracle Database 10g FGA 예제 2 AUDIT_COLUMN_OPTS SQL> conn / as sysdba SQL> truncate table fga_log$; Table truncated. SQL> BEGIN 2 DBMS_FGA.DROP_POLICY(object_schema => 'SCOTT', 3 object_name => 'EMP', 4 policy_name => 'POL_SCOTT_EMP'); 5 END; 6 / PL/SQL procedure successfully completed. SQL> BEGIN 2 DBMS_FGA.ADD_POLICY(object_schema => 'SCOTT', 3 object_name => 'EMP', 4 policy_name => 'POL_SCOTT_EMP1', 5 audit_column => 'empno, sal, comm', 6 enable => TRUE, 7 audit_column_opts => DBMS_FGA.ANY_COLUMNS); 8 END; 9 / PL/SQL procedure successfully completed. SQL> select timestamp, object_name, scn, sql_bind, sql_text 2 from dba_fga_audit_trail; no rows selected SQL> connect scott/tiger SQL> select empno, ename from emp where deptno = 20; EMPNO ENAME JONES 7788 SCOTT 7566 JONES 7788 SCOTT SQL> select empno, sal from emp where sal > 3000; EMPNO SAL SQL> select ename, job from emp where job > 'MANAGER'; ENAME JOB ALLEN SALESMAN WARD SALESMAN MARTIN SALESMAN KING PRESIDENT MARTIN SALESMAN KING PRESIDENT

20 SQL> select empno, sal, comm from emp where deptno = 30; EMPNO SAL COMM SQL> select timestamp, object_name, scn, sql_bind, sql_text 2 from dba_fga_audit_trail; TIMESTAMP OBJECT_NAME SCN SQL_BIND SQL_TEXT :57:18 EMP E+12 select empno, ename from emp where deptno = :57:32 EMP E+12 select empno, sal from emp where sal > :58:07 EMP E+12 select empno, sal, comm from emp where deptno = 30 * audit_column_opts 값이 DBMS_FGA.ANY_COLUMNS 으로설정했을경우 audit_column 에나열된 Column 중에 1 개라도포함이되어있다면 Audit Trail 이기록된다. 나열된컬럼들중에없는경우는기록되지않는다. SQL> truncate table fga_log$; Table truncated. SQL> BEGIN 2 DBMS_FGA.DROP_POLICY(object_schema => 'SCOTT', 3 object_name => 'EMP', 4 policy_name => 'POL_SCOTT_EMP1'); 5 END; 6 / PL/SQL procedure successfully completed. SQL> BEGIN 2 DBMS_FGA.ADD_POLICY(object_schema => 'SCOTT', 3 object_name => 'EMP', 4 policy_name => 'POL_SCOTT_EMP2', 5 audit_column => 'empno, sal, comm', 6 enable => TRUE, 7 audit_column_opts => DBMS_FGA.ALL_COLUMNS); 8 END; 9 / PL/SQL procedure successfully completed. SQL> connect scott/tiger

21 SQL> select empno, ename from emp where deptno = 20; EMPNO ENAME JONES 7788 SCOTT 7566 JONES 7788 SCOTT SQL> select empno, sal from emp where sal > 3000; EMPNO SAL SQL> select ename, job from emp where job > 'MANAGER'; ENAME JOB ALLEN SALESMAN WARD SALESMAN MARTIN SALESMAN KING PRESIDENT MARTIN SALESMAN KING PRESIDENT SQL> select empno, sal, comm from emp where deptno = 30; EMPNO SAL COMM SQL> select timestamp, object_name, scn, sql_bind, sql_text 2 from dba_fga_audit_trail; TIMESTAMP OBJECT_NAME SCN SQL_BIND SQL_TEXT :01:07 EMP E+12 select empno, sal, comm from emp where deptno = 30 * 위와같이 audit_column_opts 를 DBMS_FGA.ALL_COLUMN 으로설정한경우, audit_column 에나열한컬럼이모두조회되는구문에서만 Audit Trail 이기록된다 Database Auditing 과 FGA 의비교 이상살펴보았듯이 Database Auditing, Trigger 를이용한 Auditing, FGA(Fine-Grained Auditing) 을사용하는 Auditing 기법에대해알아보았다. 기존 Database Auditing 에서는그기능에제약이있었지만, Oracle 9i Database 에서제공되는 FGA 를사용하면보다용이한 Auditing 기능을제공한다. 적은 Audit Trail 을생성하면서수행되는 SQL 구문에대한정보를얻을수있고, Oracle Database 10g 부터제공되는 FGA 를사용하면 Bind 정보및실제수행된 SQL 문의유용한정보등를얻을수있다. 끝으로변경된데이터의이력을찾아야하는업무에서사전에적절하게 FGA 를응용한다면예상치못한데이터유실같은문제에대한원인규명및대처를할수있을것이라고기대한다

22 3. 부록 3.1. Trigger 를이용한 DML Auditing AUDIT_UTIL PACKAGE --Trigger 를이용한 DML Auditing - Package Name : AUDIT_UTIL CREATE OR REPLACE PACKAGE AUDIT_UTIL IS -- AUDIT 테이블생성 PROCEDURE create_audit_table( dest_table_owner IN VARCHAR2, dest_table_name IN VARCHAR2, audit_table_name IN VARCHAR2 DEFAULT '', tablespace_name IN VARCHAR2 DEFAULT 'SYSTEM'); -- TRIGGER 생성 PROCEDURE create_audit_trigger( audit_table_name IN VARCHAR2, dest_table_owner IN VARCHAR2, dest_table_name IN VARCHAR2); -- DML AUDIT 를위한테이블및트리거자동생성 PROCEDURE create_dml_audit( dest_table_owner IN VARCHAR2, dest_table_name IN VARCHAR2, audit_table_name IN VARCHAR2 DEFAULT '', tablespace_name IN VARCHAR2 DEFAULT 'SYSTEM'); -- DML AUDIT 관련테이블및트리거제거 PROCEDURE remove_dml_audit( audit_table_name IN VARCHAR2, audit_trigger_name IN VARCHAR2 DEFAULT ''); -- ADUIT TABLE 내데이터삭제 ( 날짜별이전데이터삭제 ) PROCEDURE delete_auditing_values( audit_table_name IN VARCHAR2, start_date IN DATE, end_date IN DATE DEFAULT NULL); -- ADUIT TABLE 내데이터삭제 ( 지정일수이전데이터삭제 ) PROCEDURE delete_auditing_values( audit_table_name IN VARCHAR2, days IN NUMBER); END AUDIT_UTIL; / CREATE OR REPLACE PACKAGE BODY AUDIT_UTIL IS DDL 실행프로시져 (PRIVATE) PROCEDURE exec_ddl(statement IN VARCHAR2) IS v_statment VARCHAR2(4000); v_cid INTEGER; v_ret INTEGER; BEGIN v_statment := REPLACE(statement, CHR(10), ''); v_cid := DBMS_SQL.OPEN_CURSOR; DBMS_SQL.PARSE(C => v_cid, STATEMENT => v_statment, LANGUAGE_FLAG => DBMS_SQL.NATIVE);

23 --v_ret := DBMS_SQL.EXECUTE(v_cid); DBMS_SQL.CLOSE_CURSOR(v_cid); END exec_ddl; DML 실행프로시져 (PRIVATE) PROCEDURE exec_dml(statement IN VARCHAR2) IS v_statment VARCHAR2(4000); v_cid INTEGER; v_ret INTEGER; BEGIN v_statment := REPLACE(statement, CHR(10), ''); v_cid := DBMS_SQL.OPEN_CURSOR; DBMS_SQL.PARSE(C => v_cid, STATEMENT => v_statment, LANGUAGE_FLAG => DBMS_SQL.NATIVE); v_ret := DBMS_SQL.EXECUTE(v_cid); DBMS_SQL.CLOSE_CURSOR(v_cid); END exec_dml; AUDIT 테이블생성 PROCEDURE : CREATE_AUDIT_TABLE (only SYS OR SYSTEM USER) PROCEDURE create_audit_table ( dest_table_owner in VARCHAR2, dest_table_name in VARCHAR2, audit_table_name in VARCHAR2 DEFAULT '', tablespace_name in VARCHAR2 DEFAULT 'SYSTEM') IS CURSOR c_table_columns IS SELECT column_name, data_type, data_length, data_precision, data_scale FROM dba_tab_columns WHERE owner = dest_table_owner AND table_name = dest_table_name; v_ddl VARCHAR2(4000); v_audit_table_name VARCHAR2(100); BEGIN IF (dest_table_owner IS NULL ) OR (dest_table_name IS NULL) THEN DBMS_OUTPUT.PUT_LINE('No Values in Owner or Table_name'); END IF; IF (audit_table_name IS NULL) THEN v_audit_table_name := dest_table_name '_AUDIT'; ELSE v_audit_table_name := audit_table_name; END IF; -- Table DDL 문 v_ddl := 'CREATE TABLE ' v_audit_table_name ' (' chr(10); FOR v_col_rec IN c_table_columns LOOP IF (c_table_columns%notfound) THEN DBMS_OUTPUT.PUT_LINE('TABLE NOT FOUND'); END IF; CASE WHEN v_col_rec.data_type IN ('VARCHAR2', 'NVARCHAR2', 'CHAR', 'NCHAR') THEN v_ddl := v_ddl ' old_' v_col_rec.column_name ' ' v_col_rec.data_type '(' v_col_rec.data_length ')'; WHEN v_col_rec.data_type = 'NUMBER' THEN

24 v_ddl := v_ddl ' old_' v_col_rec.column_name ' ' v_col_rec.data_type; IF (v_col_rec.data_precision IS NOT NULL) THEN v_ddl := v_ddl '(' v_col_rec.data_precision; IF (v_col_rec.data_scale IS NOT NULL) THEN v_ddl := v_ddl ',' v_col_rec.data_scale; END IF; v_ddl := v_ddl ')'; END IF; ELSE v_ddl := v_ddl ' old_' v_col_rec.column_name ' ' v_col_rec.data_type; END CASE; v_ddl := v_ddl ',' CHR(10); END LOOP; FOR v_col_rec IN c_table_columns LOOP IF (c_table_columns%notfound) THEN DBMS_OUTPUT.PUT_LINE('TABLE NOT FOUND'); END IF; CASE WHEN v_col_rec.data_type IN ('VARCHAR2', 'NVARCHAR2', 'CHAR', 'NCHAR') THEN v_ddl := v_ddl ' new_' v_col_rec.column_name ' ' v_col_rec.data_type '(' v_col_rec.data_length ')'; WHEN v_col_rec.data_type = 'NUMBER' THEN v_ddl := v_ddl ' new_' v_col_rec.column_name ' ' v_col_rec.data_type; IF (v_col_rec.data_precision IS NOT NULL) THEN v_ddl := v_ddl '(' v_col_rec.data_precision; IF (v_col_rec.data_scale IS NOT NULL) THEN v_ddl := v_ddl ',' v_col_rec.data_scale; END IF; v_ddl := v_ddl ')'; END IF; ELSE v_ddl := v_ddl ' new_' v_col_rec.column_name ' ' v_col_rec.data_type; END CASE; v_ddl := v_ddl ',' CHR(10); END LOOP; v_ddl := v_ddl ' v_ddl := v_ddl ' v_ddl := v_ddl ' changed_by VARCHAR2(8),' CHR(10); change_type CHAR(1),' CHR(10); timestamp DATE' CHR(10) ') TABLESPACE ' tablespace_name; exec_ddl(v_ddl); END create_audit_table; TRIGGER 생성 PROCEDURE : CREATE_AUDIT_TRIGGER PROCEDURE create_audit_trigger( audit_table_name IN VARCHAR2, dest_table_owner IN VARCHAR2, dest_table_name IN VARCHAR2) IS CURSOR c_table_columns IS SELECT rownum, column_name FROM dba_tab_columns WHERE owner = USER AND table_name = audit_table_name; v_audit_table_name VARCHAR2(100); v_st VARCHAR2(4000); BEGIN

25 v_audit_table_name := audit_table_name; v_st := 'CREATE OR REPLACE TRIGGER TR_' v_audit_table_name CHR(10) ' BEFORE INSERT OR DELETE OR UPDATE ON ' dest_table_owner '.' dest_table_name CHR(10) ' FOR EACH ROW ' CHR(10) 'DECLARE' CHR(10) ' v_changetype CHAR(1); ' CHR(10) 'BEGIN ' CHR(10) ' IF INSERTING THEN v_changetype := ''I''; ' CHR(10) ' ELSIF UPDATING THEN v_changetype := ''U''; ' CHR(10) ' ELSE v_changetype := ''D''; ' CHR(10) ' END IF; ' CHR(10) ' INSERT INTO ' v_audit_table_name '('; FOR v_col_rec IN c_table_columns LOOP IF (v_col_rec.rownum > 1) THEN v_st := v_st ', '; END IF; v_st := v_st v_col_rec.column_name; END LOOP; v_st := v_st ') ' CHR(10) ' VALUES ('; FOR v_col_rec IN c_table_columns LOOP IF (v_col_rec.rownum > 1) THEN v_st := v_st ', '; END IF; CASE SUBSTR(v_col_rec.column_name, 1, 3) WHEN 'OLD' THEN v_st := v_st REPLACE(v_col_rec.column_name, 'OLD_', ':OLD.'); WHEN 'NEW' THEN v_st := v_st REPLACE(v_col_rec.column_name, 'NEW_', ':NEW.'); ELSE IF (v_col_rec.column_name = 'CHANGED_BY') THEN v_st := v_st 'USER'; ELSIF (v_col_rec.column_name = 'CHANGE_TYPE') THEN v_st := v_st 'v_changetype'; ELSIF (v_col_rec.column_name = 'TIMESTAMP') THEN v_st := v_st 'SYSDATE'; END IF; END CASE; END LOOP; v_st := v_st '); ' CHR(10) 'END TR_' v_audit_table_name ';'; exec_ddl(v_st); END create_audit_trigger; DML AUDIT 를위한테이블및트리거자동생성 PROCEDURE : CREATE_DML_AUDIT PROCEDURE create_dml_audit( dest_table_owner in VARCHAR2, dest_table_name in VARCHAR2, audit_table_name in VARCHAR2 DEFAULT '', tablespace_name in VARCHAR2 DEFAULT 'SYSTEM') IS v_audit_table_name VARCHAR2(100); v_dest_table_owner VARCHAR2(100); V_dest_table_name VARCHAR2(100);

26 BEGIN v_dest_table_owner := UPPER(dest_table_owner); v_dest_table_name := UPPER(dest_table_name); IF (audit_table_name IS NULL) THEN v_audit_table_name := UPPER(dest_table_name) '_AUDIT'; ELSE v_audit_table_name := UPPER(audit_table_name); END IF; CREATE_AUDIT_TABLE(v_dest_table_owner, v_dest_table_name, v_audit_table_name, tablespace_name); CREATE_AUDIT_TRIGGER(v_audit_table_name, v_dest_table_owner, v_dest_table_name); END create_dml_audit; DML AUDIT 관련테이블및트리거제거 PROCEDURE : MAKE_DML_AUDIT PROCEDURE remove_dml_audit( audit_table_name IN VARCHAR2, audit_trigger_name IN VARCHAR2 DEFAULT '') IS v_c INTEGER; v_st VARCHAR2(4000); v_tr VARCHAR2(100); BEGIN v_st := 'DROP TABLE ' audit_table_name; exec_ddl(v_st); IF (audit_trigger_name IS NULL) THEN v_tr := 'TR_' audit_table_name; ELSE v_tr := audit_trigger_name; END IF; v_st := 'DROP TRIGGER ' v_tr; exec_ddl(v_st); END remove_dml_audit; ADUIT TABLE 내데이터삭제 PROCEDURE : DELETE_AUDITING_VALUES PROCEDURE delete_auditing_values( audit_table_name IN VARCHAR2, start_date IN DATE, end_date IN DATE DEFAULT NULL) IS v_st VARCHAR2(4000); BEGIN v_st := 'DELETE FROM' audit_table_name; IF (end_date IS NULL) THEN v_st := v_st ' WHERE TIMESTAMP < TO_DATE(''' TO_CHAR(start_date, 'YYYY-MM-DD HH24:MI:SS') ''', ''fmyyyy-mm-dd HH24:MI:SS'')'; ELSE v_st := v_st ' WHERE TIMESTAMP BETWEEN TO_DATE(''' TO_CHAR(start_date, 'YYYY-MM-DD HH24:MI:SS') ''', ''fmyyyy-mm-dd HH24:MI:SS'') AND TO_DATE(''' TO_CHAR(end_date, 'fmyyyy-mm-dd HH24:MI:SS') ''', ''fmyyyy-mm-dd HH24:MI:SS'')'; END IF; exec_dml(v_st); COMMIT; END delete_auditing_values; PROCEDURE delete_auditing_values( audit_table_name IN VARCHAR2,

27 days IN NUMBER) IS v_st VARCHAR2(4000); v_last_date DATE; BEGIN v_last_date := SYSDATE - days; v_st := 'DELETE FROM' audit_table_name ' WHERE TIMESTAMP < TO_DATE(''' TO_CHAR(v_last_date, 'YYYY-MM-DD HH24:MI:SS') ''', ''fmyyyy-mm-dd HH24:MI:SS'')'; exec_dml(v_st); COMMIT; END delete_auditing_values; END AUDIT_UTIL; / 실행방법 ( AUDIT 용 TABLE 및 TRIGGER 생성 ) exec make_dml_audit (dest_table_owner, dest_table_name, audit_table_name(default ''), tablespace_name(default 'SYSTEM'); EXAMPLE 1 - exec make_dml_audit('scott', 'EMP'); EXAMPLE 2 - exec make_dml_audit('scott', 'EMP', 'EMP_AUDIT', 'USERS'); 확인 : DML 작업이후 audit_table_name 조회 EXAMPLE - SELECT * FROM EMP_AUDIT; 2. AUDIT TABLE 내데이터삭제 PROCEDURE delete EXAMPLE 1 - exec delete_auditing_values('emp_audit', TO_DATE(' :00:00', 'fmyyyy-mm-dd HH24:MI:SS'); EXAMPLE 2 - exec delete_auditing_values('emp_audit', TO_DATE(' :00:00', 'fmyyyy-mm-dd HH24:MI:SS'), TO_DATE(' :00:00', 'fmyyyy-mm-dd HH24:MI:SS')); EXAMPLE 3 - exec delete_auditing_values('emp_audit', 1); -- 1 일이전데이터삭제 3. 제거방법 ( AUDIT 용 TABLE 및 TRIGGER 제거 ) exec remove_dml_audit (audit_table_name, audit_trigger_name(default '')); EXAMPLE - exec remove_dml_audit('emp_audit'); -- Test : SCOTT.EMP 에대한 DML Auditing exec make_dml_audit('scott', 'EMP', 'EMP_AUDIT', 'USERS'); select table_name from dba_tables where trigger_name like '%_AUDIT' select trigger_name from dba_triggers where trigger_name like 'TR_%' connect scott/tiger INSERT INTO emp VALUES ( 9999, 'TESTER', 'CLERK', 7782, SYSDATE, 1000, 0, 10); COMMIT; UPDATE emp SET comm = 300 WHERE empno = 9999; COMMIT; DELETE FROM emp WHERE empno = 9999; COMMIT; connect /as sysdba SELECT OLD_EMPNO, OLD_ENAME, OLD_COMM, NEW_EMPNO, NEW_ENAME, NEW_COMM, CHANGED_BY, CHANGE_TYPE,

28 TIMESTAMP FROM EMP_AUDIT; OLD_EMPNO OLD_ENAME OLD_COMM NEW_EMPNO NEW_ENAME NEW_COMM CHANGED_BY CH TIMESTAMP TESTER 0 SCOTT I 01-AUG TESTER TESTER 300 SCOTT U 01-AUG TESTER 300 SCOTT D 01-AUG 일정기간에대한 Audit Trail Reocords 삭제 alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss'; exec delete_auditing_values('emp_audit', TO_DATE(' :00:00', 'fmyyyy-mm-dd HH24:MI:SS')); exec delete_auditing_values('emp_audit', TO_DATE(' :00:00', 'fmyyyy-mm-dd HH24:MI:SS'), TO_DATE(' :00:00', 'fmyyyy-mm-dd HH24:MI:SS')); exec delete_auditing_values('emp_audit', 0); -- 현재이전삭제 ( 전체삭제 ) -- dbms_job 을이용하여자동삭제스케줄링 VARIABLE job_no NUMBER; VARIABLE inst_no NUMBER; begin select instance_number into :inst_no from v$instance; dbms_job.submit(:job_no, 'AUDIT_UTIL(''EMP_AUDIT'', 0);', trunc(sysdate+1,'hh'), 'trunc(sysdate+1,''hh'')', TRUE, :inst_no); commit; end; / print :job_no; exec dbms_job.broken(:job_no, TRUE); exec dbms_job.remove(:job_no); -- Audit Trail Table 제거 exec remove_dml_audit('emp_audit');

29 3.2. SQL Tips for Developer 이번호부터개발자를위한 SQL Tip 을연재합니다. 자주사용하는 Oracle Function 이나, 새로운오라클버전에서소개된 SQL New Feature 를통하여프로그램생산성및성능을높일수있는내용들을소개하겠습니다. 이번호에서는개발자분들이자주사용하는 NVL 함수관련내용을모아보았습니다. 흔히개발자분들이 NULL 값의처리에많은고민을하게되는데, 기존에자주사용하시는 NVL 함수뿐아니라, NVL2, NULLIF, COALESCE, LNNVL 함수를추가로소개합니다. 이함수들은기존에프로그램에서로직으로처리해야하는많은코딩을함수하나를제대로사용함으로써대체할수있는기능을가지고있습니다. 프로그램개발생산성을올릴수있는오라클함수들입니다. 1. NVL2 (expr1, expr2, expr3) NVL2 함수는첫번째표현식을검사합니다. expr1 이널이아닌경우, NVL2 함수는 expr2 를반환하며, expr1 이널인경우 expr3 을반환합니다. SELECT last_name, salary, commission_pct, NVL2(commission_pct, 2 'SAL+COMM', 'SAL') income FROM employees WHERE department_id IN (50, 80); 1 예제에서는 COMMISSION_PCT 열을검사하여이값이 NULLL 이아니면두번째표현식인 SAL+COMM 이반환됩니다. COMMISSION_PCT 열에널값이있으면세번째표현식인 SAL 이반환됩니다. 인수 expr1 에는모든데이터유형을사용할수있습니다. 인수 expr2 및 expr3 에는 LONG 을제외한모든데이터유형을사용할수있습니다. expr2 및 expr3 의데이터유형이서로다를경우, Oracle server 는 expr3 이널상수가아니라면두표현식을비교하기전에 expr3 을 expr2 의데이터유형으로변환합니다. expr3 이널상수인경우에는데이터유형변환이필요없습니다. 반환값의데이터유형은항상 expr2 의데이터유형과동일하며 expr2 가문자데이터인경우에는반환값의데이터유형이 VARCHAR2 입니다. 2. NULLIF (expr1, expr2) NULLIF 함수는두표현식을비교하여동일한경우널을반환하고동일하지않은경우첫번째표현식을반환합니다. 첫번째표현식에널리터럴을지정할수없습니다. SELECT first_name, LENGTH(first_name) "expr1", last_name, LENGTH(last_name) "expr2", NULLIF(LENGTH(first_name), LENGTH(last_name)) result FROM employees;

30 예제에서는 EMPLOYEES 테이블의 First_name 과 Last_name 의길이를비교하여같으면 NULL 을리턴하고다르면 First_name 의길이를리턴합니다. 참고 : NULLIF 함수는다음의 CASE 표현식과논리적으로동일합니다. CASE 표현식은다음페이지에서설명합니다. [ CASE WHEN expr1 = expr 2 THEN NULL ELSE expr1 END ] 3. COALESCE (expr1, expr2,..., exprn) COALESCE 함수는여러개의평가식에 NULL 값이있는지여부를동시에수행할수있습니다. expr1 을 먼저평가하여 Null 이아니면 expr1 의값을리턴하고 NULL 이면 expr2 를평가합니다. expr2 가 NULL 이 아니면 expr2 의값을리턴하고 NULL 이면 expr3 을평가합니다. 이런방식을 exprn 까지모두평가할 수있습니다. SELECT last_name, COALESCE(commission_pct, salary, 10) comm FROM employees ORDER BY commission_pct; 예제에서, COMMISSION_PCT 값이널이아닌경우, 이값이표시됩니다. COMMISSION_PCT 값이널인경우, SALARY 가평가됩니다. COMMISSION_PCT 와 SALARY 값이모두널인경우, 상수값 10 이표시됩니다. 4. LNNVL (expr1) LNNVL 함수는조건식에주어지는항의한쪽혹은양쪽에 NULL 값이나타날경우에, 조건식을평가하는간결한방법을제공한다. LNNVL 함수는 where 절에만사용할수있습니다. 1. emp 테이블에서 commission 이 500 보다작은사람들의수를계산한다. SQL> SELECT COUNT (*) FROM emp WHERE comm < 500 COUNT(*) 하지만, commission 을못받는사람을포함해서 (comm is null), commissin 이 500 보다작은사람들의수를계산하기위해서는아래와같이 LNNVL 함수를쓴다. SQL> SELECT COUNT (*) FROM emp WHERE LNNVL(comm >= 500) COUNT(*) LNNVL 함수는조건식을파라미터로가지며, 조건식이 FALSE 나 UNKNOWN 일경우에 TRUE 를반환하고, 조건식이 TRUE 일경우에 FALSE 를반환합니다. LNNVL 함수는잠재적으로 NULL 값이나올수있는상황에서 NULL 값을처리하기위해사용할수있습니다

31 3.3. Oracle 소식 Oracle 11g 가출시되었습니다. 데이터베이스 (DB) 업계최강자인오라클이 7 월 12 일차세대데이터베이스관리시스템 (DBMS) 인 ' 오라클데이터베이스 11g' 를공식출시하였습니다. 이전버전인 ' 오라클데이터베이스 10g' 가출시된지 3 년여만에선보인 11g 는리얼애플리케이션테스팅 재해복구 정보순환주기관리등 400 가지이상의기능을갖췄으며 1500 만시간의테스팅과 3 만 6000 개월에걸친작업으로개발되었습니다. 특히자가관리와자동화성능으로기업이서비스레벨협약 (SLA) 를실현하도록지원하는리얼애플리케이션테스트기능은이제품이내세우는가장큰장점입니다. 고가용성, 확장성, IT 비용절감강조 오라클은향상된보안기능과그리드컴퓨팅기반고가용성, 확장성을내세워 ' 오라클데이터베이스 11g' 를사용하는기업이시스템관리비용과데이터스토리지비용을절감할수있다는것을강조하고있습니다. 서버테크놀러지부문앤드류멘델슨수석부사장은컨퍼런스콜을통해 " 오라클데이터베이스 11g 는그리드기술이확장돼기업의 IT 비용절감에도움을준다 " 고말하고있습니다. ' 오라클데이터베이스 11g' 가기업의비용절감을돕는다는점을강조하고있으며앞으로다양한운영체제 (OS) 에대해동일한수준의지원을펼칠계획입니다. 또오라클은최근비즈니스인텔리전스 (BI) 에대한기업수요가늘어난다는것을고려, 신제품의 BI 기능도강화하고있습니다. 국내에서의반응은? ' 오라클데이터베이스 11g' 는국내시장에서는오는 8 월에출시될예정입니다. 그러나, 현재대부분의기업이 ' 오라클데이터베이스 10g' 보다이전버전을사용하고있고, 국내기업들이중요한데이터집합소인 DB 를업그레이드하거나교체하는데민감한반응을보이고있기때문에신제품확산빠르게적용되지는않을것으로예측됩니다. 한국오라클세일즈컨설팅양수환전무는 " 자체조사결과오라클고객가운데 40% 가 ' 오라클데이터베이스 10g' 버전을사용하고있다 " 며 " 한국기업들이새로운제품을받아들이는속도가늦긴하지만새로운기능에대한요구가있어이제품이확산되는데큰장애가없다고본다 " 고발표했습니다. ' 오라클데이터베이스 11g' 가이전버전인 ' 오라클데이터베이스 10g' 와기능면에서크게다르지않다는것도기업들이새로운제품을선택하는데걸림돌이될것으로보입니다. 실제로오라클은 ' 오라클데이터베이스 11g' 에새로운기능을추가시켰다기보다기능을확장하고여러옵션들을새롭게내놓는것에중점을두었으며, 이신제품이기업의 IT 비용절감에도움이된다고하지만이특징이기업들이업그레이드를강행할충분한요소가될수있을지는미지수입니다. 한국오라클은이에 "10g 사용자가오라클데이터베이스 11g 로업그레이드할경우비용이거의들지않기때문에업그레이드를채택하는기업이늘어날것 " 이라고합니다. 11g 관련기술세미나개최 한국오라클교육센터에서는 8 월 22 일부터 24 일까지 3 일간에걸쳐서 Oracle RDBMS 11g 의신기술소개와 RAC(Real Application Cluster), 대용량데이터 Migration 기법에대한세미나를실시합니다 Innovative Technology Seminar Track 을통해, 오라클신기술에대한핵심적인내용을신기술에대한접근방법설명과데모를통하여소개해드립니다. 오라클교육사업본부의전문성을가장극대화하여보여줄수있는분야인, Technology 부분의주요 3 가지주제에대해세미나를진행합니다. 'Oracle Database 11g New Features', 'Real Application Cluster 10g' 그리고 'Down-Time 최소화를위한다양한 Data Migration 방법론 ' 3 가지주제와일반 Overview 세미나에서는접하기힘든고급실무사례도다룰예정입니다

32 4. Pro-Active Tuning Service 4.1. 실제사용자 (End-User) 관점의응답시간튜닝 Pro-active tuning service 는사용자관점의모니터링및분석을통하여실제 End-User 가느끼는응답시간 (Response Time) 을튜닝합니다. APM(Application Performance Management) 툴을이용하여 End-User 의 Request 결과를반환받기까지의모든구간 (Client PC, Internet 구간, FireWall, DNS, Web Server, WAS, DBMS) 을분석하여가장 Delay Time 이많이소요된구간을찾아냅니다. ISP Backb one ISP Client Time Internet Time Firewall Time DNS Time Backend Systems Time 4.2. 최상의성능상태로비즈니스고가용성을유지 Pro-Active Tuning Service 매업무단위프로젝트마다참여하여업무적용 (Open) 前문제요소를분석하여튜닝. 단위업무적용 (Open) 후매 3 개월 ( 데이터량갱신주기 ) 마다튜닝포인트를설정, 성능둔화요소를해결. 전사적으로새롭게추가되는업무단위프로젝트의모든 SQL 쿼리를검토및튜닝. 다양한대용량데이터베이스관리 / 튜닝기법을도입하여최적의 DB 상태를 1 년내내상시유지. 전략적튜닝 Factor 를분석, 투자대비효율이높은 Targeting 기법적용. ( 비중도높은 SQL 을튜닝함 )

33 4.3. Knowledge Transfer Pro-Active Tuning Service 는고객의 Business Process 를이해하고시스템을분석한후튜닝하는것으로완료되지않습니다. 실제로고객사환경에서튜닝한내용을그대로실무자들에게전수하여내부임직원의역량을제고시킵니다. 또한, Oracle RDBMS 신버젼의 New Features 를교육함으로써, 이용자 ( 관리자및개발자 ) 가스스로개발업무의효율및생산성을향상시킬수있도록지원합니다. 이외에도 DBMS 관리자를위한관리노하우 ( 고급 Trouble-Shooting, 대용량 DB 처리, 병렬처리등 ) 를전수함으로써, 최상의시스템을최고의기술로유지할수있도록지원합니다. UAS (User Adapted Seminar) 진행사례및내용 (Contents) 개발자를위한 SQL 튜닝실무사례세미나 G 쇼핑몰업체튜닝후실제고객사의튜닝사례를개발자들에게전수하여개발자들이성능을고려한 SQL 을작성할수있도록내부역량을제고시킴. Oracle 10g New Features 세미나 S Global 전자기업 : Oracle 10g 버전으로업그레이드하기전, 신버전의새로운기능과주의사항을전파함으로써, 업그레이드후발생할수있는문제점의사전제거와개발자들이새로운기능을이용함으로써, 개발생산성을향상시킴. K 국가기관 DBMS 관리노하우세미나내부관리자 (DBA,SE) 들을대상으로 DBMS 관리자들이흔히겪을수있는상황에대한 Administration Know-How 와고급 Trouble-Shooting 사례를소개함으로써, 관리기술력을향상시킴 Tuning 범위확대 Pro-active tuning service 의제공범위는제한된 Database, 제한된 Server 에국한되지않으며, 고객사전체의 Server+DB 를대상으로그범위를확대함으로써고객사전체 Performance 향상에기여합니다

34 4.5. 기대효과 재무적관점 기존 Tuning Service 는주로 System Performance 향상에따른업무트레픽감소에초점이맞춰져있었습니다. Pro-actvice 서비스는 Tuning 작업을통한업무처리시간단축뿐만아니라, 업무처리시간단축으로가져올수있는재무적성과를가능하게합니다 서비스관점 단기적성능향상에맞추어진기존 Tuning 서비스는계약된 system 및 Database 를서비스대상으로하기때문에전사적인차원의성능향상을기대하기어려웠습니다. Proactive tuning service 는계약기간동안주요비즈니스 Factor 별로 SLA 를정하여 Tuning consulting 을수행함으로써서비스자체의안정성을제고할수있습니다

35 사용자관점 Proactive tuning service 는계약종료시점작업한 Tuning 산출물을통한기술전수세미나를진행함으로서고객사의사용자가실무에서바로적용가능한기술을전수함과동시에, 계약기간종료후에도 Proactive tuning service 를유지할수있는방향을제시합니다 혁신적관점

36 - 36 -

MySQL-.. 1

MySQL-.. 1 MySQL- 기초 1 Jinseog Kim Dongguk University jinseog.kim@gmail.com 2017-08-25 Jinseog Kim Dongguk University jinseog.kim@gmail.com MySQL-기초 1 2017-08-25 1 / 18 SQL의 기초 SQL은 아래의 용도로 구성됨 데이터정의 언어(Data definition

More information

Microsoft Word - 07_TRIGGER.doc

Microsoft Word - 07_TRIGGER.doc DATABASE TRIGGER INTRODUCTION 프로그램단위 1 의하나인트리거 2 (Trigger) 는테이블, 뷰, 스키마또는데이터베이스에관련된 PLSQL 블록 ( 또는프로시저 ) 으로관련된특정사건 (Event) 이발생될때마다묵시적 ( 자동 ) 으로실행이이루어진다 (Fire). 트리거를생성할때관련된사건 (Event) 도함께정의되며, 실행부에서저장된프로시저

More information

最即時的Sybase ASE Server資料庫診斷工具

最即時的Sybase ASE Server資料庫診斷工具 TOAD 9.5 Toad Oracle 料 SQL 料 行 理 SQLprofile Quest Software 了 Oracle -Toad Tools of Oracle Application Developers Toad 了 DBA DBA 理 易 度 Toad 料 SQL PL/SQL Toad Oracle PL/SQL Toad Schema Browser Schema Browser

More information

Microsoft Word - Goodus_기술노트[19회]_Flashback

Microsoft Word - Goodus_기술노트[19회]_Flashback Goodus 기술노트 [19 회 ] Flashback Author 권웅원, 나지혜 Creation Date 2007-04-25 Last Updated 2007-04-25 Version 1.0 Copyright(C) 2004 Goodus Inc. All Rights Reserved Version 변경일자 변경자 ( 작성자 ) 주요내용 1 2007-04-25 권웅원,

More information

TITLE

TITLE CSED421 Database Systems Lab MySQL Basic Syntax SQL DML & DDL Data Manipulation Language SELECT UPDATE DELETE INSERT INTO Data Definition Language CREATE DATABASE ALTER DATABASE CREATE TABLE ALTER TABLE

More information

* Factory class for query and DML clause creation * tiwe * */ public class JPAQueryFactory implements JPQLQueryFactory private f

* Factory class for query and DML clause creation * tiwe * */ public class JPAQueryFactory implements JPQLQueryFactory private f JPA 에서 QueryDSL 사용하기위해 JPAQuery 인스턴스생성방법 http://ojc.asia, http://ojcedu.com 1. JPAQuery 를직접생성하기 JPAQuery 인스턴스생성하기 QueryDSL의 JPAQuery API를사용하려면 JPAQuery 인스턴스를생성하면된다. // entitymanager는 JPA의 EntityManage

More information

슬라이드 1

슬라이드 1 17.1 데이터베이스트리거 17.2 DML 트리거 17.3 DML 트리거작성 17.4 DML 트리거관리 17.5 INSTEAD OF 트리거 17.6 NON-DML 트리거 17.1 데이터베이스트리거 데이터베이스트리거 (database trigger) 테이블에어떤조작이가해졌을때에미리지정해놓은처리를자동으로실행시키는블록 PL/SQL 블록으로작성, 오라클데이터베이스에저장

More information

예제소스는 에서다운로드하여사용하거나툴바의 [ 새쿼리 ]( 에아래의소스를입력한다. 입력후에는앞으로실습을위해서저장해둔다. -- 실습에필요한 Madang DB 와 COMPANY DB 를모두생성한다. -- 데이터베이스생성 US

예제소스는  에서다운로드하여사용하거나툴바의 [ 새쿼리 ]( 에아래의소스를입력한다. 입력후에는앞으로실습을위해서저장해둔다. -- 실습에필요한 Madang DB 와 COMPANY DB 를모두생성한다. -- 데이터베이스생성 US A.4 마당서점데이터베이스생성 1 마당서점의데이터베이스 Madang을생성하기위해윈도우의 [ 시작 ]-[ 모든프로그램 ]- [Microsoft SQL Server 2012]-[SQL Server Management Studio] 를선택한다. 인증을 [Windows 인증 ] 으로선택한후 < 연결 > 을클릭한다. 2 1 3 서버이름 MADANG_DB\SQLEXPRESS

More information

제목을 입력하세요.

제목을 입력하세요. 1. 4 1.1. SQLGate for Oracle? 4 1.2. 4 1.3. 5 1.4. 7 2. SQLGate for Oracle 9 2.1. 9 2.2. 10 2.3. 10 2.4. 13 3. SQLGate for Oracle 15 3.1. Connection 15 Connect 15 Multi Connect 17 Disconnect 18 3.2. Query

More information

Tina Admin

Tina Admin Lock session 확인 2010 년 01 월 27 일 DB 기술지원팀 문서정보 프로젝트명 Lock session 확인 서브시스템명 버전 1.0 문서명 작성일 2011-01-31 작성자 최종수정일 2011-01-31 문서번호 재개정이력 일자내용수정인버전 문서배포이력 발신자수신자배포목적일자비고 유니원아이앤씨 기술문서. Table of Contents 1 오라클의

More information

이 장에서 사용되는 MATLAB 명령어들은 비교적 복잡하므로 MATLAB 창에서 명령어를 직접 입력하지 않고 확장자가 m 인 text 파일을 작성하여 실행을 한다

이 장에서 사용되는 MATLAB 명령어들은 비교적 복잡하므로 MATLAB 창에서 명령어를 직접 입력하지 않고 확장자가 m 인 text 파일을 작성하여 실행을 한다 이장에서사용되는 MATLAB 명령어들은비교적복잡하므로 MATLAB 창에서명령어를직접입력하지않고확장자가 m 인 text 파일을작성하여실행을한다. 즉, test.m 과같은 text 파일을만들어서 MATLAB 프로그램을작성한후실행을한다. 이와같이하면길고복잡한 MATLAB 프로그램을작성하여실행할수있고, 오류가발생하거나수정이필요한경우손쉽게수정하여실행할수있는장점이있으며,

More information

PostgreSQL 2 Uniersity of California at Berkeley ( ) 에서개발된관계형데이터베이스서버인 Ingres 가시초 ( 후에 Computer Associates 에인수됨 ) 1

PostgreSQL 2  Uniersity of California at Berkeley ( ) 에서개발된관계형데이터베이스서버인 Ingres 가시초 ( 후에 Computer Associates 에인수됨 ) 1 ERwin 과 PostgreSQL 연동하기 인하대학교지리정보공학과데이터베이스실습 PostgreSQL 2 http://www.postgresql.org/ Uniersity of California at Berkeley (1977-1985) 에서개발된관계형데이터베이스서버인 Ingres 가시초 ( 후에 Computer Associates 에인수됨 ) 1996 년부터

More information

<3035303432365FC8A8C6E4C0CCC1F620B0B3B9DF20BAB8BEC8B0A1C0CCB5E5C3D6C1BE28C0FAC0DBB1C7BBE8C1A6292E687770>

<3035303432365FC8A8C6E4C0CCC1F620B0B3B9DF20BAB8BEC8B0A1C0CCB5E5C3D6C1BE28C0FAC0DBB1C7BBE8C1A6292E687770> 개 요 홈페이지 해킹 현황 및 사례 홈페이지 개발시 보안 취약점 및 대책 주요 애플리케이션 보안 대책 결 론 참고자료 [부록1] 개발 언어별 로그인 인증 프로세스 예제 [부록2] 대규모 홈페이지 변조 예방을 위한 권고(안) [부록3] 개인정보의 기술적 관리적 보호조치 기준(안) [부록4] 웹 보안관련 주요 사이트 리스트 7000 6,478 6000 5000

More information

ORACLE-SQL

ORACLE-SQL ORACLE-SQL SELECT 문 2014-04-12 Blog.ksh123jjang.me 내용 SELECT문이란?... 2 SLELECT문사용하기... 3 모든열선택... 4 특정열검색... 5 SQL문작성방법... 6 열머리글기본값... 7 산술식... 8 NULL... 9 열 alias... 10 연결연산자... 11 대체인용연산자 (q)... 12 중복행제거...

More information

Chapter 1

Chapter 1 3 Oracle 설치 Objectives Download Oracle 11g Release 2 Install Oracle 11g Release 2 Download Oracle SQL Developer 4.0.3 Install Oracle SQL Developer 4.0.3 Create a database connection 2 Download Oracle 11g

More information

그리고.. 엑셀에하나둘완료된쿼리가늘어날때마다... 희열을느낀다... 이글을보는당신은어떻게할것인가? A 군의판단이잘못된것인가? 잘못된판단이아니다최선의판단이다... 11g 전까지는... 11g New Feature 인 Pending Statistics 를 SPA 와함께사용

그리고.. 엑셀에하나둘완료된쿼리가늘어날때마다... 희열을느낀다... 이글을보는당신은어떻게할것인가? A 군의판단이잘못된것인가? 잘못된판단이아니다최선의판단이다... 11g 전까지는... 11g New Feature 인 Pending Statistics 를 SPA 와함께사용 SPA(SQL Performance Analyze) 를이용한통계정보 수집 엑셈컨설팅본부 /DB 컨설팅팀오경렬 1. SPA 란? SPA(SQL Performance Analyze) 는 RAT(Real Application Testing) 서비스의옵션중에하나 이다. 본문서는 SPA 를이용해좀더안정적으로통계정보를생성하는 Process 에대해다룬다. 2. 통계정보와

More information

<C1A62038B0AD20B0ADC0C7B3EBC6AE2E687770>

<C1A62038B0AD20B0ADC0C7B3EBC6AE2E687770> 제 8강 SQL: 관계데이터베이스언어 강의목표 관계데이타베이스언어로서상용 DBMS에서가장널리사용되는 SQL의동작원리에관하여학습하고, 이를이용하여다양한질의문을작성하는방법을습득한다 기대효과 SQL의데이터정의기능을이해한다 SQL의데이터조작기능중질의기능을이해한다 SQL의데이터조작기능중데이터갱신기능을이해한다 SQL의데이터조작기능중뷰및인덱스관련기능을이해한다 SQL 의개요

More information

<B3EDB4DC28B1E8BCAEC7F6292E687770>

<B3EDB4DC28B1E8BCAEC7F6292E687770> 1) 초고를읽고소중한조언을주신여러분들게감사드린다. 소중한조언들에도불구하고이글이포함하는오류는전적으로저자개인의것임을밝혀둔다. 2) 대표적인학자가 Asia's Next Giant: South Korea and Late Industrialization, 1990 을저술한 MIT 의 A. Amsden 교수이다. - 1 - - 2 - 3) 계량방법론은회귀분석 (regression)

More information

Microsoft Word - Database Vault .doc

Microsoft Word - Database Vault .doc Oracle Database Vault Author 유광복 Creation Date 2010-02-25 Last Updated Version Copyright(C) 2004 Goodus Inc. All Rights Reserved Version 변경일자변경자 ( 작성자 ) 주요내용 Contents 1. Database Vault 란?... 4 1.1. 오라클보안제품구성도...

More information

April. 28, 216 Fixed Income Analyst 2 3 2. 1.5 (%) (%).1.5. (%) (%) 1. 1 y 2 y 3 y 4 y 5 y 7 y 1 1 1 2 -.5 2.5 2.2 (%) 1y 3y 5y 1y (%) 1.9 1.6 1.3 1. '15Y.8 '15Y.12 '16Y.4 (%) (%) () Apr. 28, 216

More information

ALTIBASE 사용자가이드 Templete

ALTIBASE 사용자가이드 Templete Real Alternative DBMS ALTIBASE, Since 1999 WINDOWS ADO.NET 환경의 ALTIBASE 개발가이드 2010. 09 Copyright c 2000~2013 ALTBASE Corporation. All Rights Reserved. Document Control Change Record Date Author Change

More information

<4D F736F F D20BFC0B6F3C5AC20C8A3C8AFBCBA20B0B3B9DFC0DA20B0A1C0CCB5E539372E646F63>

<4D F736F F D20BFC0B6F3C5AC20C8A3C8AFBCBA20B0B3B9DFC0DA20B0A1C0CCB5E539372E646F63> Postgres Plus Advanced Server 8.3 March 14, 2008 1 Oracle 오라클호환성개발자가이드 By EnterpriseDB Corporation Copyright 2008 EnterpriseDB Corporation EnterpriseDB Corporation, 499 Thornall Street, Edison, New Jersey

More information

OPCTalk for Hitachi Ethernet 1 2. Path. DCOMwindow NT/2000 network server. Winsock update win95. . . 3 Excel CSV. Update Background Thread Client Command Queue Size Client Dynamic Scan Block Block

More information

VOL.76.2008/2 Technical SmartPlant Materials - Document Management SmartPlant Materials에서 기본적인 Document를 관리하고자 할 때 필요한 세팅, 파일 업로드 방법 그리고 Path Type인 Ph

VOL.76.2008/2 Technical SmartPlant Materials - Document Management SmartPlant Materials에서 기본적인 Document를 관리하고자 할 때 필요한 세팅, 파일 업로드 방법 그리고 Path Type인 Ph 인터그래프코리아(주)뉴스레터 통권 제76회 비매품 News Letters Information Systems for the plant Lifecycle Proccess Power & Marine Intergraph 2008 Contents Intergraph 2008 SmartPlant Materials Customer Status 인터그래프(주) 파트너사

More information

View Licenses and Services (customer)

View Licenses and Services (customer) 빠른 빠른 시작: 시작: 라이선스, 라이선스, 서비스 서비스 및 주문 주문 이력 이력 보기 보기 고객 가이드 Microsoft 비즈니스 센터의 라이선스, 서비스 및 혜택 섹션을 통해 라이선스, 온라인 서비스, 구매 기록 (주문 기록)을 볼 수 있습니다. 시작하려면, 비즈니스 센터에 로그인하여 상단 메뉴에서 재고를 선택한 후 내 재고 관리를 선택하십시오. 목차

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 KeyPad Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 에는 16 개의 Tack Switch 를사용하여 4 행 4 열의 Keypad 가장착 4x4 Keypad 2 KeyPad 를제어하기위하여 FPGA 내부에 KeyPad controller 가구현 KeyPad controller 16bit 로구성된

More information

[ 목차 ] 5.1 데이터베이스프로그래밍개념 5.2 T-SQL T-SQL 문법 5.3 JAVA 프로그래밍 2

[ 목차 ] 5.1 데이터베이스프로그래밍개념 5.2 T-SQL T-SQL 문법 5.3 JAVA 프로그래밍 2 5 장 SQL 응용 데이터베이스실험실 1 [ 목차 ] 5.1 데이터베이스프로그래밍개념 5.2 T-SQL 5.2.1 T-SQL 문법 5.3 JAVA 프로그래밍 2 5.1 데이터베이스프로그래밍개념 프로그래밍 이라고하면프로그램소스를설계하고, 작성하고, 디버깅하는과정을말한다. 프로그램 혹은소프트웨어는컴퓨터에서주어진작업을하는명령어나열을말한다. 데이터베이스프로그래밍은명확한정의는없지만데이터베이스에데이터를정의하고,

More information

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상 Android 용 Brother Image Viewer 설명서 버전 0 KOR 아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상표입니다. Android는

More information

Mars OS 1.0.2 System Administration Guide

Mars OS 1.0.2 System Administration Guide Mars OS 1.0.2 시스템 관리 가이드 NetApp, Inc. www.netapp.com/kr 부품 번호:215-09731_A0 2015년 2월 4일 수요일 2 목차 목차 Mars OS 정보 12 Mars OS의 기능 13 고성능 13 업계 최고의 스토리지 효율성 13 시스템 모니터링 13 비휘발성 메모리를 사용하여 안정성 및 성능 향상 13 클러스터링

More information

Microsoft Word - FunctionCall

Microsoft Word - FunctionCall Function all Mechanism /* Simple Program */ #define get_int() IN KEYOARD #define put_int(val) LD A val \ OUT MONITOR int add_two(int a, int b) { int tmp; tmp = a+b; return tmp; } local auto variable stack

More information

<C6F7C6AEB6F5B1B3C0E72E687770>

<C6F7C6AEB6F5B1B3C0E72E687770> 1-1. 포트란 언어의 역사 1 1-2. 포트란 언어의 실행 단계 1 1-3. 문제해결의 순서 2 1-4. Overview of Fortran 2 1-5. Use of Columns in Fortran 3 1-6. INTEGER, REAL, and CHARACTER Data Types 4 1-7. Arithmetic Expressions 4 1-8. 포트란에서의

More information

Web Application Hosting in the AWS Cloud Contents 개요 가용성과 확장성이 높은 웹 호스팅은 복잡하고 비용이 많이 드는 사업이 될 수 있습니다. 전통적인 웹 확장 아키텍처는 높은 수준의 안정성을 보장하기 위해 복잡한 솔루션으로 구현

Web Application Hosting in the AWS Cloud Contents 개요 가용성과 확장성이 높은 웹 호스팅은 복잡하고 비용이 많이 드는 사업이 될 수 있습니다. 전통적인 웹 확장 아키텍처는 높은 수준의 안정성을 보장하기 위해 복잡한 솔루션으로 구현 02 Web Application Hosting in the AWS Cloud www.wisen.co.kr Wisely Combine the Network platforms Web Application Hosting in the AWS Cloud Contents 개요 가용성과 확장성이 높은 웹 호스팅은 복잡하고 비용이 많이 드는 사업이 될 수 있습니다. 전통적인

More information

TTA Journal No.157_서체변경.indd

TTA Journal No.157_서체변경.indd 표준 시험인증 기술 동향 FIDO(Fast IDentity Online) 생체 인증 기술 표준화 동향 이동기 TTA 모바일응용서비스 프로젝트그룹(PG910) 의장 SK텔레콤 NIC 담당 매니저 76 l 2015 01/02 PASSWORDLESS EXPERIENCE (UAF standards) ONLINE AUTH REQUEST LOCAL DEVICE AUTH

More information

PHP & ASP

PHP & ASP 단어장프로젝트 프로젝트2 단어장 select * from address where address like '% 경기도 %' td,li,input{font-size:9pt}

More information

BMP 파일 처리

BMP 파일 처리 BMP 파일처리 김성영교수 금오공과대학교 컴퓨터공학과 학습내용 영상반전프로그램제작 2 Inverting images out = 255 - in 3 /* 이프로그램은 8bit gray-scale 영상을입력으로사용하여반전한후동일포맷의영상으로저장한다. */ #include #include #define WIDTHBYTES(bytes)

More information

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100 2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack

More information

Chapter 4. LISTS

Chapter 4. LISTS 연결리스트의응용 류관희 충북대학교 1 체인연산 체인을역순으로만드는 (inverting) 연산 3 개의포인터를적절히이용하여제자리 (in place) 에서문제를해결 typedef struct listnode *listpointer; typedef struct listnode { char data; listpointer link; ; 2 체인연산 체인을역순으로만드는

More information

wtu05_ÃÖÁ¾

wtu05_ÃÖÁ¾ 한 눈에 보는 이달의 주요 글로벌 IT 트렌드 IDG World Tech Update May C o n t e n t s Cover Story 아이패드, 태블릿 컴퓨팅 시대를 열다 Monthly News Brief 이달의 주요 글로벌 IT 뉴스 IDG Insight 개발자 관점에서 본 윈도우 폰 7 vs. 아이폰 클라우드 컴퓨팅, 불만 검증 단계 돌입 기업의

More information

소만사 소개

소만사 소개 개인정보 라이프사이클에 걸친 기술적 보호대책 - DB방화벽과 PC내 개인정보 무단 저장 검출 및 암호화솔루션 2009.10 소만사 소개 소만사 [소프트웨어를 만드는 사람들 ] 개인정보보호 토털 솔루션 전문업체, 해외수출 기업 금융/통신/대기업/공공 600여 고객 보안1세대 기업 97년 창립(13년) 마이크로소프트 선정 - 10년 후 세계적 소프트웨어 기업 장영실상(IR52),

More information

객관식 1. 아래의쿼리를만족하는결과를가장잘설명한것은? SELECT A.* FROM HR.EMPLOYEES A, HR.EMPLOYEES B WHERE 1=1 AND A.MANAGER_ID = B.EMPLOYEE_ID AND B.SALARY >= ANY A.SALARY;

객관식 1. 아래의쿼리를만족하는결과를가장잘설명한것은? SELECT A.* FROM HR.EMPLOYEES A, HR.EMPLOYEES B WHERE 1=1 AND A.MANAGER_ID = B.EMPLOYEE_ID AND B.SALARY >= ANY A.SALARY; Study Room Doc.02 : SQLD 예상문제 네이버 Cafe : 데이터베이스전문가포럼 Study Room http://cafe.naver.com/sqlpd SQLD 21 회기출문제를바탕으로작성 작성자 : 월야루 2016-09-04 객관식 1. 아래의쿼리를만족하는결과를가장잘설명한것은? SELECT A.* FROM HR.EMPLOYEES A, HR.EMPLOYEES

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Verilog: Finite State Machines CSED311 Lab03 Joonsung Kim, joonsung90@postech.ac.kr Finite State Machines Digital system design 시간에배운것과같습니다. Moore / Mealy machines Verilog 를이용해서어떻게구현할까? 2 Finite State

More information

목차 1. 제품 소개... 4 1.1 특징... 4 1.2 개요... 4 1.3 Function table... 5 2. 기능 소개... 6 2.1 Copy... 6 2.2 Compare... 6 2.3 Copy & Compare... 6 2.4 Erase... 6 2

목차 1. 제품 소개... 4 1.1 특징... 4 1.2 개요... 4 1.3 Function table... 5 2. 기능 소개... 6 2.1 Copy... 6 2.2 Compare... 6 2.3 Copy & Compare... 6 2.4 Erase... 6 2 유영테크닉스( 주) 사용자 설명서 HDD014/034 IDE & SATA Hard Drive Duplicator 유 영 테 크 닉 스 ( 주) (032)670-7880 www.yooyoung-tech.com 목차 1. 제품 소개... 4 1.1 특징... 4 1.2 개요... 4 1.3 Function table... 5 2. 기능 소개... 6 2.1 Copy...

More information

example code are examined in this stage The low pressure pressurizer reactor trip module of the Plant Protection System was programmed as subject for

example code are examined in this stage The low pressure pressurizer reactor trip module of the Plant Protection System was programmed as subject for 2003 Development of the Software Generation Method using Model Driven Software Engineering Tool,,,,, Hoon-Seon Chang, Jae-Cheon Jung, Jae-Hack Kim Hee-Hwan Han, Do-Yeon Kim, Young-Woo Chang Wang Sik, Moon

More information

결과보고서

결과보고서 오픈 소스 데이터베이스 시스템을 이용한 플래시 메모리 SSD 기반의 질의 최적화 기법 연구 A Study on Flash-based Query Optimizing in PostgreSQL 황다솜 1) ㆍ안미진 1) ㆍ이혜지 1) ㆍ김지민 2) ㆍ정세희 2) ㆍ이임경 3) ㆍ차시언 3) 성균관대학교 정보통신대학 1) ㆍ시흥매화고등학교 2) ㆍ용화여자고등학교 3)

More information

5장. JSP와 Servlet 프로그래밍을 위한 기본 문법(완성-0421).hwp

5장. JSP와 Servlet 프로그래밍을 위한 기본 문법(완성-0421).hwp 1 0 1.7 6 5 'A ' '/ u 4 4 2 2 ' " JS P 프로그래밍 " A ', 'b ', ' 한 ', 9, \ u d 6 5 4 ' c h a r a = 'A '; 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 < % @ p a g e c o n te n

More information

OZ-LMS TM OZ-LMS 2008 OZ-LMS 2006 OZ-LMS Lite Best IT Serviece Provider OZNET KOREA Management Philosophy & Vision Introduction OZNETKOREA IT Mission Core Values KH IT ERP Web Solution IT SW 2000 4 3 508-2

More information

LG-LU6200_ICS_UG_V1.0_ indd

LG-LU6200_ICS_UG_V1.0_ indd 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 중요데이터암호화와 특권사용자통제를위한 베스트프랙티스 한국오라클 DB Security Solution Specialist 노형준 Agenda Big Picture of Oracle DB Security Advanced Security Option Database Vault Summary 2 Big Picture of Oracle DB Security 3 Database

More information

슬라이드 1

슬라이드 1 마이크로컨트롤러 2 (MicroController2) 2 강 ATmega128 의 external interrupt 이귀형교수님 학습목표 interrupt 란무엇인가? 기본개념을알아본다. interrupt 중에서가장사용하기쉬운 external interrupt 의사용방법을학습한다. 1. Interrupt 는왜필요할까? 함수동작을추가하여실행시키려면? //***

More information

<session-factory> <property name="hibernate.connection.driver_class">oracle.jdbc.driver.oracledriver</property> <property name="hibernate.connection.u

<session-factory> <property name=hibernate.connection.driver_class>oracle.jdbc.driver.oracledriver</property> <property name=hibernate.connection.u JBoss Hibernate Tools 를이용한 Entity 코드생성하기 OOP 개발교육의중심오라클자바커뮤니티 http://ojc.asia DDL 코드가작성되어있거나운영중인서비스를업그레이드하는경우에는 ORM 개발이라고하더라도 Top-down 방식의 개발방법론만을고집하지말고때에따라서는전통적인방식의접근이편리할것이다. 데이터베이스의이미존재하는테이블을바탕으로리버스엔지니어링을통해

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 11 곡선과곡면 01 Spline 곡선 02 Spline 곡면 03 Subdivision 곡면 C n 연속성 C 0 연속성 C 1 연속성 2 C 2 연속성 01 Spline 곡선 1. Cardinal Spline Curve 2. Hermite Spline Curve 3. Bezier Spline Curve 4. Catmull-Rom Spline Curve 5.

More information

본문서는 초급자들을 대상으로 최대한 쉽게 작성하였습니다. 본문서에서는 설치방법만 기술했으며 자세한 설정방법은 검색을 통하시기 바랍니다. 1. 설치개요 워드프레스는 블로그 형태의 홈페이지를 빠르게 만들수 있게 해 주는 프로그램입니다. 다양한 기능을 하는 플러그인과 디자인

본문서는 초급자들을 대상으로 최대한 쉽게 작성하였습니다. 본문서에서는 설치방법만 기술했으며 자세한 설정방법은 검색을 통하시기 바랍니다. 1. 설치개요 워드프레스는 블로그 형태의 홈페이지를 빠르게 만들수 있게 해 주는 프로그램입니다. 다양한 기능을 하는 플러그인과 디자인 스마일서브 CLOUD_Virtual 워드프레스 설치 (WORDPRESS INSTALL) 스마일서브 가상화사업본부 Update. 2012. 09. 04. 본문서는 초급자들을 대상으로 최대한 쉽게 작성하였습니다. 본문서에서는 설치방법만 기술했으며 자세한 설정방법은 검색을 통하시기 바랍니다. 1. 설치개요 워드프레스는 블로그 형태의 홈페이지를 빠르게 만들수 있게

More information

Microsoft PowerPoint - 27.pptx

Microsoft PowerPoint - 27.pptx 이산수학 () n-항관계 (n-ary Relations) 2011년봄학기 강원대학교컴퓨터과학전공문양세 n-ary Relations (n-항관계 ) An n-ary relation R on sets A 1,,A n, written R:A 1,,A n, is a subset R A 1 A n. (A 1,,A n 에대한 n- 항관계 R 은 A 1 A n 의부분집합이다.)

More information

No Slide Title

No Slide Title Copyright, 2001 Multimedia Lab., CH 3. COM object (In-process server) Eun-sung Lee twoss@mmlab.net Multimedia Lab. Dept. of Electrical and Computer Eng. University of Seoul Seoul, Korea 0. Contents 1.

More information

ActFax 4.31 Local Privilege Escalation Exploit

ActFax 4.31 Local Privilege Escalation Exploit NSHC 2013. 05. 23 악성코드 분석 보고서 [ Ransomware 악성코드 ] 사용자의 컴퓨터를 강제로 잠그고 돈을 요구하는 형태의 공격이 기승을 부리고 있 습니다. 이러한 형태의 공격에 이용되는 악성코드는 Ransomware로 불리는 악성코 드 입니다. 한번 감염 시 치료절차가 복잡하며, 보고서 작성 시점을 기준으로 지속 적인 피해자가 발생되고

More information

Chapter 4. LISTS

Chapter 4. LISTS C 언어에서리스트구현 리스트의생성 struct node { int data; struct node *link; ; struct node *ptr = NULL; ptr = (struct node *) malloc(sizeof(struct node)); Self-referential structure NULL: defined in stdio.h(k&r C) or

More information

제20회_해킹방지워크샵_(이재석)

제20회_해킹방지워크샵_(이재석) IoT DDoS DNS (jaeseog@sherpain.net) (www.sherpain.net) DDoS DNS DDoS / DDoS(Distributed DoS)? B Asia Broadband B Bots connect to a C&C to create an overlay network (botnet) C&C Provider JP Corp. Bye Bye!

More information

슬라이드 1

슬라이드 1 사례를통해본 RMAN (RMAN Case Study) 2013. 02. Seungtaek Lee( 放浪 A) RMAN 백업 Server-Managed Backup(RMAN) Components Target : 백업대상 Catalog : 백업정보가저장되는 RMAN Repository Auxiliary : 백업또는 Target 를 Restore하여여러가지용도로사용하는

More information

C++Builder ADO Programming (5) - ADO Transaction, Errors

C++Builder ADO Programming (5) - ADO Transaction, Errors C++Builder ADO Programming (5) - ADO Transaction, Errors Collections, Connection Events 지난번 강의에서 우리의 레밍은 TADOConnection의 여러 가지 속성들과 메소드들을 익히고 그것을 사용해서 SQL 문도 실행시키고 저장 프로시저도 호출해 보았다. 그것은 그것 나름대로의 한 방법이며

More information

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D313939392D382E687770>

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D313939392D382E687770> i ii iii iv v vi 1 2 3 4 가상대학 시스템의 국내외 현황 조사 가상대학 플랫폼 개발 이상적인 가상대학시스템의 미래상 제안 5 웹-기반 가상대학 시스템 전통적인 교수 방법 시간/공간 제약을 극복한 학습동기 부여 교수의 일방적인 내용전달 교수와 학생간의 상호작용 동료 학생들 간의 상호작용 가상대학 운영 공지사항,강의록 자료실, 메모 질의응답,

More information

<30362E20C6EDC1FD2DB0EDBFB5B4EBB4D420BCF6C1A42E687770>

<30362E20C6EDC1FD2DB0EDBFB5B4EBB4D420BCF6C1A42E687770> 327 Journal of The Korea Institute of Information Security & Cryptology ISSN 1598-3986(Print) VOL.24, NO.2, Apr. 2014 ISSN 2288-2715(Online) http://dx.doi.org/10.13089/jkiisc.2014.24.2.327 개인정보 DB 암호화

More information

<49534F20323030303020C0CEC1F520BBE7C8C4BDC9BBE720C4C1BCB3C6C320B9D7204954534D20BDC3BDBAC5DB20B0EDB5B5C8AD20C1A6BEC8BFE4C3BBBCAD2E687770>

<49534F20323030303020C0CEC1F520BBE7C8C4BDC9BBE720C4C1BCB3C6C320B9D7204954534D20BDC3BDBAC5DB20B0EDB5B5C8AD20C1A6BEC8BFE4C3BBBCAD2E687770> ISO 20000 인증 사후심사 컨설팅 및 ITSM 시스템 고도화를 위한 제 안 요 청 서 2008. 6. 한 국 학 술 진 흥 재 단 이 자료는 한국학술진흥재단 제안서 작성이외의 목적으로 복제, 전달 및 사용을 금함 목 차 Ⅰ. 사업개요 1 1. 사업명 1 2. 추진배경 1 3. 목적 1 4. 사업내용 2 5. 기대효과 2 Ⅱ. 사업추진계획 4 1. 추진체계

More information

요약 1

요약 1 Globalization Support Guide Using Oracle and Java Version 1.0 www.sds-epartner.com 2003.03 목차 요약 1. 해결과제 2. Multilingual Database 3. Multilingual Web Application 4. Multiple Time Zone 5. Multiple Currency

More information

BACK TO THE BASIC C++ 버그 헌팅: 버그를 예방하는 11가지 코딩 습관

BACK TO THE BASIC C++ 버그 헌팅: 버그를 예방하는 11가지 코딩 습관 Hanbit ebook Realtime 30 C++ 버그 헌팅 버그를 예방하는 11가지 코딩 습관 Safe C++ 블라디미르 쿠스퀴니르 지음 / 정원천 옮김 이 도서는 O REILLY의 Safe C++의 번역서입니다. BACK TO THE BASIC C++ 버그 헌팅 버그를 예방하는 11가지 코딩 습관 BACK TO THE BASIC C++ 버그 헌팅 버그를

More information

BSC Discussion 1

BSC Discussion 1 Copyright 2006 by Human Consulting Group INC. All Rights Reserved. No Part of This Publication May Be Reproduced, Stored in a Retrieval System, or Transmitted in Any Form or by Any Means Electronic, Mechanical,

More information

Jan. 27, 216 Fixed Income Analyst 1,,,, BOK 216-2, : Pass-Through of Imported Input Prices to Deomestic Producer Prices: Evidence from Sector- Level Data 2 215-53, 2p, : Alexander Chudik and Janet

More information

Microsoft PowerPoint - PL_03-04.pptx

Microsoft PowerPoint - PL_03-04.pptx Copyright, 2011 H. Y. Kwak, Jeju National University. Kwak, Ho-Young http://cybertec.cheju.ac.kr Contents 1 프로그래밍 언어 소개 2 언어의 변천 3 프로그래밍 언어 설계 4 프로그래밍 언어의 구문과 구현 기법 5 6 7 컴파일러 개요 변수, 바인딩, 식 및 제어문 자료형 8

More information

Windows Server 2012

Windows Server  2012 Windows Server 2012 Shared Nothing Live Migration Shared Nothing Live Migration 은 SMB Live Migration 방식과다른점은 VM 데이터파일의위치입니다. Shared Nothing Live Migration 방식은 Hyper-V 호스트의로컬디스크에 VM 데이터파일이위치합니다. 반면에, SMB

More information

디지털포렌식학회 논문양식

디지털포렌식학회 논문양식 ISSN : 1976-5304 http://www.kdfs.or.kr Virtual Online Game(VOG) 환경에서의 디지털 증거수집 방법 연구 이 흥 복, 정 관 모, 김 선 영 * 대전지방경찰청 Evidence Collection Process According to the Way VOG Configuration Heung-Bok Lee, Kwan-Mo

More information

ODS-FM1

ODS-FM1 OPTICAL DISC ARCHIVE FILE MANAGER ODS-FM1 INSTALLATION GUIDE [Korean] 1st Edition (Revised 4) 상표 Microsoft, Windows 및 Internet Explorer는 미국 및 / 또는 다른 국가에서 Microsoft Corporation 의 등록 상표입 Intel 및 Intel Core

More information

PCServerMgmt7

PCServerMgmt7 Web Windows NT/2000 Server DP&NM Lab 1 Contents 2 Windows NT Service Provider Management Application Web UI 3 . PC,, Client/Server Network 4 (1),,, PC Mainframe PC Backbone Server TCP/IP DCS PLC Network

More information

CRM Fair 2004

CRM Fair 2004 easycrm Workbench ( ) 2004.04.02 I. CRM 1. CRM 2. CRM 3. II. easybi(business Intelligence) Framework 1. 2. - easydataflow Workbench - easycampaign Workbench - easypivot Reporter. 1. CRM 1.?! 1.. a. & b.

More information

Windows 네트워크 사용 설명서

Windows 네트워크 사용 설명서 Windows 네트워크 사용 설명서 (Wireless Manager mobile edition 5.5) 그림의 예로 사용된 프로젝터는 PT-FW300NTEA 입니다. 한국어 TQBH0205-5 (K) 목차 소프트웨어 라이센스 계약 3 무선 연결 사용 시 참고 사항 4 보안 관련 참고 사항 6 소프트웨어 요구 사항 12 시스템 요구 사항 12 Wireless

More information

Microsoft PowerPoint - Smart CRM v4.0_TM 소개_20160320.pptx

Microsoft PowerPoint - Smart CRM v4.0_TM 소개_20160320.pptx (보험TM) 소개서 2015.12 대표전화 : 070 ) 7405 1700 팩스 : 02 ) 6012 1784 홈 페이지 : http://www.itfact.co.kr 목 차 01. Framework 02. Application 03. 회사 소개 01. Framework 1) Architecture Server Framework Client Framework

More information

슬라이드 제목 없음

슬라이드 제목 없음 (Electronic Commerce/Electronic Business) ( ) ,, Bio Bio 1 2 3 Money Money ( ) ( ) 4025 39 21 25 20 13 15 13 15 17 12 11 10 1 23 1 26 ( ) 1 2 2 6 (1 3 ) 1 14:00 20:00 1 2 1 1 5-6 4 e t / Life Cycle (e-commerce)

More information

Amazon EBS (Elastic Block Storage) Amazon EC2 Local Instance Store (Ephemeral Volumes) Amazon S3 (Simple Storage Service) / Glacier Elastic File Syste (EFS) Storage Gateway AWS Import/Export 1 Instance

More information

A. 다운로드 에접속한다. 검색창에 sql server 0 express 를입력하고검색을클릭한다. 검색결과중 [MicrosoftR SQL ServerR 0 서비스팩 (SP) Express] 를선택한

A. 다운로드  에접속한다. 검색창에 sql server 0 express 를입력하고검색을클릭한다. 검색결과중 [MicrosoftR SQL ServerR 0 서비스팩 (SP) Express] 를선택한 A SQL Server 0 설치 A. 소개 Relational DataBase Management System SQL Server 0는마이크로소프트사에서제공하는 RDBMS 다. 마이크로소프트사는스탠다드 standard 버전이상의상업용에디션과익스프레스 express 버전 의무료에디션을제공하는데, 이책에서는실습을위해 SQL Server 0 익스프레스에디 션 SP

More information

Assign an IP Address and Access the Video Stream - Installation Guide

Assign an IP Address and Access the Video Stream - Installation Guide 설치 안내서 IP 주소 할당 및 비디오 스트림에 액세스 책임 본 문서는 최대한 주의를 기울여 작성되었습니다. 잘못되거나 누락된 정보가 있는 경우 엑시스 지사로 알려 주시기 바랍니다. Axis Communications AB는 기술적 또는 인쇄상의 오류에 대해 책 임을 지지 않으며 사전 통지 없이 제품 및 설명서를 변경할 수 있습니다. Axis Communications

More information

정보화정책 제14권 제2호 Ⅰ. 서론 급변하는 정보기술 환경 속에서 공공기관과 기업 들은 경쟁력을 확보하기 위해 정보시스템 구축사업 을 활발히 전개하고 있다. 정보시스템 구축사업의 성 패는 기관과 기업, 나아가 고객에게 중대한 영향을 미칠 수 있으므로, 이에 대한 통제

정보화정책 제14권 제2호 Ⅰ. 서론 급변하는 정보기술 환경 속에서 공공기관과 기업 들은 경쟁력을 확보하기 위해 정보시스템 구축사업 을 활발히 전개하고 있다. 정보시스템 구축사업의 성 패는 기관과 기업, 나아가 고객에게 중대한 영향을 미칠 수 있으므로, 이에 대한 통제 연구논문 정보화정책 제14권 제2호, 2007년 여름, pp.3~18 정보시스템 감리인의 역량이 감리성과에 미치는 영향에 관한 연구 나중수*, 전성현** 최근 공공기관에서 정보화시스템 감리가 의무화되어 감리에 대한 관심이 증대되고 있으며, 한편으로 개선요구사 요약 항이 제기되고 있다, 그동안 정보시스템 감리분야의 연구는 감리지침과 감리기술연구, 감리실시유무에

More information

Microsoft Word - retail_131122.doc

Microsoft Word - retail_131122.doc Analyst 유주연 (639-4584) juyeon.yu@meritz.co.kr RA 박지은 (639-451) jeeeun.park@meritz.co.kr 213.11.22 유통업 Overweight 1월 매출동향: 대형마트 -6.4%, 백화점 -2.2% Top Pick 하이마트 (7184) Buy, TP 15,원 현대홈쇼핑 (575) Buy, TP 21,원

More information

. 1, 3,,., ICT(),,.. 2 3,.. Player (, ) IT,. 3,...,.

. 1, 3,,., ICT(),,.. 2 3,.. Player (, ) IT,. 3,...,. ,. 2004-2011 ENTIER Consulting Inc. All rights reserved. . 1, 3,,., ICT(),,.. 2 3,.. Player (, ) IT,. 3,...,. 엔티어 가 제공하는 서비스 "엔티어컨설팅"에서는 향후 20~30년간의 메가트랜드를 예측하여 미래비즈니스 사 업군을 추출하고, 전세계 히트사업부터 국내 신성장동력 사업군과

More information

소개 TeraStation 을 구입해 주셔서 감사합니다! 이 사용 설명서는 TeraStation 구성 정보를 제공합니다. 제품은 계속 업데이트되므로, 이 설명서의 이미지 및 텍스트는 사용자가 보유 중인 TeraStation 에 표시 된 이미지 및 텍스트와 약간 다를 수

소개 TeraStation 을 구입해 주셔서 감사합니다! 이 사용 설명서는 TeraStation 구성 정보를 제공합니다. 제품은 계속 업데이트되므로, 이 설명서의 이미지 및 텍스트는 사용자가 보유 중인 TeraStation 에 표시 된 이미지 및 텍스트와 약간 다를 수 사용 설명서 TeraStation Pro II TS-HTGL/R5 패키지 내용물: 본체 (TeraStation) 이더넷 케이블 전원 케이블 TeraNavigator 설치 CD 사용 설명서 (이 설명서) 제품 보증서 www.buffalotech.com 소개 TeraStation 을 구입해 주셔서 감사합니다! 이 사용 설명서는 TeraStation 구성 정보를

More information

JMF2_심빈구.PDF

JMF2_심빈구.PDF JMF JSTORM http://wwwjstormpekr Issued by: < > Document Information Document title: Document file name: Revision number: Issued by: JMF2_ doc Issue Date: Status: < > raica@nownurinet

More information

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1); void method() 2); void method1() public class Test 3); args) A 제 10 장상속 예제 1) ConstructorTest.java class Parent public Parent() super - default"); public Parent(int i) this("hello"); super(int) constructor" + i); public Parent(char c) this(); super(char) constructor

More information

FD¾ØÅÍÇÁ¶óÀÌÁî(Àå¹Ù²Þ)-ÀÛ¾÷Áß

FD¾ØÅÍÇÁ¶óÀÌÁî(Àå¹Ù²Þ)-ÀÛ¾÷Áß Copyright (c) 1999-2002 FINAL DATA INC. All right reserved Table of Contents 6 Enterprise for Windows 7 8 Enterprise for Windows 10 Enterprise for Windows 11 12 Enterprise for Windows 13 14 Enterprise

More information

(Microsoft Word - PLSQL\300\314\266\365.doc)

(Microsoft Word - PLSQL\300\314\266\365.doc) 오라클 PL/SQL 제를다른홈페이지에기재할경우에는출처를꼭밝혀주세요. (http://www.oracleclub.com) 1 PL/SQL 의개요 1.1 PLSQL 이란? [ 2002/01/20 ] 1.2 PL/SQL Block 구조 [ 2002/05/09 ] 1.3 PL/SQL 블럭의유형 [ 2002/05/09 ] 2 프로시저 (PROCEDURE) 와함수 (FUNCTION)

More information

Microsoft PowerPoint - QVIZMVUMWURI.pptx

Microsoft PowerPoint - QVIZMVUMWURI.pptx 데이타베이스시스템 2011.03 충북대학교경영정보학과조완섭 (wscho@chungbuk.ac.kr) Chap. 4 SQL 질의어 C4 2 목차 - SQL2에서데이터정의, 제약조건및스키마변경 - SQL에서의기본질의 - 더복잡한 SQL 질의들 - SQL에서삽입, 삭제, 갱신구문 - SQL 뷰 - 주장으로추가적인제약조건명시 - SQL의부가적인기능들 Ch4 3 SQL

More information

ThinkVantage Fingerprint Software

ThinkVantage Fingerprint Software ThinkVantage 지문 인식 소프트웨어 First Edition (August 2005) Copyright Lenovo 2005. Portions Copyright International Business Machines Corporation 2005. All rights reserved. U.S. GOVERNMENT USERS RESTRICTED RIGHTS:

More information

개요 AXSR5 레코더에 연결 시 NEXFS700 전용 RAW 포맷으로 변환되어 AXSR5 에서 녹화됩니다(PMWF55, F65 용 RAW 포맷과 다름). 또한 이 제품의 간단한 플레이백 기능을 사용하여 AXSR5에서 레코딩 된 비디오를 볼 수 있습니다. 플레이백 되는

개요 AXSR5 레코더에 연결 시 NEXFS700 전용 RAW 포맷으로 변환되어 AXSR5 에서 녹화됩니다(PMWF55, F65 용 RAW 포맷과 다름). 또한 이 제품의 간단한 플레이백 기능을 사용하여 AXSR5에서 레코딩 된 비디오를 볼 수 있습니다. 플레이백 되는 446648911(1) 휴대용 메모리 레코더 인터페이스 유닛 사용 설명서 HXRIFR5 개요 AXSR5 레코더에 연결 시 NEXFS700 전용 RAW 포맷으로 변환되어 AXSR5 에서 녹화됩니다(PMWF55, F65 용 RAW 포맷과 다름). 또한 이 제품의 간단한 플레이백 기능을 사용하여 AXSR5에서 레코딩 된 비디오를 볼 수 있습니다. 플레이백 되는 영상은

More information

2 2000. 8. 31

2 2000. 8. 31 IT update 00 1 / 2000.8.30 IT update Information Technology 2 2000. 8. 31 C o n t e n t s 2000. 8. 31 3 4 2000. 8. 31 2000. 8. 31 5 6 2000. 8. 31 2000. 8. 31 7 8 2000. 8. 31 2000. 8. 31 9 1 0 2000. 8.

More information

System Recovery 사용자 매뉴얼

System Recovery 사용자 매뉴얼 Samsung OS Recovery Solution 을이용하여간편하게 MagicInfo 의네트워크를설정하고시스템을백업및복원할수있습니다. 시스템시작시리모컨의 - 버튼이나키보드의 F3 키를연속해서누르면복구모드로진입한후 Samsung OS Recovery Solution 이실행됩니다. Samsung OS Recovery Solution 은키보드와리모컨을사용하여조작할수있습니다.

More information

Microsoft Word - 20150811201049900_1

Microsoft Word - 20150811201049900_1 Company Report 215.8.12 CJ E&M (1396) 기대보다 좋았고 앞으로도 좋을 듯 미디어/엔터 What s new? Our view 투자의견: BUY (M) 목표주가: 12,원 (M) 주가 (8/11) 81,5원 자본금 시가총액 1,937억원 31,567억원 주당순자산 42,468원 부채비율 49.26% 총발행주식수 6일 평균 거래대금 38,732,89주

More information

자기공명영상장치(MRI) 자장세기에 따른 MRI 품질관리 영상검사의 개별항목점수 실태조사 A B Fig. 1. High-contrast spatial resolution in phantom test. A. Slice 1 with three sets of hole arr

자기공명영상장치(MRI) 자장세기에 따른 MRI 품질관리 영상검사의 개별항목점수 실태조사 A B Fig. 1. High-contrast spatial resolution in phantom test. A. Slice 1 with three sets of hole arr Original Article pissn 1738-2637 J Korean Soc Radiol 2012;67(2):129-134 The Survey of Magnetic Resonance Imaging Quality according to in Korea 1 자기공명영상장치(MRI) 자장세기에 따른 MRI 품질관리 영상검사의 개별항목점수 실태조사 1 Hyun-Hae

More information

KISA-GD

KISA-GD KISA-GD-2011-0002 2011.9 1) RD(Recursive Desired) 플래그 : 리커시브네임서버로하여금재귀적 (recursive) 질의 ( 항목 1.3. 참고 ) 요청을표시함. RD 플레그값이 0 이면반복적 (iterative) 질의를요청 2) AA 플래그 : Authoritative Answer 의약자로써, 네임서버가해당응답데이터를자신이보유하고있는지유무를표시

More information

04-다시_고속철도61~80p

04-다시_고속철도61~80p Approach for Value Improvement to Increase High-speed Railway Speed An effective way to develop a highly competitive system is to create a new market place that can create new values. Creating tools and

More information

휠세미나3 ver0.4

휠세미나3 ver0.4 andromeda@sparcs:/$ ls -al dev/sda* brw-rw---- 1 root disk 8, 0 2014-06-09 18:43 dev/sda brw-rw---- 1 root disk 8, 1 2014-06-09 18:43 dev/sda1 brw-rw---- 1 root disk 8, 2 2014-06-09 18:43 dev/sda2 andromeda@sparcs:/$

More information

Adobe Flash 취약점 분석 (CVE-2012-0754)

Adobe Flash 취약점 분석 (CVE-2012-0754) 기술문서 14. 08. 13. 작성 GNU C library dynamic linker $ORIGIN expansion Vulnerability Author : E-Mail : 윤지환 131ackcon@gmail.com Abstract 2010 년 Tavis Ormandy 에 의해 발견된 취약점으로써 정확한 명칭은 GNU C library dynamic linker

More information

HTML5가 웹 환경에 미치는 영향 고 있어 웹 플랫폼 환경과는 차이가 있다. HTML5는 기존 HTML 기반 웹 브라우저와의 호환성을 유지하면서도, 구조적인 마크업(mark-up) 및 편리한 웹 폼(web form) 기능을 제공하고, 리치웹 애플리케이 션(RIA)을

HTML5가 웹 환경에 미치는 영향 고 있어 웹 플랫폼 환경과는 차이가 있다. HTML5는 기존 HTML 기반 웹 브라우저와의 호환성을 유지하면서도, 구조적인 마크업(mark-up) 및 편리한 웹 폼(web form) 기능을 제공하고, 리치웹 애플리케이 션(RIA)을 동 향 제 23 권 5호 통권 504호 HTML5가 웹 환경에 미치는 영향 이 은 민 * 16) 1. 개 요 구글(Google)은 2010년 5월 구글 I/O 개발자 컨퍼런스에서 HTML5를 통해 플러 그인의 사용이 줄어들고 프로그램 다운로드 및 설치가 필요 없는 브라우저 기반 웹 플랫폼 환경이 점차 구현되고 있다고 강조했다. 그리고 애플(Apple)은 2010년

More information

歯3일_.PDF

歯3일_.PDF uuhm Daewoo Daily * 0.0% 23.6% 38.2% 50.0% 61.8% 100.0% 980 970 960 950 940 930 920 910 900 890 880 870 860 850 840 830 820 810 800 790 780 770 760 750 740 730 720 710 700 690 680 670 660 650 640 630

More information