ORACLE/INSTALL2009. 3. 18. 17:21
반응형

오라클 완전삭제 왜 할까요?  오라클이 싫어서?  아니죠.

 

1. 서비스기동중지 oracle과 관련된 서비스가 기동되어 있으면 전부 중지 시킨다.
2. universal installer 를 이용하여 오라클 삭제
3. registry 에서 오라클과 관련된 키를 삭제한다.
  HKEY_CURRENT_USER->Software->Oracle
  HKEY_LOCAL_MACHINE->Software->Oracle
  HKEY_LOCAL_MACHINE->SYSTEM->CurrentControlSet->Services 밑의 오라클 관련 키
  HKEY_CURRENT_CONFIG->System->CurrentControlSet->SERVICES 밑의 오라클 관련 키
4. 디렉토리삭제
  C:\Program Files\Oracle
  D:\oracle
5. 시작->프로그램->Oracle관련 메뉴 삭제

<< Windows 95/98 >>


1. 시작-> 실행-> regedit을 기동하여
   HKEY_LOCAL_MACHINESOFTWAREORACLE folder 전체를 삭제한다.
2. HKEY_LOCAL_MACHINESOFTWAREodbc를 삭제한다.
3. autoexec.bat file에서 %ORACLE_HOME%bin과 JRE path를 remove한다.
4. windows 탐색기에서 Oracle directory를 삭제한다.
5. <system_drive>: Program FilesOracle folder를 삭제한다.
6. 이전에 설치한 HOME name인 <HOME>을 다음에서 찾아보고 Icon을 삭제한다.
   <system_drive>: windowsStart MenuProgramsOracle-<HOME> 과
   <system_drive>: windowsStart MenuProgramsOracle Installation Products
7. 시스템을 재기동시킨다.

 

 

<< Windows NT >>


1. Administrator 권한으로 NT를 log on 한다 .
2. 시작-> 실행-> regedit을 기동하여
   HKEY_LOCAL_MACHINESOFTWAREORACLE 폴더 전체를 삭제한다.
3. HKEY_LOCAL_MACHINESOFTWAREodbc 를 삭제한다.
4. HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices 에서 oracle로 시작되는 폴더들을 삭제한다.
5. HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventLog Application 에서 oracle로 시작되는
폴더들을 삭제한다.
6. regedit을 종료한다.
7. 설정-> 제어판 -> 시스템을 실행하여 환경 tab에서
8. autoexec.bat 화일에서 %ORACLE_HOME%bin과 JRE path를 remove한다.
9. <system_drive>: WinntProfilesAll Users시작메뉴ProgramsOracle 폴더를 삭제한다.
10. <system_drive>: Program FilesOracle 폴더를 삭제한다.
11. 시스템을 재기동시킨다.
12. Oracle Home directory를 삭제한다.
    (HKEY_LOCAL_MACHINESOFTWAREORACLEORACLE_HOME 에서 확인 가능).

* CWI32.DLL 파일 삭제가 안될경우에는 재부팅시 F8 누르고 안전모드로 부팅해서 삭제하면 된다.

 

<< Linux >>


1. 시디를 넣고 GUI 화면이 뜨면 언인스톨 버튼이 나온다.
2. 언인스톨 버튼을 클릭하여 인스톨된 오라클을 삭제한다.
3. /etc/ 디렉토리로 이동한다.
4. ls -al ora* 로 오라클 관련 파일을 확인한다.
5. 확인된 파일 oraInst.loc, oratab 파일을 삭제한다.
6. /usr/local/bin 디렉토리로 이동한다.
7. 오라클 관련 파일이 있을것이다. 삭제한다.

 

* 시디를 넣고 하지않고 삭제하는 방법은 설치된 오라클 디렉토리를 과감하게 삭제하면된다.
물론 3,4,5번은 행해져야한다.


반응형

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

LINUX ORALCE 10G설치  (0) 2009.08.04
solaris10 oracle install 9i 설정값  (0) 2009.05.27
CentOS 5.2에 Oracle 9i 설치하기  (0) 2009.02.23
HP-UX 11.11(64bit)에 Oracle 9.2.0.1 설치하기  (0) 2009.01.21
Linux에서 Pro C 설치  (0) 2008.12.11
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/PARAMETER2008. 6. 10. 23:06
반응형
[SGA튜닝]Cursor Sharing Parameter
Cursor Sharing Parameter

비슷한 조건 문을 가지는 문장에 대해 SQL문을 공유하기 위해서는 이전 강좌 처럼 바인드 변수를 이용 할 수 있습니다. 이전강좌에서 상수값을 다르게 주게되는 경우 서로 다른 SQL로 인식을 하여 하드파싱(처음보는 SQL문으로 인식하여 일일이 파싱)을 한다고 하였습니다.

Oracle 8.1.6에서 소개된 Cursor_Sharing 변수는 각각의 문장들에 대해 bind 변수로 처리하지 않게 되더라도 내부적으로 바인드 변수로 처리하여 각각의 Cursor에 대해 공유가 가능 하도록 했습니다. 실제 이 기능은 Bind 변수를 쓰는 것 보다는 빠르지 않지만 Literal SQL문(이전 강좌를 참고 하세요)을 이용하는 것보다 20~30% 성능 향상이 있는 것으로 검증 되었습니다.

1. CURSOR_SHARING = EXACT

SQL문장이 모두 동일해야만 Soft Parsing이 가능 합니다.(재사용 한다는 이야깁니다.) Where절의 상수까지도 같아야 합니다.

다음예문을 참고 하세요~
SQL>conn / as sysdba
SQL> alter system flush shared_pool;

시스템이 변경되었습니다.

SQL> conn scott/tiger
연결되었습니다.
SQL> alter session set cursor_sharing = exact;

세션이 변경되었습니다.

SQL> select dname from dept where deptno = 10;

DNAME
--------------
ACCOUNTING

SQL> select dname from dept where deptno = 40;

DNAME
--------------
OPERATIONS

SQL> conn / as sysdba
연결되었습니다.

SQL> select substr(sql_text,1,40) "SQL", count(*),
  2     sum(executions) "총 실행 횟수"
  3  from v$sqlarea
  4  where sql_text like '%dept%'
  5  group by substr(sql_text,1,40)
  6  having count(*) > 0
  7  order by 2;


SQL                                        COUNT(*)    총 실행 횟수
---------- --------------------------------------------------
select dname from dept where deptno = 10         1            1
select dname from dept where deptno = 40         1            1

파싱을 2번한 것을 알 수 있습니다…


2. CURSOR_SHARING = SIMILAR

SQL 문은 동일 해야 하며 조건에 정의된 바인드 변수의 값이 다르더라도 하나의 SQL문으로 간주하여 Soft Parsing 합니다. 이 값은 결국 다른 상수 값을 사용하더라도 하나의 SQL문으로 인식합니다, 3번의 경우(FORCE)와 같은 결과를 나타냅니다.

SQL> alter system flush shared_pool;

시스템이 변경되었습니다.

SQL> conn scott/tiger
연결되었습니다.
SQL> alter session set cursor_sharing = similar;

세션이 변경되었습니다.

SQL> select dname from dept where deptno = 10;

DNAME
--------------
ACCOUNTING

SQL> select dname from dept where deptno = 40;

DNAME
--------------
OPERATIONS

SQL> conn / as sysdba
연결되었습니다.

SQL> select substr(sql_text,1,40) "SQL", count(*),
  2     sum(executions) "총 실행 횟수"
  3  from v$sqlarea
  4  where sql_text like '%dept%'
  5  group by substr(sql_text,1,40)
  6  having count(*) > 0
  7  order by 2;

SQL                               COUNT(*)          총 실행 횟수
---------- --------------------------------------------------
select dname from dept where deptno = :"         1            2

파싱이 한번만 일어남을 알수 있다…



3. CURSOR_SHARING = FORCE

WHERE 조건절에 정의된 상수가 다르 더라도 Soft Parsiing을 합니다.

SQL> alter system flush shared_pool;

시스템이 변경되었습니다.

SQL> conn scott/tiger
연결되었습니다.
SQL> alter session set cursor_sharing = force;

세션이 변경되었습니다.

SQL> select dname from dept where deptno = 10;

DNAME
--------------
ACCOUNTING

SQL> select dname from dept where deptno = 40;

DNAME
--------------
OPERATIONS

SQL> conn / as sysdba
연결되었습니다.

SQL> select substr(sql_text,1,40) "SQL", count(*),
  2     sum(executions) "총 실행 횟수"
  3  from v$sqlarea
  4  where sql_text like '%dept%'
  5  group by substr(sql_text,1,40)
  6  having count(*) > 0
  7  order by 2;

SQL                               COUNT(*)          총 실행 횟수
---------- --------------------------------------------------
select dname from dept where deptno = :"         1            2

파싱이 한번만 일어남을 알수 있다…
반응형

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

parameter SESSION_CACHED_CURSORS  (0) 2009.12.10
ORACLE 9i Parameter 설명  (0) 2007.02.10
Posted by [PineTree]
ORACLE/ADMIN2008. 4. 26. 06:22
반응형
오라클에서 유니코드의 사용

1. 컬럼의 데이터타입에 nchar, nvarchar2를 사용
기존 DB캐릭터셋 변경 없음
캐릭터셋 변환으로 인한 부하 발생

2, DB캐릭터셋을 유니코드로 변경(AL32UTF8)
캐릭터셋 변환으로 인한 부하 없음



OTN Forum > Translated Oracle Product >
http://otn.oracle.co.kr/forum/forum_open_list.jsp?forum_cate=tran


[TIP] characterset 선정시 주의 사항

한글을 지원하는 characterset 에는 아래의 것들이 있습니다.

KO16KSC5601
- 완성형
- 한글 2350자 지원

KO16MSWIN949
- 일명 확장완성형(MS에서 windows 에 만들어 놓은 codepage)
- 한글 11172자 지원
- 한글 순서가 뒤죽박죽(2350자의 KSC5601 에서 지원하는 글자는 가나다 순이지만 그 외 글자는 남는 코드 여기저기에 들어가 있음)
- 8.0.6 이상에서만 사용가능 (8.0.5 이하 버전과의 db link나 client 가 8.0.5 등인 경우는 문제가 발생)

UTF8
- Unicode의 CES 중 하나(구현방법중 하나라고 생각하면 될 듯)
- ascii는 1byte, 그 외 유럽쪽은 2byte, 아시아는 3byte(CJK)
- 한글 11172자 지원(고어도 지원) 및 가나다 순 정렬
=> '가'와 '나'의 차이와 '나'와 '다'의 차이가 같음. 제대로 된 전화번호부를 만들 수 있을 듯...

AL32UTF8
- Unicode의 CES중 하나(9i부터 나온 것으로 알고 있음)
- Length semantics로 하면 4 byte( varchar2(3 char) 로 하면 12byte, UTF8에서는 9byte로 알고 있음)
- UTF8과 한글지원 부분은 똑같은 것으로 알고 있음.
- 8i는 미지원이므로 db link나 8i client 사용시 정상적 처리 불가

* AL16UTF16 (논외)
- Unicode의 CES중 하나
- national characterset 에서만 선택가능
- 모든 글자를 2byte or 4byte로 표현

고로

용량을 줄이면서 한글표현 다하고 싶고 8.0.5는 없다면 ko16mswin949를,
한글 표현 제대로 하면서 가나다 순으로 제대로 정렬될 필요가 있으면서 8i와 전혀 연동할 계획이 없다면 AL32UTF8,
위와 같지만 8i가 껴있다면 UTF8로 하시는 것이 좋을 듯 합니다.



UTF8과 AL32UTF8의 차이점

Supplement Character(UTF8에서 4바이트 이상을 차지하는)를 사용하는 것이 아
니라, 일반적인 다국어라면 UTF8와 AL32UTF8의 차이점은 거의 없다고 보시면 됩
니다.

Oracle 캐릭터셋으로서의:
UTF8은 UNICODE 3.0만을 지원하며, 앞으로도 계속 그렇게 유지됩니다.

하지만, UNICODE라는 캐릭터셋 자체도 www.unicode.org에서 보시면 알겠지만,
계속 진화하고 있습니다. 그래서 오라클에서도 새로운 데이타베이스 버전이 나
올 수록 그 순간의 최신 버전의 유니코드를 AL32UTF8을 통해 지원하게 되는 것
입니다.

AL32UTF8은 따라서,
9.0.x : Unicode 3.0
9.2.x : 3.1
10.1.x : 3.2
10.2.x : 4.0

입니다.

AL32UTF8은 9i 이상에서만 식별이 되므로, 8i와 데이타베이스 링크를 사용해야
한다고 할 때에는 UTF8을 사용하는 것이 좋습니다. 아니면 적어도 NLS_LANG을
UTF8로 해 주어야 할 것입니다. 핵심은 구버전과의 호환에 주의해야 한다는 것
입니다. 그리고, National Character Set으로도 설정할 수 없습니다.

성능에서 서로 차이가 있다고는 볼 수 없습니다.





1. 일반적으로 UTF8이 AL16UTF16보다 느리다는 것은 맞습니다. 아무래도
Variable width charset이 Fixed-width charset보다 느릴 수 밖에요. 하지만 얼
마나 느린가에 대해서는 정확히 말씀드릴 수는 없습니다. 하지만 순수하게 한
글 데이타만 저장할 것이 아니라면 AL16UTF16의 경우 영문 데이타 처리에 공간
적 비용이 매우 큽니다. 그래서 일반적으로는 AL32UTF8 charset을 유니코드
charset으로 사용합니다.

2. Web page processing을 UTF8로 하신다는 것은 다국어 지원 클라이언트를 원
하시는 것으로 받아들여집니다. 당연히 데이타베이스는 유니코드 기반의 데이타
베이스를 사용하셔야 합니다. 한글만 처리할 경우에는 Web Client 자체가 유니
코드 기반일 필요는 없겠지요. 그렇다고 안 되는 것은 아닙니다.

3. 그것은 KO16KSC5601 charset이 순수 한글만 포함된 것이 아니라 한자 4880
자, Hiragana 83자, katakana 86자를 포함하고 있기 때문입니다.

nvarchar2컬럼에 데이터입력
4. TO_NCHAR 또는 N''data''를 이용하시면 되겠습니다.
INSERT INTO ... VALUES(TO_NCHAR(''Data''), N''Data'',..);



UTF8과 KO16KSC5601은 성능 이외의 중요한 차이점이 있습니다.

KO16KSC5601은 한글 완성형(KSC5601)을 지원하는 캐릭터셋으로 한글 2350자, 한
자 4880자, 히라카나와 카타카나 53자를 포함한 캐릭터셋입니다. 2바이트를 원
하신다면 차라리 KO16MSWIN949를 선택하셔야 합니다. 운영체제는 전혀 상관없습
니다. 유닉스에서도 KO16MSWIN949를 문제없이 사용할 수 있습니다.

UTF8을 사용하면 공간 활용도가 줄어들 것입니다. 하지만 한글을 정렬해야 할
작업이 많은 경우 오히려 높은 성능을 보여줄 수 있습니다.

KO16MSWIN949는 상대적으로 공간을 절약할 수 있습니다. 하지만 한글 정렬시
UNICODE_BINARY로 정렬해야 하며 정렬의 성능이 좋지 않을 수 있습니다.

실제 트랜잭션들이 과도하게 몰려 바쁘지 않은 이상 한 트랜잭션에서 느낄 수
있는 성능의 차이는 크지 않습니다.

데이타에서 한글과 영문의 빈도, 사용자 수를 조사하시어 시뮬레이션 해 보신
후 결정하시는 것이 좋을 것 같습니다.




혹 유사한 고민을 하시는 분들이다 멀티랭귀지/멀티캐릭터셑 프로젝트를 하시는
분들께 도움이 될까 하여 결과를 올립니다.

-
1. 우선 멀티 랭귀지/캐릭터 셑을 지원하기 위해 캐릭터셑들의 슈퍼셑인 유니코
드를 DB charset으로 설정하셔야 합니다.

2. 사용자와의 인터페이스 부분 (웹서버든 WAS이든) 에 default charset을 설정
하실 수 있으니 UTF-8등의 유니코드로 설정 하십시오.
이때 http header에 setContentType등을 활용하십시오.

3. jdbc connection은 thin dirver이면 그냥, OCI driver라면 NLS_LANG=.UTF-8
설정하십시오.

위 과정으로도 어떠한 변환 없이 다국어/다캐릭터셑 입출력이 가능합니다.


이제 사용자와의 인터페이스가 유니코드를 지원하지 않는 경우에 대해 이야기
해 보면,

1. 사용자의 캐릭터 셋 정보로 default charset을 설정합니다. (이 방법은 런타
임시에는 변경하기 힘드므로 권장되지 않음)

2. http header의 charset 부분을 사용자 캐릭터 셑으로 변경 하십시오.

3. 일부 웹서버의 경우 input tx를 위해 request에 setCharactersetEncoding으
로 사용자 캐릭터셋을 설정하십시오. (default charset을 설정하는 웹서버의 경
우 header의 contenttype내 charset보다 default charset을 우선합니다. 이런 경
우 set해주세요)

위 과정으로도 다국어/다캐릭터 처리를 해줄 수 있습니다.
원본 : 오라클에서 유니코드 사용
반응형
Posted by [PineTree]
ORACLE/ADMIN2007. 8. 7. 02:34
반응형

다음과 같은 경우에는 자동으로 relink가 이루어짐

  • Oracle product install
  • Oracle에서 제공하는 installer를 이용한 patch 적용

manual하게 해줘야하는 경우
  • OS upgrade
  • OS system library에 변화가 일어난 경우 (OS patch에서 이루어짐)
  • 새로운 relink가 실패한 경우
  • initial startup 동안 Oracle 실행파일이 core dump를 일으킨 경우
  • Oracle patch 적용된 경우 (README에 명시된 경우에만!!!)

relink
  1. $ORACLE_HOME 변수 설정이 정확한지 체크 (" env | pg" $ORACLE_HOME이 절대경로인지확인)
  2. UNIX 환경변수 점검 (LIBPATH, LD_LIBRARY_PATH, SHLIB_PATH)
    setenv LD_LIBRARY_PATH ${ORACLE_HOME}/lib:${LD_LIBRARY_PATH}
    Solaris 경우
    Oracle 7.3.X, 8.0.X, or 8.1.X:
    $PATH에 /usr/ccs/bin 가 /usr/ucb 보다 앞에 있는지 확인
    32bit(non 9i) Oracle : LD_LIBRARY_PATH=$ORACLE_HOME/lib
    64bit(non 9i) Oracle : LD_LIBRARY_PATH=$ORACLE_HOME/lib, LD_LIBRARY_PATH_64=$ORACLE_HOME/lib64
    Oracle 9.X.X (64Bit) on Solaris (64Bit) OS : LD_LIBRARY_PATH=$ORACLE_HOME/lib32, LD_LIBRARY_PATH_64=$ORACLE_HOME/lib
    Oracle 9.X.X (32Bit) on Solaris (64Bit) OS : LD_LIBRARY_PATH=$ORACLE_HOME/lib
  3. DB가 shutdown된 상태인지와 listener가 내려간 상태인지 확인 (참고:component 가 제대로 설치되지않은 경우 fail남)
  4. Oracle 7.3.x
    For executables: oracle, exp, imp, sqlldr, tkprof
    cd $ORACLE_HOME/rdbms/lib
    make -f ins_rdbms.mk install
    For executables: svrmgrl, svrmgrm
    cd $ORACLE_HOME/svrmgr/lib
    make -f ins_svrmgr.mk linstall minstall (linstall is for svrmgrl, minstall is for svrmgrm)
    For executables: sqlplus
    cd $ORACLE_HOME/sqlplus/lib
    make -f ins_sqlplus.mk install
    For executables: dbsnmp, oemevent, oratclsh
    cd $ORACLE_HOME/network/lib
    make -f ins_agent.mk install
    For executables: names, namesctl
    cd $ORACLE_HOME/network/lib
    make -f ins_names.mk install
    For executables: tnslsnr, lsnrctl, tnsping, csmnl, trceval, trcroute
    cd $ORACLE_HOME/network/lib
    make -f ins_network.mk install
  5. Oracle 8.0.x
    For executables: oracle, exp, imp, sqlldr, tkprof, mig, dbv, orapwd, rman, svrmgrl, ogms, ogmsctl
    cd $ORACLE_HOME/rdbms/lib
    make -f ins_rdbms.mk install
    For executables: sqlplus
    cd $ORACLE_HOME/sqlplus/lib
    make -f ins_sqlplus.mk install
    For executables: dbsnmp, oemevent, oratclsh, libosm.so
    cd $ORACLE_HOME/network/lib
    make -f ins_oemagent.mk install
    For executables: tnslsnr, lsnrctl, namesctl, names, osslogin, trcasst, trcroute
    cd $ORACLE_HOME/network/lib
    make -f ins_network.mk install
  6. Oracle 8.1.X or 9.X.X
    cd $ORACLE_HOME/bin
    relink
    accepted values for parameter: all, oracle, network, client, client_sharedlib, interMedia, precomp, utilities, oemagent, ldap
    또는
    For executables: oracle, exp, imp, sqlldr, tkprof, mig, dbv, orapwd, rman, svrmgrl, ogms, ogmsctl #: cd $ORACLE_HOME/rdbms/lib
    make -f ins_rdbms.mk install
    For executables: sqlplus
    cd $ORACLE_HOME/sqlplus/lib
    make -f ins_sqlplus.mk install
    For executables: isqlplus
    cd $ORACLE_HOME/sqlplus/lib
    make -f ins_sqlplus install_isqlplus
    For executables: dbsnmp, oemevent, oratclsh
    cd $ORACLE_HOME/network/lib
    make -f ins_oemagent.mk install
    For executables: names, namesctl
    cd $ORACLE_HOME/network/lib
    make -f ins_names.mk install
    For executables: osslogin, trcasst, trcroute, onrsd, tnsping
    cd $ORACLE_HOME/network/lib
    make -f ins_net_client.mk install
    For executables: tnslsnr, lsnrctl
    cd $ORACLE_HOME/network/lib
    make -f ins_net_server.mk install
    For executables related to ldap (for example Oracle Internet Directory):
    cd $ORACLE_HOME/ldap/lib
    make -f ins_ldap.mk install


 
  For executables: sqlplus
 
  % cd $ORACLE_HOME/sqlplus/lib
  % make -f ins_sqlplus.mk install
 
  For executables: dbsnmp, oemevent, oratclsh, libosm.so
 
  % cd $ORACLE_HOME/network/lib
  % make -f ins_oemagent.mk install
 
  For executables: tnslsnr, lsnrctl, namesctl, names, osslogin, trcasst,
  trcroute
 
  % cd $ORACLE_HOME/network/lib 
  % make -f ins_network.mk install

 

 

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

:  How to Relink Oracle Database Software on UNIX
  문서 ID:  공지:131321.1 유형:  BULLETIN
  마지막 갱신 날짜:  15-MAY-2007 상태:  PUBLISHED


PURPOSE
-------

Provide relinking instructions for Oracle Database software
on UNIX platforms.

 
SCOPE & APPLICATION
-------------------

Anyone who maintains Oracle RDBMS software on a UNIX platform.


Relinking Oracle
================

Background:
Applications for UNIX are generally not distributed as complete executables. 
Oracle, like many application vendors who create products for UNIX, distribute
individual object files, library archives of object files, and some source
files which then get ?relinked? at the operating system level during
installation to create usable executables.  This guarantees a reliable
integration with functions provided by the OS system libraries.

Relinking occurs automatically under these circumstances:

 - An Oracle product has been installed with an Oracle provided installer.
 - An Oracle patch set has been applied via an Oracle provided installer. 

The following information has been added to the 'Certify' section of Metalink:

   General Notes For Oracle Database - Enterprise Edition:
   O/S Information:
   The vendors guarantee operating system binary compatibility; therefore, no
   reinstall or relink of the Oracle software is required when upgrading these
   operating systems unless specifically stated otherwise.

Relinking Oracle manually is suggested under the following circumstances
(even though the OS vendor may not require it):

 - An OS upgrade has occurred.
 - A change has been made to the OS system libraries.  This can occur during
   the application of an OS patch.
 - A new install failed during the relinking phase.
 - Individual Oracle executables core dump during initial startup.
 - An individual Oracle patch has been applied (however, explicit relink
   instructions are usually either included in the README or integrated into
   the patch install script)

Customers who want to (or have been advised to) manually relink should follow
the procedure below.

[Step 1] Log into the UNIX system as the Oracle software owner
==============================================================================
Typically this is the user 'oracle'.
 

[STEP 2] Verify that your $ORACLE_HOME is set correctly:
===============================================================================
For all Oracle Versions and Platforms, perform this basic environment check
first:
 
 % cd $ORACLE_HOME
 % pwd   

 ...Doing this will ensure that $ORACLE_HOME is set correctly in your current
    environment.
 

[Step 3] Verify and/or Configure the UNIX Environment for Proper Relinking:
===============================================================================
For all Oracle Versions and UNIX Platforms:
 The Platform specific environment variables LIBPATH, LD_LIBRARY_PATH, &
 SHLIB_PATH typically are already set to include system library locations like
 '/usr/lib'.  In most cases, you need only check what they are set to first,
 then add the $ORACLE_HOME/lib directory to them where appropriate.
 i.e.:  % setenv LD_LIBRARY_PATH ${ORACLE_HOME}/lib:${LD_LIBRARY_PATH}
 (see Note 131207.1 How to Set UNIX Environment Variables for help with
 setting UNIX environment variables)

If on AIX with:
--------------
   
    Oracle 7.3.X:
       - Set LIBPATH to include $ORACLE_HOME/lib
   
    Oracle 8.0.X:
       - Set LIBPATH to include $ORACLE_HOME/lib
       - Set LD_LIBRARY_PATH to include $ORACLE_HOME/lib and
         $ORACLE_HOME/network/lib (Required when using Oracle products that
         use Java)
       - Set LINK_CNTRL to L_PTHREADS_D7 if using AIX 4.3. ('oslevel' verifies
         OS version)
   
    Oracle 8.1.X, 9.X.X or 10.X.X:
       - For 8.1.5, set LINK_CNTRL to L_PTHREADS_D7
       - If not 8.1.5, ensure that LINK_CNTRL is not set
       - Set LIBPATH to include $ORACLE_HOME/lib
     

If on DATA GENERAL AVIION (DG) with:
-----------------------------------

    Oracle 7.3.X or 8.0.X:
       - Set LD_LIBRARY_PATH to include $ORACLE_HOME/lib
       - ensure TARGET_BINARY_INTERFACE is unset
   
    Oracle 8.1.X:
       - Set LD_LIBRARY_PATH to include
         $ORACLE_HOME/lib:$ORACLE_HOME/JRE/lib/PentiumPro/native_threads

If on HP-UX with:
----------------

    Oracle 7.3.X, 8.0.X, 8.1.X;
       - Set SHLIB_PATH to $ORACLE_HOME/lib
       If using 64bit 8i Oracle, also
       - Set LD_LIBRARY_PATH to $ORACLE_HOME/lib64
       - ensure LPATH is unset
 
    Oracle 9.X.X or 10.X.X;
       - ensure LPATH is unset

If on NCR with:
--------------

    Oracle 7.3.X, 8.0.X or 8.1.X:
       - Set LD_LIBRARY_PATH to include $ORACLE_HOME/lib:/usr/ccs/lib

If on SCO UNIXware with:
-----------------------

    Oracle 7.3.X or 8.0.X:
       - Set LD_LIBRARY_PATH to include $ORACLE_HOME/lib
   
    Oracle 8.1.X:
       - Set LD_LIBRARY_PATH to include
         $ORACLE_HOME/lib:$ORACLE_HOME/JRE/lib/x86at/native_threads

If on SGI with:
--------------

    32bit Oracle 7.3.X or 8.0.X:
       - Set LD_LIBRARY_PATH to include $ORACLE_HOME/lib
       - Set SGI_ABI to -32 

    64bit Oracle 8.0.X or 8.1.X (8i is only available in 64bit):
       - Set LD_LIBRARY_PATH to include $ORACLE_HOME/lib
       - Set SGI_ABI to -64
       - If one does not already exist, create the file compiler.defaults and
         set the COMPILER_DEFAULTS_PATH variable:

     In the Oracle software owner's $HOME directory, create a file called
     'compiler.defaults':
 
        % cd $HOME
        % echo "-DEFAULT:abi=64:isa=mips3:proc=r10k" > compiler.defaults

     Then set the environment variable COMPILER_DEFAULTS_PATH to point to the
     $HOME directory.
 
        % setenv COMPILER_DEFAULTS_PATH $HOME
 
     If this is not set, relinking will fail because the compiler defaults to
     MIPS4 objects although Oracle requires MIPS3.
       - Set LD_LIBRARY64_PATH to include the $ORACLE_HOME/lib and the
         $ORACLE_HOME/javavm/admin directories.
       - Set LD_LIBRARYN32_PATH to include the $ORACLE_HOME/lib32 directory.
         NOTE: LD_LIBRARY64_PATH & LD_LIBRARYN32_PATH must be undefined when
         installing software with Oracle Universal Installer.

If on SOLARIS (Sparc or Intel) with:
------------------------------------

    Oracle 7.3.X, 8.0.X, or 8.1.X:
       - Ensure that /usr/ccs/bin is before /usr/ucb in $PATH 
         % which ld   ....should return '/usr/ccs/bin/ld'

       If using 32bit(pre 9i) Oracle,
       - Set LD_LIBRARY_PATH=$ORACLE_HOME/lib

       If using 64bit(pre 9i) Oracle,
       - Set LD_LIBRARY_PATH=$ORACLE_HOME/lib
       - Set LD_LIBRARY_PATH_64=$ORACLE_HOME/lib64

    Oracle 9.X.X or higher:
       - LD_LIBRARY_PATH & LD_LIBRARY_PATH_64 do not need to be set to include
         a reference to $ORACLE_HOME/lib or $ORACLE_HOME/lib64 for a generic database
         software installation.
         (However they should not contain a reference to the ORACLE_HOME of another Oracle version)

If on Digital/Tru64, IBM/Sequent PTX, Linux or any other UNIX Platform not
mentioned above with:
------------------------------------------------------------------------------

    Oracle 7.3.X, 8.0.X, 8.1.X, 9.X.X or 10.X.X:
       - Set LD_LIBRARY_PATH to include $ORACLE_HOME/lib


[Step 4] For all Oracle Versions and UNIX Platforms:
===============================================================================
Verify that you performed Step 2 correctly:

 % env|pg  ....make sure that you see the correct absolute path for
   $ORACLE_HOME in the variable definitions.
 

[Step 5] For all Oracle Versions and UNIX Platforms:
===============================================================================
Verify umask is set correctly:

 % umask

This must return 022.  If it does not, set umask to 022.

 % umask 022
 % umask

[Step 6] Run the OS Commands to Relink Oracle:
===============================================================================
Important Note:  Before relinking Oracle, shut down both the database and the
                 listener.
Important Note:  The following commands will output a lot of text to your
                 session window.
Important Note:  If relinking a client installation, it's expected that some
                 aspects of the following commands will fail if the components
                 were not originally installed.

For all UNIX platforms:

Oracle 7.3.x
------------
 For executables:  oracle, exp, imp, sqlldr, tkprof

      % cd $ORACLE_HOME/rdbms/lib
      % make -f ins_rdbms.mk install

 For executables:  svrmgrl, svrmgrm

      % cd $ORACLE_HOME/svrmgr/lib
      % make -f ins_svrmgr.mk linstall minstall      <- linstall is for svrmgrl,
                                                        minstall is for svrmgrm

 For executables:  sqlplus

      % cd $ORACLE_HOME/sqlplus/lib
      % make -f ins_sqlplus.mk install

 For executables:  dbsnmp, oemevent, oratclsh

      % cd $ORACLE_HOME/network/lib
      % make -f ins_agent.mk install

 For executables:  names, namesctl

      % cd $ORACLE_HOME/network/lib
      % make -f ins_names.mk install

 For executables:  tnslsnr, lsnrctl, tnsping, csmnl, trceval, trcroute

      % cd $ORACLE_HOME/network/lib
      % make -f ins_network.mk install


Oracle 8.0.x
------------
 For executables:  oracle, exp, imp, sqlldr, tkprof, mig, dbv, orapwd, rman,
                   svrmgrl, ogms, ogmsctl

      % cd $ORACLE_HOME/rdbms/lib
      % make -f ins_rdbms.mk install

 For executables:  sqlplus

      % cd $ORACLE_HOME/sqlplus/lib
      % make -f ins_sqlplus.mk install

 For executables:  dbsnmp, oemevent, oratclsh, libosm.so

      % cd $ORACLE_HOME/network/lib
      % make -f ins_oemagent.mk install

 For executables:  tnslsnr, lsnrctl, namesctl, names, osslogin, trcasst,
                   trcroute

      % cd $ORACLE_HOME/network/lib
      % make -f ins_network.mk install


Oracle 8.1.X, 9.X.X or 10.X.X
------------------------------
  *** NEW IN 8i AND ABOVE ***

   A 'relink' script is provided in the $ORACLE_HOME/bin directory.
     % cd $ORACLE_HOME/bin
     % relink      ...this will display all of the command's options.
       usage: relink <parameter>
       accepted values for parameter: all, oracle, network, client,
       client_sharedlib, interMedia, precomp, utilities, oemagent, ldap
 
  Note: ldap option is available only from 9i. In 8i, you would have to manually relink
  ldap.

  You can relink most of the executables associated with an Oracle Server Installation
  by running the following command:
     % relink all   
  This will not relink every single executable Oracle provides(you can
  discern which executables were relinked by checking their timestamp with
  'ls -l' in the $ORACLE_HOME/bin directory).  However, 'relink all' will
  recreate the shared libraries that most executables rely on and thereby
  resolve most issues that require a proper relink.

 
 -or-

  Since the 'relink' command merely calls the traditional 'make' commands, you
  still have the option of running the 'make' commands independently:

 For executables:  oracle, exp, imp, sqlldr, tkprof, mig, dbv, orapwd, rman,
                   svrmgrl, ogms, ogmsctl

      % cd $ORACLE_HOME/rdbms/lib
      % make -f ins_rdbms.mk install

      NOTE: After relinking the oracle executable, make sure that the
      permissions on the executable are 6751 (-rwsr-s--x). If they are
      not, run the following command as the Oracle software owner:

      % cd $ORACLE_HOME/bin
      % chmod 6751 oracle

 For executables:  sqlplus

      % cd $ORACLE_HOME/sqlplus/lib
      % make -f ins_sqlplus.mk install

 For executables:  isqlplus

      % cd $ORACLE_HOME/sqlplus/lib
      % make -f ins_sqlplus install_isqlplus

 For executables:  dbsnmp, oemevent, oratclsh

      % cd $ORACLE_HOME/network/lib
      % make -f ins_oemagent.mk install

      NOTE: After relinking the dbsnmp executable, it is necessary to run
      the following commands as root (so that the ownership/permissions on
      the executable are correct):

      # cd $ORACLE_HOME/bin
      # chown root dbsnmp
      # chmod 6750 dbsnmp

      @ References: Note 233559.1 and Bug 2858326

 For executables:  names, namesctl

      % cd $ORACLE_HOME/network/lib
      % make -f ins_names.mk install

 For executables:  osslogin, trcasst, trcroute, onrsd, tnsping

      % cd $ORACLE_HOME/network/lib
      % make -f ins_net_client.mk install

 For executables:  tnslsnr, lsnrctl

      % cd $ORACLE_HOME/network/lib
      % make -f ins_net_server.mk install

 For executables related to ldap (for example Oracle Internet Directory):

      % cd $ORACLE_HOME/ldap/lib
      % make -f ins_ldap.mk install

How to Tell if Relinking Was Successful:
===============================================================================
If relinking was successful, the make command will eventually return to the OS
prompt without an error. There will NOT be a 'Relinking Successful' type
message.


If You Receive an Error Message During Relinking:
===============================================================================
Confirm that the message you received is an actual fatal error and not a
warning. Relinking errors usually terminate the relinking process and contain
verbage similar to the following:
'Fatal error', 'Ld: fatal', 'Exit Code 1'
While warnings will look similar to: 'ld: warning: option -YP appears more than
once, first setting taken' and can most often be ignored.

If you receive an error that terminates the relinking process, your first step
should be to extract the relevant information about the error from the make
output:

This can be broken down into three basic steps:
 1. Identify the OS utility that is returning the error.
    'ld', 'make', 'cc', 'mv', 'cp', 'ar' are common sources.
 2. Identify the type of error:
    'Permission Denied', 'Undefined Symbol', 'File Not Found' are common types.
 3. Identify the files or symbols involved.

Using the information from above as keywords, search Oracle's Metalink
repository (MetaLink.oracle.com) for previous occurrences of the same error. 
If no previous occurances are found or a solution is not provided, generate an
iTAR that includes the complete error text.

Help setting environment variables.
==============================================================================
See Note 131207.1 How to Set UNIX Environment Variables
for help with setting UNIX environment variables.


Relinking with Orainst:
===============================================================================
For Oracle7 & Oracle8 only, the following document illustrates how to relink
with the 'orainst' utility:
   Note 1032747.6 HOW TO RELINK ORACLE USING THE 7.3.X INSTALLER
While 'orainst' will run the same commands as [Step 4], performing [Step 4]
manually from a UNIX shell is the preferred approach.


RELATED DOCUMENTS
-----------------

Note 131207.1   How to Set UNIX Environment Variables
Note 109621.1   HP/UX: LD_LIBRARY_PATH and SHLIB_PATH
Note 1032747.6  HOW TO RELINK ORACLE USING THE 7.3.X INSTALLER
Bug 1337908     THE $ORACLE_HOME/BIN/RELINK SCRIPT DOES NOT RELINK EXP, IMP
                  SQLLOADER

 

반응형

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

DATABASE LINK 사용법  (0) 2007.12.07
oracle lock  (0) 2007.08.14
Oradebug Command  (0) 2007.08.04
10g SYSAUX tablespace 줄이기  (0) 2007.08.02
RMAN  (0) 2007.07.24
Posted by [PineTree]
ORACLE/ADMIN2007. 7. 6. 01:46
반응형

Application 수행 중 자주 발생하는 Snapshot too old (ORA-01555) 에러에 대하여 많은 개발자 및 DBA들이

에러 발생의 원인에 대하여 빈번하게 문의를 하고 있어 간단하게 원인 및 대처 방안에 대하여 알아보고자 한다.

 

이 에러의 발생 원인은 SQL 수행 중 읽고자 하는 데이터가 다른 Transaction에 의해 변경이 되었고,

변경 전 데이터를 RBS에서 읽고자 했으나 찾지 못하는 경우에 발생하는 에러이다.

 

이러한 에러 발생의 주요 원인으로는 RBS (or Undo)가 너무 작기 때문에 Commit 된 Old Image가 RBS에서

삭제 (Re-write)되는 일이 발생할 수도 있으나, 대부분의 경우는 에러가 발생한 Application의 SQL이 너무

오래 돌기 때문에 (Long-running Query) 발생하는 경우가 대부분이다.

 

즉, SQL이 실행된 시점에는 읽고자 하는 데이터가 A 였으나 다른 Transaction에 의해 B로 Update되었고,

Commit이 실행 되었으므로 RBS에서 다른 Transaction에 의해 해당 RBS의 Extent가 재사용되는 경우에

A라는 Old-Image가 없어지게 되는 것이다.

 

해당 데이터를 읽고자 했던 프로세스가 오랜시간 이후에 해당 데이터를 RBS에서 읽고자 했으나,

이미 다른 Transaction에 의해 A라는 Image가 없어서 버린 이후 이므로 Snapshot too old 에러를 발생하게 되는 것이다.

 

일반적으로 운영 DB에서는 RBS 또는 UNDO Tablespace를 충분히 설정하는 경우가 대부분이며, 9i 이후 부터 적용된

UNDO_RETENTION도 충분히 크게 설정했다면 SQL의 수행시간이 너무 긴 것이 에러 발생의 주요 원인일 것이며,

RBS 또는 UNDO Size의 검토 와 SQL의 성능을 검토하는 것이 좋다.

 

SQL이 오래 수행되는 주요 원인은 아래와 같다.

 

1. 비효율적인 실행 계획 (Exection plan)

    - 의도하지 않은 Cartesian merge join

    - 비효율적인 조인 순서등으로 불필요한 블록 액세스가 발생하는 경우

    - 특정 테이블이 FULL SCAN으로 액세스되면서 Nested Loop 조인되는 경우

    - 비효율적인 인덱스를 사용하는 Nested Loop

    - Hash Join시 대용량 테이블이 Proning되는 경우 (Direct path read/write waiting, Disk I/O)

    - Non-mergeable view에 bind변수로 검색조건을 사용하거나 다른 테이블과의 조인에 사용하는 경우

2. 검색범위가 너무 넓은 경우

    - 처리해야 할 데이터 (READ 해야 할 데이터)의 범위가 너무 넓은 경우 (예: 3년치 SALES 데이터 SUMMARY)

    - 검색조건에 아무것도 넣지 않고 SEARCH 하는 경우

 

위의 경우 말고도 SQL의 성능이 저하되는 경우는 많이 있으므로 ORA-01555 에러가 발생할 경우

SQL의 응답속도에 문제가 없는지를 먼저 검토하는 것이 필요하다.

반응형

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

10g SYSAUX tablespace 줄이기  (0) 2007.08.02
RMAN  (0) 2007.07.24
오라클9i 데이타베이스 초기화 매개변수(전부) 설명  (0) 2007.06.30
오라클 버젼 확인 명령어  (0) 2007.06.19
패스워드 제한 설정  (0) 2007.06.16
Posted by [PineTree]