巧用Oracle Discoverer中的資料字典檢查join
問題:
EDENFR使用者已經配置好所有的Discoverer Objects(包括Business Area, Folder, Join等),以此為基礎,將所有Discoverer Objects複製到EDENUK使用者下,一般採用exp/imp Business Area然後修改屬性的方法。在給EDENUK修改屬性和配置過程中,經常由於各種原因會出現各種改動。
現在客戶要求以EDENFR的joins為標準,檢查EDENUK中所有joins,並列出EDENUK中所有不一致的joins。類似的檢查也要在EDENES,EDENDE等多個使用者下進行。
開啟Discoverer administrator,發現EDENFR下的joins有一百多個,如果逐條檢查,工作量將非常巨大。
方法:
eul4_key_cons.key_name紀錄了該EUL中所有的join名字,而且Discoverer中join的命名有如下規則:From_Folder_name -> To_Folder_name, 比如:
FR_##_CSTM -> FR_??_LIVE_VHC
FR_##_CSTM -> FR_??_LIVE_VHC 2
FR_##_CSTM -> FR_COST_CENT
以下SQL能返回join ID, join name, master folder(from folder), detail folder(to folder)資訊:
SQL>select ekc.key_id as join_id
, ekc.key_name || ' [ Master: ' || eor.obj_name || ' ; Detail: ' || eo.obj_name || ']' as join_desc
from eul4_key_cons ekc
, eul4_objs eo
, eul4_objs eor
where ekc.key_obj_id = eo.obj_id
and ekc.fk_obj_id_remote = eor.obj_id
JOIN_ID JOIN_DESC
1 101685 FR_SLS_QTTN -> FR_CSTM_ORD_HDR [ Master: FR_SLS_QTTN ; Detail: FR_CSTM_ORD_HDR]
2 101697 FR_SLS_QTTN -> FR_DRV [ Master: FR_SLS_QTTN ; Detail: FR_DRV]
3 101701 FR_SLS_QTTN -> FR_SLS_QTTN_2 [ Master: FR_SLS_QTTN ; Detail: FR_SLS_QTTN_2]
4 101713 FR_SLS_QTTN -> FR_SLS_QTTN_ITEM [ Master: FR_SLS_QTTN ; Detail: FR_SLS_QTTN_ITEM]
檢查過程:
根據以上規律和資訊,可以用下面方法快速檢查
1. 建立表,儲存EDENFR的 join / join from table / join to table 資訊
create table tmp_join_fr
as
select ekc.key_name join_name,
substr(ekc.key_name, 4, instr(ekc.key_name, '->', 1, 1) - 5) fromcol,
substr(ekc.key_name, instr(ekc.key_name, '->', 1, 1) + 6) tocol
from eul4_key_cons ekc, eul4_objs eo, eul4_objs eor
where ekc.key_obj_id = eo.obj_id
and ekc.fk_obj_id_remote = eor.obj_id
and ekc.key_name like 'FR_%'
2. 建立表,儲存EDENUK join / join from table / join to table 資訊
create table tmp_join_uk
as
select ekc.key_name join_name,
substr(ekc.key_name, 4, instr(ekc.key_name, '->', 1, 1) - 5) fromcol,
substr(ekc.key_name, instr(ekc.key_name, '->', 1, 1) + 6) tocol
from eul4_key_cons ekc, eul4_objs eo, eul4_objs eor
where ekc.key_obj_id = eo.obj_id
and ekc.fk_obj_id_remote = eor.obj_id
and ekc.key_name like 'UK_%'
3. 用以下SQL檢查EDENFR中有而EDENUK中缺失的join
select * from tmp_join_fr where fromcol||tocol not in (select fromcol||tocol from tmp_join_uk)
用以下SQL檢查EDENFR中沒有有而EDENUK中有的join
select * from tmp_join_uk where fromcol||tocol not in (select fromcol||tocol from tmp_join_fr)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/207/viewspace-790087/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle相關資料字典檢視Oracle
- Oracle OCP(27):使用資料字典檢視管理物件Oracle物件
- 檢視資料字典
- 什麼是Oracle的資料字典?Oracle
- oracle update left join查詢Oracle
- oracle資料庫資料字典應用Oracle資料庫
- 2.12 資料庫資料字典檢視資料庫
- 2.8.3 資料庫服務的資料字典檢視資料庫
- Oracle OCP(14):使用子查詢檢索資料Oracle
- Oracle資料庫中的分頁查詢Oracle資料庫
- 關於dataguard需要查詢的資料字典
- SQL Server中Table字典資料的查詢SQL示例程式碼SQLServer
- 【TUNE_ORACLE】Oracle檢查點(二)檢查點效能Oracle
- 巧用Proxyman Scripting 進行資料分類檢測
- 系統表和資料字典檢視
- Oracle 檢查當前資料庫CPU和PSU補丁資訊Oracle資料庫
- 探索資料字典,提高自學習Oracle能力Oracle
- Oracle中left join中右表的限制條件Oracle
- Oracle 檢查點涉及的SCNOracle
- oracle資料庫sql查詢檢視第二次查詢很慢Oracle資料庫SQL
- 2.1.3 CDB中的資料字典結構
- 【TUNE_ORACLE】Oracle檢查點(一)檢查點(Checkpoint)概念介紹Oracle
- 帶你瞭解資料庫中JOIN的用法資料庫
- Oracle資料庫的查詢變慢了Oracle資料庫
- 省去join的查詢
- 找到Oracle資料庫中效能最差的查詢語句BSOracle資料庫
- Oracle完全檢查點和增量檢查點詳解Oracle
- Oracle 查詢多個資料Oracle
- 2.1.3.4 資料字典儲存在CDB中
- 【TUNE_ORACLE】Oracle檢查點(五)建立並利用Statspack定位檢查點故障Oracle
- 【PDB】Oracle資料庫如何檢查和設定pdb最大儲存大小Oracle資料庫
- 一條SQL完成跨資料庫例項Join查詢SQL資料庫
- MySQL資料庫健康檢查--MySQL巡檢MySql資料庫
- 11、Oracle中的檢視Oracle
- 【SQL】Oracle SQL共享池檢查SQLOracle
- Oracle SCN健康狀態檢查Oracle
- InnoDB資料字典--字典表載入
- ThinkCMF資料字典
- MySQL資料字典MySql