Quartz와 관련된 ORACLE RAC 구성 테스트가 필요해서 설치해 보기로 하였다.

OTN 라이선스에 동의하면 ENT 버전을 다운받아 개발용으로 설치하여 사용할 수 있다.


설치 

아래 블로그를 따라하면 누구든지 설치 할 수 있다. (감사감사)

http://oraschool.tistory.com/7

참조)

https://oracle-base.com/articles/12c/oracle-db-12cr1-rac-installation-on-oracle-linux-6-using-virtualbox


블로그 내용대로 설치를 했다면 host에서 사용하기 위해서 몇가지 작업이 필요하다. 


1. 네트워크 

 - host에서 RAC 망으로 접근할 수가 없어 appication을 구동할 수 없다.

생각나는 방법들

1. 개발환경을 위한 VM을 추가하고 같은 public ip 대역을 사용한다. 

2. NAT의 port fowarding을 이용한다. (이게 더 편해 보인다.)


각 RAC 서버 네트워크 설정을 수정한다.


pub는 1개의 instance에 접속하기 위한 것이고 

vip는 jdbc url을 사용하기 위한 값이다. 

host ip를 127.0.0.1 을 사용하면 본인 host만 접속이 가능하고 공인아이피가 있다면 다른 PC에서 접속이 가능하다. (빙화벽이 열려있는 경우)


rac1


rac2


접속 방법 (sql developer)

instance별


jdbc thin


2. encoding 처리

설치 가이드 블로그의 내용을 그대로 잘 따라서 했다면 한글데이터가 깨진다. 

instance 설치할때 encoding 설정을 하면 문제가 없지만 이미 설치 했다며 encoding을 바꿔야 한다. 


1. 인코딩 확인 

 select * from nls_database_parameters where parameter like '%CHARACTERSET%';

 select VALUE$ from sys.props$ where name='NLS_LANGUAGE';


update 

http://m.blog.naver.com/meldin/60090587605 (참고)

1. 모든 instance들을 shutdown 한다.


    - Node1 : # sqlplus "/ as sysdba"

    - Node1 : SQL> shutdown immediate

    - Node2 : # sqlplus "/ as sysdba"

    - Node2 : SQL> shutdown immediate


2. Node1에서 initNode1.ora 파일에서 CLUSTER_DATABASE 파라미터를 FALSE로 변경한다.

ALTER SYSTEM SET CLUSTER_DATABASE=FALSE SCOPE=SPFILE;


3. Node1에서 Exclusive 모드로 DB를 마운트한다.

   - SQL> startup mount exclusive


4. 다음의 명령어들을 실행한다.

   - SQL> alter system enable restricted session;

   - SQL> alter system set job_queue_processes = 0; 

   - SQL> alter system set aq_tm_processes = 0; 

   - SQL> alter database open;


5. 캐릭터 셋을 변경한다.

   - ALTER DATABASE CHARACTER SET INTERNAL_USE UTF8;

   - ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE UTF8;


6. Node1에서 initNode1.ora 파일에서 CLUSTER_DATABASE 파라미터를 다시 TRUE로 변경한다.

   - ALTER SYSTEM SET CLUSTER_DATABASE=TRUE SCOPE=SPFILE;


7. 디비를 shutdown 한다.

   - SQL> shutdown immediate


8. 모든 Node에서 DB를 startup한다.

    - srvctl start instance -d ORA12C -i ORA12C1

    - srvctl start instance -d ORA12C -i ORA12C2


변경 확인 

쿼리결과의 모든 인코딩이 동일하면 된다.

select

 distinct(nls_charset_name(charsetid)) CHARACTERSET,
 decode(type#, 1, decode(charsetform, 1, 'VARCHAR2', 2, 'NVARCHAR2','UNKOWN'),
 9, decode(charsetform, 1, 'VARCHAR', 2, 'NCHAR VARYING', 'UNKOWN'),
 96, decode(charsetform, 1, 'CHAR', 2, 'NCHAR', 'UNKOWN'),
 112, decode(charsetform, 1, 'CLOB', 2, 'NCLOB', 'UNKOWN')) TYPES_USED_IN
from sys.col$
where charsetform in (1,2) and type# in (1, 9, 96, 112);

 


Posted by 마법수정화살
,