OLAP 11g: Instalacija AWM (Analytic Workspace Manager)
Tuesday, 23.10.2012 – DejanPošto se u zadnje vrijeme intenzivno bavim DWH (Data WareHouse) tehnologijama, odlučio sam isprobati nove OLAP opcije u verziji 11g.
U sklopu toga, krenuh instalirati AWM (Analytic Workspace Manager) prateći uputstvo korak po korak kao što piše u tutorijalu “Building OLAP 11g Cubes“. Downloadao sam i instalirao sve šta je bilo potrebno, ali nisam morao čekati dugo na prvu grešku….
U poglavlju “Creating an Analytic Workspace” fino piše:
“Enter Oracle11g in the Description field and <hostname>:1521:<SID> in the Connection Information field and click Create.“, a ja se pravim pametan i umjesto toga, upisujem tnsnames connection string (u mom slučaju DWHTEST). Naravno da nije radilo – dobio sam grešku:
“oracle.jdbc.driver.T2CConnection.getLibraryVersionoNumber()”
Dakle, ispravih to na localhost:1521:DWHTEST i mogao sam nastaviti dalje…
Čitav proces tekao je glatko dok nisam došao do dijela “Loading and Viewing Cube Data” i koraka “Maintain Cube SALES_CUBE” … E tu su nastale muke…
Konstantno sam dobijao grešku (kod mene na njemačkom jeziku, jer su mi lokalna podešavanja tako postavljena):
INI: Fehler beim Erstellen eines Definition Managers, Allgemein in TxsOqConnection::generic<BuildProcess>INI: XOQ-01600: OLAP-DML-Fehler “ORA-01858: Ein nicht-numerisches Zeichen wurde gefunden, während ein numerisches Zeichen erwartet wurde
” bei der Ausführung von DML “SYS.AWXML!R11_LOAD_MEASURES(‘SALES_CUBE.CUBE’ SYS.AWXML!___R11_LONG_ARG_VALUE(SYS.AWXML!___R11_LONG_ARG_DIM 1) SYS.AWXML!___R11_LONG_ARG_VALUE(SYS.AWXML!___R11_LONG_ARG_DIM 2) SYS.AWXML!___R11_LONG_ARG_VALUE(SYS.AWXML!___R11_LONG_ARG_DIM 3) ‘NO’)”, Allgemein in TxsOqStdFormCommand::execute
Dole u popisu svih operacija, pored naziva “failed” koraka stoji i nepotpun SQL kôd, tako da ga ne mogu kopirati i izvršiti u SQL Developeru, TOAD-u ili SQL Plusu. I ajd sad ti znaj u čemu je problem !?
E sad na scenu stupa iskustvo – u TOAD-u nađem ovaj session od AWM programa, pokrenem tracing za taj session i opet u AWM kliknem na “Maintain SALES_CUBE”. Očekivano, u trace datoteci sam pronašao kompletan SQL kôd:
PARSING IN CURSOR #46 len=11771 dep=1 uid=91 oct=3 lid=91 tim=215623360605 hv=3267082949 ad=’7ff86cb22c0′ sqlid=’a4nh9jm1brfq5′
SELECT /*+ bypass_recursive_check cursor_sharing_exact no_expand no_rewrite */ T44_CHANNEL_KEY ALIAS_237, T41_MONTH_ID ALIAS_238, T38_STATE_PROVINCE_KEY ALIAS_239, T35_ITEM_KEY ALIAS_240, SUM(T47_SALES) ALIAS_241, SUM(T47_QUANTITY) ALIAS_242 FROM ( SELECT /*+ no_rewrite */ T1.”QUANTITY” T47_QUANTITY, T1.”SALES” T47_SALES, T1.”DAY_KEY” T47_DAY_KEY, T1.”PRODUCT” T47_PRODUCT, T1.”CHANNEL” T47_CHANNEL, T1.”CUSTOMER” T47_CUSTOMER FROM OLAPTRAIN.”SALES_FACT” T1 ) T47, ( SELECT /*+ no_rewrite */ T1.”CHANNEL_KEY” T44_CHANNEL_KEY FROM OLAPTRAIN.”CHANNELS” T1 ) T44, ( SELECT /*+ no_rewrite */ T1.”DAY_KEY” T41_DAY_KEY, T1.”MONTH_ID” T41_MONTH_ID FROM OLAPTRAIN.”TIMES” T1 ) T41, ( SELECT /*+ no_rewrite */ T1.”CUSTOMER_KEY” T38_CUSTOMER_KEY, T1.”STATE_PROVINCE_KEY” T38_STATE_PROVINCE_KEY FROM OLAPTRAIN.”CUSTOMERS” T1 ) T38, ( SELECT /*+ no_rewrite */ T1.”ITEM_KEY” T35_ITEM_KEY FROM OLAPTRAIN.”PRODUCTS” T1 ) T35 WHERE ((T47_CHANNEL = T44_CHANNEL_KEY) AND (T47_DAY_KEY = T41_DAY_KEY) AND (T47_CUSTOMER = T38_CUSTOMER_KEY) AND (T47_PRODUCT = T35_ITEM_KEY) AND ((T47_DAY_KEY) IN ((TO_DATE(’06-FEB-2010′) ) , (TO_DATE(’20-JAN-2010′) ) , (TO_DATE(’14-NOV-2010′) ) , (TO_DATE(’21-APR-2010′) ) , (TO_DATE(’02-APR-2010′) ) , (TO_DATE(’11-JAN-2010′) ) , (TO_DATE(’29-JAN-2010′) ) , (TO_DATE(’27-JUN-2010′) ) , (TO_DATE(’30-NOV-2010′) ) , (TO_DATE(’11-AUG-2010′) ) , (TO_DATE(’30-JAN-2010′) ) , (TO_DATE(’25-JAN-2010′) ) , (TO_DATE(’26-NOV-2010′) ) , (TO_DATE(’26-OCT-2010′) ) ,
— … ostatak obrisan radi preglednosti …
(TO_DATE(’21-JAN-2010′) ) , (TO_DATE(’02-JUN-2010′) ) , (TO_DATE(’14-JUN-2010′) ) , (TO_DATE(’16-MAR-2010′) ) , (TO_DATE(’27-JUL-2010′) ) , (TO_DATE(’27-MAR-2010′) ) , (TO_DATE(’22-NOV-2010′) ) , (TO_DATE(’19-SEP-2010′) ) ) ) ) GROUP BY (T35_ITEM_KEY, T38_STATE_PROVINCE_KEY, T41_MONTH_ID, T44_CHANNEL_KEY) ORDER BY T35_ITEM_KEY ASC NULLS LAST , T38_STATE_PROVINCE_KEY ASC NULLS LAST , T41_MONTH_ID ASC NULLS LAST , T44_CHANNEL_KEY ASC NULLS LAST
END OF STMT
Obratite pažnju na crveno označeni tekst! Dakle, kopiram čitav SQL upit i pokrenem ga u SQL Plusu. Naravno – greška:
Prva asocijacija je odmah bila na drugačije NLS postavke, jer su ovdje vrijednosti hardkodirane u formatu DD-MON-YYYY (hardkodiranje bez format maske je idiotski!! čisti amaterizam!!).
Prvo sam pokušao sa “AFTER LOGON ON DATABASE” triggerom postaviti NLS_DATE_FORMAT na DD-MON-YYYY, ali nije dalo očekivani rezultat…
Potom sam u registry promijenio NLS_LANG na AMERICAN_AMERICA.AL32UTF8, no ni to nije dalo rezultat…
Čak mi ni moj prijatelj Google nije pomogao 🙁
Međutim!!!! (sad malo dramaturgije uz zvuke fanfara…)
Daaaaavno sam se nešto bio patio sa JDeveloperom i u podsvijesti mi je sinula ideja sa dodatnim Java parametrima za AWM! Naime, u direktorijumu gdje je instaliran AWM, nalazi se i datoteka awm.bat. E u toj datoteci se nalazi slijedeća linija:
start javaw -mx1024m -jar awm11.2.0.3.0.jar
Dodao sam opcije -Duser.language=en -Duser.country=US, tako da je ta linija izgledala onda ovako:
start javaw -mx1024m -Duser.language=en -Duser.country=US -jar awm11.2.0.3.0.jar
Pokrenuo sam AWM, kliknuo na “Maintain SALES_CUBE” i sve je prošlo bez ijedne greške!!! Mojoj sreći nije bilo kraja…
Dakle, ovu grešku vjerovatno većina “english speaking” korisnika neće nikad dobiti, a nas non-english ko **** …
5 Responses to “OLAP 11g: Instalacija AWM (Analytic Workspace Manager)”
RAdim na OBI-ju duže vrijeme i znam da nema hardcodiraniih dijelova NLS postavki tako da sam suspektan da ima primjera koji to rade suprotno. Stoga, ne znam da li sam shvatio, no ratovanja sa NLS i Apex-om imam dosta, pa bih postavio pitanje.
Ako se u “awm.bat” stavi red prije poziva jave:
setlocal
SET NLS_LANG=CROATIAN_CROATIA.AL32UTF8
...i na kraju
enlocal
koji output daje onda ovaj primjer?
Evo kompletnog dijela:
setlocal
SET NLS_LANG=CROATIAN_CROATIA.AL32UTF8
start javaw -mx1024m -jar awm11.2.0.3.0.jar
enlocal
By Damir Vadas on Oct 23, 2012
I ovo … kako mislim da prethodno neće dati rezultata jer je problem u sessiji a ne u instanc epostavkama, sada pogađam dalje …
Negdje na konzoli se mora moći postavit NLS setting pa time i datum.
Ako baš nigdje nema te postavke, pokušati staviti u browseru language na neki drugi i probati (recim hrvatski) … da li sad amijenja datum?
Ne mogu vjerovati da je NLS tako hardcodiran-čak i za indolentne amere to je previše.
🙂
By Damir Vadas on Oct 23, 2012
Ima jedna notica:
When you are designing bidirectional applications, you may wish to use the language environment variables DEVELOPER_NLS_LANG and USER_NLS_LANG rather than NLS_LANG.
For example, if you want to use an American interface while developing an Arabic application in a Windows environment, set these environment variables as follows:
DEVELOPER_NLS_LANG=AMERICAN_AMERICA.AR8MSWIN1256
USER_NLS_LANG=ARABIC_territory.charset
By Damir Vadas on Oct 23, 2012
Probao – pojavljuje se opet greska…
I mene zanima, odakle dolazi onaj SQL upit i zasto je vrijednost hardkodirana, ali nisam imao volje traziti dalje…
By Dejan on Oct 24, 2012
Probaj u onu awm.bat staviti
set NLS_DATE_FORMAT=’dd.mm.yyyy hh24:mi:ss’
Rg
Damir
By Damir Vadas on Oct 28, 2012