Oracle 11g R2 RAC를 설치하는 중이다. 기술지원없이 대충 구글 검색으로 하고있다.
NAS : Openfiler ( Intel core i7 PC )
디비서버 OS : Oracle enterprise linux 5 64 bit ( Intel core i7 PC * 2 )
grid infrastructure 설치 계정 : grid
oracle 설치 계정 : oracle

그리드 인프라 설치 프로그램이 수퍼유저 계정이 아니라면서 종료되버린다. 젠장!!
스토리지 설정, 넷트웍 설정 등을 삽질해서 겨우 설치 단계까지 왔는데 중간에 종료되다니!!

구글링과 오라클 메뉴얼 정독으로 해결하려는데 시간이 모자라네.

iPhone 에서 작성된 글입니다.
Oracle 11g에서 디비 문제 원인 분석을 위한 정보 수집 방법을 설명한 글이다.

https://kr.forums.oracle.com/forums/thread.jspa?threadID=1057734&tstart=0

위의 링크를 따라가면 원문을 볼 수 있다.


오라클11g는 로그와 트레이스 파일의 생성 및 관리가 기존과 많이 다르다. adr이라는 로그와 트레이스 파일을 통합 관리 툴(? 시스템?)이 있어서 생각보다 편리하게 쓸 수 있다.

iPhone 에서 작성된 글입니다.
Oracle 11g에서 눈에 띄는 변화 중 하나가 alert.log가 없어졌다가 아니라 위치와 포멧이 바뀌었다입니다.
하나의 디렉토리에 로그 파일들이 모여있는고 로그를 조회, 정리, 압축 해주는 유틸도 추가되었습니다.
그래서 로그보는 방법을 찾아봤습니다. 오라클 메뉴얼을 뒤져서 찾았습니다.

adrci라는 로그 관리 프로그램을 실행한뒤 필요한 명령을 실행하면 됩니다. 아래의 예제를 참고하시길...

[oracle]$ adrci
adrci> show alert -tail
(alert log중 최근 데이터 일부만 보기)

adrci> show alert -tail 50
(alert log중 최근 데이터 50건만 보기)

adrci> show alert -tail -f
(alert log를 "tail -f"처럼 실시간으로 모니터링하기)

adrci> show tracefile
(trace file 보기)

adrci> show tracefile -i 프로세스id
(특정 프로세스의 트레이스파일 찾기)

adrci> show tracefile %mmon%
(mmon의 트레이스 파일을 찾기. like 검색이라고 생각하면 된다. %ckpt%로 입력하면 체크포인트 트레이스파일을 검색한다.)

파라미터들은 소문자로 입력해도 잘 됩니다. 최소한 -tail 옵션은 잘 되더군요.
그럼 다음번에는 문제 분석을 위한 정보 수집 방법을 정리해보겠습니다.


iPhone 에서 작성된 글입니다.
지난주에 테스트 용도로 Oracle 11g R2를 설치한 적이있다. 설치는 참 오랫만이었는데, 기본 옵션을 보니 Spatial이 설정되어있었다. 음 지리정보를 이용한 서비스가 많아져서인지 이게 언제부터 기본으로 지원되었던거지?

음 공부를 소흘히하면 안되겠어.

iPhone 에서 작성된 글입니다.
오래전에 분산 트랜잭션 관련 오류가 있었을때 처리한 내용입니다. 출처가 기억이 나지 않아서... (원서였는지, 한글로된 블로그 글이었는지...)

두 개의 DB 사이에서 "Database Link"를 이용하여 쿼리를 실행하는 프로시져가 주기적으로 실행될 때, "ORA-01591" 오류가 발생했다. 이럴때의 처리방법.

SQL> SELECT LOCAL_TRAN_ID, GLOBAL_TRAN_ID, STATE, MIXED, HOST, COMMIT# FROM DBA_2PC_PENDING;

위의 쿼리로 확인 했을 때, MIXED가 'NO', STATE가 'PREPARED'일 때.

SQL> ROLLBACK FORCE 'TRANS_ID';
혹은
SQL> COMMIT FORCE 'TRANS_ID';


STATE 상태가 'FORCED ROLLBACK' 또는 'FORCED COMMIT'일 때
SQL> EXEC DBMS_TRANSACTION.PURGE_LOST_DB_ENTRY('TRANS_ID');
SQL> COMMIT;

해주고 첫 부분에 있는 쿼리로 확인.




 SQL Deveroper는 Oracle corp.에서 배포하는 Oracle 개발, 관리 등을 지원하는 개발 Tool입니다. Oracle Homepage에서 무료로 받아서 사용할 수 있으며, 현재 안정 버전은 3.0이며 "3.1 Early Adopter" 버전도 받아서 사용할 수 있습니다. 이 글을 작성하던 시점에는 3.0이 최신빌드였는데, 3.1이 정식으로 나왔습니다. (아래의 푸른 글 상자 안의 내용을 추가했습니다. 최신 버전에 대한 정보는 아래의 글 상자 내용을 참조하세요.)

Oracle SQL Developer 3.1 (3.1.07.42)

 February 7, 2012

출처 : http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/index.html

To install Oracle SQL Developer 3.1 download the file, there is no in-place upgrade available, you must unzip the file into an empty folder. Select the "Use folder names" checkbox when unzipping the file. You can migrate your settings from Oracle SQL Developer 1.5.x or SQL Developer 2.1.x.. See the Release Notes 3.1 for more details.

JDK Support
Oracle SQL Developer 3.0 is shipped with JDK1.6.0_11. However, you can connect to and use any JDK 1.6.0_11 or above. To use an existing JDK, download the zip files listed below "with JDK already installed."

Use Check for Updates to install:
  • Third-party database drivers for Sybase, SQL Server and MySQL. For more information on setting up the third-party drivers, see Migrations: Getting Started
  • Version control systems, Concurrent Versions System (CVS), Serena Dimensions or Perforce.

Check for Updates also supports an increasing number of Third-Party extensions. These are available with separate licensing agreements and are developed, tested and maintained by third-party vendors.



뒷북이 되어버린... 3.1 Early Adopter 버전입니다.

 
 3.1 버전을 설치했더니, 기본적으로 Oracle과 MS Access에 접근할 수 있게 되어있네요. 추가 설정 작업을 해주면 Microsoft SQL Server, Sybase, IBM DB2에도 접근할 수 있습니다. (Update 메뉴를 통해서 확장 기능을 검색해보면 MySQL, SQL Server 접속 기능도 설치할 수 있는데, 3.1 버전은 아직 정식 버전이 아니라서 그런지 설치를 할 수 없네요.)

 실행하면 화면에 위와 같은 창이 뜨고, 진행막대가 지나갈 겁니다. Java로 되어 있어서 그런지 (Oracle JDeveloper 기반인것 같다. VisualVM(정확한 이름인지는 모르겠다.)으로 상태를 모니터링하면서 보니까 이름이 JDeveloper로 뜨네요.) 초기 기동이 아주 느립니다. 토드와 맞짱 뜰만한 기동 시간이라니... 아 토드 보단 쪼금 빨랐던거 같습니다. 아마도...
  

0. Oracle Database
 Oracle database는 기본적으로 접속이 가능하다. TNS와 IP기반의 접속이 모두 가능하며 쓸만합니다.
 

1. MySQL 접속이 가능하도록 설정하기
1-1. MySQL JDBC Driver 다운로드 받아서 설치하기
  mysql.com의 다운로드 메뉴에서 Connector라는 항목을 선택하면 Connector/J라는 항목이 있다. 여기에서 다운로드 받을 수 있다. 다운로드 받은 파일의 압축을 풀어서 jar file을 원하는 위치에 저장하면 된다.

1-2. SQL Developer에 MySQL JDBC Driver 설정하기
환경설정 메뉴의 "데이터베이스 > 타사 JDBC 드라이버"를 클릭하면 설정 화면이 나옵니다.

1-3. SQL Developer 접속 설정하기
아래 이미지를 보시면 짐작이 가시겠죠? IP 혹은 Hostname, 그리고 계정 정보 등이 필요합니다.


 

2. Microsoft SQL Server에 접속이 가능하도록 설정하기
2-1. SQL Server JTDS Driver 다운로드 받아서 설치하기
  SQL Server는 MS에서 제공하는 JDBC Driver를 사용하면 SQL Developer가 인식하지 못한다. 대신에 Open source로 만들어지는 JTDS Driver를 이용하면 된다. Sourceforge에서 JTDS로 검색하면 찾을 수 있으며, 아래의 "관련 자료 다운로드"의 링크를 따라가면 바로 찾을 수 있다. 다운로드 받은 파일의 압축을 풀어서 jar file을 원하는 위치에 저장하면 된다.
 
2-2. SQL Developer에 JTDS Driver 설정하기
환경설정 메뉴의 "데이터베이스 > 타사 JDBC 드라이버"를 클릭하면 설정 화면이 나옵니다.


2-3. SQL Developer 접속 설정하기
아래의 이미지를 보시면 MySQL과 다른점이 있다면 "Windows 인증 사용"일겁니다. 그외에는 뭐...IP 혹은 Hostname, 계정 정보 등이 필요합니다.




<참고문서>

2. Oracle SQL Developer 3.1 Release Notes


<관련 자료 다운로드>




database.sarang.net의 "Oracle Q&A" 게시판에서 발견한 글에 아주 살짝 양념을 더했습니다.

원문 : database.sarang.net의 원문

 
"어떤 문자열에서 특정 문자를 구분 문자로 하여 나눴을때 마지막 문자열을 보여주고싶다."라고 할때... 음... 이걸 해결해 놓은게 아래의 쿼리입니다.
Oracle 10g R2와 Oracle Express Edition 11g에서 정상적으로 실행되는것을 확인하였습니다.

SELECT tablespace_name "테이블스페이스"
             , file_name "파일 이름"
            
 , SUBSTR(file_name, INSTR(file_name, '\', -1) + 1) as "1st"
             , REGEXP_SUBSTR(file_name, '[^\]+$')  as "2nd"
FROM dba_data_files;

물론 UNIX 장비라면 아래와 같이 역슬래쉬가 아니라 슬래쉬로 구분을 해야겠죠. ^^

SELECT tablespace_name "테이블스페이스"
             , file_name "파일 이름"
            
 , SUBSTR(file_name, INSTR(file_name, '/', -1) + 1) as "1st"
             , REGEXP_SUBSTR(file_name, '[^/]+$')  as "2nd"
FROM dba_data_files;

 테이블스페이스  파일 이름                   1st         2nd

-------------- ---------------------------------------- ------------- -------------
USERS  /u01/app/oracle/oradata/XE/users.dbf  users.dbf  users.dbf
SYSAUX  /u01/app/oracle/oradata/XE/sysaux.dbf  sysaux.dbf  sysaux.dbf
UNDOTBS1  /u01/app/oracle/oradata/XE/undotbs1.dbf  undotbs1.dbf  undotbs1.dbf
SYSTEM  /u01/app/oracle/oradata/XE/system.dbf  system.dbf  system.dbf



 Oracle 10g에서 종종 문제가 되고 있어서 아래와 같이 고쳐봤습니다. 11g에서도 문제가 되는지는 모르겠습니다. 나중에 확인하면 문서에 추가하도록 하겠습니다.

 아래의 query를 실행해보면 해당 계정에 설정된 profile의 제한값이 나온다.
SELECT A.USERNAME, B.PROFILE, B.RESOURCE_NAME, B.RESOURCE_TYPE, B.LIMIT   
FROM DBA_USERS A, DBA_PROFILES B
WHERE A.PROFILE = B.PROFILE
AND A.USERNAME = '계정명';

 "FAILED_LOGIN_ATTEMPTS           PASSWORD 10"라는 부분이 보일겁니다.
여기를 unlimited로 바꾸거나 새로운 profile을 만들면서 unlimited로 해주고 해당 계정의 profile을 바꿔주면 됩니다.

아래는 profile을 만들고, 사용자계정의 profile을 바꿔주는 구문입니다.
CREATE PROFILE DEFAULT_P1 LIMIT
    COMPOSITE_LIMIT UNLIMITED
    SESSIONS_PER_USER UNLIMITED
    CPU_PER_SESSION UNLIMITED
    CPU_PER_CALL UNLIMITED
    LOGICAL_READS_PER_SESSION UNLIMITED
    LOGICAL_READS_PER_CALL UNLIMITED
    IDLE_TIME UNLIMITED
    CONNECT_TIME UNLIMITED
    PRIVATE_SGA UNLIMITED
    FAILED_LOGIN_ATTEMPTS UNLIMITED
    PASSWORD_LIFE_TIME UNLIMITED
    PASSWORD_REUSE_TIME UNLIMITED
    PASSWORD_REUSE_MAX UNLIMITED
    PASSWORD_VERIFY_FUNCTION NULL
    PASSWORD_LOCK_TIME UNLIMITED
    PASSWORD_GRACE_TIME UNLIMITED
;

ALTER USER 계정명 PROFILE DEFAULT_P1;
Profile을 바꾸고 잘못된 비밀번호를 입력하는 방식으로 시험해 봤는데 아직까지는 잘 되네요.
 그동안 MS Windows 7에 Oracle client를 설치하려면 설정 파일을 수정해줘야만 했었습니다. 각종 블로그에 설치하는 방법이 올아왔었죠. 문제는 그렇게 해줘도 일부 설치가 안되는 PC가 생겼으며, 당연히 Oracle의 공식적인 지원이 없었기에 안 되는 사람은 어쩔수 없이 Windos XP로 돌아가거나, Windows 7 재설치라는 악수를 둘 수 밖에 없었습니다.

 이번에 Oracle 11g R2의 Windows 버전이 출시되었습니다.
OTN에 Oracle 11g R2 다운로드 페이지 (지난번에 제가 64비트 버전은 링크가 깨져있다고 했었는데, 이번에는 잘 들어가집니다. 다운로드 받아야 겠네요. ^^)

 위의 웹 페이지에서 Windows 버전을 다운로드 받으면 MS Windows 7에 정상적으로 설치됩니다. 물론 Oracle 9i 및 10g client를 설치하면 사용할 수 있었던 Enterprise Manager는 메뉴에서 사라졌네요.(11g R1에서부터 없어졌었나요? 11g R1을 설치해보질 않아서 확인을 못했습니다.) 그 외에는 잘 됩니다.

  작년말에 한창 문제가 되었던 내용입니다.
저희가 운영하는 Oracle DB 중에서 Tibero로 이전하는 DB가 있었습니다. Tibero에서 Oracle로 Gateway(Tibero에서 제공한 Gateway)를 이용해서 Database link를 만들어서 일반 DB Link 이용하듯이 쓸 수 있어서 좋았는데, 문제는 Oracle DB에 있는 기준 정보들이 변경되었을때 이를 Tibero에 적용시킬 방법이었습니다. Oracle에서는 현재 Tibero로 DB Link를 지원하지 않으므로 Oracle측에서 변동내용이 있을때 Data 동기화 작업을 위해서 Tmax Prosync라는 제품을 이용하였습니다.

* Tmax Prosync
[Oracle to Tibero Prosync], [Tibero to Oracle Prosync]가 있는데, [Tibero to Oracle Prosync]는 시스템에 부하를 많이 주는 문제가 있어서 제외하고 [Oracle to Tibero Prosync](이하 Prosync)만 사용하기로 했었습니다.
 Prosync는 Oracle의 로그마이너를 이용하여 테이블의 변동 내용을 알아내고, 이를 로그 파일로 저장한뒤에 Tibero측에 insert, update, delete 문장을 보내서 실행시키는 구조입니다. 그래서 Oralce DB에서도 필요한 설정을 했죠. (알고 계시겠지만 Supplemental Logging 설정이 필요합니다.)
그리고 실제 구축을 했었죠. 그런데 실제로 사용하는 중에 문제가 생겼습니다.

* 문제
 일부 테이블은 몇개의 컬럼이 빠진채로 변경 내용이 감지 되어서 Tibero측에 정상적인 쿼리문이 보내지지 않더군요.

* 원인 및 해결 과정
 TmaxData의 여러 엔지니어가 와서 이 문제에 달려들었었습니다. 결국 마지막에 밝혀낸건 Oracle logminer의 버그라고 하네요. 10g 버전에서는 해결이 되었다고 합니다. 10g를 사용하는 곳은 이상없이 사용 가능하실테고, 저희처럼 9i를 사용하는 곳은 문제가 되네요. Function Based Index가 생성되어있는 테이블은 Logminer에서 비정상적으로 인식을 해서 변경 내용을 정상적으로 감지 하지 못하더군요. Function Based Index를 제거하니까 바로 정상적으로 인식하더군요.
 해당 인덱스를 살펴보니 실제로 쓰이지는 않는 인덱스이더군요. (왜 만들었는지... 제가 입사하기전에 만든거라 왜 만든건지, 누가 요청한건지를 모릅니다.) 그래서 해당 인덱스를 일반 인덱스로 바꿔버렸습니다. 그 다음부터는 잘 되더군요.

+ Recent posts