Назад | Перейти на главную страницу

как увидеть запросы к базе данных Oracle

рассматриваемая база данных - это программное обеспечение Oracle 10g Enterprise

доступные инструменты: Toad, SQL Developer и другие встроенные инструменты Oracle.

У меня есть сервер приложений в сети, рядом с сервером базы данных в сети. У меня также есть система за пределами брандмауэра.

С моими текущими инструментами мониторинга: монитор SGA в Toad

Я могу видеть запросы, поступающие от сервера приложений к базе данных, но я не могу видеть, что отправляется в / из системы через брандмауэр, который взаимодействует с базой данных.

Запустив анализатор пакетов, я вижу, что база данных взаимодействует с системой за пределами брандмауэра (dmz).

Какая команда позволит мне увидеть все выполняемые запросы и как это будет выполняться?

Я использую следующий sql для отображения всего sql в памяти с "ITEM_F" в нем. Вы можете изменить "ITEM_F" на все, что захотите. Затем я отображаю полный sql с другим sql с именем HASH_VALUE.sql

EXECUTIONS HASH_VALUE  GETS_PER_EXEC SEC_PER_EXEC SQL_TEXT
---------- ---------- -------------- ------------ ---------------------
         1 3605439262      507993.00   4.24581775 BEGIN    IF '%CAPA%'
         1  671043237      517057.00   26.5039965 BEGIN    IF '%DEV%' =
         1  336821122      527328.50   1422.86585 /* MV_REFRESH (INS) *
         1  484748009      539104.00    22.037663 BEGIN    IF '%MCO%' =
         1 3169765572      564994.50   1274.37927 INSERT /*+ BYPASS_REC
         1 2692239685      573682.50   172.683195 BEGIN DBMS_MVIEW.REFR
         1 2023740499      577038.00   3.74569625 INSERT INTO MDS.MATT_
         1 2724147626      655448.00   58.4461736 INSERT /*+ BYPASS_REC
         1 3939050362      730432.00   23.7762682 INSERT INTO MDS.MATT_
         1 3275016008      792977.50   142.068046 INSERT /*+ BYPASS_REC
         1   60973157      915308.50    1074.8388 BEGIN dbms_mview.refr
         1 1262896430     1044207.50   145.147301 BEGIN DBMS_MVIEW.REFR
         1  481615044     1185227.50   197.121223 INSERT /*+ BYPASS_REC
         1  832862631     1259484.50   1483.57486 /* MV_REFRESH (INS) *
         1  413596320     1327330.00   213.819306 BEGIN dbms_mview.refr
         1 1471539484     1340705.50   1091.36564 INSERT INTO MATT_AML_
         1  846352950     1929911.50   1243.53836 /* MV_REFRESH (INS) *
        18 3947679100      316931.68   3.47618447 SELECT  distinct  TOT
        18 1224535723     6558946.68    29.210453 SELECT  distinct  CHA
        20 1746064953    59020824.67   1370.51753 INSERT /*+ BYPASS_REC

EQADMRT > list
  1  select sql_id,address,parse_calls,buffer_gets,executions,hash_value,buffer_gets/(executions+1) gets_per_exec,
  2  elapsed_time/1000000/(executions+.000001) sec_per_exec,sql_text
  3  from gv$sqlarea
  4  where ( upper(sql_text) like upper('%&1%') )
  5  -- and buffer_gets > 0
  6* order by buffer_gets

EQADMRT > @hash_value 1471539484

HASH_VALUE=1471539484

INSERT INTO MATT_AML_STATUS_3 ( SELECT DISTINCT F.PJ_PK, F.SCI_I
TEM_SRC_ID, F.RS_SUPPLIER_ID,D.PC_MCO_ID,H.ENTRY_VALUE, G.ITEM_M
FR_PART_ID,I.PC_MCO_NO,AGILE_FLEX.TEXT FROM PCM_ANALYSIS_F F, OD
M.ODM_BUYER_LINE_CARD B , ODM_MANUFACTURER_OBJ_D C, PC_MCO_ITEM_
F D, ITEM_MFR_PART_F G,ODM_AML_PREF_STATUS_D H , PC_MCO_F I,ODM.
ODM_AGILE_FLEX_STG AGILE_FLEX WHERE F.RS_SUPPLIER_ID = B.BLC_SUP
PLIER_ID(+) AND D.PC_MCO_ID = I.PC_MCO_ID AND D.PC_MCO_WORKFLOW_
ID=I.PC_MCO_WORKFLOW_ID AND B.BLC_OBJECT_ID = C.ENTRY_ID (+) AND
 F.SCI_ITEM_SRC_ID = D.ITEM_ID (+) AND C.ENTRY_ID = G.MANUFACTUR
ER_ID AND D.PC_MCO_WORKFLOW_ID IN ( SELECT PC_MCO_WORKFLOW_ID FR
OM PC_MCO_WORKFLOW_D G WHERE WORKFLOW='PCM OEM MCO V1.1' AND WOR
KFLOW_STATE NOT IN ('Canceled') ) AND D.CREATED_TIME_ID = (SELEC
T MAX(E.CREATED_TIME_ID) FROM PC_MCO_ITEM_F E WHERE E.PC_MCO_ID=
D.PC_MCO_ID) AND G.CHANGE_ID = D.PC_MCO_ID AND G.ITEM_MFR_PART_P
REFER_STATUS_ID = H.ENTRY_ID AND F.SCI_ITEM_SRC_ID=G.ITEM_ID(+)
AND G.ITEM_ID = AGILE_FLEX.ID(+) AND G.MANUBY_ID =AGILE_FLEX.OBJ
_ID(+))
EQADMRT > list
  1  select
  2  --inst_id,sql_id,hash_value,
  3  piece, sql_text
  4  from gv$sqltext b
  5  where b.hash_value=&1
  6  -- and inst_id=1
  7* order by inst_id,hash_value,b.piece

У вас есть доступ к Oracle Enterprise Manager (OEM)?

Вы должны иметь возможность проверять операторы sql, запущенные там с вашим db ... например:

Это документы oracle 11, но 10g имеет аналогичный интерфейс