ORACLE/TUNING2009. 2. 3. 14:53
반응형
Oracle 10g에서 Online Segment Shrink 기능이 추가되면서, 동적으로 Segment의 크기를 줄여 줄 수 있게 되었다. 그러면 다음과 같은 질문을 할 수 있겠다.

"Shrink 대상이 되는 Segment(Table/Index/Partition) 목록을 어떻게 추출할 것인가?"

이런 작업을 수동으로 하려면 dbms_space 패키지를 이용한 일련의 복잡한 Script 작업이 필요하다. Segment 수가 많고 크기가 크다면 많은 시간과 리소스를 필요로 하는 일이 되어 버린다.

다행히 Oracle 10g에서 이러한 작업을 자동화하는 기능이 추가되었다.
아래와 같이 dba_scheduler_job 뷰를 조회해보면, auto_space_advisor_job이라는 스케쥴 작업이 등록되어 있고, 이 작업은 auto_space_advisor_prog이라는 프로그램을 수행한다.

select job_name, program_name
from dba_scheduler_jobs
where job_name like '%SPACE%';
-----------------------------------------------------
JOB_NAME               : AUTO_SPACE_ADVISOR_JOB      
PROGRAM_NAME           : AUTO_SPACE_ADVISOR_PROG

auto_space_advisor 프로그램은 dbms_space.auto_space_advisor_job_proc이라는 프로시저를 수행한다.

select program_name, program_action
from dba_scheduler_programs
where program_name = 'AUTO_SPACE_ADVISOR_PROG';
------------------------------------------------------------
PROGRAM_NAME          : AUTO_SPACE_ADVISOR_PROG   
PROGRAM_ACTION        : dbms_space.auto_space_advisor_job_proc

Auto Space Advisor는 Advisor의 한 종류로 10g에서 새로 추가된 Advisor이다. 이 Advisor는 Tablespace/Segment의 공간 사용 정도를 분석하여 공간을 절약하기 위해 적절한 충고/가이드를 하는 역할을 제공한다.

Auto Space Advisor에 의해 만들어진 가이드는 다음과 같은 방법으로 간편하게 조회 가능하다.

-- dbms_space.verify_shrink_candidate(_tbf) 이용
select * from
table(dbms_space.verify_shrink_candidate_tbf(user,'BIG_TABLE','TABLE',273395165));

declare
    b_shrinkable boolean;
begin
    b_shrinkable := dbms_space.verify_shrink_candidate
        (user,'T_SHRINK','TABLE',1000);
    if b_shrinkable then
        dbms_output.put_line('Shrinkable');
    else
        dbms_output.put_line('Unshrinkable');
    end if;
end;
/

-- dbms_space.asa_recommendations 이용
select * from table(dbms_space.asa_recommendations());

-- dbms_space.asa_recommendations은 다음과 같이 어떤 Segment가 얼마나 공간을 절약할 수 있고, 어떤 명령문을 사용하면 되는지 친절하게 알려준다.
-------------------------------------------------------------
SEGMENT_NAME                  : BIG_TABLE
SEGMENT_TYPE                  : TABLE
ALLOCATED_SPACE               : 300619974
USED_SPACE                    : 273395165
RECLAIMABLE_SPACE             : 27224809
RECOMMENDATIONS               : OWI.BIG_TABLE 테이블의 행 이동을 가능하게 하고 축소 작업을 수행하는 경우 예상되는 절약 공간은 27224809바이트입니다.
C1                            : alter table "OWI"."BIG_TABLE" shrink space
C2                            : alter table "OWI"."BIG_TABLE" shrink space COMPACT
C3                            : alter table "OWI"."BIG_TABLE" enable row movement

Oracle 이 제공하는 Advisor 기능이 점점 다양해지고 정밀해지면서 데이터베이스 진단에 필요한 각종 검증 작업이 대부분 자동화되고 있다. Buffer Cache의 크기나 Shared Pool 크기 진단에서 시작해서 Segment Space 크기 진단으로, 그리고 SQL 성능 자동 진단으로까지 발전하고 있다. Oracle 11g에서는 SQL 성능 진단에서 Index/Materialized View(10g)에 Partition 추천까지 추가될 정도로 이 자동 진단 기능이 확장되고 있다.

아마 이런 자동 진단 및 추천 기능들이 앞으로는 DBA들이 알아야 할 필수 지식이 되지 않을까.

출처 : http://ukja.tistory.com/89
반응형
Posted by [PineTree]
ORACLE/TUNING2009. 2. 3. 14:44
반응형
Oracle 9i에서 Bind Peeking 기능이 소개된 것은 익히 알려진 사실이다.
Bind Peeking이란 Bind 변수를 사용하는 경우, Query가 최초로 실행되는 시점의 실제 Bind 값을 이용해서(Peeking해서) 실행 계획을 세우는 것을 의미한다.

Bind 변수를 사용하는 경우 실제로 실행되는 시점에 어떤 값이 들어오는지 알 수 없기 때문에 컬럼의 평균적인 분포만을 가지고 비용을 계산할 수 밖에 없다. 대부분의 경우에는 큰 문제가 안되지만, 다음과 같은 경우에는 치명적인 단점을 가지고 있다.

가령 status 컬럼의 분포가 다음과 같다고 하면...
 - status = 1  : 99%
 - status = 99 : 1%

이 경우
- Where status = '1' 이면 인덱스를 경유하지 않고 Full Table Scan을 하는 것이 유리하다
- Where status = '99' 이면 인덱스를 경유하는 것이 유리하다.

하지만,
- Where status = :b1 과 같이 Bind 변수를 사용하면 어떤 값이 올지 모르기 때문에 평균적인 분포를 따르게 된다. 따라서 이 경우 반드시 Full Table Scan을 선택한다.

Bind Peeking은 이러한 단점을 피하기 위해 쿼리가 실행되는 최초 시점에 Bind 변수에 들어온 값을 이용하게 된다. 즉, 쿼리가 최초로 실행되는 시점에

exec :b1 := '1';
... Where status = :b1

과 같이 실행되면 Full Table Scan을,

exec :b2 := '99';
... Where status = :b1

과 같이 실행되면 Index Range scan을 선택하게 된다.
단, 위와 같이 작동하려면 컬럼 값이 "1" 인 경우와 "99"인 경우의 분포도의 차이를 Oracle이 명확하게 이해하고 있어야 되므로 Histogram이 반드시 존재해야 한다. 가령

exec dbms_stats.gather_table_stats(user, 'TABLE_NAME', method_opt=>'for columns size 2 status');

와 같이 컬럼에 대해 적당한 크기의 Histogram이 생성되어 있어야 된다.

위의 설명을 이해했다면 Bind Peeking에는 기본적인 딜레마가 있음을 알 수 있다. 위의 예를 보면 쿼리가 최초로 실행되는 시점에 "1"의 값이 오느냐, "99"의 값이 오느냐에 따라 실행 계획이 결정된다. 어떤 쪽이든 한 쪽은 손해를 볼 수 밖에 없는 결정적인 구조적 한계를 가지고 있다.

이런 구조적 한계를 가진 기능을 제공한다는 것은 기본적인 설계의 결함이라고 할 수 있다. 덕분에 많은 시스템에서 Bind Peeking 기능을 비활성화시켜 버리고 있다. _optim_peek_user_binds 파라미터 값을 false로 지정해 버리는 것이다.

이런 경향은 10g에서 특히 심한데, 그 이유는 10g에서 dbms_stats의 method_opt 파라미터의 기본값이 for all columns size auto로 바뀌는 바람에 Histogram의 생성 여부를 Oracle이 자동으로 판단해버리는데 있다. 이전 버전에서는 for all columns size 1 이 기본값으로 Histogram이 생성되지 않았다.
Histogram이 없으면 Bind Peeking에 의한 부작용은 거의 없다. 10g에서 Histogram의 생성 여부를 Oracle이 판단함으로써 이전 버전에서는 존재하지 않던 Histogram이 갑자기 생성되고 이로 인해 Bind Peeking의 결함이 더욱 두드러지게 나타나게 되어 버린 것이다.
이 때문에 Oracle 10g에서는 _optim_peek_user_binds 파라미터를 False로 바꾸는 것이 기본 권고안처럼 되어 버릴 정도가 되었다.

하지만, Oracle 11g에서 아주 큰 희소식이 전달되었다. 이른바 Adaptive Cursor Sharing이라는 기능이 소개된 것인데, 이 기능으로 인해 Bind Peeking과 Histogram의 조합에 의한 부작용이 말끔히 해소될 수 있다.

Adaptive Cursor Sharing이란 말 그대로 상황에 맞게 유연하게 Cursor를 Share하겠다는 의미이다. 이 개념을 구현하기 위해 Oracle은 Bind Sensitive Cursor, Bind Aware Cursor라는 새로운 개념을 도입했다.
Bind Sensitive Cursor란, 말 그대로 Bind 값에 민감한 Cursor라는 의미이다. 즉, Bind 값이 바뀌면 그것을 민감하게 처리하겠다는 의미이다. 1) Equal 조건에서는 조건절에 쓰인 컬럼에 Histogram이 있고 2) Range 조건인 경우 Oracle은 이것을 Bind Senstive Cursor라고 부른다.
Bind Aware Cursor란, Bind Sensitive Cursor에 입력된 Bind 값에 따라 실행 계획이 분화된 Cursor를 의미한다. 즉, Bind Aware Cursor가 생성되었다는 것은 Bind 변수의 값에 따라 Oracle이 적절한 Child Cursor를 생성했다는 것을 의미한다.

Adaptive Cursor Sharing 기법을 사용하면 Bind Peeking에 의해 최초 실행 시점에 실행 계획이 결정되더라도 이후 새로운 Bind 변수 값이 사용되면 이에 맞게 실행 계획을 분화(새로운 Child Cursor 생성)시킨다. 따라서 Bind Peeking에 의한 부작용이 사실상 없어지게 된다.
단, 조건절에 쓰인 컬럼에 Histogram이 있고, Histogram의 분포도에 따라 실행 계획에 큰 차이가 있을 수 있다고 판단된다는 조건이 중요하다. 즉, 적절한 Histogram 없이는 의미가 없다는 것이다. Histogram은 이제 우리가 반드시 이해하고 활용해야 하는 존재가 되었다.
(dbms_stats의 method_opt 파라미터의 기본값이 for all columns size auto로 바뀌는 순간 이미 Histogram은 피할 수 없는 존재가 되어버렸다는 사실을 기억할 필요가 있겠다)

아래 샘플 코드를 이용하면 Oracle 11g의 Adaptive Cursor Sharing 기법을 이해할 수 있다.

-------------------------------------
-- Oracle 11g Bind Aware Cursor
-- Author: 조동욱
--------------------------------------

-- create objects
drop table acs_table;

create table acs_table(id int, name char(10));

create index acs_table_idx on acs_table(id);

insert into acs_table select 1, 'name' from all_objects where rownum <= 100000

insert into acs_table values(99, 'name');

commit;

-- gather statistics with histogram
exec dbms_stats.gather_table_stats(user, 'ACS_TABLE', estimate_percent=>100, method_opt=>'FOR COLUMNS SIZE 2 ID', cascade=>true);

-- check histogram
select * from dba_tab_histograms where table_name = 'ACS_TABLE';

-- Bind query
alter system flush shared_pool

var id number;

-- id == 1
-- 각 단계마다 아래 쿼리 결과 확인
select sql_id, sql_text,is_bind_sensitive,is_bind_aware
from v$sql where sql_text like 'select count(name) from acs_table%';

exec :id := 1;

select count(name) from acs_table where id = :id;

-- id == 99
exec :id := 99;

select count(name) from acs_table where id = :id;

select count(name) from acs_table where id = :id;

-- id == 1 again
exec :id := 1;

select count(name) from acs_table where id = :id;

-- check mismatch
select * from v$sql_shared_cursor where sql_id = '<sql_id>';

Oracle 11g의 Adaptive Cursor Sharing은 Oracle이 Bind 변수와 Histogram의 기능 개선에 얼마나 노력을 기울이고 있는지를 잘 보여주는 단적인 예이다. 아마 기대컨데, 더 이상 Bind Peeking의 부작용에 대해 고민하지 않아도 되기를 기대해본다.

출처 : http://ukja.tistory.com/87


반응형

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

Nested Loop Join과 Sort Merge Join  (0) 2009.02.06
Oracle 10g에서 Shrink 대상 Segment 찾기  (0) 2009.02.03
오라클 hint 사용법  (2) 2008.11.24
Transaction internals  (0) 2008.11.11
옵티마이저의 비용계산 방법과 실행원리  (0) 2008.11.07
Posted by [PineTree]
ORACLE/SQL2009. 1. 22. 20:57
반응형


◎ SQL PLUS상에서 STORED PROCEDURE 소스 확인 방법



USER_SOURCE 데이터 사전을 이용하면 됩니다.
 
  -- USER_SOURCE의 구조를 살펴보면
  SQL>
DESC USER_SOURCE
   
        이름            유형
------------- ------------------
        NAME          VARCHAR2(30)
        TYPE          VARCHAR2(12)
        LINE            NUMBER
        TEXT          VARCHAR2(4000)
 
 -
NAME : procedure, function, package의 이름을 가지고 있습니다.
 -
TYPE :  function, package, package body, procedure인지 알수 있습니다.
 -
LINE : function, package, package body, procedure의 라인을 보여줍니다.
 -
TEXT : function, package, package body, procedure의 소스를 알 수 있습니다.
 


 
-- 어떤 프로시져들이 존재하는지 확인 
SQL> SELECT DISTINCT
(name) FROM USER_SOURCE WHERE TYPE = ’PROCEDURE’;
 
NAME
------------------------------
FORCURSOR_TEST
IMPLICIT_CURSOR
 




-- 프로시져 소스의 확인
SQL> SELECT
text FROM USER_SOURCE WHERE name=’FORCURSOR_TEST’;

 -- 쿼리 결과
     PROCEDURE ForCursor_Test
        IS

        CURSOR dept_sum IS
        SELECT b.dname, COUNT(a.empno) cnt, SUM(a.sal) salary
        FROM emp a, dept b
        WHERE a.deptno = b.deptno
        GROUP BY b.dname;
     BEGIN
       -- Cursor를 FOR문에서 실행시킨다
       FOR emp_list IN dept_sum LOOP
          DBMS_OUTPUT.PUT_LINE(’부서명 : ’ || emp_list.dname);
          DBMS_OUTPUT.PUT_LINE(’사원수 : ’ || emp_list.cnt);
          DBMS_OUTPUT.PUT_LINE(’급여합계 : ’ || emp_list.salary);
       END LOOP;
   EXCEPTION
       WHEN OTHERS THEN
          DBMS_OUTPUT.PUT_LINE(SQLERRM||’에러 발생 ’);
   END;
 
18 개의 행이 선택되었습니다.


  ================================================
    * 오라클 정보공유 커뮤니티 oracleclub.com
    * http://www.oracleclub.com
    * http://www.oramaster.net
    * 강좌 작성자 : 김정식 (oramaster _at_ naver.com)
  ================================================
반응형
Posted by [PineTree]
ORACLE/SQL2009. 1. 22. 20:52
반응형
-- 테스트 테이블 생성
SQL>CREATE TABLE test_str(
        val varchar2(10));
 
 
-- 테이블에 아래와 같이 특수문자를 인서트 할경우
SQL> INSERT INTO test_str VALUES(’Q&A’);
a의 값을 입력하십시오:
--
이런 문장이 나옵니다..  
--
특수문자를 갖는 데이터를 인서트 하기 위해서는 다음과 같은 세 가지 해결 방법이 있습니다.

 
▒ 첫번째 방법

   SQL*Plus에서
SET DEFINE OFFSET SCAN OFF를 실행하여
   
Substitution Variable(&)을 Turn Off시킨다.
 
 
   SQL>
SET DEFINE OFF
   SQL>
INSERT INTO test_str VALUES(’Q&A’);
   1 개의 행이 만들어졌습니다.
   
   SQL>SELECT * FROM test_str;
        VAL
        ------
        Q&A
 

 
▒ 두번째 방법

   SET
DEFINE ON 상태로 유지 시키면서 Substitution Variable을
   다른
Non-Alphanumeric 문자나 Non-White Space 문자(*, % 등등)로 대체시킨다.
 
 
   SQL>
SET DEFINE %
   SQL>
INSERT INTO test_str VALUES(’Q&A’);
   1 개의 행이 만들어졌습니다.
 

 
▒ 세번째 방법

   SET ESCAPE ON 상태에서(DEFINE은 &로, SCAN은 ON 상태로 유지)
   
특수 문자 앞에 ESCAPE 문자인 BACKSLASH(’\’)를 붙인다.
 
 
   SQL>
SET ESCAPE ON
   SQL>
SHOW ESCAPE
        ESCAPE "\" (hex 5c)
   SQL>
INSERT INTO test_str VALUES (’Q\&A’);
   1 개의 행이 만들어졌습니다.


  ================================================
    * 오라클 정보공유 커뮤니티 oracleclub.com
    * http://www.oracleclub.com
    * http://www.oramaster.net
    * 강좌 작성자 : 김정식 (oramaster _at_ naver.com)
  ================================================
반응형
Posted by [PineTree]
OS/HP-UX2009. 1. 21. 16:30
반응형

Glance
- GlancePlus system performance monitor for HP-UX


목차



I. Glance의 소개

  • Glance는 HP-UX 상에서 강력하면서도 쉽게 사용할 수 있는 Systerm performance monitor 툴이다.
    Glance는 Systerm 자원과 Active processes에 대한 일반적인 정보와 CPU, 메모리, Disk IO, Network, NFS
    , System Calls, Swap 또 System Table 화면을 통해 더욱 특수한 정보를 제공해 주며, Glance를 터미널 환
    경에서 실행함으로써 HP 9000 시리즈의 Performance problem의 분석을 도울 수 있다.



II. Options

  • -j interval 스크린 refresh 간격을 초 단위로 설정한다. interval의 범위는 2에서 32767 사이이다.
  • -p [dest] 데이타를 출력할 디바이스를 설정한다. 기본값은 기본 lp device이다.
  • -f dest 데이타를 출력할 파일을 설정한다.
  • -maxpages numpages p 명령으로 출력할 최대 페이지 수를 바꾼다.
  • -command 3절에에서 소개되는 command 를 이용하여 다른 initial screen을 볼 수 있도록 한다. command들 중 일부(첫번째 섹션)만이 이 옵션에 사용될 수 있다.
  • -nice nicevalue Glance 프로세스에 대한 nice priority를 설정할 수 있게 한다. 기본 값은 -10이다.
  • -nosort 소트를 하지 않는다. 이에 따라 CPU overhead가 줄어든다.
  • -lock Glance 가 메모리에 lock시킨다. 이 옵션을 사용함으로써 response time 이 향상 되나 에러가 발생할 수 있다.
  • -adviser_off Adviser없이 Glance를 실행 시킨다.
  • -adviser_only Adviser만을 stdout을 통하여 보여준다. stdout을 파일로 redirection 하여 Glance Adviser가 백그라운드로 돌게 할 수 있다.
  • -iterations count Glance 가 실행되는 최대 횟수를 지정할 수 있다. Glance는 count에 지정된 수 만큼 실행되고 중단된다. count는 2이상이어야 하며, 2 이하일 때는 2번 실행하게 된다.
  • -syntax filename Adviser에 의해 사용될 Syntax 파일을 지정한다. 파일을 지정하지 않 을 경우 '~/adviser.syntax'파일을 사용하고 이 파일이 없을 경우 /var/opt/perf/adviser.syntax 파일을 사용하게 된다.
  • -disks n, -kernel path, -nfs n, -pids n mideavom의 초기값들을 설정하는 데 사용된다.



III. Glance의 사용

  • Command List
    Command Screen Displayed/Description
    a Processor에 할당된 CPU 사용량을 보여 준다.`
    c CPU의 사용에 대한 종합적인 정보를 보여 준다.
    d Disk 사용에 대한 종합적인 정보를 보여 준다.
    g 현재 Process들의 List를 보여 준다.
    i File System에 의한 IO상황을 보여준다.
    l Network By Interface
    m Memory 의 상황을 보여 준다.
    n NFS By System
    t System Tables Report
    u IO By Disk
    v IO By Logical Volume
    w Swap Space
    A Application List
    B Global Wait States
    D DCE Global Activity
    K DCE Process List
    N NFS Global Activity
    P PRM Group List
    T Transaction Tracker
    Y Global System Calls
    ? Command Menu
    S Select a NFS system/Disk/Application/Trans
    s Select a single process
    E Process DCE Activity
    F Process Open Files
    L Process System Calls
    M Process Memory Regions
    O Process DCE Operations
    R Process Resources
    W Process Wait States
    b 앞 페이지로 넘긴다.
    f 다음 페이지로 넘어간다
    h Online help
    j 화면 refresh간격을 조정한다.
    o 프로세스 threshold 를 조정한다.
    p Print toggle
    q 종료
    r 현재 화면을 리프레시 한다.
    y 프로세스의 nice-value를 수정한다.
    z statistics를 0으로 리셋한다.
    > 다음 화면(logical)을 출력한다.
    < 이전 화면(logical)을 출력한다.
    ! 쉘을 띄운다.

  • 위의 command는 Top level screens commands 와 Secondary Screens commands 그리고 misc-
    ellaneous commands의 세개의 그룹으로 나위어 진다. 이중 Top level screens commands가 com-
    mand 옵션에서 사용될 수 있다.





IV. Q & A

  • Q: glance에서 buffer cache의 size가 display되게 하려면?
    A:
    glance -m을 하면 됩니다.
    $ glance -m
  • Q: motif base의 glance를 display 하려면?
    A:/usr/perf/bin/gpm 을 하면 됩니다.
    s800 의 경우에는 DISPLAY=xterm:0.0 ;export DISPLAY 를 setup해야 합니다.
  • Q: kill로 죽인 process가 ps -ef 에는 나타나지 않지만 glance로 보면 살아있는 것처럼 나타납니다.
    A: /usr/perf/bin/midaemon 를 다시 restart하십시요.
    #ps -ef | grep midaemon #kill #/usr/perf/bin/midaemon
  • Q: glance를 실행하면 UNABLE TO INITIALIZE YOUR TERMINAL이라는 error가 발생합니다.
    A: glance는 terminal이 80x24가 되어야 작동합니다. stty -a를 하시면 다음 정보를 볼수 있습니다.
    speed 9600 baud; line = 0; susp = ^Z; dsusp = ^@
    rows = 0; columns = 80
    intr = ^C; quit = ^; erase = ^H; kill = ^U; swtch = ^@
    위에서 rows와 columns를 보면 rows가 0임을 알수 있습니다.
    rows를 다음과 같이 수정합니다.
    #stty rows 24
    다시 glance를 실행하시면 됩니다.
  • Q: glance 실행시 아래와 같은 error message가 뜹니다.
    == Fatal Nums Error == $Header: db.C,v 1.200 95/05/11 13:45:02 smead Exp $ ==
    User: root Date: Tue Sep 12 15:08:52
    File: nums.C Line: 414 Product id: Gpm
    System: ov-serve B.10.01 9000/819

    Midaemon not responding [MI_SHARED:]
    == End of Error Msg =============================
    A:먼저 midaemon을 명령행에서 실행시킵니다.
    # /opt/perf/bin/midaemon
    여전히 error가 발생하면
    /var/opt/perf/datafiles directory가 존재하는지 확인후 만약 없으면 mkdir로 만들어 줍니다.
    # cd /var/opt/perf
    # mkdir datafiles
    # chmod 777 datafiles
    # chown bin:bin datafiles
    glance를 실행시키면 정상적으로 동작할 것입니다.



V. 관련 홈페이지



Copyright

1998 inheaven SPARCS all right reserved
Last Updated at 1998.11.23
참조 문서
  • Glance Man Page
  • http://www.hprc.com.kr/ - Q & A pages

[펌] http://security.kaist.ac.kr/docs/glance/glance.html#options


@@ 파일로 저장@@

# glance
를 실행한후에...

p key를 누르면 ---> c ----> f ----> file name을 입력하면 됩니다.

그럼~~

inetrval time을 잘 조절하시기 바랍니다.

default로 interval time은 5초입니다.

j key를 누르면 interval time를 조정할수 있습니다.
 
 
#glance -f glance.log 
반응형

'OS > HP-UX' 카테고리의 다른 글

[HP-UX] TIME_WAIT 시간 설정  (0) 2009.03.13
HP-UX memory buffer 변경하는 방법  (0) 2009.01.20
[HP-UX ] 한글 입력하기.  (0) 2009.01.19
HP-UX Language 설정  (0) 2009.01.19
HP-UX NFS 설정하기  (0) 2009.01.19
Posted by [PineTree]
ORACLE/INSTALL2009. 1. 21. 16:27
반응형

■ 오라클 다운 받기

      ① http://www.oracle.com/technology/software/products/oracle9i/index.html 에 접속한다.

      ② Oracle9i Release2 (9.2.0.1)에서 Oracle9i Database Release 2 Enterprise/Standard Edition for HP-UX를 선택한다.

 

■ 오라클과 관련된 HP-UX 11.11 패치 다운 받기

    ① http://www2.itrc.hp.com/service/patch/searchHPUXPatchSet.do?BC=main|에 접속한다.

            Step1 : Oracle 선택

            Step2 : hpux: 11.11 선택

            Step3 : conservative 선택

    ② 검색을 클릭한다.

    ③ add to selected patch list 를 클릭한다.

    ④ 제일 하단의 download selected를 클릭한다.

    ⑤ 상단의 download를 클릭한다.

 

■ 오라클 설치 조건 확인

    ① OS 커널의 64bit 여부 확인

        #> /bin/getconf KERNEL_BITS      <== 결과가 64이어야 함

    ② 메모리 : 최소 256MB 이상

        #> /usr/sbin/dmesg | grep Physical

    ③ Swap 공간 : 물리메모리의 2배 권장, 적어도 400MB 이상

        #> /usr/sbin/swapinfo -a 추가할swap용량

    ④ 디스크 공간 : 3G ~ 6G이상의 공간 필요

    ⑤ Temporary Disk 공간 : /tmp에 400MB 이상이 필요

        만일 없다면 오라클 계정의 환경변수에 다음을 적용

        export TEMP=/oracle/tmp

        export TEMPDIR=/oracle/tmp

 

■ HP-UX 11.11 패치 설치하기

    ① HP 서버에 /tmp/patches 폴더를 생성한다.

    ② 해당 zip 파일을 압풀을 풀어서 ftp로 HP 서버의 /tmp/patches에 전송한다.

    ③ /tmp/patches/create_depot_hp-ux_11를 실행한다.

        #>cd /tmp/patches

        #> . ./create_depot_hp-ux_11

    ④ swinstall을 실행하다.

        #> cd /

        #> swinstall -s /tmp/patches/depot

    ⑤ 스패이스 바를 이용하여 BUNDLE을 선택한다.

    ⑥ F3와 방향키를 이용하여 Actions로 이동하여 엔터를 클릭한다.

    ⑦ 방향키를 이용하여 Install을 선택한다.

 

■ HP-UX 패치 정보 확인하기

    ① 현재 설치된 패치를 확인하는 방법

        #> /usr/sbin/swlist -l patch | grep PH

    ② Patch번호를 통해 설치된 패치를 확인하는 방법

        #> /usr/sbin/swlist -l patch patch_number

    ③ 어떤 bundle이 설치되어 있는지 확인하는 방법

        #> /usr/sbin/swlist -l bundle

 

■ HP-UX 11.11 커널 변경하기 (reboot이 필요함)

  #> kmtune|grep shm

  #> kmtune|grep sem

  #> sam

         shmmax=536870912 or 0x40000000     (기본값 0x4000000)       <= 물리적 메모리 만큼 적용

         shmseg=10                                   (기본값 120)           
         shmmni=100                                  (기본값 200)
         semmns=1000                               (기본값 128)    <= (NPROC * 2) * 2 이상
         semmni=100                                  (기본값 64)    
 
    ※ 약어
        NPROC : 오라클의 init.ora에 정의되어 있는 PROCESS 파라미터의 값
    ※ 참고
         SHMMAX = 1개의 shared memory segment 의 maximum size
         SHMMIN = 1개의 shared memory segment 의 minimum size
         SHMSEG = 1개의 process에 attach 되는 shared memory segment의 maximum 개수
         SHMMNI = shared memory identifier 의 숫자
         SEMMNS = system의 semaphore 개수
         SEMMNI = 시스템에서 identifier 를 setting하는 semaphore 수
 

■ JRE 버전 확인

 

 

■ Link 설정

    ※ $ORACLE_HOME/ctx/lib/ins_ctx.mk 오류를 막기 위해 아래의 링크를 미리 생성한다.

ln -s /usr/lib/libX11.3 /usr/lib/libX11.sl
ln -s /usr/lib/libXIE.2 /usr/lib/libXIE.sl
ln -s /usr/lib/libXext.3 /usr/lib/libXext.sl
ln -s /usr/lib/libXhp11.3 /usr/lib/libXhp11.sl
ln -s /usr/lib/libXi.3 /usr/lib/libXi.sl
ln -s /usr/lib/libXm.4 /usr/lib/libXm.sl
ln -s /usr/lib/libXp.2 /usr/lib/libXp.sl
ln -s /usr/lib/libXt.3 /usr/lib/libXt.sl
ln -s /usr/lib/libXtst.2 /usr/lib/libXtst.sl

 

■ 오라클 설치 마운트 포인트 생성
 
 
■ 오라클 계정 생성 (root 권한으로)
    ① 그룹 생성
        #> group dba
    ② 오라클 사용자 생성
        #> useradd -g dba -d /oracle -s /usr/bin/ksh oracle
    ③ 오라클 사용자 암호 생성
        #> passwd oracle
    ④ 오라클 사용자 환경변수 설정
        #> su - oracle
        #> vi .profile
             ## Environment variables for Oracle
             export ORACLE_SID=ORA920
             export ORACLE_BASE=/oracle
             export ORACLE_HOME=/oracle/app/product/920
             export NLS_LANG=American_America.KO16KSC5601
             export PATH=$PATH:$ORACLE_HOME/bin
             export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
 
             ##CLASSPATH must include the following JRE locations:
             export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
             export CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib
 
             export EDITOR='vi'
             export PS1=`uname -n`':$PWD> '
             umask 022
             set -o vi
 
■ CD-ROM 마운트 (root 권한으로)
    ① CD-ROM 확인
        #> ioscan -funC disk
             Class     I  H/W Path       Driver S/W State   H/W Type     Description
             =======================================================================
             disk      0  10/0/14/0.0.0  sdisk CLAIMED     DEVICE       TEAC    CD-532E-B
                                        /dev/dsk/c0t0d0   /dev/rdsk/c0t0d0
    ② CD-ROM mount
        #> nohup /usr/sbin/pfs_mountd &
        #> nohup /usr/sbin/pfsd &
        #> pfs_mount -o xlat=unix /dev/rdsk/c0t0d0 /cdrom
    ③ CD-ROM umount
        #> cd /
        #> su root
        #> /usr/sbin/pfs_umount /cdrom
 
■ X 윈도우 설정
    ① 콘솔에서 root 권한으로 xhost의 접속을 모두 허용한다.
        #> xhost +
    ② 설치할 oracle 계정으로 DISPLAY를 설정한다.
        #> ksh
        #> export DISPLAY=localhost:0.0
 
■ 오라클 설치 (oracle 계정)
     ① runInstaller 실행
         #> . /cdrom/runInstaller
     ② JAVA_HOME 경로 설정
         /opt/JAVA1.3
 

 

설치시 오류 해결

"Error in invoking target install of makefile  <ORACLE_HOME>/ctx/lib/ins_ctx.mk"

   #> ln -s /usr/lib/Motif2.1/libXm.4 /usr/lib/libXm.sl

반응형

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

오라클 삭제 방법  (0) 2009.03.18
CentOS 5.2에 Oracle 9i 설치하기  (0) 2009.02.23
Linux에서 Pro C 설치  (0) 2008.12.11
Oracle 9iR2 64-bit on RHEL 4 x86-64 (AMD64/EM64T) Update6 설치하기  (0) 2008.06.03
Oracle 10.1.0.4 Update  (0) 2008.04.08
Posted by [PineTree]
OS/HP-UX2009. 1. 20. 13:48
반응형
memory buffer 확인
kmtune| grep dbc or kctune | grep dbc

변경 방법은 SAM ==>Kernel Configuration ==> Tunable ==> Modify (dbc_max_pct) or
kctune dbc_max_pct=20 <== 20% 변경 (11.11 버전 이시면 kmtune )


반응형

'OS > HP-UX' 카테고리의 다른 글

[HP-UX] TIME_WAIT 시간 설정  (0) 2009.03.13
Glance  (0) 2009.01.21
[HP-UX ] 한글 입력하기.  (0) 2009.01.19
HP-UX Language 설정  (0) 2009.01.19
HP-UX NFS 설정하기  (0) 2009.01.19
Posted by [PineTree]
OS/HP-UX2009. 1. 19. 16:16
반응형
1. UTF-8 한글을 사용하기 위해서는 다음과 같이 설정 합니다.

.profile 파일에 아래의 내용을 추가

export LANG=ko_KR.utf8;

export LC_COLLATE=C
stty cs8 -parenb -ixany -istrip

2. 한글 지원의 전반적인 내용과 eucKR용 설정 방법.

O/S를 install때 한글로 할지, 또는 영문으로 할 지를 물어보면 그때 반드시 한글로 설정을 해야 합니다. 영문으로 설정을 하면 추후에 한글을 사용할 수가 없으며, 그때는 O/S를 다시 install 해야 합니다.

1) posix shell (/sbin/sh)의 경우에는 한글을 사용할 수가 없습니다. root user는 posix shell로 되어 있어야만 하므로 /etc/passwd file에서 root user의 shell을 절대로 변경하지 마십시오.root user에서 한글을 사용하고 싶으면
shell prompr에서    
# /usr/bin/ksh
를 실행하여 shell을 ksh로 변경하시면 됩니다.
2) 일반 user의 shell은 /etc/passwd file에서 /usr/bin/ksh, 또는 /usr/bin/csh 로 변경후에 사용하시면 됩니다.
3) 그 후에 /usr/bin/ksh을 사용할 경우에는 $HOME/.profile에 export LANG=ko_KR.eucKR
로 setup하여주고, /usr/bin/csh을 사용할 경우에는 $HOME/.login file에
setenv LANG ko_KR.eucKR을 기록하여준 후에 다시 login하면 됩니다.
LANG이 정확히 setup되었는지 확인을 하려면
# locale
LANG=ko_KR.eucKR
LC_CTYPE="ko_KR.eucKR"
LC_COLLATE="ko_KR.eucKR"
LC_MONETARY="ko_KR.eucKR"
LC_NUMERIC="ko_KR.eucKR"
LC_TIME="ko_KR.eucKR"
LC_MESSAGES="ko_KR.eucKR"
LC_ALL=
나와야 합니다.

출처 : http://heureux.egloos.com/1703662
반응형

'OS > HP-UX' 카테고리의 다른 글

Glance  (0) 2009.01.21
HP-UX memory buffer 변경하는 방법  (0) 2009.01.20
HP-UX Language 설정  (0) 2009.01.19
HP-UX NFS 설정하기  (0) 2009.01.19
[HP-UX] nfs 설정  (0) 2005.03.11
Posted by [PineTree]
OS/HP-UX2009. 1. 19. 13:40
반응형

HP-UX에서는 기본적으로 /etc/rc.config.d/LANG 파일로 language 설정을 하고, ssh, telnet, ftp 등에 적용된다.

 

하지만, /etc/rc.config.d 하위에 있는 파일을 수정하고 적용하려면 서버를 리부팅 해야만 한다.

 

ssh나 telnet에서 language환경을 변경하고자 할 때는 /etc/rc.config.d/LANG 파일을 변경해도 되지만, 서버를 리부팅해야 되므로 /etc/profile 파일이나 .profile을 수정한다. 이 두 파일 수정 후 다시 로그인하면 서버 리부팅 없이 language 설정이 변경된다.(ftp는 only /etc/rc.config.d/LANG 파일만 가능)

 

한글로 세팅하고 싶으면 export LANG=ko_KR.eucKR  
영문으로 세팅하고 싶으면 export LANG=C 을 입력하면 된다.

 

정리 및 주의사항

1. /etc/rc.config.d/ 아래에 있는 파일을 수정하고 적용하려면 서버를 리부팅해야 한다.

2. /etc/rc.config.d/ 아래에 비슷한 이름의 파일이 있으면 안된다. 예를 들어 LANG 파일이 있는데 LANG.200701025 와 같은 파일이 있어서는 안된다.

3. 텔넷이나 ssh에서 언어설정의 우선 순위는 .profile -> /etc/profile -> /etc/rc.config.d/LANG 순이다. ftp는 /etc/rc.config.d/LANG 파일만 적용받는다.

4. .profile, /etc/profile에 아무 설정없이 /etc/rc.config.d/LANG에 export LANG=ko_KR.eucKR로 설정하였으나, ftp만 한글이 적용되고 ssh나 텔넷에서는 영문이 적용되는 경우가 있는데 알려진 bug로 IGELAN 관련 최신패치를 설치하면 bug-fix 된다.(# swlist -l product |grep IGELAN 으로 검색)

.profile, /etc/profile에 아무 설정없는데 /etc/rc.config.d/LANG이 제대로 적용되지 않을 경우, /etc/rc.log를 검색하면 아래와 같은 language 관련 메세지를 볼 수 있다.

ex) Output from "/sbin/rc2.d/S008net.init start":
----------------------------
Message catalog can't be opened/accessed for language ko_KR.eucKR.
Language C will used.

[출처] HP-UX Language 설정|작성자 대보름


반응형

'OS > HP-UX' 카테고리의 다른 글

Glance  (0) 2009.01.21
HP-UX memory buffer 변경하는 방법  (0) 2009.01.20
[HP-UX ] 한글 입력하기.  (0) 2009.01.19
HP-UX NFS 설정하기  (0) 2009.01.19
[HP-UX] nfs 설정  (0) 2005.03.11
Posted by [PineTree]
OS/HP-UX2009. 1. 19. 13:35
반응형

HP-UX에서 NFS설정하는 방법은 두 가지가 있다. 하나는 SAM으로, 하나는 /etc/rc.config.d/nfsconf로 하는 방법이다.

 

1. sam으로 export, import 설정 - 아래의 순서로 진행한다.

 

 

NFS 서버로 사용하려면 Exported Local File Systems를 선택하고, NFS Client로 사용하려면 Mounted Remote File Systems를 선택한다.

 

아래는 NFS서버를 선택한 화면이다. Export할 디렉토리를 선택하고, NFS Server를 enable한다.

 

 

2. 수동으로 설정
1) /etc/rc.config.d/nfsconf 파일에 import 하고 싶으면 client 1, export 하고 싶으면 server 1로 설정한다. (자세한 명령은 man exports 참조)

예) # cat /etc/exports
/디렉토리 -root=호스트명

2) 부팅할 때, /etc/exports 파일 참고해서 export 할 디렉토리를 지정한다.

 

3) /etc/rc.config.d/nfsconf 파일을 참고해서 데몬을 자동으로 start 하나, 수동으로 start 하고 싶으면, /sbin/init.d/nfs start|stop 명령을 사용한다.

 

3. NFS client에서의 mount 방법

# mount (-F nfs) -o soft NFS서버:/디렉토리 /로컬디렉토리

 : -o soft 는 서버와 통신 끊어졌을 때 끊어버림. 디폴트 -o hard 는 NFS서버와 계속 연결시도해서 NFS서버와의 연결이 끊어졌을 때 서버 hang이 발생할 가능성이 많음

[출처] HP-UX NFS 설정하기|작성자 대보름


반응형

'OS > HP-UX' 카테고리의 다른 글

Glance  (0) 2009.01.21
HP-UX memory buffer 변경하는 방법  (0) 2009.01.20
[HP-UX ] 한글 입력하기.  (0) 2009.01.19
HP-UX Language 설정  (0) 2009.01.19
[HP-UX] nfs 설정  (0) 2005.03.11
Posted by [PineTree]