CRS는 10.2.0.5

DB는 10.2.0.5

이 상황에서 10.2.0.3으로 내려달라는 요청이 있었다.

DB 10.2.0.5인 상황에서 DBCA로 DB 생성했기에 compatible 값은 10.2.0.5 이다. 다운그레이드는 불가.

결국 10.2.0.3 DB를 추가로 설치하기로 하고 거기에다가 datapump를 써서 넘기라고 했다.

그런데 리스너는 현재 10.2.0.5의 엔진에서 돌아가고 있는 상황 아닌가?

그래서 10.2.0.5에서 netca로 리스너 제거하고 10.2.0.3에서 netca해봤더니 같은 이름을 가진 리스너가 있다며 진행 불가.

음. 혹시나 해서 CRS를 재시작해보고 진행해보니 잘 된다. 뭔가 OCR에 등록된게 꼬인 것 같다.

정리해보면

 

1. 10.2.0.5에서 리스너를 netca로 제거

2. 10.2.0.3에서 리스너를 netca로 생성. 잘 된다면 끝

3. 만약 같은 이름의 리스너가 있다면 전 노드에서 crsctl stop crs, crsctl start crs 후 다시 진행

 

※11gR2는 리스너 자체가 GI HOME에서 실행되기에 위 같은 문제는 발생하지 않는다.

'Knowledge > RAC' 카테고리의 다른 글

11.2.0.4 crsd.bin kill test  (0) 2016.10.19
runcluvfy post 실행결과  (0) 2015.12.16
Replace OCR, votedisk to ASM Disk Group  (0) 2014.02.24
RAC 환경에서 DB 수동으로 Drop  (0) 2013.12.18
RAC Failover Test 10.2.0.2 64bit on linux 4.5  (0) 2013.06.28
Posted by neo-orcl
,

RAC환경에서 가끔 dbca로 drop을 했는데 Drop 성공이라고 나타나나 정상으로 drop되지 않는 경우가 있다.

이를 위해 수동으로 RAC 환경에서 DB를 삭제하는 방법을 남긴다.

 

1. DB중지
spfile위치가 공용이라면 아래 작업도 필요(편하게 하기 위해서)
SQL> create pfile from spfile;
SQL> create spfile from pfile;

 

srvctl stop database -d <dbname>

 

2. OCR에서 제거
srvctl remove instance -d RACDB -i RAC1

srvctl remove instance -d RACDB -i RAC2

srvctl remove database -d RACDB

 

3. cluster_database 셋팅 변경

sqlplus / as sysdba

SQL> startup mount restrict exclusive;

SQL> alter system set cluster_database=false scope=spfile;

 

4. restrict로 다시 시작

sqlplus / as sysdba

SQL> shut immediate

SQL> startup mount restrict exclusive;

 

5. Drop database

SQL> drop database;

 

6. 기타 password 파일, init, spfile, 남은 temp파일 등 삭제

Posted by neo-orcl
,

요약, 번역한 내용. 당연한 내용과 익히 알만한 내용은 제외했다

 

정리

- 가능하다면 개별의 통계정보를 수집하는 것이 좋다.
- 테이블에 대한 통계정보는 5%가 일반적으로 적당하다.
- 인덱스에 대해선 compute 로 한다.
- histogram은 데이터가 skew되었다고 알려진 컬럼에 대해 추가한다

 

정리에 대한 설명

- 일반적으로 대부분의 테이블에 대한 통계정보는 5%가 적당하지만 가능하다면 100%로 하는 것이 추천된다.
- 테이블에 대한 통계정보 수집은 정렬을 필요로 하기에 성능과 시간과 연관이 있게 된다.
- 하지만 인덱스의 경우에는 이미 정렬이 되어 있기에 100%로 한다 하더라도 성능은 허용할만 하다.
- 컬럼에 대한 histogram은 일정한 분포도를 벗어나는 컬럼에 대해 적합하다.

 

자세히

아래 내용은 의견을 모은 것이다(오라클의 공식 가이드는 아니다)

 

- 다른 시스템의 다른 시스템에는 다른 레벨의 통계정보 수집이 필요하다.

 

- 통계정보를 수집하는 이유는 CBO가 '좋은' 실행 계획을 세우기 위해 가장 좋은 정보를 제공하는 것이다.

 

- 정확성은 샘플 사이즈에 의존하게 된다.

- Computed 통계라고 하더라도 CBO가 반드시 Best plan을 선택하는 것은 아니다. 왜냐면 optimizer는 선척적으로 추측하고 사용하는 정보는 제한적이기 때문이다.

 

- 얼마나 자주 통계 수집을 하는지는 오브젝트가 얼마나 자주 변경되는지에 따라, 또한 통계가 얼마만에 부정확해지는가에 따라 결정된다.

 

- 좋은 sample size를 정하기 위한 가장 좋은 방법은 다른 샘플 크기로 통계를 수집해 결과를 확인하는 것이다. 낮은 수치부터 진행하다보면 어떤 포인트에서 결과가 일정하게 보이기 시작할 것이다.

 

- 통계정보는 되도록 사용시간대가 없는 때 하도록 해야 한다. 통계수집중인 오브젝트에 update나 insert 등이 진행중이라면 경합을 겪을 수 있다.

 

- 통계 수집 주기를 결정하기 위해서는 before 결과값과 after 결과값을 기록해두어 after가 변하는 시점이 적절한 수집 주기일 것이다.

 

- 만약 before 결과값과 after 결과값이 자주 다를 경우, 데이터 성격이 예측 불가능하거나 데이터의 크기에 비해 샘플 크기가 너무 작거나 데이터가 너무 랜덤할 경우 중 하나일 것이다. 이 경우 통계 수집은 어떤 방법을 써도 한계가 있게 된다. 이 때는 다른 방법으로 쿼리에 대한 실행계획을 세우는 방법을 써야 한다.(힌트라던가?)

 

- CBO의 기본 cost 계산법을 사용하고 있다면? 새로운 통계를 수집했을 때 몇몇 문장에 대해 다른 실행계획이 세워질 수 있다.

- 이는 데이터 성격이 바뀌었을 경우 CBO가 접근 경로를 바꾸게 되는 정상적인 동작이다.

- 그런데 다른 실행계획이 기존 실행계획보다 나쁠 수도 있다. 차이는 클 수도 있고 작을 수도 있다.
- 약간 다른 기본정보가 CBO에게 주어지면 다른 계획을 선택할 수 있다.

 

- 대부분의 시스템에서는 예측가능성이 최적의 성능보다 더 중요하다. 위에서 본 불안정한 영향을 미칠 수 있는 통계 수집보다는 분명하다.

- 이 말은 통계 수집을 쓰지 말하는 것은 아니다. 하지만 무슨 일이 일어날지 알아야 한다.

 

- 통계 정보 수집 후 시스템의 성능에 중요한 영향을 미치는 문장에 대해 허용하는 시간 안에 응답을 하는지 테스트 머신에서 먼저 테스트해봐야 한다

 

- 중요한 통계정보는 통계정보가 바뀜으로 인해 실행계획이 바뀌어 어플 성능이 떨어졌을 경우를 대비해 이전 통계를 저장하는 것을 권장한다.

- 10g부터는 기본적으로 31일동안은 이전의 통계정보를 저장한다.
- 만약 통계 수집의 결과로 중요한 문장에 대한 성능이 떨어졌다면 이전의 통계로 되돌릴 수 있다.

 

- 어떤 문장이든지 성능에 영향을 줄 수 있으나 이들을 찾는건 쉽지 않다.

- 하지만 만약 찾았다면. 일반적으로 plan stability 기능 혹은 힌트를 사용하는 것이 안정적인 실행계획을 위해서 가장 좋은 방법이다.
- DW/DSS 환경에서는 쿼리를 예측할 수 없기에 위에서 말한 방법을 사용할 수 없다. 수집된 통계정보에 맡겨야 한다.

 

'Knowledge > Oracle' 카테고리의 다른 글

About Sequence  (0) 2014.03.07
User 생성시 quota 관련 주의점  (0) 2014.01.09
Procedure Debug 권한 부여  (0) 2013.06.26
Oracle Standard Edition 으로 RAC 구성시 제약사항  (0) 2013.05.21
Oracle process and Files  (0) 2013.03.18
Posted by neo-orcl
,