Keresés

Részletes keresés

Pugfan Creative Commons License 2007.09.10 0 0 2566
Külső indítás - olyat nem ismerek, ami PL/SQL-en belülről indítana külön, háttérben futó SQL processzt.
Előzmény: Athos78 (2565)
Athos78 Creative Commons License 2007.09.10 0 0 2565
Sziasztok!

Úgy szeretnék egy tárolt eljárást elindítani, hogy az elindítást követően nem várnám meg míg lefut (az eredmény táblában lesz, így mikor lefut ráérek vele foglalkozni). Ha job-ként adom fel úgy működik, de kérdezném, hogy nincs-e valami egyszerűbb megoldás.

Köszi!
Mbazsika Creative Commons License 2007.09.07 0 0 2564
Azt hiszem marad ez a megoldas, koszi.
Előzmény: lakotars (2562)
tnsnames.ora Creative Commons License 2007.09.07 0 0 2563
:o)))
Előzmény: lakotars (2561)
lakotars Creative Commons License 2007.09.06 0 0 2562
Még a 11g doksiban is az szerepel, hogy csak NULL lehet a maszk.

Annyit tehetsz esetleg, hogy teszel rá egy nézetet, és ebben alakítod át a NULL-okat a neked kellő értékre. Így a jogosultságkezelés érdemi részét elvégzi az RLS, a nézet pedig a megjelenítést szabályozza.
Előzmény: Mbazsika (2557)
lakotars Creative Commons License 2007.09.06 0 0 2561
Bizony. És az milyen szép lesz majd, amikor a 11g-ben holmi unalmas aggregált táblák helyett majd OLAP kockákra fognak átíródni a lekérdezések. Előre könnybe lábad a szemem ;-)

Tényleg, ki jön jövő csütörtökön a magyar 11g kickoffra a MOM park mozijába? Állítólag maga Ken Jacobs (dr. DBA) fogja tartani a keynote előadást. Róla ennyit érdemes tudni:
"Since helping to establish the first Oracle office in Washington , DC in 1981, Mr. Jacobs has been a prominent spokesperson for Oracle and an advocate inside the company for customers' interests."

Előzmény: tnsnames.ora (2560)
tnsnames.ora Creative Commons License 2007.09.06 0 0 2560
>De mostanaban ugye a query rewrite meg nemtomhogyhivjak

A query_rewrite azt gondolom egy kicsit más cucc, noha végsősoron neki is az a célja hogy általa jobb legyen a performancia -> Szemben a bindolással, amit az OLTP rendszerek szeretnek nagyon, a query_rewrite-ot a DW-sek szeretik nagyon, elsősorban nekik lett kitalálva, az MV-k kapcsán. Az elemzésére nem vállalkozhatom egy szűk fórumos hozzászólásban így alvás felé kacsintgatva :o) -> tudható, hogy vonatkozó Oracle tanfolyamon órák mennek el rendszerszermléletű tárgyalásával.

Egy first lookos tárgyalása itt van (amikor New Feature volt)
http://www.akadia.com/services/ora815nf.html
Előzmény: halaloszto (2555)
tnsnames.ora Creative Commons License 2007.09.06 0 0 2559
>tudsz csinalni parse, majd bind-execute, bind-execute, bind-execute ciklust pl, ami ugye hatekonyabb mint ha mindig van parse.

Ha ezt nem tudná az execute immediate, akkor erősen kukába való cucc lenne. Az Oracle egyik legnagyobb fejlesztése volt, annó, tán Oracle 6 környékén. Nélküle nagyon sok OLTP-rendszer bírna döglődni, főleg manapság.
Előzmény: halaloszto (2555)
tnsnames.ora Creative Commons License 2007.09.06 0 0 2558
>DBMS_SQL a bonyolultabb lekérdezésekhez kellhet, amikor például nem tudod előre a visszaadott oszlopok számát.

Na azért ilyeneket, hálistennek, nem mindennap csinálunk plsql-ből... :o)
Előzmény: lakotars (2556)
Mbazsika Creative Commons License 2007.09.06 0 0 2557
Erre nincs valami otlet?
Előzmény: Mbazsika (2542)
lakotars Creative Commons License 2007.09.06 0 0 2556
Na, csúnya lenne, ha pont itt nem lennének bindek. De vannak:
execute immediate 'select :x from dual' INTO e USING 123;

DBMS_SQL a bonyolultabb lekérdezésekhez kellhet, amikor például nem tudod előre a visszaadott oszlopok számát.
Előzmény: halaloszto (2555)
halaloszto Creative Commons License 2007.09.06 0 0 2555
Hat erre kategorikus valaszt nem nagyon tudnek adni.

A DBMS_SQL-el ugye tudsz csinalni parse, majd bind-execute, bind-execute, bind-execute ciklust pl, ami ugye hatekonyabb mint ha mindig van parse. De mostanaban ugye a query rewrite meg nemtomhogyhivjak cache ami a parseolt statementeket cacheolja kb ugyanazt tudhatja. Persze execute immediate-ben nincsenek bind variable-k (vagy vannak es tudatlan vagyok??), ha meg belekonkatenalod a parametereket, akkor ugyse tud reuseolni. Szoval nem vagyok egy tuning guru :-)

vajk
Előzmény: tnsnames.ora (2554)
tnsnames.ora Creative Commons License 2007.09.06 0 0 2554
>DBMS_SQL
>Execute Immediate

Ja! Jut eszembe! Mi manapság a deal? Az én emlékeim szerint a dbms_sql, korszerütlen már, halálraítélt, egyre kevésbé támogatott (fejlesztésileg). Mintha mindenhol az Execute Immediate-t támogatnák. Rosszul vélem?
Előzmény: halaloszto (2538)
dorog.zultan Creative Commons License 2007.09.05 0 0 2553
Köszönöm mindenkinek a segítséget,
Execute Immediate lett a megoldás.

dz
Pathmaster Creative Commons License 2007.09.05 0 0 2552
Köszi:)
Előzmény: NevemTeve (2551)
NevemTeve Creative Commons License 2007.09.05 0 0 2551
Mert túlcsordult? Próbáld ki ezt:
select to_char(sum(empno),'099999999') from emp;
Előzmény: Pathmaster (2550)
Pathmaster Creative Commons License 2007.09.05 0 0 2550
Miért #-eket ad vissza a to_char(sum(y),'099999999') kifejezés?
tnsnames.ora Creative Commons License 2007.09.05 0 0 2549
Az elöző munkahelyemen security ok miatt tiltott volt a synonym. Bevallom én sem nagyon rajongtam érte sosem, mert óriási hibákra ad lehetőséget egy téves definició. Egyébként persze teljesen jogos észrevétel.
Előzmény: lakotars (2548)
lakotars Creative Commons License 2007.09.05 0 0 2548
Én ilyenkor szinonimát használok, így a fő SQL-t nem kell változtatni.

Előzmény: tnsnames.ora (2547)
tnsnames.ora Creative Commons License 2007.09.04 0 0 2547
>Szeretnék egy függvényt, ami megkap egy tábla és egy mező nevét,

Igen, ahogy kiderült, akárhogy is fáj (pláne egy DW-snek), a táblanevet 'variálni' egy sql-ben csak dinamikus sql-lel lehet (és tárolt eljárásból, of course) -> nincs hack-lehetőség workaroundra.

Pedig milyen fincsi lehetne adott riportálásnál tYYYYMM táblákat valahogy kényelmesen kezelni statikus sql-lel is, ha úgy adódna -> pláne, hogy DW esetén brutál sql-ek is bírnak előfordulni, amit dinamikusra átírni csak ezért, nem mindig felemelő érzés.
Előzmény: dorog.zultan (2537)
tnsnames.ora Creative Commons License 2007.09.04 0 0 2546
>....és meghatározza a medián értékét

Szép feladat... :o)

Nem tudom hány rekordod van, OLTP-rendszerben-e, mennyire sokszor kellene mennyire párhuzamosan futtatni, egy-egy rekordra vagy full-táblára, meg egyáltalán hogyan állsz a NULL-okkal, de hogy mediánkeresésileg csak 12 meződ van mindenesetre biztatóan hangzik. ;)

Én első nekifutásra a 100% pure sql/view-ben gondolkoznék. Azaz sor-oszlop transzformációval minden rekordból csinálnék 12-et, majd inline-view-s order by után a 6-7-dik rekordokra group by-os avg-t csinálnék. Leginkább azért, mert az Oracle gyári internal order by, biztosan optimálisabban fog futni, mint a VARRAY-os rendezési implementációd, ráadásul e vázolt sql-sem ígérkezik nagyon durvának.

BTW: Nem tudom mennyire közismert: létezik O(n)-s algoritmus (rendezés nélkül) mediánkeresésre, ha egyszerre nagyon sok rekord nagyon sok elemjének mediánja kellene, nagyon sokszor, nagyon párhuzamosan, gyengébb szerveren etc.
Előzmény: Pathmaster (2544)
Mbazsika Creative Commons License 2007.09.04 0 0 2545
Hello!

A doksi alapjan egyertelmuen NULL a maszkolt mezo erteke, es ugy vettem eszre, hogy nem is ragozza tul a kerdest...
Előzmény: HJosie (2543)
Pathmaster Creative Commons License 2007.09.04 0 0 2544
Sziasztok!

Egy olyan rekord szintű függvény elkészítéséhez kérem a segítségeteket, amelynek a bemenete a rekord 12 number típusú mezője, amely értékeket beteszi egy VARRAY tömbbe, majd rendezi, és meghatározza a medián értékét. Majd további műveleteket végez.

A kérdésem az, hogy tartalmaz-e a PL/SQL a VARRAY-re vonatkozó rendező eljárást, vagy ezt nekem kell megírnom.

Köszönettel: P.
HJosie Creative Commons License 2007.09.04 0 0 2543
Hello,

Nezd meg itt: http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14258/d_rls.htm#i1000830

En nem neztem vegig, de talan megtalalod a Neked legjobb policy beallitasokat.
Vagy, ha mas nincs akkor meg talan itt: http://download.oracle.com/docs/cd/B19306_01/network.102/b14266/apdvcntx.htm#sthref2414

J.
Előzmény: Mbazsika (2542)
Mbazsika Creative Commons License 2007.09.04 0 0 2542
Az eredeti problemam (http://forum.index.hu/Article/viewArticle?a=69893049&t=1001339) annyiban lett egy kicsit cifrabb, hogy nem a tiltott rekordok elrejtese a cel, hanem meghatarozott adatmezok kimaszkolasa. Ha a DBMS_RLS.ADD_POLICY-t sec_relevant_cols_opt => DBMS_RLS.ALL_ROWS hivom, akkor a sec_relevant_cols-ban megadott mezoket kimaszkolja, de sajnos NULL ertekre. Meg lehet valahogy oldani, hogy ne NULL, hanem egy altalam definialt erteket kapjanak a kimaszkolt mezok? (raadasul mezonkent mas-mas)
Elore is koszi!
dorog.zultan Creative Commons License 2007.09.03 0 0 2541
nagyon köszönöm,
szép sorban kipróbálom mindegyiket

dz
halaloszto Creative Commons License 2007.09.03 0 0 2540
Ez is jo.

Aztan nagyon vigyazni, nehogy letrejohessen olyan szituacio, amikor a p_tabla ertekekent valami vicces sql jojjon, ami letorol ezt azt, vagy olyan adatot ad vissza amit nem kellene.

vajk
Előzmény: e_laca (2539)
e_laca Creative Commons License 2007.09.03 0 0 2539
vmi ilyesmit csináltam:

type curtyp is ref cursor;
cur_teszt curtyp;
qry varchar2(500) := '
SELECT *
FROM '||pTabla||'
where '||pMezo||' is null
or '||pMezo||' = 0
';

--aztán

open cur_teszt for qry;
Előzmény: dorog.zultan (2537)
halaloszto Creative Commons License 2007.09.03 0 0 2538
Előzmény: dorog.zultan (2537)
dorog.zultan Creative Commons License 2007.09.03 0 0 2537
Sziasztok,

szeretnék egy függvényt,
ami megkap egy tábla és egy mező nevét,
és ebből kiindulva tudok egy cursort építeni
kb így képzelném:

create or replace function teszt(pTabla varchar2, pMezo varchar2) return number is

ret NUMBER(8);
CURSOR cur_teszt
IS
SELECT *
FROM pTabla
where pMezo is null
or pMezo = 0;

...

van erre valami egyszerű megoldás??
köszönöm
dz

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!