http://itanalyst.hu/modules/mod_image_show_gk4/cache/ita_head_1gk-is-90.pnglink
http://itanalyst.hu/modules/mod_image_show_gk4/cache/ita_head_2gk-is-90.pnglink
http://itanalyst.hu/modules/mod_image_show_gk4/cache/ita_head_3gk-is-90.pnglink
http://itanalyst.hu/modules/mod_image_show_gk4/cache/ita_head_4gk-is-90.pnglink
«
»
Ön itt van: Home Programfejlesztés Támogatás Oracle 11g new features 2. rész

Oracle 11g new features 2. rész

Folytatom az Oracle 11g újdonságainak felsorolásával és rövid bemutatásával a sorozatot:

Partitioning

Ezentúl az alábbi összetett particionálási lehetőségeink vannak:

  • Range-range
  • Range-hash
  • Range-list
  • List-range
  • List-hash
  • List-list

További hasznos opció a Reference Partitioning melynek segítségével egy „B” táblán úgy hozhatunk létre partíciókat, hogy a partíciók a vele külső kulcson kapcsolt „A” tábla oszlopai szerinti particionálásnak megegyezően készüljön el. Így a B tábla partíciói olyan oszlopokon alapulnak amik az A táblában vannak.

Az Intervallum particionálással végre az Oracle saját maga képes létrehozni a range particionáláskor az egyes partíciókat. Nekünk csak definiálni kell az partíció intervallumok méretét, és a rendszer automatikusan létrehozza a partíciókat, szükség szerint az adatok insertálása közben. Az új partícióneveket a rendszer generálja ezért nem tudunk rá könnyen hivatkozni, viszont ezentúl lehetőségünk van a partícióra dátummal hivatkozni : SQL> select * from my_table partition for (to_date('2010.05.07','yyyy.mm.dd'));

A system partitioning abban az esetben jó, ha nem tudunk logikus particionálási módot választani, ekkor az alkalmazásnak  a beszúrás közben kell meghatározni, hogy melyik partícióba kerüljön az új rekord, és ugyanígy, lekérdezésnél és törlésnél is érdemes meghatározni, különben a teljes táblát végignézi az Oracle.

Az Oracle 10g-ben korábban már lehetőségünk volt táblatereket transzportálni, amely az egyik leggyorsabb módja az adatmozgatásnak. Most már ha egy partíció külön táblatérben van akkor az is elmozgatható külön. Az átmozgatott partíció létrehozza a táblát az új helyen ha ott nem létezik.

Virtuális oszlopokon alapján is lehet partíciót létrehozni, tehát olyan adatok alapján amik nem is léteznek fizikailag.

Ezentúl a particionáláshoz is tartozik tanácsadó (partition advisor).

Schema Management

Sok újdonság van ebben a pontban is: DDL műveletek is elláthatunk már wait opcióval. Tehát amennyiben egy tranzakció exclusive lock-ot alkalmaz egy táblán, akkor nem sikerülhetnek  a ddl műveletek, és egyes esetekben ha sok tranzakció pörög, akkor akár órákig próbálkozhatna a rendszergazda a DDL műveletét végrehajtani (pl.:új oszlop hozzáadása).  E helyett beállítható, hogy a DDL művelet pl.:10 másodpercet próbálkozzon a lefutással. Ez akár session vagy adatbázis  szinten is beállítható.

Default értékekkel feltölthetünk egy újonnan létrehozott not null oszlopot úgy, hogy az adatbázis nem tölti fel fizikailag az oszlopot, hanem az adatszótárba jegyzi meg, hogy minek kéne lennie az oszlopban. Ez a funkció elég hasznos egy több millió soros tábla esetében: idő és energia spórolás.

Ehhez kapcsolódik az az újítás, hogy virtuális oszlopokat hozhatunk létre. A tábla definíciójában definiálhatjuk az oszlop tartalmát, mely akár komplex logikai kifejezés is lehet. Ezekben a virtuális oszlopokba nem lehet adatot beszúrni, csak lekérdezni.

Elrejthetők az egyes indexek az optimalizáló elől, „láthatatlanná” lehet az indexet tenni. Ilyenkor az optimalizáló nem használja, csak abban az esetben ha külön nem adjuk meg neki hintben. E mellett az indexet továbbra is karban tartja az Oracle.

A 11g újdonsága az az opció is, hogy read only módba kapcsolhatók egyes táblák is. Ezelőtt csak különböző nehézségek árán lehetett ezt elérni. (triggerek, VPD policy).

Pontosabb objektumok közti függőség kezelést valósít meg a 11g. Így hogyha egy olyan oszlopa módosul egy táblának amitől közvetlen nem függ a táblán lévő trigger, vagy egy eljárás, akkor ezek az objektumok nem lesznek invalid állapotúak, mint korábban.

IPv6 támogatás is beépült a rendszerbe, most már IPv6 címekkel is hivatkozhatunk az adatbázisra.

Lehetőségünk van most már segment nélküli tábla létrehozásra. Ez azért hasznos, mert nem feltétlen kerül a táblába létrehozásakor adat, így feleslegesen foglalhatja a helyet (szegmens + egy extent).

Index szegmensek esetében a nem használt (unusable) állapotban levő szegmensek által foglalt helyet az Oracle felszabadítja. Ez akkor hasznos ha régi index partíciók helyét akarjuk felszabadítani. Ez a művelet használhatatlanná tenné a táblának ezt a partícióját is 10g-ben, viszont ezentúl ez nem jelent majd problémát, az Oracle 11g végigolvassa majd az adott partíciót, a hibajelzés helyett.

Data Warehousing and OLAP

Az olap kockákat illetve dimenziókat melyeket az adatbázisban tárolunk, egy új fv (cube_table) segítségével, most már egyszerűen sql segítségével elérhetjük.

select * from table(cube_table('<schema>.<dimension>;<hierarchy>'))

Ezt az sql-t elmenthetjük nézetbe, és így a klienseknek nem kell ismerniük ezt a szintaktikát sem. Továbbá a kockák materializált nézetként is működhetnek, és query rewrite-ot is megvalósítanak.

A query rewrite is tovább fejlődött, most már az átíráshoz selectnek nem kell teljesen megegyeznie formailag a materializált nézetben eltárolt selecttel.

Új meta tábla jött létre az adatbázisban, DBA_MVIEW_DETAIL_PARTITION, mely megmondja, hogy egy adott materializált nézethez tartozó tábla adott partíciójában az adatok frissek-e vagy sem.

Egy új tool (java kliens) segíti ezentúl az analitikus objektumok létrehozását, kezelését, ez az Analytic Workspace Manager.

PL/SQL: Efficient Coding

Új fajta trigger jelent meg a 11g-ben: compound trigger. Melynek segítségével egy monolitikus PL SQL kódrészletben írhatunk meg before, before row, after row, after triggert. Ez azért előnyös, mert így a triggerek osztozhat a változókon.

Az ugyanazon a táblán kialakított azonos típusú  triggerek közt ezentúl definiálhatunk sorrendiséget. Meghatározhatjuk, hogy melyik trigger melyiktől függjön (follows <trigger név>). A 10g-ben ez nem volt meghatározható.

A continue paranccsal gazdagodott a ciklus kezelés. Melynek segítségével a következő iterációra léphetünk vagy egymásba-ágyazott ciklusok esetén ki is léphetünk egy külső ciklusba címkék használatával.

Ezentúl a szekvenciák következő értékét ki lehet írni változóba, külön select into használata nélkül is, egyszerű plsql értékadással.

PLSQL warning (PLW) üzeneteket kaphatunk ha beállítjuk,

alter session set plsql_warnings = 'enable:all' Így hasznos figyelmeztetéseket kaphatunk, hanyag módon megírt programunk fordítása közben. pl.: ha lenyeljük az exception-okat:

exception when OTHERS

then

null;

end;

A triggereket ezentúl kikapcsolhatjuk (disable). Így ha fordítjuk őket, akkor információt kaphatunk a fordítás sikerességéről/hibákról, anélkül, hogy a rendszert zavarnánk hibás triggerekkel.

Amennyiben select-ből hívunk függvényeket a 11g-ben kiírhatjuk a paraméter neveket, a „=>” szintaktikával. Lehetőségünk van Native Dynamic SQL-t és REF CURSOR-t egymásba konvertálni.

Típus függőségek esetén ha szülő típust módosítunk, akkor ezt a 10g nem engedi, amíg a van rá típus hivatkozás (gyerek). A 11g-ben lehetőségünk van kényszeríteni a módosítást a FORCE klauzulával.

A cikk forrása az Oracle hivatalos oldala.

http://www.oracle.com/technetwork/articles/sql/index-099021.html