所讨论的数据库是 Oracle 10g Enterprise 软件
可用的工具有 Toad、SQL Developer 和其他内置的 Oracle 工具
我在网络内有一个应用服务器,在网络内有一个数据库服务器。我在防火墙外还有一个系统。
使用我当前的监控工具:Toad 中的 SGA 监视器
我可以看到从应用程序服务器到数据库的查询,但我看不到从防火墙发送到系统/从系统发送的内容,而防火墙确实与数据库进行通信。
运行数据包嗅探器,我可以看到数据库与防火墙外部的系统(dmz)进行通信
什么命令可以让我查看所有正在进行的查询,以及如何运行它?
答案1
我使用以下 sql 显示内存中所有包含“ITEM_F”的 sql。您可以将“ITEM_F”更改为任何您想要的。然后我使用另一个名为 HASH_VALUE.sql 的 sql 显示完整的 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