1.1.1  Windows 7 에서 Oracle 10g 설치시 Error 발생

 

A.    개요

 

Oracle Database 12c(Cloud version)이 곧 GA release를 앞두고 있으나, 아직도 많은 고객들이 Oracle 8.0.x, 8i, 9i, 10g, 11g를 사용하고 있고, 이를 최신 Windows 7 (혹은 Vista)에 설치하는 경우가 있다. 설치할 DB version 은 정책적 결정 사항이다.

현재 가장 많이 사용되고 있는 Oracle DB 10g 버전을 Windows 7 환경에서 설치하기 위해 Tip이 필요한 이유는, 10g 출시 때에는 windows 7 등이 아직 출시되지 않았기 때문이다. 이미 많은 사례들을 통해, Support 가 확인되었으므로, 아래의 Tip을 통해, 설치가 가능하다

아래의 Tip 은 10g DBMS 혹은 Client 설치 모두에 적용 가능합니다. 


B.    Windows 7/Vista/2008R2 에서, Oracle 10g DBMS/Client 설치 시, Error 발생

 

발생 Error Message 생략

특정한 화일을 찾을 수 없다거나, 현제 버전을 지원할 수 없다는 메세지가 출력된다.

 

1.1.2  W/A(Support List 추가) 조치 후 Install 가능

 

A.    설치 Binary 선택

 

Windows 7 64 bit 인 경우 10204_vista_w2k8_x64_production_db.zip 을 사용

 

B.    설치 Binary 수정

설치 환경화일 중에, 아래 3개 file 에 Windows 7 에 해당하는 Code 6.1 을 넣은 후, 고급설치를 선택해 설치를 진행하면 됩니다. OS, DB 세부 version 에 따라 유사 이름의 다른 폴더에 화일이 존재하거나, 동일 폴더에 유사한 이름의 화일이 존재하기도 합니다. 

위치 : \10204_vista_w2k8_x64_production_db\database\install\oraparam.ini

수정사항 : Windows 7 을 의미하는 6.1을 추가

[Certified Versions]

#You can customise error message shown for failure, provide value for CERTIFIED_VERSION_FAILURE_MESSAGE

Windows=5.0,5.1,5.2,6.0,6.1

 

위치 : \10204_vista_w2k8_x64_production_db\database\stage\prereq\db\refhost.xml

수정사항 : Windows 7 을 의미하는 6.1라인들을 추가

<CERTIFIED_SYSTEMS>

    <OPERATING_SYSTEM>

      <VERSION VALUE="5.0"/>

      <SERVICE_PACK VALUE="1"/>

    </OPERATING_SYSTEM>

    <OPERATING_SYSTEM>

      <VERSION VALUE="5.1"/>

      <SERVICE_PACK VALUE="1"/>

    </OPERATING_SYSTEM>

    <OPERATING_SYSTEM>

      <VERSION VALUE="5.2"/>

    </OPERATING_SYSTEM>

    <!--Microsoft Windows Vista-->

    <OPERATING_SYSTEM>

      <VERSION VALUE="6.0"/>

    </OPERATING_SYSTEM>

    <!--Microsoft Windows 7-->

    <OPERATING_SYSTEM>

       <VERSION VALUE="6.1"/>

    </OPERATING_SYSTEM>

  </CERTIFIED_SYSTEMS>

 

위치 :  \10204_vista_w2k8_x64_production_db\database\stage\prereq\db_prereqs\db\refhost.xml

수정사항 : Windows 7 을 의미하는 6.1라인들을 추가

<CERTIFIED_SYSTEMS>

    <OPERATING_SYSTEM>

      <VERSION VALUE="5.0"/>

      <SERVICE_PACK VALUE="1"/>

    </OPERATING_SYSTEM>

    <OPERATING_SYSTEM>

      <VERSION VALUE="5.1"/>

      <SERVICE_PACK VALUE="1"/>

    </OPERATING_SYSTEM>

    <OPERATING_SYSTEM>

      <VERSION VALUE="5.2"/>

    </OPERATING_SYSTEM>

    <!--Microsoft Windows Vista-->

    <OPERATING_SYSTEM>

      <VERSION VALUE="6.0"/>

    </OPERATING_SYSTEM>

    <!--Microsoft Windows 7-->

    <OPERATING_SYSTEM>

      <VERSION VALUE="6.1"/>

    </OPERATING_SYSTEM>

  </CERTIFIED_SYSTEMS>

 

C.    Installer 에서 고급설치를 선택


기본 설치로 진행 할 경우 오류가 발생합니다. “고급 설치로 진행합니다.

 

End of Documents.

1. (CDC 제품에서 일반적으로) Supplemental Logging 이 필요한 이유

   복제의 원본이 되는 "소스DB"에서 Update Query 등이 수행될 때, Update Query 등으로 실제 변경이 발생된 column 뿐 아니라, 나머지 Column 들의 정보를 함께 Archive Log 에 남기기 위해서는  Supplemental Logging 이 활성화 되어야만 합니다.

   
    SQL> select * from emp;   
      
         EMPID        SAL    
    ---------- ----------            
            10     100000     

    SQL> update emp set sal=150000;      

    1 row updated.
 
    SQL>


<< 해설 >>

    The EMP table has a primary key defined on the EMPID column.
    --> If supplemental logging is turned on for primary key columns, then any update to EMP logs the EMPID column.
    --> Without supplemental logging, We can find following data in redo/Archive log :      

        update "SCOTT"."EMP" set "SAL" = '150000' where "SAL" = '100000' and ROWID ='AAABOaAABAAANZ/AAA';     

    --> But, with the log group test_always defined above :     

        update "SCOTT"."EMP" set "SAL" = '150000' where "EMPID" = '10' and "SAL" ='100000' and ROWID = 'AAABOaAABAAANZ/AAA';    


2. Supplemental Logging 개요 (Level 및 방법)

   Database-Level 과 Table-Level 로 나눌 수 있습니다.
    --> Oracle Documents : http://docs.oracle.com/cd/E11882_01/server.112/e22490/logminer.htm#SUTIL1582

   일반적으로,

   Database-Level 로 설정하는 경우, 해당 DB Instance 의 모든 Table 들에 대해, 자동으로 Supplemental Logging 이 됩니다.  따라서, 기존 대비 많은 양의 Rodo log switch 가 발생되고 (Archive Log 량이 증가), log switch 에 따른 overhead 가 증가됩니다.

   Table-Level 로 설정하는 경우, 각 대상 table 들에 대해서 각각 alert 해 주어야 하는 불편함이 있지만
   Database-Level 설정 대비, overhead 가 감소되어 운영 부담이 줄어드는 장점이 있습니다.  


  2-A. Database-Level Supplemental Logging
 
    -- 최소 단위 (MIN) 으로 설정하는 방법

SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA ;
SQL> ALTER SYSTEM SWITCH LOGFILE


    -- 확인하는 방법

SQL> select SUPPLEMENTAL_LOG_DATA_MIN S_MIN, SUPPLEMENTAL_LOG_DATA_PK S_PK, SUPPLEMENTAL_LOG_DATA_UI S_UI,
      2  SUPPLEMENTAL_LOG_DATA_FK S_FK, SUPPLEMENTAL_LOG_DATA_ALL S_ALL from v$database ;

    S_MIN            S_PK   S_UI   S_FK   S_ALL
    ---------------- ------ ------ ------ ------
    YES              NO     NO     NO     NO

SQL


    -- PK/UK 정보를 추가로 남기기 위해서 설정하는 방법

SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE KEY) COLUMNS ;
SQL> ALTER SYSTEM SWITCH LOGFILE


    -- 확인하는 방법

SQL> select SUPPLEMENTAL_LOG_DATA_MIN S_MIN, SUPPLEMENTAL_LOG_DATA_PK S_PK, SUPPLEMENTAL_LOG_DATA_UI S_UI,
      2  SUPPLEMENTAL_LOG_DATA_FK S_FK, SUPPLEMENTAL_LOG_DATA_ALL S_ALL from v$database ;

    S_MIN            S_PK   S_UI   S_FK   S_ALL
    ---------------- ------ ------ ------ ------
    YES              YES    YES    NO     NO

SQL>



  2-B. Table-Level Supplemental Logging

   Table 전체(모든 Column)를 지정하는 방법과 Table 의 특정 Column 들만 지정하는 방법이 있습니다.

   Table 전체(모든 Column)를 지정하면, 해당 table 의 모든 column 에 Supplemental Logging 이 활성화 됩니다.
   해당 table 의 column 이 추가되면, 자동으로 추가된 column 에 Supplemental Logging 이 활성화 됩니다.

   Table 의 특정 Column 들만 지정하면, 해당 table 의 지정된 column 들에 Supplemental Logging 이 활성화 됩니다.
   해당 table 의 column 이 추가되면, 추가된 column 들은 자동으로 Supplemental Logging 되지 않습니다.
   추가로 alter 를 수행하여, 새로운 column 에 Supplemental Logging 을 활성화 해야만 합니다

    -- Table 의 전체 Column 을 지정하는 방법

SQL> ALTER TABLE SAPP.T1121_B ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS ;
SQL> ALTER TABLE SAPP.T1121_B DROP SUPPLEMENTAL LOG DATA (ALL) COLUMNS ;

    -- 확인하는 방법 : 하기 참조

    -- Table 의 특정 Column 을 지정하는 방법

SQL> ALTER TABLE SAPP.T1121_B ADD SUPPLEMENTAL LOG GROUP GGS_T1121_B_1 (AA, AA_2) ;
SQL> ALTER TABLE SAPP.T1121_B DROP SUPPLEMENTAL LOG GROUP GGS_T1121_B_1


    -- 확인하는 방법 : 하기 참조


  2-C. Table-Level Level Supplemental Logging 설정 및 조회 방법

    -- GGSCI 에서 add trandata 수행

GGSCI> add trandata sapp.t1121_b

    -- SQL Plus 에서 add supplemental log 수행

SQL> alter table sapp.t1121_b add supplemental log group ggs_t1121_b_1 (AA, AA_2) ;

Table altered.

SQL>


    -- 결과 조회 (column 단위 Logging)

SQL> select LOG_GROUP_NAME, TABLE_NAME, COLUMN_NAME, POSITION from dba_log_group_columns where table_name = 'T1121_B' ;

LOG_GROUP_NAME    TABLE_NAME    COLUMN_NAME           POSITION
--------------- --------------- -------------------- ----------
GGS_T1121_B_1    T1121_B     AA             1
GGS_T1121_B_1    T1121_B     AA_2             2

SQL> select * from dba_log_groups where table_name = 'T1121_B' ;

OWNER                   LOG_GROUP_NAME    TABLE_NAME      LOG_GROUP_TYPE         ALWAYS      GENERATED
------------------------------ ---------------   --------------- ------------------- ----------- --------------
SAPP                   GGS_T1121_B_1     T1121_B     USER LOG GROUP         CONDITIONAL USER NAME
SAPP                   GGS_T1121_B_74844 T1121_B     USER LOG GROUP         ALWAYS      USER NAME

SQL>


    -- SQL Plus 에서 모든 Column 에 대한 Logging 수행

SQL> ALTER TABLE SAPP.T1121_B add SUPPLEMENTAL LOG DATA (ALL) COLUMNS ;

Table altered.

SQL> select * from dba_log_groups where table_name = 'T1121_B' ;

OWNER                   LOG_GROUP_NAME    TABLE_NAME      LOG_GROUP_TYPE         ALWAYS      GENERATED
------------------------------ ---------------   --------------- ------------------- ----------- --------------
SAPP                   GGS_T1121_B_1     T1121_B     USER LOG GROUP         CONDITIONAL USER NAME      << alter table (col1, col2) 로 한 것
SAPP                   GGS_T1121_B_74844 T1121_B     USER LOG GROUP         ALWAYS      USER NAME      << ggsci 에서 add trandata 로 건 것
SAPP                   SYS_C0011504      T1121_B     ALL COLUMN LOGGING  ALWAYS      GENERATED NAME << dba 가 all column 으로 설정한 것

SQL>


3. OGG 제품에서 Supplemental Logging 설정 Review

  3-A. 일반적인 복제(1:1) 요건을 충족하기 위한 Logging 설정 시

   OGG 설치 단계중에서 CDC 대상 Table 에 대한 Add TranData 작업은 Table Level 의 Supplemental logging 처리이며, Log Group Name 은 기본적으로 OGG_[Table Name]_[Object ID] 가 됩니다.

   즉

SQL> ALTER TABLE [Table Owner].[Table Name] ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

   이 아니라 아래의 DDL 이 수행된 결과입니다.

SQL> ALTER TABLE [Table Owner].[Table Name] ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE INDEX) COLUMNS;

   추가로, Add TranData 작업을 하기 위해서는,  Database-Level Supplemental logging 의 SUPPLEMENTAL_LOG_DATA_MIN 이 YES 이여야만 합니다.


  3-B. Historial Table 을 모든 Column 을 기준으로 남기기 위한 Logging 설정 시

   특정 Table 에 대해서 Table 의 모든 column 에 대하여 Supplemental logging 처리를 위해서 다음과 같이 수행한다.

SQL> ALTER TABLE [Table Owner].[TABLE Name] ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;


   특정 Table 에 대해서 특정 column 에 대해서 Supplemental logging 처리를 위해서 다음과 같이 수행한다. 

SQL> ALTER TABLE [Table Owner].[Table Name] ADD SUPPLEMENTAL LOG GROUP [LOG Group Name] (column1, column2, ...); 


   S사의 사례처럼, Historial Table 을 모든 Column 을 기준으로 남기기 위해서

SQL> ALTER TABLE [Table Owner].[TABLE Name] ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

   을 수행하는 경우,

   Database-Level Supplemental logging 의 SUPPLEMENTAL_LOG_DATA_MIN 이 YES 이여야만 합니다.
   Add TranData 작업은 불필요 합니다. (Add TranData 작업을 하게 되면, 중복해서 Logging 설정됨)
      
   
4. S사 환경에서, 향후(2012.01.26 이후) 복제대상으로 새로운 Table 이 추가시 절차 (간략 흐름도)

  4-A. 추가 Table 에 대한 SUPPLEMENTAL Logging

    - DBA 가 해당 table 에 대한 ALTER TABLE [Table Owner].[TABLE Name] ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS; 수행

      cf> GGSCI> add trandata owner.table 은 수행하지 않는다.

  4-B. 추가 Table 을 OGG Configuration 에 반영
 
    - 해당 extract, pump 및 replicat 에 해당 table mapping 을 반영
    - 소스서버#] defgen 으로 새로운 table layout 을 추출해, 타켓서버에 반영

  4-C. OGG 에서 복제 반영을 시작

    - (필요시 pump 및) Replicat 을 restart 하여, 복제를 반영할 준비 완료 후
    - Extract 를 restart 하여, 새로운 table 에 대한 추출을 시작

End of Documents.

1.1.1  PASSWORD_LIFE_TIME을 통한 password 유효기간 변경

 

A.    개요

 

Oracle 11g 부터 user password 의 유효기간 기본 값이180()로 변경되었다.  (기존 값 UNLIMITED), 따라서 180일이 지나면 passwd expire 된다

 

B.    설정변경

 

-- Default Profile 을 변경하여 일괄 적용하는 방법

SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED ;

 

-- 새로운 Profile 을 생성하여, 특정 user 에 제한적으로 적용하는 방법

#] connect /as sysdba

SQL> create profile profile_new01 LIMIT PASSWORD_LIFE_TIME UNLIMITED ;

SQL> alter user <username> profile profile_new01 ;

 

1.1.2  FAILED_LOGIN_ATTEMPTS을 통한 부정확한 password 허용횟수 변경

 

A.    개요

 

Oracle 11g 부터 user password 를 부정확하게 입력하는 경우, 접속 시도를 허용하는 횟수 기본값이 10()로 변경되었다. (기존 값은 UNLIMITED), 따라서 부정확한 패스워드를 10회 입력하게 되면, 계정이 잠기게 된다. 10gR2 부터는 password 에 한해서 영문 대문자, 소문자를 구분하므로, 특히 (통상 대/소문자를 구분하지 않는) Windows 로 부터의 자동접속 경로에 의해, user account lock 되는 경우가 다수 발생된다.

 

B.    설정변경

 

-- Default Profile 을 변경하여 일괄 적용하는 방법

SQL> ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED ;

 

-- 새로운 Profile 을 생성하여, 특정 user 에 제한적으로 적용하는 방법

#] connect /as sysdba

SQL> create profile profile_new01 LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED ;

SQL> alter user <username> profile profile_new01 ;

 

C.    잠긴 계정 (locked account)을 접속 가능하도록 풀어 주는 Query

 

SQL> connect /as sysdba

SQL> alter user <username> account unlock ;

 

D.    관련 정보 조회 (현재 설정값)

 

SQL> connect /as sysdba

SQL> select * from dba_profiles where resource_name in ('FAILED_LOGIN_ATTEMPTS',

'PASSWORD_LIFE_TIME');

 

PROFILE                  RESOURCE_NAME           RESOURCE     LIMIT

----------------------------  -------------------------------  ----------------  --------------

MONITORING_PROFILE    FAILED_LOGIN_ATTEMPTS     PASSWORD    UNLIMITED

DEFAULT                 FAILED_LOGIN_ATTEMPTS     PASSWORD    10

MONITORING_PROFILE    PASSWORD_LIFE_TIME        PASSWORD    DEFAULT

DEFAULT                 PASSWORD_LIFE_TIME        PASSWORD    180

 

SQL>


End of documents

+ Recent posts