ORACLE/OWI2008. 12. 22. 17:01
반응형
오라클 lock에는 여러 종류가 있습니다.
Media Recovery(MR),
Redo Thread(RT),
User Name(UN),
Transaction(TX),
DML(TM),
P/L SQL User Block(UL),
Distrbuted Xaction(DX),
Control File(CF),
Instance State(IS),
File Set(FS),
Instance Recovery(IR),
Disk Space Transaction(ST),
Temp Segment(TS),
Library Cache Invalidation(IV),
Log State or Switch(LS),
Row Wait(RW),
Extend Table(TE),
Temp Table'(Tt)
 
Row Share Table Locks(RS)  Row share table lock(내부적으로 sub-share table lock,
SS라고 불리기도 함)은  table에 lock을 걸려는 transaction이 table안에 lock된 row가
있고 그 row를 변경시키고자 하는 것을 가리킨다. Row share table lock은 다음 문장에
의해 table에 대해 자동으로 lock을 건다:

SELECT  . . .   FROM  table  . . .  FOR  UPDATE  OF  . . .  ;
LOCK  TABLE  table  IN  ROW  SHARE  MODE;

Row share table lock은 하나의 table에 대해서 높은 concurrency의 degree를 제공하기
위한 table lock의 가장 낮은 수준의 restrictive mode이다.  

Permitted Operations : Transaction에 의해서 걸리는 row share table lock은 동시에
동일한 table에 대한 query, insert, delete, update, lock row를 허용한다. 그러므로,
다른 transaction은 동일한 table에 대해 동시에 row share, row exclusive, share,
그리고 share row exclusive table lock을 걸 수가 있다.

Prohibited Operations  : Transaction에 의해서 걸리는 row share table lock은 다른 transaction이 다음의 문장을 이용하여 동일한 table에 대해 exclusive write access를
수행하는 것을 방지한다:

LOCK  TABLE  table  IN  EXCLUSIVE  MODE

Row Exclusive Table Locks(RX)  Row exclusive table lock(내부적으로 sub-exclusive
table lock, SX라 불리기도 함)은 그 lock이 걸린transaction이 그 table에 있는 row들에
대해 하나 이상의 update를 수행하고자 하는 것을 가리킨다. 다음 문장에 의해서 row
exclusive table lock이 수정된 table에 대해서 자동으로 걸린다:

INSERT  INTO  table  . . . ;
UPDATE  table  . . . ;
DELETE  FROM  table  . . . ;
LOCK  TABLE  table  IN  ROW  EXCLUSIVE  MODE;

Row exclusive table lock은 row share table lock보다 약간 더 제한적이다.

Permitted Operations : Transaction에 의해서 거리는 row exclusive table lock은
동시에 동일한 table에 대해서 다른 transaction들이  row들을 query, insert, delete,
update, lock 하는 것을 허용한다. 그러므로, row exclusive table lock들은 여러
transaction이 동일한 table에 대해 동시에 row exclusive, row share table lock을
거는 것을 허용한다.

Prohibited Operations : Transaction에 의해서 걸리는 row exclusive table lock은 다른 transaction들이 exclusive하게 읽고 쓰기 위해서 수동으로 table을 lock하는 것을 방지한다.
그러므로, 다음 문장을 사용하여 다른 transaction들은 동시에 그 table을 lock할 수 없다:

LOCK  TABLE  table  IN  SHARE  MODE;
LOCK  TABLE  table  IN  SHARE  EXCLUSIVE  MODE;
LOCK  TABLE  table  IN  EXCLUSIVE  MODE;

Share Table Locks(S)  Share table lock은 다음 문장에서 지정된 table에 대해서 자동으로 lock을 건다.

LOCK  TABLE  table  IN  SHARE  MODE;

Permitted Operations : Transaction에 의해서 걸리는 share table lock은 다른
transaction들이 단지, table에 대한 query, SELECT ... FOR UPDATE를 이용한 특정 row에 대한
lock, LOCK TABLE ... IN SHARE MODE문들을 성공적으로 수행하기 위해서 허용한다; 다른
transaction에 의한 갱신은 허용하지 않는다. 여러 transaction이 동일한 table에 대해 동시에
share table lock을 수행할 수 있다. 이 경우에 어떠한 transaction도 table을 update할 수 없다
(Transaction이 SELECT ... FOR UPDATE문장의 결과로써 row lock들을 유지할 지라도). 그러므로 만
약 다른 transaction이 동일한 table에 대해 share table lock을 또한 가지지 않을 때에만 share
table lock을 가지는 transaction이 update 할 수 있다.

Prohibited Operations : Transaction에 의해서 걸리는 Share table lock은 다른 transaction이
다음 문장으로 동일한 table을 변경하는 것을 방지한다:

LOCK  TABLE  table  IN  SHARE  ROW  EXCLUSIVE  MODE;
LOCK  TABLE  table  IN  EXCLUSIVE  MODE;
LOCK  TABLE  table  IN  ROW  EXCLUSIVE  MODE;

Share Row Exclusive Table Locks(SRX)  Share row exclusive table lock(내부적으로 share-sub-
exclusive table lock, SSX라고 불리기도 함)은 share table lock보다 좀 더 제한적이다. Share
row exclusive table lock은 다음처럼 하나의 table에 대해서 걸린다.

LOCK  TABLE  table  IN  SHARE  ROW  EXCLUSIVE  MODE;

Permitted Operations : 한 시점에 주어진 table에 대해
하나의 share row exclusive table lock만이 걸릴 수 있다.
transaction에 의해 걸린 share row exclusive table lock은
다른 transaction이 query을 하거나 SELECT ... FOR UPDATE로
특정 row를 lock하는 것을 허용하나 table의 갱신은 허용하지 않는다.

Prohibited Operations : Transaction에 의해서 걸리는
share row exclusive table lock은 다른 transaction이
동일한 table에 대해 row exclusive table lock을 걸어
table을 변경하는 것을 허용하지 않는다. Share row
exclusive table lock은 다른 transaction이 다음 문장을
이용하여 share, share row exclusive, exclusive table lock
을 수행하는 것을 방지한다.

LOCK  TABLE  table  IN  SHARE  MODE;
LOCK  TABLE  table  IN  SHARE  ROW  EXCLUSIVE  MODE;
LOCK  TABLE  table  IN  ROW  EXCLUSIVE  MODE;
LOCK  TABLE  table  IN  EXCLUSIVE  MODE;

Exclusive Table Locks(X)  Exclusive table lock은
lock을 건 transaction이 table에 대한 access를
exclusive write로 허용하는table lock의 가장 제한적인
모드이다. Exclusive table lock은 다음 문w장에 의해 걸린다:

LOCK  TABLE  table  IN  EXCLUSIVE  MODE;

Permitted Operations : 오직 하나의 transaction이 table에
대해 exclusive table lock을 걸 수 있다.

Prohibited Operations  :  Exclusive table lock은 다른
transaction이 그 table을 query하는 것만 허용한다. Exclusive
table lock은 어떤 종류의 DML문이나 어떤 종류의 lock도 금지한다.

DEFAULT LOCKING FOR INSERT, UPDATE, DELETE AND
SELECT ... FOR UPDATE STATEMENT  INSERT, UPDATE, DELETE,
그리고 SELECT ... FOR UPDATE 문장의 특성은 다음과 같다.

DML문장을 포함하는 transaction은 문장에 의해서 변경되는
row들에 대해 exclusive row lock을 건다.그러므로 locking
transaction이 commit되거나 rollback될 때까지 다른 transaction이
lock된 row를 삭제하거나 변경할 수 없다.

DML문장을 포함하는 transaction은 subquery나 WHERE절의
query와 같은 묵시적인  query에 의해서 선택된 어떠한 row에
대하여  row lock을 걸 필요가 없다.

Transaction의 query은 동일한 transaction의 DML문장에
의한 변화는 볼 수 있지만, transaction이 시작된 이후의 다른
transaction에 의한 변화는 볼 수 없다.

요구되는 exclusive row lock이외에 추가로, DML문장을 포함하는
transaction은 영향받는 row를 포함하는 table에 대해 최소한 하나의
row exclusive table lock을 건다.

반응형
Posted by [PineTree]
ORACLE/ADMIN2008. 12. 18. 14:57
반응형
Oracle Flashback 기능 이란?
 
DB 관리중에 실수로 데이타를 삭제하거나 데이타의 값을 잘못 변경 하는 실수가 가끔 발생을 합니다.
 
이러한 오류를 바로 인식할 경우는 Rollback이라는 명령으로 바로 전에 수행한 작업을 원상복귀시킬 수 있지만, COMMIT을 한 이후 시점이나, 한참 시간이 지난 후에 알았다면 간단하게 복구하기가 난감 합니다.
 
이러한 경우에 특정한 시간 또는 시점으로 되돌릴 수 있는 기능이 Oracle Flashback 기능 입니다.
 
간단하게 말해서 Flashback 기능은 특정한 과거시점의 질의를 실행할 수 있게 해 줍니다.
데이타베이스에 구조적인 변화를 가하지 않고 과거 일정 시점의 데이타 상태를 확인할 수 있는 기능 입니다..
 
일종의 오라클에서 지원하는 타임머신이라고 할 수 있죠...
 
 
 
Flashback을 사용하기 위한 요구조건
   
 - 자동 언두 관리 시스템을 사용해야 합니다.  (UNDO_MANAGEMENT 파라미터를 AUTO로 설정)
   .UNDO_MANAGEMENT = AUTO
 
 - 이전의 어느 시점까지의 언두(UNDO)정보를 보유하여 Flashback Query를 수행할것인지
   UNDO_RETENTION 파라미터를 설정해야 합니다.
   .ALTER SYSTEM SET UNDO_RETENTION=1800
 
 - 일반사용자가 Flashback 기능을 이용하기 위해서 DBMS_FLASHBACK패키지에 대한 EXECUTE권한이 있어야 합니다.
 
 
 
Flashback 사용하기
 
Flashback의 사용 방법은 과거시점의 특정 시간으로 사용하는 방법과 SCN(System Change Number)을 사용하는 방법이 있습니다.
 
 
 - 과거시점의 시간 사용: DBMS_FLASHBACK.ENABLE_AT_TIME(query_time IN TIMESTAMP);
 - SCN 사용 : DBMS_FLASHBACK.ENABLE_AT_SYSTEM_CHANGE_NUMBER(query_scn IN NUMBER);
 
 
과거시점의 시간을 지정하여 Flashback 기능을 사용 할 경우 오라클은 내부적으로 이를 SCN으로 전환하여 처리 합니다. 시간 정보를 SCN으로 Mapping하는 시간이 필요한데 통상 5분 주기로 이루어 집니다.
 
따라서, 시간으로 지정할때는 현재보다 5분이상 차이가 나는 과거시점을 지정해야 합니다.
 
 
또한 Flashback 기능은 무한대로 이전의 데이터를 조회할 수 있는 기능이 아니고,
관리자가 UNDO_RETENTION 파라미터를 통해서 정해준 시간(초) 동안의 데이터를 조회할 수 있습니다.
 
 - 디폴트 UNDO_RETENTION 시간은 10800(3시간) 입니다.
 
그리고  Flashback data를 참고하는 경우엔 DML, DDL등의 작업을 직접 수행 할 수 없습니다.
 
 

 


Flashback 사용예제


C:\>SQLPLUS /NOLOG
 
 
▒▒▒▒▒▒ Flashback 사용을 위한 환경설정 시작 ▒▒▒▒▒▒
 
-- SYSDBA 권한으로 접속
SQL>CONN / AS SYSDBA
 
 
-- UNDO MANAGEMENT MODE 확인
SQL>SHOW PARAMETER UNDO;
NAME                                 TYPE        VALUE
--------------------------- ----------- ---------
undo_management                 string       AUTO
undo_retention                       integer      10800
undo_suppress_errors            boolean     FALSE
undo_tablespace                    string        UNDOTBS1
 
   
-- undo_management가 MANUAL로 되어있을경우 아래와 같이 변경하고 UNDO 테이블스페이스를 생성하고 지정합니다..
SQL>ALTER SYSTEM SET UNDO_MANAGEMENT = AUTO SCOPE=SPFILE;
 
-- UNDO 테이블 스페이스 생성
SQL>CREATE UNDO TABLESPACE UNDOTBS2
    DATAFILE ’D:\oracle\oradata\oracle\UNDOTBS2.dbf’ SIZE 100M;
 
-- UNDO 테이블 스페이스 지정
SQL>ALTER SYSTEM SET UNDO_TABLESPACE=UNDOTBS2
 
 
-- UNDO_RETENTION 시간을 변경하시면 실제 적용을 위해 5분정도 기다려야 합니다.
SQL>ALTER SYSTEM SET UNDO_RETENTION=1800
 
 
-- scott유저에게 DBMS_FLASHBACK EXEUCTE 권한 부여
SQL>GRANT EXECUTE ON DBMS_FLASHBACK TO SCOTT;
 
▒▒▒▒▒▒ Flashback 사용을 위한 환경설정 끝 ▒▒▒▒▒▒
 
 
-- 테스트를 위해서 scott 유저에 접속을 합니다.
SQL>CONN scott/tiger
 
 
-- emp 테이블 14건의 데이터 확인
SQL>SELECT * FROM emp;
14 개의 행이 선택되었습니다...
  
 
-- 데이터 삭제하기전의 날짜를 확인 합니다.
-- Flashback을 이용하여 이 시점에서 데이터를 조회, 복구 할 것입니다.
SQL> SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') FROM DUAL;
TO_CHAR(SYSDATE,’YY
-------------------
2006-01-21 17:16:51
 
10G 에서 SYSTIMESTAMP
SQL> SELECT SYSTIMESTAMP FROM DUAL;

SYSTIMESTAMP
---------------------------------------------------------------------------
18-DEC-08 03.27.03.993567 PM +09:00

-- 데이터를 삭제 합니다.
SQL>DELETE FROM emp;
14 행이 삭제되었습니다.
 
 
-- commit 수행
SQL>COMMIT;
 
 
-- 데이터 확인
SQL>SELECT * FROM emp;
선택된 레코드가 없습니다.
 
 
-- Flashback 과거시점의 시간사용 모드 Enable로 데이터 확인
SQL>EXEC DBMS_FLASHBACK.ENABLE_AT_TIME(TO_TIMESTAMP(’2006-01-21 17:16:51’, ’YYYY-MM-DD HH24:MI:SS’))
PL/SQL 처리가 정상적으로 완료되었습니다.
 
 
-- 데이터를 확인 할 수 있습니다.
SQL>SELECT * FROM emp;
14 개의 행이 선택되었습니다.
 
 
-- Flashback Disable로 변경
SQL> EXEC DBMS_FLASHBACK.DISABLE;
PL/SQL 처리가 정상적으로 완료되었습니다.
 
 
-- Flashback Disable로 변경하면 데이터를 확인 할 수 없습니다.
SQL>SELECT * FROM emp;
선택된 레코드가 없습니다.
 
 
Flashback Disable 상태에서도 이전데이터를 보기위해서는 데이터 복구 작업을  진행해야 합니다.
아래는 삭제된 데이터 복구 예제 입니다.
 
 
 
◈  삭제된 데이터 복구
 
Oracle9i Database Release 2이상 버전에서는  SELECT...AS OF 명령을 사용하여 쉽게 Flashback 데이터를 복구 할 수 있습니다.
Oracle9i Database Release1 버전에서는 DBMS_FLASHBACK프로시저를 이용해서 데이터를 복구해야 합니.
 
 
-- 삭제된 데이터 복구(오라클 버전 Release 9.2.0.1.0 실행)
SQL>INSERT INTO TEVENTLOG
 (SELECT * FROM TEVENTLOG AS OF TIMESTAMP TO_TIMESTAMP('2008-12-17 15:00:00','YYYY-MM-DD HH24:MI:SS'))
 
 
-- 복구된 데이터 확인
SQL>SELECT * FROM emp;
14 개의 행이 선택되었습니다.
 
 
 
-- 위에 복구된 데이타를 Rollback으로 지우고 DBMS_FLASHBACK 패키지를 이용해서 복구해 봅니다.
 
-- 삭제된 데이터 복구
SQL>DECLARE
    
     CURSOR emp_cursor is
       SELECT * FROM emp;
     
      v_emp emp%ROWTYPE;
      
    BEGIN
    
     DBMS_FLASHBACK.ENABLE_AT_TIME(TO_TIMESTAMP('2006-01-21 17:16:51', 'YYYY-MM-DD HH24:MI:SS'));
     
     OPEN emp_cursor;
     
     -- Flashback을 Disable했지만 커서(test_cursor)는 여전히 과거시점의 데이터를 가지고 있습니다.
     DBMS_FLASHBACK.DISABLE;
                             
     LOOP
        FETCH emp_cursor INTO v_emp;
            EXIT WHEN emp_cursor%NOTFOUND;
            INSERT INTO emp VALUES (v_emp.empno, v_emp.ename, v_emp.job, v_emp.mgr, v_emp.hiredate, v_emp.sal, v_emp.comm, v_emp.deptno);
     END LOOP;
     CLOSE emp_cursor;
     COMMIT;
    END;
    /
 
PL/SQL 처리가 정상적으로 완료되었습니다.

-- 복구된 데이터 확인
SQL>SELECT * FROM emp;
14 개의 행이 선택되었습니다.

추가 풀래시백 테이블

  SQL> select * from tab;

 

뭐 다른 것도 있겠지만 저것도 하나에 들어가겠죠?

 

오늘 여지없이 저걸 쳤더니 'BIN$N3+PSg4FkXfgQAB/AQASdw==$0' 이런 이름의 테이블이 보이더군요.

 

desc, select 다 됩니다. 가만 보니 제가 지웠던 테이블이네요.

 

깔끔떠는 성격에 가만 놔둘리없죠.

 

  SQL> drop table BIN$N3+PSg4FkXfgQAB/AQASdw==$0;

 

  ORA-00933: SQL command not properly ended

 

뭐 이런 식으로 뜨더군요.

 

뭐야 이건...검색결과...

 

"Oracle recycle bin flashback table feature"라고 하더군요.

 

drop 열심히 날려도 휴지통(recycle bin) 기능이 생겨서 지워지지 않고 

 

"BIN$~!#^$#*(()$" 이런 식으로 남아있는 겁니다.

 

자 저걸 지우고 싶다면...

 

  SQL> PURGE RECYCLEBIN;

 

윈도우의 휴지통 비우기 정도 되겠습니다.

 

그럼 윈도우처럼 휴지통 보내지 말고 그냥 지우긴...

 

  SQL> DROP TABLE employee PURGE;

 

employee 테이블을 지운다고 가정했습니다.

 

휴지통에 보냈다면 다시 살릴 수도 있겠죠?

 

  SQL> FLASHBACK TABLE employee TO BEFORE DROP;

 

 

딱 3줄이면 요약되는거 장황하게 늘어놔봤습니다.

 

그럼...또다시 새로운 게 보이면 적도록 하겠습니다.

 

 

더 자세한 걸 원하신다면  

 

 http://www.oracle.com/technology/pub/articles/10gdba/week5_10gdba.html


 

참고문헌
 - Oracle9i Flashback Query 오라클 기술백서 2002년 3월 pdf 문서
 - Oracle Technical Bulletins No. 17863 (V9I) ORACLE 9I New Feature : ORACLE FLASHBACK
 - 강명규님의 강좌 : Flashback (과거시점에서 질의실행)

  ================================================
    * 오라클 정보공유 커뮤니티 oracleclub.com
    * http://www.oracleclub.com
    * http://www.oramaster.net
    * 강좌 작성자 : 김정식 (oramaster _at_ naver.com)
  ================================================
반응형

'ORACLE > ADMIN' 카테고리의 다른 글

ALTER ~ SHRINK SPACE  (0) 2009.02.05
oracle tablespace 사용량 확인 sql  (0) 2008.12.30
DICTIONARY(DICT) 뷰  (0) 2008.12.03
oracle유저 이외의 유저가 sqlplus등을 사용하는 방법  (0) 2008.11.27
DBNAME, SID 변경하기.  (0) 2008.11.26
Posted by [PineTree]
ORACLE/TroubleShooting2008. 12. 17. 09:23
반응형



SQL> @TBOARD
SP2-0734: unknown command beginning "작업이 진..." - rest of line ignored.
SP2-0734: unknown command beginning "각각의 업..." - rest of line ignored.
SP2-0734: unknown command beginning "업무 진행..." - rest of line ignored.
SP2-0734: unknown command beginning "==========..." - rest of line ignored.
SP2-0044: For a list of known commands enter HELP
and to leave enter EXIT.
SP2-0734: unknown command beginning "시스템 Upd..." - rest of line ignored.
SP2-0734: unknown command beginning "==========..." - rest of line ignored.
SP2-0734: unknown command beginning "TO_DATE('0..." - rest of line ignored.


해결방범
set sqlblanklines on 
을 하고 스크립트 실행하면 된다.
반응형
Posted by [PineTree]
ORACLE/DataGuard2008. 12. 13. 16:24
반응형

Database:Oracle:DG PSB

목차
[숨기기]

    * 1 설정
          o 1.1 환경설정
                + 1.1.1 Production DB에서
                + 1.1.2 Standby DB에서
    * 2 Standby DB Setup
          o 2.1 datafile 및 logfile 생성
          o 2.2 ORACLE NET환경 설정
          o 2.3 STANDBY LOGFILE생성
          o 2.4 standby database 운영
          o 2.5 SWITCHOVER
                + 2.5.1 Pirmary에서 Standby로 역할 변경
                + 2.5.2 Standby에서 Primary로 역할 변경
                + 2.5.3 새로운 STANDBY DB를 STANDBY 기능을 활성화
          o 2.6 protection mode의 변경
                + 2.6.1 상위모드로의 변경(UPGRADE)
                + 2.6.2 하위모드로의 변경(DOWNGRADE)


[
 본 문서는 physical standby database만을 가정한다.
 

 설정

 환경설정

Production DB에서

1. nologging option을 방지하기 위해 DB를 FORCE LOGGING MODE로 설정한다.
 
 SQL> select log_mode, force_logging from v$database;
 
 LOG_MODE FOR
 ------------ ---
 ARCHIVELOG NO
 
 SQL> alter database force logging;
 
 Database altered.
 
 2. sysdba에 login 환경을 설정한다.
 cd $ORACLE_HOME/dbs
 orapwd file=orapw password=<sys계정의 password=""> entries=10
 
 3. initial parameter를 설정한다.
 # for DataGuard Primary DB
 *.REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
 *.LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
 *.LOG_ARCHIVE_MAX_PROCESSES=30
 
 *.db_name=ART
 *.db_unique_name=ART
 *.LOG_ARCHIVE_CONFIG='DG_CONFIG=(ART,ART_SB)'
 
 *.LOG_ARCHIVE_DEST_1=
  'LOCATION=/u00/ART/ARC
  VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
  DB_UNIQUE_NAME=ART'
 *.LOG_ARCHIVE_DEST_2=
  'SERVICE=ART_SB LGWR ASYNC
  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
  DB_UNIQUE_NAME=ART_SB'
 *.LOG_ARCHIVE_DEST_STATE_1=ENABLE
 *.LOG_ARCHIVE_DEST_STATE_2=ENABLE
 
 # for DataGuard Primary DB when Standby Role
 *.FAL_SERVER=ART_SB
 *.FAL_CLIENT=ART
 #*.db_file_name_convert='/opt/ORA/oradata/ART_SB/','/opt/ORA/oradata/ART/'
 #*.log_file_name_convert='/opt/ORA/oradata/ART_SB/','/opt/ORA/oradata/ART/'
 *.standby_file_management=auto
 
 4. DB를 OPEN하고 online redo log를 dump한다.
 SQL> alter database open;
 
 Database altered.
 
 SQL> alter database begin backup;
 
 Database altered.
 
 SQL> alter database create standby controlfile as '/tmp/ART.ctl'; 
 
 Database altered.</sys계정의>

Standby DB에서

1. Production DB에서 datafile, logfile 등을 copy한다.
  => 물론 production DB가 BEGIN BACKUP 상태에서 진행한다.
 
 2. initial parameter를 수정한다.
 # for DataGuard Standby DB when Primary Role
 *.REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
 *.LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
 *.LOG_ARCHIVE_MAX_PROCESSES=30
 
 *.db_name=ART
 *.db_unique_name=ART_SB
 *.instance_name=ART_SB
 *.LOG_ARCHIVE_CONFIG='DG_CONFIG=(ART,ART_SB)'
 
 *.LOG_ARCHIVE_DEST_1=
         'LOCATION=/u00/ART/ARC
         VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
         DB_UNIQUE_NAME=ART_SB'
 *.LOG_ARCHIVE_DEST_2=
         'SERVICE=ART LGWR ASYNC
         VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
         DB_UNIQUE_NAME=ART'
 *.LOG_ARCHIVE_DEST_STATE_1=ENABLE
 *.LOG_ARCHIVE_DEST_STATE_2=ENABLE
 
 # for DataGuard Standby DB when Standby Role
 *.FAL_SERVER=ART
 *.FAL_CLIENT=ART_SB
 #*.db_file_name_convert='/opt/ORA/oradata/ART_SB/','/opt/ORA/oradata/ART/'
 #*.log_file_name_convert='/opt/ORA/oradata/ART_SB/','/opt/ORA/oradata/ART/'
 *.standby_file_management=auto
 

 Standby DB Setup

datafile 및 logfile 생성

StandBy DB의 datafile 및 logfile은 Primary DB의 hot backup본을 copy해서 구성한다.
PrimaryDB에서
1. current log를 archiving한다.
 alter system archive log current;
 2. DB를 HOT BACKUP MODE로 변경한다.
 alter database begin backup;
 
 3. 모든 datafile를 standby db의 같은 위치로 복사한다.
 4. 모든 online redo log file를 standby db의 같은 위치로 복사한다.
 5. standby db용 control file를 생성한다.
 alter database create standby controlfile as '/tmp/ART4PSB.ctl';
 6. 생성된 standby db용 control file를 standby db의 control file위치로 복사한다.

ORACLE NET환경 설정

primary와 standby 서버 위치에서 모두 db_unique_name과 동일한 이름의 tnsnames.ora의 alias를 설정한다.
 

STANDBY LOGFILE생성

Maximum protection이나 Maximum Avalablility 모드의 경우 standby redo log file을 사용해야 한다.
이경우 primary 및 standby db에서 각각 group no와 size가 primary redo log와 동일하게 생성해야 한다.
alter database add standby logfile group 11 '/u01/oradata/ART/sb_redo01.log' size 100m;
 alter database add standby logfile group 12 '/u02/oradata/ART/sb_redo02.log' size 100m;
 alter database add standby logfile group 13 '/u03/oradata/ART/sb_redo03.log' size 100m;
 alter database add standby logfile group 14 '/u04/oradata/ART/sb_redo04.log' size 100m;
 alter database add standby logfile group 15 '/u01/oradata/ART/sb_redo05.log' size 100m;
 alter database add standby logfile group 16 '/u02/oradata/ART/sb_redo06.log' size 100m;
 alter database add standby logfile group 17 '/u03/oradata/ART/sb_redo07.log' size 100m;
 alter database add standby logfile group 18 '/u04/oradata/ART/sb_redo08.log' size 100m;
 alter database add standby logfile group 19 '/u01/oradata/ART/sb_redo09.log' size 100m;
 alter database add standby logfile group 20 '/u02/oradata/ART/sb_redo10.log' size 100m;
 alter database add standby logfile group 21 '/u03/oradata/ART/sb_redo11.log' size 100m;
 alter database add standby logfile group 22 '/u04/oradata/ART/sb_redo12.log' size 100m;

standby database 운영

alter database recover managed standby database disconnect;
 

SWITCHOVER

switchover는 기존의 Primary와 Standby가 서로 역할을 바꾸는 것을 말한다.

Pirmary에서 Standby로 역할 변경

1. Primary DB가 switch over가 가능한 지 확인한다.
SQL> select switchover_status from v$database;
 
 SWITCHOVER_STATUS
 --------------------
 SESSIONS ACTIVE
위 결과값은 TO STANBY가 아니면 현재 DB를 사용하는 사람이 있다는 의미이므로 이 상태에서는
SWITCHOVER가 불가능하다. 접속한 session이 없다면 job이 실행 중일 수 있으므로, job queue process를 0으로 주어
JOB이 실행되지 않도록 한다. 또한 10g의 경우처럼 em이 DB에 접속해 있을 경우가 있으므로 이도 종료한다.
SQL> alter system set job_queue_processes=0 scope=memory;
 
 System altered.
 
 $ emctl stop agent
 SQL> select switchover_status from v$database;
 
 SWITCHOVER_STATUS
 --------------------
 TO STANDBY
상태가 TO STANDBY이면 primary db를 standby db로 전환하고 mount 상태로 restart한다.
SQL> alter database commit to switchover to physical standby;
 SQL> alter database commit to switchover to physical standby;
 
 Database altered.
 
 SQL> shutdown immediate;
 ORA-01507: database not mounted
 
 
 ORACLE instance shut down.
 SQL> startup mount;
 ORACLE instance started.
DB의 상태를 확인해 보면 TO PRIMARY로 STANDBY 상태인 것을 확인한다.
SQL> select switchover_status from v$database;
 
 SWITCHOVER_STATUS
 --------------------
 TO PRIMARY

Standby에서 Primary로 역할 변경

1. 기존 Standby db에서 역할 변경이 가능한지 확인한다.
SQL> select switchover_status from v$database;
 
 SWITCHOVER_STATUS
 --------------------
 TO PRIMARY
 
2. primary db로 role를 변경한다.
SQL> alter database commit to switchover to primary;
 
 Database altered.
 
 
3. DB를 RESTART한다.
SQL> shutdown immediate;
 ORA-01109: database not open
 Database dismounted.
 ORACLE instance shut down.
 SQL> startup
 ORACLE instance started.
 
4.새로운 primary db의 automatic archiving을 점검한다.
SQL> alter system archive log current;
 
 System altered.
 
 SQL> select status,error from v$archive_dest where dest_id = 2;
 
 STATUS    ERROR
 --------- -----------------------------------------------------------------
 VALID
 
VALID면 성공적으로 ROLE변경이 되었다고 볼 수 있다.

새로운 STANDBY DB를 STANDBY 기능을 활성화

SQL> alter database recover managed standby database disconnect;
 
 Database altered.
 
 

 protection mode의 변경

상위모드로의 변경(UPGRADE)

1. redo apply방식을 변경한다.
alter system set log_archive_dest_2='service=ART_SB
 OPTIONAL LGWR SYNC AFFIRM
 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
 DB_UNIQUE_NAME=ART_SB'
 
2.mount 상태에서 mode를 변경한다.
SQL> shutdown immediate;
 SQL> startup mount;
 SQL> alter database set standby database to maximize protection;
 Database altered.
 SQL> alter database open;
 
3.db를 restart한다.
4. protection mode의 확인
SQL> select protection_mode,protection_level from v$database;
 
 PROTECTION_MODE      PROTECTION_LEVEL
 -------------------- --------------------
 MAXIMUM PROTECTION   MAXIMUM PROTECTION
 

하위모드로의 변경(DOWNGRADE)

1. Primary DB의 log_archive_dest_state_n을 defer로 변경
ALTER SYSTEM SET log_archive_dest_state_2=defer;
주의 protection mode에서는 아래 에러가 발생한다.
 ORA-02097: parameter cannot be modified because specified value is invalid
 ORA-16072: a minimum of one standby database destination is required
 
 protection mode에서는 shutdown/mount상태에서 변경해야 하남.
 
2. Primary DB의 log_archive_dest_n변경
alter system set log_archive_dest_2='service=ART_SB
 OPTIONAL LGWR ASYNC
 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
 DB_UNIQUE_NAME=ART_SB'
3.mode를 하위 모드로 변경한다.
SQL> alter database set standby database to maximize performance;
 Database altered.
4.Primay DB에서 LOG SWITH발생함
ALTER SYSTEM switch logfile;
 
 

 

반응형

'ORACLE > DataGuard' 카테고리의 다른 글

Oracle9i Dataguard 구성 방법  (0) 2009.02.23
Posted by [PineTree]
ORACLE/SCRIPT2008. 12. 13. 16:13
반응형

/***********************************************
* 테이블명으로 테이블 인덱스정보조회
***********************************************/
col index_name format a15
col table_name format a15
col column_name format a15
SELECT   ICOL.INDEX_NAME  AS INDEX_NAME
          , ICOL.TABLE_NAME  AS TABLE_NAME
          , ICOL.COLUMN_NAME  AS COLUMN_NAME
FROM     DBA_OBJECTS  OBJE
          , DBA_IND_COLUMNS  ICOL
WHERE    OBJE.OBJECT_TYPE   = 'TABLE'
AND       OBJE.OBJECT_NAME   = '테이블명'
AND        ICOL.TABLE_NAME    = OBJE.OBJECT_NAME
ORDER BY ICOL.INDEX_NAME
             , ICOL.COLUMN_POSITION
반응형

'ORACLE > SCRIPT' 카테고리의 다른 글

오라클 성능고도화원리 스크립트파일  (0) 2009.09.04
인덱스 및 테이블 사이즈 보기  (0) 2009.09.02
oracle script  (0) 2009.08.28
유용한 오라클 스크립트..  (0) 2009.08.28
테이블 스페이스 용량 확인 쿼리  (0) 2009.06.10
Posted by [PineTree]
ORACLE/RAC2008. 12. 12. 21:42
반응형
 
★ Check the Hardware Requirements
 /usr/sbin/dmesg | grep "Physical:"
 /usr/sbin/swapinfo -a
 bdf /tmp   
 bdf
 /bin/getconf KERNEL_BITS
 uname -a

★Async
To verify Async I/O is running, do the following procedure with gpm or glance.
     1. Select the dbwr process from the process menu.
     2. After selecting the process, select the "open files" option
 from the menu.
     3. Look for the /dev/async file.
Glance reports which files a given process opens. When async I/O is used,
it opens /dev/async as a file. Rememeber you also must set the
 disk_async_io = TRUE parameter in init.ora parameter file to use async I/O.
 
★ IP Address Requirements
 -------------------------------------------------------------------
 Host Name               Type       IP Address       Registered In 
 -------------------------------------------------------------------
 rac1.mydomain.com       Public      143.47.43.100    DNS 
 rac1-2.mydomain.com     Public      143.46.51.101    DNS 
 rac1-vip.mydomain.com   Virtual     143.46.43.104    DNS 
 rac1-priv1              Private     10.0.0.1         /etc/hosts 
 rac1-priv2              Private     10.0.0.2         /etc/hosts 

★ Checking the Network Requirements
 /usr/bin/netstat -in
 
★ Check for Required Software
/usr/sbin/swlist -l level | more
  *  -l level         levels of objects to view, one of: "depot",
                      "bundle", "product", "subproduct", "fileset",
                      "file", "root", "shroot", "prroot",
                      "category", "patch", "control_file"
 
★Check for Required Patches
 /usr/sbin/swlist -l bundle | grep GOLD
 /usr/sbin/swlist -l patch | grep PHSS_28880
 /usr/sbin/swlist -l patch | more
 
★ Creating the OSDBA Group
 /usr/sbin/groupadd dba
 
★ Create a New Oracle Software Owner User
 [node1]
   /usr/sbin/useradd -g dba oracle
   passwd oracle
   id oracle
     -> uid=440(oracle) gid=200(dba)
 [node2]
   /usr/sbin/groupadd -g 200 dba
   /usr/sbin/useradd -u 200 -g dba oracle
   passwd oracle

★ Grant Privileges to the OSDBA Group
  /etc/privgroup (<- dba MLOCK RTPRIO RTSCHED 추가)
  /usr/sbin/setprivgrp -f /etc/privgroup (Enter the following command to grant the privileges to the OSDBA group: )
  /usr/sbin/getprivgrp dba
 
★ Configure Kernel Parameters 
  - Bourne, Bash, or Korn shell: 
    $ DISPLAY=local_host:0.0 ; export DISPLAY
  - C shell:
    $ setenv DISPLAY local_host:0.0
   
 /usr/sbin/sam

★ Identifying an Existing Oracle Base Directory
  - Identify an existing Oracle Inventory directory
    more /var/opt/oracle/oraInst.loc
   
  - Identify existing Oracle home directories
     more /etc/oratab
     
    
★ Creating a New Oracle Base Directory    
  mkdir -p /mount_point/app/oracle_sw_owner
  chown -R oracle:oinstall /mount_point/app
  chmod -R 775 /mount_point/app
  
 
★ Create the DBCA Raw Device Mapping File
  find /dev/vg_name -user oracle -name 'r*' -print  dbname_raw.conf
  Edit the dbname_raw.conf file in any text editor to create a file similar to the following:
  - Note:
     The following example shows a sample mapping file for a two-instance RAC cluster. 
 system=/dev/vg_name/rdbname_system_raw_500m
 sysaux=/dev/vg_name/rdbname_sysaux_raw_800m
 example=/dev/vg_name/rdbname_example_raw_160m
 users=/dev/vg_name/rdbname_users_raw_120m
 temp=/dev/vg_name/rdbname_temp_raw_250m
 undotbs1=/dev/vg_name/rdbname_undotbs1_raw_500m
 undotbs2=/dev/vg_name/rdbname_undotbs2_raw_500m
 redo1_1=/dev/vg_name/rdbname_redo1_1_raw_120m
 redo1_2=/dev/vg_name/rdbname_redo1_2_raw_120m
 redo2_1=/dev/vg_name/rdbname_redo2_1_raw_120m
 redo2_2=/dev/vg_name/rdbname_redo2_2_raw_120m
 control1=/dev/vg_name/rdbname_control1_raw_110m
 control2=/dev/vg_name/rdbname_control2_raw_110m
 spfile=/dev/vg_name/rdbname_spfile_raw_5m
 pwdfile=/dev/vg_name/rdbname_pwdfile_raw_5m
 
 
★ Verify the Cluster Software Configuration
 To verify that the HP Serviceguard software is running:
 
 If necessary, configure (or reconfigure) the cluster.
 
 Verify that HP Serviceguard is configured to start automatically at runlevel 3.
 
 To verify that HP Serviceguard is running correctly, enter the following command: 
 
 # /usr/sbin/cmviewcl -v
 
 Verify that the cluster status is up, and that all nodes are up and running.
 
 If the cluster is not running, enter the following command to start it:
 
 # /usr/sbin/cmruncl
 
 If any nodes are not running, enter a command similar to the following to start the cluster daemon on those nodes:
 
 # /usr/sbin/cmrunnode nodename1 nodename2...
 
 If you intend to use Hyper Messaging protocol as the cluster interconnect,
 enter the following command to verify that the HyperFabric software is configured properly:
 
 # /opt/clic/bin/clic_stat -d NET
 

★ Configure the oracle User's Environment
 $ xhost +  
 $ su - oracle  
 $ echo $SHELL 
   - Bourne shell (sh), Bash shell (bash), or Korn shell (ksh):  
     $ vi .profile 
     $ DISPLAY=local_host:0.0 ; export DISPLAY
    
   - C shell (csh or tcsh):  
     % vi .login
        $ setenv DISPLAY local_host:0.0

 su - root
 # mkdir /mount_point/tmp
 # chmod a+wr /mount_point/tmp
 # exit 
 Enter commands similar to the following to set the TEMP and TMPDIR environment variables:  
 -Bourne, Bash, or Korn shell:  
   $ TEMP=/mount_point/tmp
   $ TMPDIR=/mount_point/tmp
   $ export TEMP TMPDIR 
 - C shell:  
   $ setenv TEMP /mount_point/tmp
   $ setenv TMPDIR /mount_point/tmp
  
    $ unset ORACLE_HOME
    $ unset TNS_ADMIN
    $ umask
    $ env | more

반응형
Posted by [PineTree]
PineTree/T2008. 12. 11. 23:38
반응형
 
MOAI

 

 

 

이미 다른 포스트에서도 언급했듯이, 서태지의 이번 8집 싱글은 발매 이전에 항간에 떠돌던

 

소위 "강렬한 음악"의 추측을 과감히 깬, 실망과 기대가 교차한 음반이었다. 그리고 그 시작은 다름아니라

 

음반의 첫 번째 트랙인 MOAI였고 말이다.


먼저 이 곡은 서태지가 제시한 장르 혹은 스타일인 "네이처 파운드"의 전형으로 이해되는데,

 

그도 그럴 것이 서태지의 설명대로 복잡하게 쪼개진 독특한 음색의 비트들로 가득 찬 싱글 음반 중에서

MOAI만큼 많이 또 다양한 형태로 쪼갠 곡이 달리 없기 때문이다.

 

그리고 MOAI와 관련되어 가장 빈번히 언급되는 것이 바로 드릴 앤 베이스 사운드인데,

 

사실 드릴 앤 베이스 사운드가 결코 MOAI의 핵심은 아니다. 오히려 기존의 드릴 앤 베이스 사운드는

 

MOAI를 이루는 요소 중의 하나일 따름이며, 중요한 것은 그 사운드를 다른 악기 사운드들과

 

어떠한 체계로 조화시켰는가의 방법론일 것이다.

 

 

 MOAI에서 보여주는 쪼개기의 인상은 일렉트로닉 비트보다는 오히려 다양한 악기의 사운드들이

 

분열되는듯한 양상에서 더욱 두드러진다. 전반부의 시작은 물방울이 물 위로 떨어지는 효과음 그리고

 

거기서 파생되는듯한 인상의 일렉트로닉 사운드를 쌓아가면서 점진적으로 템포를 구성하고,

 

그 템포 위로 올라타듯이 일렉 기타와 베이스 기타가 개입하면서 서태지의 보컬을 안내할 멜로디를

 

열어간다. 사실 이 곡에서 가장 섬세한 인상을 보이며 또한 곡의 진행에서 두드러지는 사운드는

 

일렉트로닉 비트가 아니라 베이스 기타의 연주다. 베이스 기타의 두터운 저음은 날렵한 연주를 통해

 

서태지의 보컬을 이끄는 멜로디 라인을 만들어갈 뿐만 아니라, 그 연주 위로 끊임없이 뿌려지는듯한

 

여타 사운드, 즉 일렉트로닉 비트, 일렉 기타, 피아노, 하프 등의 사운드들과 섞이면서 그 자체가

 

템포 구성의 일부인 듯한 인상을 준다.

 

 

비단 베이스 기타 뿐만 아니라, 일렉 기타와 피아노, 하프 역시 그 자체가 분명히 일정한 음과

 

템포의 흐름으로 연주되면서도, 정작 그것이 다른 종류의 사운드들과 나란히 배열될 때에 그것은 마치

 

세밀하게 쪼개진 비트와도 같은 느낌을 갖게 되는 것이다. 그리고 이 곡의 구성이 독특한 것은,

 

그렇게 다양한 사운드를 동원하여 마치 각각의 순간들이 쪼개진 비트와도 같은 느낌을 갖게 하면서,

 

한편으로는 각 연주들의 흐름이 서로 묻히거나 뭉치지 않고 뚜렷히 드러나게 했다는 데 있다.

 

 

현악기로 비트 효과를 만들어보겠다는 건 일종의 치기어린 유희처럼 생각되기도 하지만,

 

일렉트로닉 비트로 채워진 흐름 내에 밴드 악기를 비롯한 온갖 성향의 사운드를 몰아넣으면서

 

현악 연주의 라인까지 살리게 하는 건 사운드 배치를 대단히 세밀하게 고려해야 하는 일일 것이다.

 

서태지 역시 그러한 점에서 일부러 몇 가지의 절제나 제한을 염두했을 것이라고 본다.

 

일렉 기타를 보조적인 연주로 제한하고 (세간이 기대했던 "강렬한 음악"의 주문대로 일렉 기타를

 

활용했다면 일렉트로닉 비트가 그대로 묻혀버리든가, 아니면 KMFDM 스타일의 곡이 되지 않았을까)

 

둔중한 음의 베이스 기타를 전면적으로 활용한 것 역시 이러한 점에 착안한 게 아닐까 싶다. 또한

 

이러한 악기의 활용이 락 밴드보다는 재즈 밴드의 분위기를 연상시킨다는 점도 흥미롭다.

 

 

물론 이렇게 조밀한 비트의 인상을 준다고 해서 곡의 흐름을 타는 일정한 템포가 없는 건 아니다.

 

각 연주의 사운드가 쪼개지는 비트의 인상은 규칙적인 공백을 갖는 템포의 역할보다는

 

오히려 비트의 조밀한 배치로써 전체적으로 부드럽게 흐르는 듯한 멜로디와 같은 효과를 가지며,

 

그 속에서 템포를 이끄는 역할은 엄연히 빠르고 강렬한 드럼이 해낸다.

 

베이스 기타가 흐름을 안내하고 보컬이 멜로디를 형성하며 병행되는 규칙적이고 빠른 템포가

 

드럼에 의해 주도되면서 MOAI에는 일정한 흐름을 갖춘 기존의 음악 체계가 기본적으로 필요로 하는

 

모든 요소가 다 갖추어진다.

 

 

이렇게 각 사운드 요소들이 저마다의 흐름으로 서로 섞이고 조밀하게 쪼개지면서

 

전체적으로 일관되며 자연스런 흐름을 만들어내는 MOAI의 인상은 마치

 

모자이크나 스테인드글라스를 연상시킨다. 작은 조각들의 밀도 있는 조합으로 이루어지는 퍼즐이면서,

 

그 퍼즐의 완성작은 부드러운 곡선과 세심한 배치의 점들, 다채로운 색으로 조화된

 

유려한 회화와도 같은 것이다.

 

 

 마찬가지로 MOAI의 보컬 멜로디는 전체적으로 밝고 부드러운 발라드 풍이다. 다만 여기서 한 가지 독특한

 

점은 보컬 멜로디 자체만으로 보자면 반복적인 후렴구를 제외하고 나머지 부분이 따라부르기가 어색할 정도로

 

그 진행이 제멋대로라는 것이다. 부드럽게 흘러나오는 노래라기보다는 툭툭 내뱉는 연극의 독백을 연상시킬

 

정도로 자체적인 멜로디의 흐름이 어색한데, 흥미롭게도 이런 보컬의 멜로디가 비트 감각이 뚜렷한 연주와

 

융합될 때는 전혀 어색하게 들리지 않는다. 여타 발라드의 구성법처럼 보컬의 멜로디에 맞추어 연주를 편곡한

 

것이 아니라, 거꾸로 비트 구조와 흐름에 맞추어 보컬의 멜로디와 연주를 동시에 편곡한 것 같다.

 

서태지의 경우 스스로의 보컬 한계를 나름 극복하기 위한 방법으로 자신의 목소리를 연주에 융화하는

 

성향을 보여왔는데, 이번 MOAI의 경우는 그런 경향 중에서도 가장 독특한 전례가 아닐까 싶다.

 

 

또한 이 노래에서 흥미를 끄는 게 바로 가사인데, 일단 이 가사에 대해 상응하는 의미를 추상적으로

 

 체계화하여 기계적인 해석까지 내놓을 필요는 없다고 생각한다. 이 가사는 쉽게 말하자면 자연 속에

 

동화되며 자기 성찰을 하는 내러티브인데, '모아이'라는 인형의 개체와 대화하며 자연 속에 있는

 

자기 존재의 고독하고도 정적인 인상을 진술하고 결정적으로 회귀와 만남의 미래적 메세지로써 끝맺는다.

 

서태지의 작사 방식이 상당히 자기 몰입적(혹은 자폐적)이라는 것은 이미 5, 6집에서 드러난 바인데,

 

7집에서 비교적 일상적인 내러티브의 가사를 보여주다가 8집 싱글에서는 다시 폐쇄적이면서도

 

분열적인 양상을 드러내고 있다. 이 가사는 의도가 명확하거나 집중적으로 실체화된 내러티브보다는,

 

각 단어들이 제시하는 자연적인 이미지와 함께 성찰, 고독, 소통, 회귀, 만남을 암시하는 의미의

 

느슨한 조합으로 구성되어 있다. 이런 가사는 일상적인 언어의 기준에서는 비정상적인 의도로 이해되어

 

거부감을 불러일으킬 수 있지만, 오히려 느슨한 의미 체계로부터 비밀적인 신비로움의 매력을 발산하고

 

리스너에게 자유로운 해석의 여유를 준다는 점에서 장점을 발휘한다. MOAI의 가사는 일상적 내러티브에

 

밀착되어 의미가 일괄적으로 분명해지기는 어렵지만, 각 단어들이 제시하는 자연적 이미지의 상상적

 

조화 속에 고독하면서 정적인 분위기를 일관해나가면서 마지막에 희망적 메세지를 제시한다는 점에서는

 

충분히 통일적이며 완성적인 감성을 전달하는 내러티브 역할을 하고 있다.

 

 

지금까지 MOAI에 대해 이런저런 자세한 말을 두서없이 늘어놓았는데, 사실 이런 분석적인 면모를

 

감안하지 않아도 MOAI를 즐기고 그것에 몰두하는 데에는 하등 지장이 없다. 굳이 베이스 기타 라인을

 

의식하지 않고 또 쪼개지는 비트들이 융합되는 인상을 떠올리지 않아도 전체적으로 두드러지는

 

멜로디 라인과 가사의 내러티브를 따라가면서 가볍게 즐길 수 있는 음악이다. 그리고 아마도 사람의 취향과

 

관점에 따라 MOAI는 굉장히 정교한 음악으로 생각될 수도 있겠지만 또 한편으로는 온갖 사운드가 복잡하게

 

뒤얽힌 무질서와 과잉의 형상으로 보일 수도 있을 것이다. 취향은 결국 감각의 주름 사이에 맺혀지는

 

형상을 결정하기 마련이다. 그리고 그런 취향의 기준에서 지금까지 MOAI에 대해 한 많은 말들이

 

음악에 대한 새로운 고찰의 기반이 될 수 있기를 스스로에게 희망한다.

 

 

 

 

 

===============================

 

 

 

 

 

HUMAN DREAM

 

 

서태지의 첫 번째 싱글 내용 중에서 가장 파격적인 인상을 주었던 음악이라면

 

단연 HUMAN DREAM을 꼽을 수 있을 것이다. 음색이나 음악적 구성 면에서 새롭기에 파격적인 게 아니라

 

상당히 느슨한 일렉트로닉 비트에 가볍게 들리는 연주 사운드로 채워진 부드러운 흐름의 첫 인상이

 

아무래도 락보다는 아이돌적인 댄스 음악을 연상시키기 때문이다.

 

 

MOAI와 같이 극단적으로 온갖 사운드를 쪼개면서 융합시키는 독특한 구성법을 보이는 것도 아니고

 

T'IKT'AK처럼 락적인 격렬함을 보이는 면모 역시 없기에 이번 싱글 음반에서 HUMAN DREAM의 특색과 입지는

 

상당히 애매모호해 보인다.

 

 

과연 서태지가 처음부터 쫄핑크댄스를 염두해서 만든 곡인지 여부는 모르겠지만, 음악적인 면모에서

 

HUMAN DREAM은 가장 자기 편한대로 만든 음악이 아닐까 싶다.

 

 

물론 여기서 오해하지 말아야 할 것은 자기 편한대로 만들었다는 것이 곧 이 곡의 구성이 엉망이거나

 

엉성하다는 의미는 아니라는 것이다. 이 곡은 딱히 독특하지는 않아도 그 자체만으로 충분한 자기 색깔과

 

완성도를 가지는 음악이다.

 

 

시작은 MOAI와 마찬가지로 일렉트로닉 사운드, 소위 8비트 전자오락 소리로 템포를 형성하고

 

곧이어 베이스 기타와 일렉 기타가 개입하면서 일렉트로닉 사운드의 템포 감각을 드럼이 이어받는다.

 

그러면서 실질적인 곡의 흐름은 밴드 악기가 주도하는 가운데 서태지의 보컬이 이어지는 것이다.

 

얼핏 들으면 일렉트로닉 비트로 이루어진 듯한 인상이지만, 이미 밝혀진대로 도입과 결미의 8비트 전자오락

 

소리를 제외하면 비트 구성의 실질적인 내용은 일렉트로닉 사운드가 아니라 드럼이다. 밴드 악기를 이용해

 

일렉트로니카적인 분위기를 만들어나가는 게 비단 서태지만의 시도나 영역은 결코 아니지만,

 

(Squarepusher처럼 서태지의 HUMAN DREAM보다 더 세밀하면서 감각적인 드럼 비트를 선보인 전례는

 

많다.) HUMAN DREAM의 경우는 그런 비트 구성을 이용해 댄스 성향의 팝 음악을 만들었다는 점에서 그

 

특성을 찾을 수 있을 것이다.

 

 

그러한 차원에서 이 곡이 부드럽게 그리고 가볍게 들리는 이유를 굳이 꼭 의심할 필요는 없을 것이다. 그건

 

서태지의 의도대로일테고 또 결과적으로도 충분히 자연스럽게 부드럽다. 드럼 비트는 후렴구와 짧은

 

전환점의 변화까지 포함하여 일관적으로 진행되며, 그 기반 위에 베이스 기타가 서태지의 보컬 멜로디가

 

진행될 흐름을 만들어주고 후렴구에서는 빠르게 고조되는 보컬의 분위기를 일렉트로닉 사운드와 일렉 기타

 

연주가 보조하면서 풍성하면서 감각적인 분위기를 만들어 나간다. 언뜻 발랄한 멜로디로 인해 가벼운

 

인상을 주지만 충분히 내용 있는 사운드의 조합이며 또한 일관적인 흐름 내에서 명확한 기승전결의

 

구도로써 독특한 감성의 내러티브를 만들어 낸다.

 

 

특히 보컬의 가사를 보면, 일부러 통통 튀는 귀여운 분위기를 의도한 게 아닐까 싶다. 자신의 슬픔과 고뇌를

 

호소하는 메세지 그리고 "뿌찢뿌찢"이라는 의성어인지 의태어인지 정체모를 단어의 사용은 앨범 자켓에

 

나오는 유아의 이미지를 떠올리게 만들어 마치 리스너의 보호본능을 자극하는 것처럼 생각된다. 그

 

그 가사의 "Mechanic Super Style", "Byte 10 Billion", "Re-clone" 등의 단어로 보아서는 복제인간 혹은

 

인조인간의 진짜 인간이 되고 싶어하는 고뇌의 독백인 듯 한데, 이런 메세지는 곡 전반의 일렉트로니카적인

 

인상과 나름 어울리는 것 같다.

 

 

이 음악을 두고 대단히 실험적인 시도라고 하기는 힘들어도, 밴드 음악으로써 일렉트로닉적인 분위기의

 

팝을 시도했다는 점에서 나름의 의의를 생각해볼 수 있지 않을까 싶다. 다소 가볍게 들리는 분위기에도

 

불구하고 흔히 말하는 아이돌 댄스 음악과는 충분히 차별되는 밴드 음악으로서 이런 시도를 하는 것도

 

나쁘지는 않으며, 또한 곡 자체가 제시하는 일렉트로니카다운 신나는 분위기와 섬세한 보컬 멜로디를 즐기는

 

것으로도 그 음악적 의미는 충분하다.

 

 

다만 개인적으로 아쉬운 것은 8비트 전자오락 소리를 좀더 다양하게 활용했으면 어땠을까 하는 것이다.

 

이 음반에서 8비트 전자오락 소리를 넣은 곡은 이 HUMAN DREAM 하나 뿐인데, 곡 도입부에서 템포를

 

구성하고 말미에서 다시 템포를 끝내는 역할 그리고 곡 진행에서 드럼 비트 위로 양념처럼 깔리며 통통

 

튀는 밝은 분위기를 만드는 것을 제외하면 딱히 독특하고 유기적인 구성의 시도가 없는 것 같다. 물론

 

그런 시도의 결여가 HUMAN DRAEM의 완성도에 지장을 미치는 건 전혀 아니지만, 8비트 전자오락 소리의

 

독특한 느낌과 다양함을 떠올려보면 다소 아쉬운 부분이 없지 않다.

 

 

 

 

 

 

============================

 

 

 

T'IKT'AK

 

 

 

 

일단 T'IKT'AK은 거세고 공격적인 분위기만으로 싱글 음반에서 가장 락적인 인상을 가졌다고 말할 수 있는데,

 

이전 트랙인 MOAI나 HUMAN DREAM이 만든 부드럽고 발랄한 분위기와 상당히 대조된다는 점에서

 

그 인상이 더욱 두드러지게 다가온다. 개인적인 추측으로는 서태지가 이 곡을 8집 음악의 흐름에 있어

 

어떤 전환의 계기로 사용한 게 아닐까 싶은데, 물론 이런 상상은 두 번째 싱글은 보다 격렬한 성향의 음악일

 

것이라는 기대에서 나온 것이기도 하다.

 

 

이 곡이 만들어내는 첫 인상은 기괴함과 긴장감이다. 그러나 이러한 인상은 곡의 구성 파괴와 같은

 

실험적 전위성이 아니라 일렉트로닉 사운드의 적절한 활용과 보컬의 가사를 통해서 이루어진다.

 

 

일렉트로닉 사운드에 이어지는 클라이막스 연주로 곡의 전개를 열고, 바닥으로부터 스며들어오듯

 

개입하는 일렉트로닉 사운드의 조밀한 조합으로 비트 감각을 구성한 뒤 베이스 기타의 둔중한 연주와

 

서태지의 보컬이 전개된다. 일정한 일렉트로닉 비트는 베이스 기타, 하프, 보컬 멜로디와 함께 하나의

 

흐름으로 융합되어 전진적인 긴장감과 기괴한 분위기로써 곧 이어 올 감정의 절정을 준비하게 되는 것이다.

 

 

그리고 "더러운 싸움 진실 카운트" 부분에서 마지막 보컬 발음을 비트로 쪼개어 분위기 전환의 계기를

 

제시하고 뒤이어 "T'IKT'AK"이라는 거세게 튀어나오는 가사의 포인트와 함께 긴장감을 일시에 무너뜨리며

 

격렬하게 감정을 배설하는 클라이막스적인 분위기에 이른다. 클라이막스 부분에서 기본적인 템포는

 

그대로 이어지지만 대신에 드럼을 필두로 한 격화된 락밴드 악기의 연주로써 거센 공격적인 인상을

 

만들어낸다. 특히 "T'IKT'AK"이라고 외치는 포인트를 통해 변화의 느낌과 함께 집중력을 살리려는

 

의도가 엿보인다.

 

 

클라이막스를 끝낸 뒤에 역시 일관적인 템포 내에서 잔잔한 분위기로 돌아가서 긴장감을 쌓고

 

또 한번 공격적인 클라이막스를 반복한다. 그리고 그 다음에는 피아노 연주와 현악 연주의 조합으로

 

분위기의 완급 조절을 한다. 그렇게 완화된 분위기에서 "Destroy the world"라는 전환점을 통해

 

다시 공격적인 클라이막스를 진행하고, 그 뒤에는 곡 도입부와 동일한 일렉트로닉 사운드의 조합으로

 

템포를 끝냄으로써 최종적으로 안정적이며 완결된 곡 구도를 만들어낸다.

 

 

세간에는 이 곡이 Linkin Park의 스타일과 유사하다고 알려지기도 했는데, 그런 말이 나오는 것도

 

결코 무리만도 아니다. 일정한 비트와 잔잔한 연주로써 긴장감을 형성하고 클라이막스에서 거센

 

연주와 보컬로 몰아붙이는 스타일은 Linkin Park의 음악에서 두드러지기 때문이다. 그러나 이런 곡 구성이

 

딱히 LInkin Park 특유의 스타일인 것도 아니며, 오히려 락 음악을 포함한 대중음악에서

 

흔히 나타나는 보편적인 구도다. 그나마 Linkin Park 음악과의 공통성을 꼽자면 Linkin Park의

 

음악에서 두드러지는 힙합 비트가 T'IKT'AK의 일렉트로닉 비트와 어느 정도 비슷한 인상을 준다는 것 정도다.

 

하지만 그건 비슷한 면모이지, 그걸 갖고 모방이나 표절 운운하는 건 아무래도 온당하지가 못하다.

 

특히나 모방, 표절이란 어디가 유사하게 느껴지느냐가 아니라 엄연히 어디가 동일한가의 문제인데,

 

최소한 특정한 기교의 템포, 멜로디가 확실히 동일하거나 유사할 때 모방, 표절을 운운해야 실질적인 설득력을

 

가지게 되는 법이다. 단순한 비트 감각이 유사하게 느껴진다고 모방이나 표절을 주장하는 사람이

 

있다면, 그런 사람에게는 아무래도 힙합이나 일렉트로니카 음악을 듣지 않는 게 속편할 것이라고 생각한다.

 

 

다만 Linkin Park 스타일과 관련해서 연상되는 T'IKT'AK의 독특한 점은 곡 진행 내내 일정한 템포가

 

그대로 유지된다는 점일 것이다. 엄연히 클라이막스가 존재하지만, 그렇다고 모든 템포가 급격히 빨라지는 게

 

아니라 기존의 템포를 유지하면서 일렉트로니카 사운드의 음색이 보다 강렬해지고 락밴드 사운드가

 

거센 스타일로 개입하며 격렬하고 자극적인 인상의 클라이막스를 만든다는 것이다. 곡의 처음부터 끝까지

 

일정한 템포로 흐름을 일관하는 구성은 락 장르보다는 일렉트로니카의 구성을 연상시키지만,

 

그럼에도 락 사운드 특유의 것에 가까운 클라이막스를 만들었다는 점에서 나름 흥미로운 음악적 일면을

 

볼 수 있다.

 

 

앞서 언급했듯이 이 곡이 싱글 음반 내에서도 유독 그 인상이 독특한 것은 여타 곡과 대조되는 특유의

 

긴장감과 공격적인 분위기 때문인데, 또한 이런 분위기는 인류문명의 종말을 암시하는 시니컬하면서도

 

비밀스런 가사와도 어울린다. 물론 명확한 인과적 흐름을 갖춘 내러티브가 아니라는 점에서는 MOAI의

 

경우와 동일하다. T'IKT'AK의 경우는 그렇게 소통적으로 애매한 가사의 진행을 곡 분위기의 전개와 유기적으로

 

어울리게 함으로써 메세지를 감각화한다. 일렉트로닉 사운드의 조합으로 기괴한 분위기를 형성하는

 

가운데 멸망과 음모를 암시하는 단어를 나열하며 긴장감을 만들어나가고, 락적인 분위기의 강렬한

 

클라이막스에서는 "T'IKT'AK"이라는 시계침이 움직이는 의성어를  통해 미래적이고도 긴박한 절정의 느낌을

 

이루어낸다. 물론 이런 멸망과 음모의 메세지는 딱히 구체적인 현실비판의 의도라기보다는 SF적 상상의

 

감성에 가까워 보이지만, 어차피 즐기는 감성의 세계에서 비판이면 어떻고 상상이면 어떤가. 그 자체를

 

통해 무언가를 느끼고 즐거우면 그것으로 충족되는 것이다.

 

 

서태지의 이번 음반 활동 직전에 여러 홍보물을 통해 미스터리 테마가 알려졌고 또한 음반 구성 내에도

 

모아이 석상, UFO, 날개 달린 태아 이미지 등을 통해 미스터리 특유의 인상을 제시했는데,

 

 T'IKT'AK은 그런 독특한 분위기의 연장선상에서 즐기면 되는 음악이다. 음악의 주제에 있어

 

이런 테마를 선택한 것은 서태지 본인의 취향이기도 하겠지만 한편으로는 "사회 비판"의 트렌드가

 

대중 음악시장에서 큰 매력을 발휘하지 못하는 상황에서 일종의 대안적 트렌드로서 개발된 게 아닐까 싶다.

 

물론 이런 미스터리 테마를 단순히 일시 충격적이며 치기어린 소재로 전락시키지 않기 위해서는

 

이런 소재들에 독특한 매력을 부여할 섬세한 음악성이 필요한 것은 두말할 나위가 없다.

 

 

그런 점에서 서태지의 첫 번째 싱글은 나름 활동의 시작으로 성공적이라고 평가할 수 있지 않을까 싶다.

 

음악 자체의 완성도 면에서는 딱히 나무랄 데가 없으며, 또한 '네이처 파운드'라는 나름 독특한 스타일의

 

음악 구성법을 보여주기도 했고 그러한 음반의 음악성에 미스터리 테마를 조화시킨 것도 큰 무리가 없어

 

보인다. 다만 그런 성공적인 시작을 어떻게 이어나가고 또 어떻게 마무리지어서 유종의 미를 거둘 것인가가

 

바로 앞으로의 과제일 것이다. 그리고 그것은 서태지 스스로가 직접 제시한 미스터리 테마와 네이처 파운드의

 

 방법론에 어떤 음악적 내용과 변화를 가미하여 얼마나 풍부하고 독특한 스타일로 완성해낼지

 

여하에 달려 있다고 봐도 무방할 것이다.

 

 

 

 

===============

 

 

 

 

 

Bermuda[Triangle]

 

 

 

사실 이 곡은 원래 8집 첫 번째 싱글 음반에는 포함되지 않은 곡이며

 

서태지폰의 서비스 차원에서 공개된 곡인데, 그럼에도 불구하고 곡 자체의 완성도가 그렇게 떨어지지 않고

 

또한 뮤직비디오가 공개되는 등 8집 싱글 활동의 분명한 연장선상에 있는 곡이기 때문에

 

첫 번째 싱글 곡으로 분류해서 리뷰를 올린다.

 

 

이 곡의 사운드 구성은 기본적으로 일렉 기타, 베이스 기타, 드럼으로 이루어진 기본 락밴드 악기 연주에

 

신디사이저 사운드가 부가적으로 활용되고 있는데, 8집 싱글의 다른 곡들과 뚜렷한 차이는 다름 아니라

 

일렉트로닉 사운드의 사용이 자제되면서 보다 보편적인 락밴드 음악의 인상을 보인다는 것이다.

 

 

혹자는 이 곡에 대해 서태지가 제시한 장르 혹은 스타일인 "네이처 파운드"의 개념을 적용하기도 하는데,

 

사실 이 곡의 구성을 딱히 새로운 장르나 스타일로 규정할 필요까지는 없지 않을까 싶다. 기본적인 인상은

 

팝펑크이며, 굳이 서태지가 제시한 네이처 파운드 개념과의 관련성을 찾자면 드럼 비트가 상당히 빠르다는

 

점 정도가 아닐까.

 

 

물론 이 곡에 대해 네이처 파운드와 같은 새로운 개념을 적용하지 못하고 팝펑크라는 기존의 장르 영역으로

 

분류한다고 해서 이 곡의 음악성이나 가치가 객관적으로 폄하되는 건 결코 아니다. Bermuda[Triangle]의

 

의미와 가치 판단은 그 곡 자체의 완성도 그리고 그러한 곡의 구도에 리스너가 몰입되는 감상 여부에 따라

 

결정되는 것이지, "새롭다"는 음악 외적인 혹은 어떻게 보면 상당히 정치적인 명제에 의해 엇갈리는 게 아니기

 

때문이다.

 

 

사실 이 곡의 구도를 이해하는 데 있어 굳이 어려운 분석이 필요할 까닭도 없어 보인다. 일렉 기타가 곡을

 

열고 드럼과 베이스 기타 연주가 추가되면서 도입부를 만들며 완전한 밴드 음악으로 곡이 진행된다.

 

가볍고 발랄한 멜로디 라인을 따라 연주가 흐르다가 후렴구 직전에는 짧은 공백에 비트 효과를 주어 박력

 

있는 전환점을 제시하고 좀더 빠른 템포로 동일한 밴드 악기 구성에 피아노 연주를 추가하며 도전적인

 

멜로디의 후렴구를 박진감 있게 진행한다. 후렴구가 끝나는 부분은 소위 8비트 전자오락 소리인 일렉트로닉

 

사운드를 쪼개지는 듯한 인상의 빠른 템포로 진행하여 후렴구로 인한 긴박한 기분을 완화시키는 전환점을

 

만든 뒤 도입부에 해당하는 연주를 반복한다.그 반복 부분은 빠른 드럼으로 마무리지은 뒤 다시 한번 멜로딕한

 

진행에 후렴구로 향한다. 그렇게 후렴구를 다시 반복하여 절정으로 향하는 긴장의 분위기를 만든 뒤 잔잔한

 

일렉 기타 연주로 짧은 완급 조절을 거치고 곧이어 다시 거세게 몰아치는 밴드 악기 연주에 일렉트로닉

 

사운드를 조합함으로써 뒤흔들리는 듯한 인상의 사운드를 만들어낸다. "아름다운 존재 모순된 바다"로

 

형성되는 절정은 "풀릴듯한 내 안의 퍼즐"에서 멜로디의 템포에 따라 악기 사운드를 차례로 빼며 급격하게

 

잔잔해지는 분위기를 만들어서 피아노 소리와 일렉트로닉 비트의 반주로써 조용한 마무리를 짓는다.

 

 

이 곡의 구도는 어떻게 보면 미완성이 아닐까 싶은 의문이 드는 면모를 가지고 있는데, 다른 게 아니라

 

후렴구 직전 등의 템포 속도가 전환되는 부분에서 멜로디가 짧게 끊기고 있다는 점이다. 그러나 길이가

 

짧은 팝펑크로서 그 내용이 통일적이며 집중적인 인상의 멜로디라는 느낌을 주며 절정으로 향하는 흐름을

 

잃지 않고 있는데, 이는 곡 자체의 진행 템포가 원체 빠르고 전체적으로 일관적인 곡 흐름의 명확한 기승전결

 

구도에 따라 끊어지기에 짧은 공백으로 흐름이 끊어지는 건 오히려 포인트적인 박력의 효과와 함께 멜로디와

 

템포의 전환을 자연스레 이어주는 역할을 하기 때문이다.

 

 

또한 곡의 종결에서 뒤흔들리는듯한 인상의 격렬한 절정을 만들다가 갑작스레 맑고 조용한 사운드로

 

끝맺는 것은 그 말대로라면 언뜻 너무 급격한 흐름의 기복인 것처럼 생각될 수도 있으나, 정작 곡을 들어보면

 

그 흐름은 전혀 어색하지 않고 자연스런 것으로 느껴진다. 이는 절정에서 긴박했던 감정이 배출된 뒤

 

카타르시스의 잔잔한 안정과 가벼운 여운을 느끼는 보편적이며 자연스런 심리의 서사를 따르고 있기

 

때문이다.
 

 

또한 흥미로운 건 이 곡이 가볍고 발랄한 팝펑크 스타일로서 7집 7th issue를 연상시키면서도 트윈 기타를

 

운용하지 않고도 사운드가 꽉 채워진 듯한 인상을 준다는 점이다. 그건 곡 자체가 워낙 빠른 템포의 발랄한

 

멜로디로 채워져 있기 때문이기도 하지만, 무엇보다도 빠른 드럼과 감각적인 베이스 기타 연주로 일렉 기타가

 

부족할 수 있는 부분을 지속적으로 채워주고 있기 때문이다. 물론 락사운드를 만들면서 공백감과 지루함을

 

피하는 건 프로 뮤지션으로서의 기본 센스이자 역량이긴 한데, 서태지로서 트윈 기타를 운용하지 않으면서

 

어떻게 하면 발랄한 분위기이면서도 사운드 상으로 꽉 채워진듯한 인상의 락 음악을 만들 것인가에 대한

 

나름의 고민과 연구가 있었던 게 아닐까 싶다.

 

 

그리고 이 곡은 가사 면에서도 나름 흥미로운데 그 가사의 내용적인 측면, 즉 이미 알려진대로 성(性)에

 

대한 내용이면서 외설적인 느낌이 없는 감각적인 가사라는 점도 독특하지만, 무엇보다도 이 곡이 리스너로

 

하여금 감상적으로 몰입시키는 게 곡의 흐름으로 인한 감정의 기복이 가사가 던지는 이미지 및 의미와

 

조화되면서 가사의 메세지가 음악적으로 감각화되고 있기 때문이다. 곡 초반부의 "여린 심박이 서로 다른

 

템포를 맞추고 있고"라는 가사는 템포가 빠르고 드럼 비트가 두드러지는 이 곡의 전체적인 인상과 어울리며,

 

"천상에서 그대가 눈뜰 때"로 시작하는 후렴구의 가사는 전환의 분위기를 가진 멜로디와, 그리고 "이 밤에

 

엄숙한 비겁자의 하늘과 나의 섬들 사이에"의 부분은 "하늘의 비겁자"라는 권위적인 존재에 맞서는 듯한

 

도전적인 멜로디와 어울리면서 그러한 가사에 리스너가 동화될 수 있도록 음악적인 분위기를 만드는

 

것이다. 그리고 가사와 음악의 조화가 극치에 이르는 것은 역시 절정에 해당하는 "이 성스러운 바다 뒤바뀐 섬

 

타락한 마음 아름다운 존재 이 모순된 밤" 부분일 것이다. 밴드 악기와 일렉트로닉 사운드를 동원하여 만든

 

급격한 긴박감과 함께 뒤흔들리는 듯한 인상의 사운드는 그 가사와 어울리며 정확하고 자연스런 절정의

 

분위기를 만들어낸다. 그리고 그 뒤를 잇는 "풀릴듯한 내 안의 퍼즐"은 가사 그대로 문제가 해결된 뒤의 만족과

 

안정감이 음악의 잔잔한 마무리와 조화된다.

 

 

결론적으로 이 곡은 섬세한 멜로디에 빠른 템포로 발랄한 분위기를 만들면서 꽉 짜여진 듯한 사운드로

 

풍부한 인상을 주는 곡이다. 가사가 전달하는 성에 대한 메세지를 진지하게 언술적으로 고민하지 않아도

 

자연스레 고조되는 곡의 분위기와 격렬한 절정 그리고 그 뒤의 카타르시스라는 일련의 흐름을 따라 감정의

 

기복을 짧게 경험하는 것만으로도 리스너는 이 곡의 메세지를 그대로 느끼고 이해하는 것이며, 또한 이 곡의

 

가치와 의의 역시 그러한 차원에서 충분히 찾을 수 있을 것이다.

 

 

다만 음악 외적으로 한 가지 흥미로운 의문점은, 과연 서태지가 왜 이 곡을 첫 번째 싱글 음반에 넣지 않고

 

"서태지폰"을 위한 서비스라는, 마치 싱글 음반 내용에 비해서는 별로 중요치 않은 부가적인 음악인 것과 같은

 

인상을 주며 공개했는지 그 이유이다. Bermuda[Triangle]은 소위 한국 음악 시장에서 성공하기 어려운 락

 

장르에 포함되기는 하지만 오히려 빠르고 발랄한 분위기로 젋은 세대에게도 충분히 어필할 수 있는 곡처럼

 

생각되는데 말이다. 부드러운 멜로디를 가졌지만 사운드 상으로 복잡한 인상을 주는 MOAI나 얼핏 유치하게

 

들릴 수 있는 HUMAN DREAM, 기괴한 분위기와 비관적인 메세지로 도저히 한국 시장에서 어필할 수 없는

 

T'IKT'AK에 비한다면 Bermuda[Triangle]은 충분히 대중 음악 시장에서 선전할 수 있는 곡이 아닐까 싶은데도,

 

서태지는 Bermuda[Triangle]을 대중 음악 시장보다는 팬들을 위한 서비스 차원에서 공개한 것이다. 그 이유를

 

추측할 만한 객관적인 정황을 모르니 함부로 단정할 수는 없지만, 개인적인 생각에 서태지는 대중 음악

 

시장에서 Bermuda[Triangle]보다는 MOAI가 관심을 받았으면 하는 바람을 가졌던 게 아닐까 싶다. 서태지

 

자신이 제시한 네이처 파운드 스타일로는 아무래도 다른 곡들보다 MOAI가 가장 두드러지기에 자신의 음악적

 

실험과 그 성과를 알리고 싶은 차원에서 다른 곡보다 MOAI를 알리는 데 주력하면서 Bermuda[Triangle]을

 

일부러 슬며시 숨겼던 게 아닐까.

 

========================

 
반응형
Posted by [PineTree]
ORACLE/INSTALL2008. 12. 11. 17:20
반응형
Linux에서 Pro C 설치

Pro*C Precompiler 설치
?Oracle Database Install 시
-Database Install 후 Oracle Client Category에서 Precompiler를 다시 Install 해야 한다.
-Oracle v9.2.x 인 경우
-Oracle 9i Database -> Enterprise Edition 설치 후, 다시 Installer 를 실행하여 Oracle 9i Client -> Administrator Edition 설치.
-Oracle 9i Client 의 Net Services 와 Pro*C 가 필요하기 때문.
-Oracle v10.1.x인 경우
-Oracle 10g Database -> Enterprise Edition 설치 후, 다시 Installer 를 실행하여 Oracle 10g Client -> Administrator Edition 설치.
-Oracle 10g 에서는 Sample Code 가 설치 되지 않으므로, 다시 Installer 를 실행하여 Companion CD 를 설치.
-Sample Code 의 위치 : $ORACLE_HOME/precomp/demo


Pro*C Precompiler 옵션


?Precompiler optiion 확인
-option 의 종류와 current value 등을 확인할 수 있다.
?Precompiler option 설정 방법
1.System configuration file 에 설정
$ORACLE_HOME/precomp/admin/pcscfg.cfg
2.User configuration file 에 설정
Precompiler option의 “CONFIG” option으로 user configuration file을 지정할 수 있다.
3.Command line 에 설정
$ proc iname=[program명] userid=scott/tiger ...
4.Pro*C 소스 내에 설정
EXEC ORACLE OPTION(HOLD_CURSORS=NO);


 
Pro*C Precompiler 환경 변수(Unix, Linux)


?Compile 시 필요한 환경변수
-ORACLE_HOME
-PATH
-$ORACLE_HOME/bin과 정확한 C compiler가 있는 directory 설정.
-LD_LIBRARY_PATH
-libclntsh shared library를 찾기 위해 $ORACLE_HOME/lib ( 또는 $ORACLE_HOME/lib32 ) 설정.
** SUN : LD_LIBRARY_PATH
** HP : LD_LIBRARY_PATH, SHLIB_PATH
** AIX : LD_LIBRARY_PATH, LIBPATH
** LINUX : LD_LIBRARY_PATH
-LINUX 에서 stddef.h, stddef.h 등 default library directory 에 없는 파일은 찾아서 symbolic link를 생성해 줘야 하는 경우도 있다.

Pro*c sample program
 
$ cd $ORACLE_HOME/precomp/demo/proc
$ make ?f demo_proc.mk smaple1

user program


 
$ cd [user program이 있는 위치]
$ cd $ORACLE_HOME/precomp/demo/proc .
$ make ?f demo_proc.mk EXE=[prog] OBJS=[prog].o build
$ make ?f demo_proc.mk EXE=[prog]
                          OBJS=“prog1.o prog2.o”build


###################################

프리컴파일, 즉 잘 변형이 안되는 고정적인 헤더 파일들(ex : Windows.h등)을 미리
컴파일해서 정보를 가지고 있게 하는 기능을 가지고 있다.
위의 헤더 파일안에 변형이 잘 안되는 헤더 파일들을 넣고 첨에 컴파일 할땐 느리지만...
두 번째 부턴 미리 컴파일된 정보를 가지고 있어서 stdafx.h 안에 속한 헤더 파일들은 다시 컴파일 안하므로
컴파일 속도가 높아진다.
#####################################
Pro*C란?
"Oracle RDBMS에 준비된 Pro*C들은 SQL문을 써넣은 C프로그램을 Oracle 데이타베이스
에 있는 데이터의 액세스와 조작을 할 수 있는 C 프로그램으로 변환하기 위한 것이다.
Pro*C는 프리컴파일러이기 때문에, 입력 파일내에 있는 EXEC SQL문을 적당한 Oracle
Call로 변환해서 출력 파일을 작성한다. 그 다음, 이 출력 파일을 C 프로그램에 대한
통상의 방법으로 컴파일하고 링크해서 실행할 수 있다.
Pro*C(또는 Pro*Fortran이나 Pro*PL/I 등과 같은 제품)를 Oracle Call 인터페이스와
비교해 보자. Oracle Call 인터페이스(OCI)는 Oracle 데이터베이스의 Call 인터페이스
이므로 유저는 C, Fortran, Cobol 등의 고급언어 내에 직접 Oracle Call을 짜넣는다.
각각의 트랜잭션은 복수개의 Call과 Cursor(커서:이해할려나?)를 사용함으로써 수행된
다."
<<<<< 장점 및 이점 >>>>>
-. 1개의 Pro*C Call은 자동적으로 복수의 실행시 라이브러리 콜로 변환되기 때문에
프로그램 작성에 필요한 시간을 단축할 수 있다.
-. 1개의 프로그램을 다른 데이터베이스내의 데이터에 대해서 사용할 수 있다.
-. 복수의 프로그램을 각각 프리컴파일해서 함께 실행할 수 있다.
이상이 한글판 메뉴얼에 나와 있는 Pro*C에 대한 개략적인 정의입니다.
일반 C언어에 SQL query 문장을 넣어 파일로 저장한 다음 Pro*C로 컴파일(프리컴파일:
전처리 컴파일)하면 pc(맞나?)라는 확장자가 나오는데, 이것을 C 컴파일러로 컴파일하
면 일반 C 프로그램과 마찬가지로 실행파일이 생긴다. 이러한 실행파일은 일반적인
CGI 스크립트(이것도 이해할려나?)와 같이 작동해서 DB내에 있는 데이타를 query 해
온다.

[출처] http://tong.nate.com/odusan/21789892
반응형
Posted by [PineTree]
OS/WINDOWS2008. 12. 5. 16:09
반응형

드디어 혼자 이것 저것 건드리다가 알아냈따.!!!

정확하게 어떻게 질문을 해야할지 몰라서 물어볼 수가 없었다. (웹상에 많은 전문가들이 있지만 정작 어떻게 질문을 해야할지 몰라서 해결하지 못하는 게 대두분이다. ㅡ_ㅡ;;)

 

\\xxx.xxx.xxx.xxx\c$ 이런 형식으로 공유를 할 대 어쩔 때는 계정 창이활성화 되어 있어 직접 계정을 입력하고 할 수 있었늗네 어쩔 때는 guest로 고정 아이디를 입력할 수가 없었었다. 좀 오랜 기간 여기 저기 물어봤었는데 묻는 방법이 잘못됬었는지 답을 구할 수 없다가 드디어  ㅠ.ㅠ..

 

 

실행 - gpedit.msc에 들어가서

 

 

보안 - 로컬 정책 - 보안 옵션 에서 네트워크 액세스 : 로컬 계정에 대한 공유 및 보안 등록 정보 에서 "일반 - 로컬 사용자를 그대로 인증"을 선택하면 비활성화 되어 있던 것이 활성화 되었다 .ㅠ.ㅠ

 

열려있어야 하는 포트

TCP  445  / TCP UDP 137


b. 제어판->Windows 방화벽->예외 탭으로 이동->"파일 및 프린터 공유"에 체크
-> 확인

----------------------------------------------------------------------------------------

netbios는 IP를 사용하지 않는 고전적인 마이크로소프트사 LAN 프로토콜입니다. 이의 확장 프로토콜은 NETBEUI이지요.

 

만약 통신하려고 하는 PC가 같은 랜에 있다면 (만약 두 PC의 IP 주소가 같은 대역이라면, 즉, 하나의 PC는 192.168.3.3 다른 PC는 192.168.3.4처럼) TCP/IP를 사용하지 않고 NETBEUI 프로토콜을 올려서 두 PC가 공유가 가능합니다.

 

그렇지 않고 서로 다른 랜에 있는 PC들이라면 NETBEUI 프로토콜로는 불가능합니다. 이를 극복하기위해 SPX/IPX 프로토콜을 사용할 수 있으나 이 경우에는 두 PC가 통신 시 거쳐가는 통신장비에 SPX/IPX 지원을 위한 설정이 되어야 합니다.

 

결론적으로 말씀드려서 두 대의 PC 가 다른 네트워크 상에 있을 때는 말씀처럼 NBT가 차단되어 있으면 공유가 불가능합니다.

관리자에게 필요성을 이야기하시고 풀어달라고 하는 것이 나을 것 같습니다


반응형
Posted by [PineTree]
ORACLE/ADMIN2008. 12. 3. 15:13
반응형

DICTIONARY(DICT) 뷰

 - 데이터 사전 및 동적 성능 뷰에 대한 정보를 알고 싶으면 DICTIONARY 뷰나
    DICT_COLUMNS 뷰를 조회하면 됩니다.

 - 조회 할 수 있는 모든 데이터사전의 테이블이름과 설명을 조회 할 수 있습니다.
   물론 설명은 영문으로 되어 있습니다.

 - 동의어인 DICT를 이용해서도 똑같은 정보를 조회 할 수 있습니다.

SQL> SELECT * FROM DICTIONARY WHERE table_name LIKE ’%INDEX%’;

SQL> SELECT * FROM DICT WHERE table_name LIKE ’%INDEX%’;


DICT_COLUMNS 뷰

 - 뷰를 질의하면 해당 데이터사전의 컬럼에대한 정보를 조회 할 수 있습니다.

SQL> SELECT * FROM DICT_COLUMNS WHERE TABLE_NAME LIKE ’%INDEX%’;


데이터사전 조회 예제 1)

SQL>SELECT * FROM dict
        WHERE table_name LIKE UPPER(’%&데이타사전%’);


데이터사전 조회 예제 2)

SET LINESIZE 160
SET PAGESIZE 100
COLUMN TABLE_NAME FORMAT A25
COLUMN COLUMN_NAME FORMAT A30
COLUMN COMMENTS FORMAT A80 word_wrapped
 
SELECT *
FROM dict_columns
WHERE table_name LIKE UPPER(’%&데이터사전%’);

 

◈ 아래 데이터사전 정보는 인터넷 정보를 참고했습니다.

* 오브젝트: USER_OBJECTS(OBJ)
   모든 오브젝트에 대한 정보를 지원
   오즈젝트 유형, 작성시간, 오브젝트에 사용된 최종 DDL 명령, alter, grant 및 revoke 등


* 테이블 : USER_TABLES (TABS)   테이블에 대한 정보


* 열 : USER_TAB_COLUMNS (COLS)   컬럼에 대한 정보


* 뷰 : USER_VIEWS   뷰에 대한 정보


* 동의어 : USER_SYNONYMS (SYN)


* 시퀀스 : USER_SEQUENCES (SEQ)


* 제약조건 : USER_CONSTARINTS


* 제약조건열 :  USER_CONS_COLUMNS ( 제약 조건을 가진 열에 대한 정보)


* 제약조건의 예외사항 : EXCEPTIONS  제약조건을 활성화시 에러사항에 대한 정보


* 테이블 주석 : USER_TAB_COMMENTS  테이블/뷰에 대한 주석


* 열 주석 : USER_COL_COMMENTS ( 열에 대한 주석)


* 인덱스 : USER_INDEXES (IND) ( 인덱스에 관한 정보)


* 인덱스 열 : USER_IND_COLUMNS  인덱스열에 대한 정보


* 클러스터 : USER_CLUSTERS (CLU)  클러스터와 관련된 정보


* 데이터베이스 링크 : USER_DB_LINKS  링크에 관련된 정보


* 스냅샷 : USER_SNAPSHOTS


* 스냅샷 로그 : USER_SNAPSHOT_LOGS


* 트리거 : USER_TRIGGERS


* 프로시저, 함수 및 패키지 : USER_SOURCE


* 코드 오류 : USER_ERRORS


* 테이블스페이스 : USER_TABLESPACES


* 영역 할당량 : USER_TS_QUOTAS
   테이블스레이스 단위로 사용자가 이용할 수 있는 영역의 최대크기와
   할당된 영역의 크기 파악에 대한 정보


* 세그먼트와 익스텐트 : USER_SEGMENTS 와 USER_EXTENTS


* 여유 영역 : USER_FREE_SPACE   현재 여유로 표시된 영역이 얼마인지에 대한 정보


* 사용자 : USER_USERS


* 자원 제한량 : USER_RESOURCE_LIMITS


* 테이블 권한 : USER_TAB_PRIVS


* 열 권한 : USER_COL_PRIVS


* 시스템 권한 : USER_SYS_PRIVS


  ================================================
    * 오라클 정보공유 커뮤니티 oracleclub.com
    * http://www.oracleclub.com
    * http://www.oramaster.net
    * 강좌 작성자 : 김정식 (oramaster _at_ naver.com)
  ================================================
반응형
Posted by [PineTree]