biztos lehet abban is, csak maskeppen kell bekapcsolni az outputot. nem hasznaltam kb soha, sajnos ebben nem tudok segiteni. a helpjeben ha rakeresel a dbms_output-ra, tuti megtalalod.
Pl sql developert használok és az első sorra a hibaüzenet:
ORA-00922: Nem megengedett vagy hiányzó opció
Az az érdekes hogy ezután rögtön dob egy másik hibaablakat is, miszerint 4. sor 93. oszlop: identifier 'D' must be declared és 4. sor 7. oszlop: statement ignored - azonban ha kihagyom az első sort, akkor ez nem jelenik meg, hanem a már említett módon lefut úgy hogy 'se kép, se hang'..
a dbms_output az egy utility amivel tudsz plsql-bol kimenetet irni. a set serveroutput on az a szokasos oracle toolokban annak bekapcsolasa hogy a kliens ki is irja a dolgot. sqlplusban vagy sqldeveloperben mukszik tutira, nem szokott kelleni hozza speci jogosultsag. milyen hibauzenetet ad?
set serveroutput on declare d date; begin for s in (select table_name from user_tables where rownum<6) loop begin execute immediate 'select scn_to_timestamp(max(ora_rowscn)) from '||s.table_name into d; dbms_output.put_line(s.table_name||' '||to_char(d)); exception when others then dbms_output.put_line(s.table_name||' no luck: '||sqlcode); end; end loop; end; /
-- jo lassu a nagy tablakra
-- van benne egy rownum<6 hogy csak az elso 5 tablat mutassa
-- ha regi az scn, nem tudjuk megmondani a pontos datumot
Sok táblánál kellene ez az adat, így a unionozásnál hátha lenne szebb megoldás..
Esetleg valamilyen ciklussal/cursorral végig lehetne lépkedni a táblákon (mondjuk egy adott user/schema alá tartozókon) és táblánként kiíratni ezt a frissítési adatot?
síma select-el lehívva ugyan megkapható a teljes táblanév, (pl user||'.'||táblanévŰ) ám azt nem eszi meg a rowscn-el együtt..
select to_char (scn_to_timestamp(max(ora_rowscn)), 'YYYY.MM.DD HH24:MI:SS') AS Utolso_TABLANEV1 from TABLANEV1
union
select to_char (scn_to_timestamp(max(ora_rowscn)), 'YYYY.MM.DD HH24:MI:SS') AS Utolso_TABLANEV2 from TABLANEV2
union
select to_char (scn_to_timestamp(max(ora_rowscn)), 'YYYY.MM.DD HH24:MI:SS') AS Utolso_TABLANEV3 from TABLANEV3;
A dolog azon alapul, hogy minden block header-ben ott van utolsó módosításának az SCN-je.
Még azt is meg lehet(ett volna) csinálni, hogy a táblákat rowdependencies enabled attribútummal hozod létre és akkor még azt is tudod, hogy melyik sor lett utoljára piszkálva.
és a harmadik:
audit insert, update, delete, select on TABLANEV1;
audit insert, update, delete, select on TABLANEV2;
audit insert, update, delete, select on TABLANEV3;
Ahh... pivot-al végül könnyedén meglett a megoldás, amit előzőleg azzal hibáztam el, hogy túl sok adatot hívtam le a pivot select részében... Tanulópénz..
1-2 napja foglalkozom az Oracle termékeivel. Van egy Oracle 11.2.0.3-as db-nk. A kérdésem pedig az, hogy .NET, illetve C# fejlesztés esetén elég-e ODAC telepítése (ami tartalmaz instant klienst) vagy pedig szükséges klienst is telepítenem?
(Off: Esetleg iskola/egyetem/tudományos intézet? Azokról esetleg el tudom képzelni, hogy a megtakarítás jegyében elfogadnak kisebb-nagyobb üzemszüneteket, átállási gondokat, funkcionalitás-csökkenést.)
Igen view-kra gondoltam aztán végül én is, mert hogy akkor azokat szépen lehetne grantolni adatszótárlekérdezés alapján.
Talenddel szépen le lehet capture-ölni a view-kat, az egyetlen megoldandó feladat )ekkora méreteknél), hogy jó sorrendben kell ezt megtenni a beágyazott view előbb jöjjön létre a PostgreSQL-oldalon.
És igen: nem lesz gyors. ;)
Olyan trükkök persze már előjöttek, hogy userenv-lekérdezéssel rákérdez a LANG(nyelvre), hogy ennek megfelelő nyelven jöjjön a select-resultset,ilyenből van nem is kevés. :)
(Off: Ez komoly? Volt olyan felelős vezető, aki erre rábólintott? Normálisan egy céges rendszerben egy-egy Oracle alverzióváltást is hosszas 'merjük-ne-merjük' rinyálások előznek meg, mert mindenki tudja, hogy mennyi akna lehet elásva abban is... Na de ez... Még jó, hogy nem sqlite-ra...)
Nem hasznaltam meg pgrest sosem, tenyleg nincs benne szinonima? Akkor helyettuk view-kat kell csinálni?
Mivel plsql-ben vagyok otthon, valoszinuleg nekiallnek plsql-ben irni egy generatort, ami olvassa az adatszotart meg a dbms_ddl-t, es fossa ki a pgres ddl-t. Aztan apro lepesenkent tesztelni. Nyilvan elotte jo lenne atlatni hogy van esely arra hogy az egesz mukodjon. Gbyte DDL az durva, mindenkeppen baromi sokaig fog futni.
Aki hasznal tervezoeszkozoket, vajon tud olyat aminek lenne eselye lecapture-olni az oracle db-t, es siman legeneralni a pgres ddl-t?
Topik: Oracle szinonimák migrálása PostgreSQL alá (ahol nincs is ilyen ugye)
Az adatbázis brutál nagy: többszáz user, soktízezer (egymásba is ágyazott, private és public szinonimákra is hivatkozó) VIEW-t tartalmaz (csak a VIEW-definiciók text-állománya GB-os nagyságrendű)
Nehezítés: VIEW és ctid(PostgreSQL-specifikus ORACLE ROWID) együttes menedzselése.
Amit lehet géppel kéne csinálni, nem kézzel, értelemszerűen.
Ki hogy fogna hozzá? Én ott tartok, hogy egyelőre kaparom össze magamat a romokból, miután letaglózott a kérdés. ;)