Install Ubuntu 11.10 Server

게시 날짜: 2011/10/17, 카테고리: ORACLE, OS 4 Oracle

우분투의 새로운 버전 11.10 이 새롭게 릴리즈 되었다. 우분투를 사용해 본 적은 없지만 입소문으로 꽤 괜찮은 리눅스 기반의 OS 라는 말은 종종 들어왔던 터라 이참에 한번 설치해 보기로 마음을 먹었다. 설치 한번 해보는 것도 좋은 경험이 될거라 믿고 있다. 그리고 그 새롭게 버전 업 된 OS에 오라클도 설치해 보고픈 욕심이 생긴다. 당장은 싱글버전으로 설치할 테지만 추후에 우분투 기반에서 RAC 혹은 Dataguard 역시 한번 구현해 보고픈 욕심이 생긴다. 이 욕심이 부디 성공으로 끝났으면 하는 바램이 있다.

Transaction Monitoring SQL

게시 날짜: 2011/10/11, 카테고리: ADMIN, ORACLE
태그:, ,

트렌젝션 모니터링 스크립트를 작성해 보았다. 예전 오라클용 오렌지 툴을 사용할때 편하게 사용했었던 트랜젝션 모니터링 기능을 조금 따라해 보기 위해 작성해 보았다. 꽤 긴 시간동안 돌아가는 트랜젝션을 발생시켰을 때 이 트랜젝션 모니터링 기능은 어떻게 트랜젝션이 잘 돌아가는지 확인하는데 꽤 유용했었던 것으로 기억한다.

이 엔트리의 나머지 읽기 »

Role Transition on physical standby database

게시 날짜: 2011/10/02, 카테고리: DGA, ORACLE
태그:, , , , ,

SWITCHOVER

Switchover 는 일반적으로 계획적으로 시스템을 다운시킬 시 수행하는 방법이다.  OS 나 HW 의 업그레이드, 혹은 오라클 데이터베이스 소프트웨어에 대한 롤링 업그레이드 혹은 패치셋을 적용하기 위해 사용한다. 이 엔트리의 나머지 읽기 »

Full UNDO Tablespace

게시 날짜: 2011/09/23, 카테고리: ORACLE, Ref
태그:, ,

OTN에서 undo 와 관련된 좋은 자료가 있어서 퍼옵니다. 보기 좋게 하기 위해 정렬 및 수정을 좀 하였습니다. Undo 의 할당 과정과 공간에 관한 기본 지식으로 운영시 참고하면 좋을 자료 같습니다. 원본 주소는 밑에 추가하겠습니다.

이 엔트리의 나머지 읽기 »

Range Partition Table Split (MAXVALUE)

게시 날짜: 2011/09/22, 카테고리: ADMIN, ORACLE
태그:, , ,

1. 테스트 파티션 테이블 생성

  1  CREATE TABLE SPLIT_TEST (EMPNO NUMBER(10), NAME VARCHAR2(30))
  2  PARTITION BY RANGE(EMPNO)
  3  (PARTITION SPLIT_TEST_P1 VALUES LESS THAN (10),
  4   PARTITION SPLIT_TEST_P2 VALUES LESS THAN (20),
  5   PARTITION SPLIT_TEST_P3 VALUES LESS THAN (30),
  6*  PARTITION SPLIT_TEST_MX VALUES LESS THAN (MAXVALUE))
SQL> /

Table created.

이 엔트리의 나머지 읽기 »

SERVER GENERATED ALERT

게시 날짜: 2011/09/20, 카테고리: ADMIN, ORACLE
태그:, , ,

DBMS_SERVER_ALERT 패키지를 이용하여 특정한 이슈에 관하여 Threshold 를 설정하여 이를 위반하였을 시 경고를 할 수 있게 설정할 수 있다. 이 엔트리의 나머지 읽기 »

DDB (Distributed DataBase)시 발생하는 ORA- 문제들

게시 날짜: 2011/09/15, 카테고리: ORA, ORACLE
태그:,

CASE 1. Two-Phase Commit 인터럽트

현상 :
ORA-02050: TRX ID rolled back, some remote dbs may be in-doubt
ORA-02051: TRX ID committed, some remote dbs may be in-doubt
ORA-02054: TRX ID in-doubt

프로그램 사용중에 위 에러중 하나가 발견되면 그 트랜젝션에 대한 정보가 자동으로 저장되어 이 정보는 후에 분산 트랜젝션에 대한 Manual Recovery 에 사용될 수 있다.

조치 :
DBA는 특별한 Action 을 취할 필요가 없다. RECO(Recovery) process 가 Session tree 의 모든 노드에서 같은 결과가 발생되도록 In-doubt 트랜젝션을 자동으로 Recovery 한다(All commit or All rollback). 그러나 장기적인 Power Failure 의 경우 Lock 된 리소르를 해제하기 위해 강제적으로 Commit 이나 Rollback 을 시켜준다.

SQL> COMMIT FORCE ‘SALES.ACME.COM.55dic563.193.29’; <OR>
SQL> COMMIT FORCE ‘global_id’,228444991
SQL> ROLLBACK FORCE ‘2.9.4’;

CASE 2. Lock 에 의해 데이터 접근을 금지시키는 Fail

현상:
ORA-02049: time-out : distributed transaction waiting for lock

로컬의 DML 문장이 원격의 다른 트랜젝션에 의해 Lock 이 되어있는 데이터를 수정 혹은 삭제를 시도하려 할 때 Time-out 이 발생하고 해당 명령은 Rollback 된다.

<in Remote>
SQL>update dept set deptno = 10;
<in Local>
SQL> update dept set deptno = 10;
SQL> update dept@REMOTE set deptno=10;
ORA-02049 : time-out

조치:
로컬에는 Update 가 발생하므로 항상 Rollback 을 시켜 주어야 하나,  원격은 변경할 수 없으므로 아무런 조치는 취하지 않아도 된다. 위 상황에서 Time-out 의 간격은 DISTRIBUTED_LOCK_TIMEOUT 파라미터로 시간을 조정할 수 있다.

현상:
ORA-01591 : Lock held by in-doubt distributed transaction ID

In-doubt 트랜젝션이 락을 잡고 있는 리소스에 대하여 접근을 시도시 발생하는 에러.

SQL> update dept@remote set dname=’AA’;
— Remote Database down
SQL> commit
ORA-02054 : transaction 2.1.207 is in-doubt transaction
SQL> select * from dept@remote;
ORA-01591 : Lock held by in-doubt distributed transaction id 2.1.207

로컬에서 DBA_2PC_PENDING 뷰를 통해 in-doubt 트랜젝션 정보를 확인할 수 있다.

조치:
이런 경우 SQL 문장은 Rollback 되어야 한다. Lock 이 계속해서 결려 있을 경우 Rollback 을 수행해 주어야 한다. Network 혹은 System Failure 가 빠르게 복구 될 경우 이 문제는 자동으로 해결 된다.

CASE 3. 두 Node 사이에 Connection 이 만들어 진 이후 Network Failure.

현상:
Forms 등을 통해 화면에서 데이터를 업데이트를 수행하면 네트워크와 원격 DB가 정상적일 경우 Commit 이 되나, 네트워크가 Fail 될 경우 화면이 Holding 상태로 멈춤.

조치:
네트워크가 복구되면 자동으로 Commit. 하지만 네트워크 Failure 가 장기화 될 경우 강제로 Abort 시켜주어야 한다. 강제 Abort 시 자동으로 Rollback 되므로 더이상의 조치는 필요치 않다.