Oracle Analytics -kyselyn SQL_ID-tunnuksen etsiminen

Kun hienosäädät Oracle Analytics -palvelun kyselyjä, voit tarkistaa tietomallin, raportin rakenteen, koontinäytön rakenteen, verkon kokoonpanon sekä joskus tarvittaessa myös tietokannan.

V$SQL-taulu

Tietokantaan liittyvissä selvityksissä on tiedettävä SQL-lauseen SQL_ID-arvo, jotta voidaan seurata tiettyä kyselyä aktiivisten istuntojen historiassa, automaattisessa työkuorman tietovarastossa sekä Oraclen SQLTXPLAIN:ssä (SQLT).

Tässä ohjeessa kuvataan, miten SQL_ID-arvo etsitään Oracle Analytics -palvelun käytön seurannan tauluista sekä Oracle-tietokantajärjestelmän V$SQL-taulusta (RAC-tietokannassa GV$SQL).

V$SQL on Oracle-tietokantajärjestelmän taulu, joka seuraa yksittäisten SQL-kyselyjen tilastotietoja. Taulussa on yksi rivi jokaista suoritettua SQL-lausetta kohti, ja kukin rivi on yksilöity SQL_ID -sarakkeessa. Kyseisen SQL_ID-arvon avulla voit seurata tiettyä QL-lausetta Oracle-tietokannassa.

V$SQL-taulussa (RAC-tietokannassa GV$SQL) on monia hyödyllisiä tietoja kyselyistä.

Käytön seurannan taulut

Käytön seurannan taulut eivät suoraan seuraa SQL_ID-arvoa, mutta voit jäljittää SQL_ID-arvon helposti V$SQL -tauluun (RAC-tietokannassa GV$SQL).

Kun käytön seuranta on käytössä Oracle Analytics -palvelussa, kaikki kyselyt kirjataan kahteen tauluun:

  • S_NQ_ACCT: sisältää loogiset kyselyt.
  • S_NQ_DB_ACCT: sisältää fyysiset kyselyt.

Looginen kysely kirjataan loogiseen kyselytauluun ja fyysinen kysely (tai loogisen kyselyn käynnistämät kyselyt) kirjataan fyysiseen kyselytauluun.

Voit yhdistää loogisen ja fyysisen taulun loogisen kyselyn tunnuksen sarakkeessa. Loogisessa taulussa loogisen kyselyn tunnussarake on ID, ja fyysisessä taulussa se on LOGICAL_QUERY_ID.

SQL_ID-arvo etsitään fyysisen taulun PHYSICAL_HASH_ID -sarakkeen avulla. PHYSICAL_HASH_ID-arvo kirjataan myös V$SQL-taulun (tai GV$SQL-taulun) ACTION-sarakkeeseen.

Oracle BI -palvelin laskee loogisen SQL-kyselyn tekstistä ja fyysisten SQL-kyselyjen tekstistä hajautuskoodin. Oracle BI -palvelimelta ajettujen SQL-kyselyjen fyysinen SQL-hajautuskoodi kirjataan V$SQL-taulun ACTION-sarakkeeseen. Lisätietoja on kohdassa S_NQ_ACCT-tietueen liittäminen BI-kyselylokiin.

Lisätietoja käytön seurannan eri sarakkeista on kohdassa Käytön seuranta ja Käytönseurantataulujen ymmärtäminen.

Asetukset

Nyt kun tiedät, mistä PHYSICAL_HASH_ID-arvon löytää, voit laatia SQL-lauseen, joka yhdistää tietokannassa ajettavan SQL-kyselyn tiettyyn Oracle Analytics -palvelussa ajettavaan analyysiin.

Jos käytön seurannan taulut sijaitsevat samassa tietokantainstanssissa kuin tietovarasto, voit etsiä SQL_ID-arvon yhdellä kyselyllä.

Jos käytön seurannan taulut ja tietovarasto sijaitsevat eri Oracle-tietokantainstansseissa, on ajettava kaksi kyselyä. Ensimmäisellä kyselyllä haetaan tutkittavan kyselyn PHYSICAL_HASH_ID-arvo käytön seurannan tauluista. Toisella kyselyllä haetaan SQL_ID-arvo V$SQL-taulusta suodattamalla ACTION-sarake PHYSICAL_HASH_ID-arvolla.

Esimerkki 1

Tässä esimerkissä käytön seurannan taulut ja tietovarasto sijaitsevat samassa tietokantainstanssissa. Kyselyssä voidaan käyttää mitä tahansa käytön seurannan taulujen tai V$SQL-taulun saraketta, mutta tässä esimerkissä valitaan seuraava alijoukko:

select

o.sql_id,

to_char(l.start_ts, 'YYYY-MM-DD HH24:MI:SS'),

l.id as l_id,

p.logical_query_id,

l.hash_id,

l.saw_src_path,

l.query_src_cd,

l.success_flg,

l.num_db_query,

l.query_text,

p.query_text,

o.sql_text,

p.physical_hash_id,

o.action

from

usage_tracking.s_nq_acct l,

usage_tracking.s_nq_db_acct p,

v$sql o

where

l.id = p.logical_query_id and o.action = p.physical_hash_id and l.start_dt > trunc(sysdate - 1) and l.end_dt < trunc(sysdate)

order by l.start_ts, l.id, l.hash_id, p.physical_hash_id, o.sql_id;

Esimerkki 2

Tässä esimerkissä käytön seurannan taulut ja tietovarasto sijaitsevat eri Oracle-tietokannoissa.

Hae ensin PHYSICAL_HASH_ID-arvo tekemällä kysely käytön seurannan tauluihin:

select

to_char(l.start_ts, 'YYYY-MM-DD HH24:MI:SS'),

l.id as l_id,

p.logical_query_id,

l.hash_id,

l.saw_src_path,

l.query_src_cd,

l.success_flg,

l.num_db_query,

l.query_text,

p.query_text,

p.physical_hash_id

from

usage_tracking.s_nq_acct l,

usage_tracking.s_nq_db_acct p

where

l.id = p.logical_query_id and l.start_dt > trunc(sysdate - 1) and l.end_dt < trunc(sysdate)

order by l.start_ts, l.id,l.hash_id, p.physical_hash_id;

Hae sitten SQL_ID-arvo tekemällä kysely V$SQL-tauluun käyttäen suodattimena PHYSICAL_HASH_ID-arvoa:

select

o.action,

o.sql_id,

o.sql_text

from

v$sql o

where

o.action = ‘<physical_hash_id>’

order by o.sql_id;

Jos tietokanta on RAC-tietokanta, SQL_ID-arvo haetaan V$SQL-taulun sijaan GV$SQL-taulusta.

select

o.action,

o.sql_id,

o.sql_text

from

gv$sql o

where

o.action = '<physical_hash_id>'

order by o.sql_id;

Tätä menetelmää ei voi käyttää alustusjaksojen vianmääritykseen, koska alustusjaksojen käytön seurannan taulussa (S_NQ_INITBLOCK) ei ole fyysistä hajautustunnusta.

Esimerkki 3

Tässä esimerkissä käytetään A - Sample Sales -aihealuetta ja valitaan vain muutama sarake käytön seurannan tauluista.

A - Sample Sales -aihealueeseen ajetaan seuraava kysely:

[2022-02-04T15:11:17.629+00:00] [OBIS] [TRACE:2] [USER-0] [] [ecid: e49b96a8-33c4-4ba7-a877-e564d207eca1-00242531,0:1:38:3] [sik: bootstrap] [tid: dd1bc700] [messageId: USER-0] [requestid: 33e30020] [sessionid: 33e30000] [username: oacadmin] ############################################## [[

-------------------- SQL Request, logical request hash:

cee7ec94

SET VARIABLE QUERY_SRC_CD='Report';SELECT

   0 s_0,

   "A - Sample Sales"."Offices"."D1  Office" s_1,

   "A - Sample Sales"."Base Facts"."10- Variable Costs" s_2,

   "A - Sample Sales"."Base Facts"."11- Fixed Costs" s_3

FROM "A - Sample Sales"

ORDER BY 2 ASC NULLS LAST

FETCH FIRST 125001 ROWS ONLY

]]

Kun valitset käytön seurannan loogisesta taulusta kohteet start_ts, id, hash_id, query_src_cd ja query_text, saat ID-arvon E841EBB79217270A660CDD3EFB5D986C.

Kohteen GUID-5FA7BA53-6767-4839-9341-A6AC0AACDFEB-default.jpg kuvaus seuraa
.jpg kuvaus

Valitse seuraavaksi kohteet logical_query_id, hash_id, physical_hash_id ja query_text käytön seurannan fyysisestä taulusta, jonka LOGICAL_QUERY_ID-arvo on E841EBB79217270A660CDD3EFB5D986C.

Kohteen GUID-6842B138-0FD5-4DA9-A092-B423EB7459C2-default.jpg kuvaus seuraa
.jpg kuvaus

Kun katsot istuntojen hallintalokia, looginen kysely käynnistää QUERY_TEXT-sarakkeessa olevan SQL-koodin:

[2022-02-04T15:11:17.637+00:00] [OBIS] [TRACE:2] [USER-18] [] [ecid: e49b96a8-33c4-4ba7-a877-e564d207eca1-00242531,0:1:38:5] [sik: bootstrap] [tid: dd1bc700] [messageId: USER-18] [requestid: 33e30020] [sessionid: 33e30000] [username: oacadmin] -------------------- Sending query to database named 01 - Sample App Data (ORCL) (id: <<62275>>), client type Oracle Call Interface (OCI), connection pool named Sample Relational Connection, logical request hash cee7ec94, physical request hash bd6708b8: [[

WITH

SAWITH0 AS (select sum(T5398.Cost_Fixed) as c1,

     sum(T5398.Cost_Variable) as c2,

     T5257.Office_Dsc as c3,

     T5257.Office_Key as c4

from

     BISAMPLE.SAMP_OFFICES_D T5257 /* D30 Offices */ ,

     BISAMPLE.SAMP_REVENUE_F T5398 /* F10 Billed Rev */

where  ( T5257.Office_Key = T5398.Office_Key )

group by T5257.Office_Dsc, T5257.Office_Key),

SAWITH1 AS (select 0 as c1,

     D1.c3 as c2,

     D1.c2 as c3,

     D1.c1 as c4,

     D1.c4 as c5

from

     SAWITH0 D1)

select D1.c1 as c1, D1.c2 as c2, D1.c3 as c3, D1.c4 as c4 from ( select D1.c1 as c1,

     D1.c2 as c2,

     D1.c3 as c3,

     D1.c4 as c4

from

     SAWITH1 D1

order by c2 ) D1 where rownum <= 125001

]]

Valitse lopuksi kohteet action, sql_id ja sql_text siitä V$SQL-taulusta, jonka Action-arvo on bd6708b8.

Kohteen GUID-094521FA-317B-430D-9644-3C3E44D91900-default.jpg kuvaus seuraa
.jpg kuvaus

sql_text-sarakkeessa oleva kysely on sama SQL-koodi, joka nähtiin käytön seurannan fyysisessä taulussa. Tästä nähdään, että kyseisen kyselyn sql_id-tunnus on 1gxhc0acmztwk.

Jos ajat saman kyselyn uudelleen, käytön seurannan loogiseen tauluun lisätään toinen rivi, jossa on uusi tunnus, mutta hash_id on sama.

Kohteen GUID-82CD3499-E550-4DD4-8C96-E3DB3CE3232E-default.jpg kuvaus seuraa
.jpg kuvaus

Samoin käytön seurannan fyysiseen tauluun lisätään toinen rivi, jossa on uusi logical_query_id mutta jossa sekä hash_id että physical_hash_id pysyvät samoina.

Kohteen GUID-BF05E975-45FB-4F40-9AE4-9E40A1124F35-default.jpg kuvaus seuraa
.jpg kuvaus

Esimerkki 4

physical_hash_id-arvoa käytetään myös uudelleen, jos suoritat samanlaisen loogisen kyselyn aihealueeseen, joka perustuu samoihin loogisiin ja fyysisiin malleihin. Voit esimerkiksi suorittaa samanlaisen kyselyn aihealueeseen C - Sample Costs seuraavasti:

[2022-02-04T16:10:17.862+00:00] [OBIS] [TRACE:2] [USER-0] [] [ecid: e49b96a8-33c4-4ba7-a877-e564d207eca1-00242ce7,0:1:15:3] [sik: bootstrap] [tid: 58504700] [messageId: USER-0] [requestid: 13c9003c] [sessionid: 13c90000] [username: oacadmin] ############################################## [[

-------------------- SQL Request, logical request hash:

7b5ea9b1

SET VARIABLE QUERY_SRC_CD='Report';SELECT

   0 s_0,

   "C - Sample Costs"."Offices"."D1  Office" s_1,

   "C - Sample Costs"."Base Facts"."10- Variable Costs" s_2,

   "C - Sample Costs"."Base Facts"."11- Fixed Costs" s_3

FROM "C - Sample Costs"

ORDER BY 2 ASC NULLS LAST

FETCH FIRST 125001 ROWS ONLY

]]

Tämä looginen kysely käynnistää saman SQL-koodin, joka nähtiin A - Sample Sales -aihealueeseen ajetussa kyselyssä:

[2022-02-04T16:10:17.866+00:00] [OBIS] [TRACE:2] [USER-18] [] [ecid: e49b96a8-33c4-4ba7-a877-e564d207eca1-00242ce7,0:1:15:5] [sik: bootstrap] [tid: 58504700] [messageId: USER-18] [requestid: 13c9003c] [sessionid: 13c90000] [username: oacadmin] -------------------- Sending query to database named 01 - Sample App Data (ORCL) (id: <<52912>>), client type Oracle Call Interface (OCI), connection pool named Sample Relational Connection, logical request hash 7b5ea9b1, physical request hash bd6708b8: [[

WITH

SAWITH0 AS (select sum(T5398.Cost_Fixed) as c1,

     sum(T5398.Cost_Variable) as c2,

     T5257.Office_Dsc as c3,

     T5257.Office_Key as c4

from

     BISAMPLE.SAMP_OFFICES_D T5257 /* D30 Offices */ ,

     BISAMPLE.SAMP_REVENUE_F T5398 /* F10 Billed Rev */

where  ( T5257.Office_Key = T5398.Office_Key )

group by T5257.Office_Dsc, T5257.Office_Key),

SAWITH1 AS (select 0 as c1,

     D1.c3 as c2,

     D1.c2 as c3,

     D1.c1 as c4,

     D1.c4 as c5

from

     SAWITH0 D1)

select D1.c1 as c1, D1.c2 as c2, D1.c3 as c3, D1.c4 as c4 from ( select D1.c1 as c1,

     D1.c2 as c2,

     D1.c3 as c3,

     D1.c4 as c4

from

     SAWITH1 D1

order by c2 ) D1 where rownum <= 125001

]]

Etsi ensin tunnus käytön seurannan loogisesta taulusta. Huomaa, että looginen hash_id on eri kuin kyselyssä, joka ajettiin A - Sample Sales -aihealueeseen.

Kohteen GUID-16D78632-88BA-446F-A6D7-496DA5662869-default.jpg kuvaus seuraa
.jpg kuvaus

Käytön seurannan fyysisestä taulusta näet, että vaikka looginen hash_id on eri, physical_hash_id on sama.

Kohteen GUID-91049191-7E76-407D-B15B-A74160942148-default.jpg kuvaus seuraa
.jpg kuvaus

Esimerkki 5

Tässä esimerkissä ajetaan samat kyselyt, mutta tällä kertaa valitaankin Päivitä. Huomaa muuttuja OBIS_REFRESH_CACHE=1, joka ilmaisee päivityksen. Kuten voidaan odottaa, käytön seurannan loogiseen tauluun lisätään uusi rivi, mutta siinä on eri looginen hash_id.​

Kohteen GUID-BFA0DEA8-423A-414C-8BC9-E1B8EA382689-default.jpg kuvaus seuraa
.jpg kuvaus

Mutta kun ajat kyselyn käytön seurannan fyysiseen tauluun, näet, että kaikissa kyselyissä on sama physical_hash_id.

Kohteen GUID-D6CC7144-9177-4CDA-B57A-1A4E4A6615A5-default.jpg kuvaus seuraa
.jpg kuvaus

Koska kaikissa neljässä loogisessa kyselyssä on sama physical_hash_id, kyselyn V$SQL-taulussa näkyy vain yksi tietue.

Kohteen GUID-13AE24EE-9C17-48D9-976F-49FF882A5E42-default.jpg kuvaus seuraa
.jpg kuvaus

Esimerkki 6

Samalla menetelmällä voit tehdä vianmäärityksiä tietojen visualisoinnin kyselyissä, jotka perustuvat aihealueeseen (RPD) tai tietokantayhteyteen. Tietokantayhteyksien tapauksessa menetelmää voi soveltaa sekä tietojen visualisointeihin että kyselyihin, joilla täytetään tietojoukkoja.

Voit määrittää kyselyn tyypin eli esimerkiksi tietojen visualisoinnin, tietojoukon, analyysin tai ODBC:n QUERY_SRC_CD-sarakkeen arvon perusteella. Esimerkiksi tietojen visualisoinnin kyselyjen arvo on Visual Analyzer, tietojoukon täyttämiseen käytetyn kyselyn arvo on data-prep, analyysien arvo on Report ja joidenkin sisäisten ODBC-proseduurikutsujen arvo on Soap.

Jotta voit luoda tietojen visualisoinnin SQL-lauseen, perustana olevan tietojoukon käyttöoikeuden asetukseksi on muutettava Käytössä.

Tässä esimerkissä luodaan tietojen visualisoinnin kysely (samoin kuin edellä), joka suoritetaan Oracle-tietokantayhteyteen perustuvaan tietojoukkoon:

[2022-02-03T19:42:06.564+00:00] [OBIS] [TRACE:2] [USER-0] [] [ecid: f95b5f1b-1e5c-4604-b82a-3eb3717f3aa6-002aa26e,0:1:1:3] [sik: bootstrap] [tid: 58b0a700] [messageId: USER-0] [requestid: ed830023] [sessionid: ed830000] [username: oacadmin] ############################################## [[

-------------------- SQL Request, logical request hash:

3158b05

SET VARIABLE QUERY_SRC_CD='Visual Analyzer',SAW_SRC_PATH='{"viewID":"view!1","currentCanvas":"canvas!1"}',ENABLE_DIMENSIONALITY = 1; SELECT

   0 s_0,

   XSA('oacadmin'.'BISAMPLE_OfficeRevenue')."SAMP_OFFICES_D"."OFFICE_DSC" s_1,

   XSA('oacadmin'.'BISAMPLE_OfficeRevenue')."SAMP_REVENUE_F"."COST_FIXED" s_2,

   XSA('oacadmin'.'BISAMPLE_OfficeRevenue')."SAMP_REVENUE_F"."COST_VARIABLE" s_3

FROM XSA('oacadmin'.'BISAMPLE_OfficeRevenue')

ORDER BY 2 ASC NULLS LAST

FETCH FIRST 125001 ROWS ONLY

/* AdditionalDetail='VisualAnalyzer' */

Se käynnistää seuraavan SQL-koodin:

[2022-02-03T19:42:06.960+00:00] [OBIS] [TRACE:2] [USER-18] [] [ecid: f95b5f1b-1e5c-4604-b82a-3eb3717f3aa6-002aa26e,0:1:1:5] [sik: bootstrap] [tid: 58b0a700] [messageId: USER-18] [requestid: ed830023] [sessionid: ed830000] [username: oacadmin] -------------------- Sending query to database named 'oacadmin'.'BISAMPLE' (id: <<147945>>), client type OCI 10g/11g, connection pool named 'oacadmin'.'BISAMPLE', logical request hash 3158b05, physical request hash c48e8741: [[

WITH

SAWITH0 AS (select T1000005.OFFICE_KEY as c1,

     T1000005.OFFICE_DSC as c2

from

     BISAMPLE.SAMP_OFFICES_D T1000005),

SAWITH1 AS (select T1000008.OFFICE_KEY as c1,

     T1000008.COST_FIXED as c2,

     T1000008.COST_VARIABLE as c3

from

     BISAMPLE.SAMP_REVENUE_F T1000008),

SAWITH2 AS (select D1.c2 as c1,

     D2.c2 as c2,

     D2.c3 as c3

from

     SAWITH0 D1 inner join SAWITH1 D2 On D1.c1 = D2.c1),

SAWITH3 AS (select D102.c1 as c1,

     sum(D102.c2) as c2,

     sum(D102.c3) as c3

from

     SAWITH2 D102

group by D102.c1)

select D1.c1 as c1, D1.c2 as c2, D1.c3 as c3, D1.c4 as c4 from ( select 0 as c1,

     D110.c1 as c2,

     D110.c2 as c3,

     D110.c3 as c4

from

     SAWITH3 D110

order by c2 ) D1 where rownum <= 125001

Käytön seurannan loogisesta taulusta löydät hash_id-arvon, jota käytetään käytön seurannan fyysisen taulun suodatukseen.

Kohteen GUID-C053C7FB-251A-4021-A850-1F6006BEBFF1-default.jpg kuvaus seuraa
.jpg kuvaus

Käytön seurannan fyysisestä taulusta löydät physical_hash_id.-arvon

Kohteen GUID-EB289F16-56B0-4AFB-8C96-2D7B55680B7B-default.jpg kuvaus seuraa
.jpg kuvaus

Kun suoritat kyselyn V$SQL-tauluun, löydät SQL_ID-arvon uudelleen.

Kohteen GUID-CD805B03-A8AD-40F0-AE84-BD28AC8B6EF8-default.jpg kuvaus seuraa
.jpg kuvaus

Löydät loogisen hash_id-arvon ja physical_hash_id-arvon myös istuntojen hallintalokista (katso edellä olevien lokikatkelmien korostetut osat). Toisin sanoen löydät SQL_ID-arvon itse lokista. Käytön seurannan taulujen käytössä on se etu, että istuntojen hallinnan lokimerkinnät ovat väliaikaisia, joten ne katoavat, ellet kerää hajautustunnuksia samanaikaisesti kyselyn ajamisen kanssa.

Käytön seurannan tauluihin tiedot puolestaan kirjataan vasta kyselyn valmistuttua. Joten jos teet vianmääritystä pitkään kestävässä, vielä kesken olevassa kyselyssä ja haluat kirjata muistiin sql_id-arvon, löydät loogisen hash_id-arvon ja physical_hash_id-arvon istuntojen hallintalokista.

Jos taas teet SQL-lauseen vianmääritystä ja tutkit tietokantaa, saat tutkimasi SQL-lauseen SQL_ID-arvon nopeasti yhdistämällä käytön seurannan taulujen ja V$SQL-järjestelmätaulun (tai GV$SQL-taulun) tiedot.