Oracle EBS R12 - ad_bugs.BUG_NUMBER 와 adapplied_patches.PATCH_NAME 의 관계

Oracle EBS R12 - ad_bugs.BUG_NUMBER 와 adapplied_patches.PATCH_NAME 의 관계
일반적인 경우 다음 패 치 는 버그 를 복구 하기 때문에 패 치name 과 bugnumber 는 같 습 니 다.
하지만 어떤 패 치 merge 가 패 치 를 많이 만 들 었 다 면 이 패 치 는 여러 버그 를 복구 하 는 효과 가 있 습 니 다. 이때 패 치name 과 bugnumber 는 다 릅 니 다.
표 구조:
SQL> desc ad_bugs;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 BUG_ID                                    NOT NULL NUMBER
 APPLICATION_SHORT_NAME                             VARCHAR2(50)
 BUG_NUMBER                                NOT NULL VARCHAR2(30)
 CREATION_DATE                             NOT NULL DATE
 ARU_RELEASE_NAME                          NOT NULL VARCHAR2(30)
 CREATED_BY                                NOT NULL NUMBER
 LAST_UPDATE_DATE                          NOT NULL DATE
 LAST_UPDATED_BY                           NOT NULL NUMBER
 TRACKABLE_ENTITY_ABBR                              VARCHAR2(8)
 BASELINE_NAME                                      VARCHAR2(150)
 GENERIC_PATCH                                      VARCHAR2(1)

SQL> desc ad_applied_patches
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 APPLIED_PATCH_ID                          NOT NULL NUMBER
 RAPID_INSTALLED_FLAG                               VARCHAR2(1)
 PATCH_NAME                                NOT NULL VARCHAR2(120)
 PATCH_TYPE                                NOT NULL VARCHAR2(30)
 MAINT_PACK_LEVEL                                   VARCHAR2(30)
 SOURCE_CODE                               NOT NULL VARCHAR2(3)
 CREATION_DATE                             NOT NULL DATE
 CREATED_BY                                NOT NULL NUMBER
 LAST_UPDATE_DATE                          NOT NULL DATE
 LAST_UPDATED_BY                           NOT NULL NUMBER
 IMPORTED_FLAG                                      VARCHAR2(1)
 IMPORTED_FROM_DB                                   VARCHAR2(30)
 IMPORTED_ID                                        NUMBER
 MERGE_DATE                                         DATE
 DATA_MODEL_DONE_FLAG                               VARCHAR2(1)

patch 가 merge 되 지 않 은 상태 에서 adbugs.BUG_NUMBER 와 adapplied_patches.PATCH_NAME 의 값 은 같다.
patch 가 merge 에 의 해 지나 간 경우 중간 표 (ad comprising patches) 를 통 해 ad 를 연결 해 야 합 니 다.bugs.BUG_NUMBER 와 adapplied_patches.PATCH_NAME,
그리고 이 패 치 name 은 기본적으로 merge 의 driver file name (예 를 들 어 driver file) 입 니 다.  name 은 u financial merged. drv 입 니 다. 그러면 patch name 은 financial merged 입 니 다).
관련 단계:
ad_applied_patches -> ad_patch_drivers -> ad_comprising_patches -> ad_bugs
중간 표 ad 때문에comprising_patches 는 merged patch 기록 만 저장 하기 때문에 다음 SQL 은 merged patch 에 대응 하 는 patch name 과 bug number 만 찾 을 수 있 습 니 다.
SELECT aap.patch_name
      ,aap.patch_type
      ,aap.last_update_date
      ,apd.driver_file_name
      ,apd.merged_driver_flag
      ,apd.merge_date
      ,ab.bug_number
      ,ab.last_update_date
FROM   ad_applied_patches aap
      ,ad_patch_drivers apd
      ,ad_comprising_patches acp
      ,ad_bugs ab
WHERE      aap.applied_patch_id = apd.applied_patch_id
       AND apd.patch_driver_id = acp.patch_driver_id
       AND acp.bug_id = ab.bug_id
     --  AND apd.merged_driver_flag = 'Y'

merge 의 patch name 은 실제 적 인 의미 가 없 기 때문에 우 리 는 보통 ad 를 통 해bugs 는 어떤 patch 가 이미 전 화 했 는 지 검증 합 니 다.
SELECT bug_number
      ,last_update_date
FROM   ad_bugs
WHERE  bug_number = '8644899';

중복 안 전 된 패 치 는 다음 SQL 을 통 해 설치 기록 을 조회 할 수 있 습 니 다.
select orig_patch_name,last_update_date from ad_patch_drivers where applied_patch_id in 
(select applied_patch_id from ad_applied_patches where patch_name='17086303');   -- patch re-install

REF:
1. Find the patches in a merged patch
http://blog.trutek.com/
2. PATCH related scripts
http://raghuook.blogspot.com/2010/08/apps-dba-patch-related-scripts.html

좋은 웹페이지 즐겨찾기