Co przyniesie nam 11g?

Jadwiga Gnybek
Jadwiga_Gnybek@nofer.lodz.pl

Jeśli wierzyć zapowiedziom naszej ulubionej korporacji, rok 2007 będzie stał pod znakiem wyczekiwania na jedenastkę. Na Oracle OpenWorld 2006 ogłoszono bowiem, że wersja beta bazy 11g jest już w fazie testów a komercyjną premierę nowej wersji motoru swej bazy, Oracle przewiduje na przełom 2007 i 2008 roku.

Postarajmy się pokrótce wymienić choćby nowe funkcjonalności bazy i jej otoczenia. Aby co ciekawsze z nich opisać bardziej szczegółowo, będziemy mieli czas zarówno jeszcze przed premierą, jak i już po ukazaniu się jedenastki na rynku. Na razie musimy się zadowolić słowem pisanym zapowiadającym aż 482 nowe „ficzery” (features). Niestety nie o wszystkich można jeszcze poczytać, więc skoncentrujmy się na tych już choćby lakonicznie opisanych. Nowinek poszukiwać powinniśmy w specyfikacji SQLa i PL/SQLa, mechanizmach obsługi ustawień międzynarodowych, oczywiście w narzędziach dostarczanych administratorom bazy, w mechanizmach obsługi pracy klastra oraz w dwóch zawsze istotnych i będących nieustannie na cenzurowanym obszarach: wydajności oraz bezpieczeństwa.

Zacznijmy od zagadnień najbliższych memu sercu a więc nowym możliwościom udostępnianym administratorom jedenastki:

  • Interval partitioning for tables czyli Partycjonowanie interwałowe. Jedenastka będzie pozwalała na utworzenie tabeli, która będzie partycjonowana w miarę napływających do niej danych. Zatem jeśli jedną z kolumn typu data wskażemy jako wyznacznik partycjonowania i określimy, że zapisywane tam dane mają być dzielone na partycje zawierające rekordy oznaczone datą z kolejnych miesięcy, to pojawienie się rekordu zawierającego datę z kolejnego miesiąca spowoduje automatyczne wygenerowanie kolejnej partycji tej tabeli.
  • Nowe mechanizmy rozkładania obciążeń (load balancing utilities) – no, może nie zupełnie nowe, ale po raz kolejny poprawione. Wśród nich nowa wersja Web Server Load Balancing, Load Balancing dla instancji RAC, Automated Storage Load Balancing, Data Guard Load Balancing oraz Listener Load Blancing. Jak widać jest tego sporo, bo i potrzeby rozległe. Coraz to bardziej rozbudowane i skomplikowane instalacje mają bowiem tendencję do pewnej opieszałości. Zwielokrotnienia elementów krytycznych mają natomiast sens, jeśli potrafimy dynamicznie korzystać z takich zasobów w zależności od charakteru i wielkości obciążeń. Do najważniejszych zmian, czy rozszerzeń zaliczyć należy umożliwienie rozkładu obciążenia pomiędzy bazami pracującymi w trybie standby (to nowa funkcjonalność Data Guard Load Balancing) oraz umożliwienie zdefiniowania w SAM jednego obszaru składowania dzielonego pomiędzy wiele baz danych. Równie łatwo takie wspólne zasoby dyskowe będą mogły być przydzielane poszczególnym bazom i w razie potrzeby przenoszone do baz innych, chwilowo mniej obciążonych.
  • Nowy typ danych „simple_integer” – to typ danych które z definicji nie przyjmują wartości null. Jeśli wierzyć zapowiedziom twórców, nowy typ danych ma być przetwarzany w procedurach szybciej niż PLS_INTEGER i charakteryzować się mniejszą podatnością na overflow.
  • Szybkie wyzwalacze – nowa wersja bazy ma zadbać o szybsze wykonywanie kodu zapisanego w trigerach bazodanowych. Czas wykonywanych w ten sposób operacji ma zostać skrócony średnio o 25%. Szczególnie odczuwalne powinno być przyspieszenie operacji realizujących zmianę danych zapisanych w innych tabelach bazy.
  • Backup bez przestrzeni tabel UNDO. Uznając za fakt, że przestrzeń tabel UNDO osiągając duże rozmiary nie zawiera w sobie istotnych i wartych backupowania treści, nowa wersja RMAN będzie umożliwiała wykluczenie tej przestrzeni z backupy bazy.
  • Wirtualne kolumny tabel – umożliwią zdefiniowanie na poziomie polecenia create table tabeli posiadającej na przykład kolumny c1 number, c2 number i c3 as (c1+c2) virtual.
  • Zwiększone wsparcie dla XML. Nadal dane zapisane w tym standardzie składować będzie można w polach typu CLOB lub binary data type. Nowością będzie natomiast wsparcie mechanizmu zadawania zapytań XQuery oraz SQL XML.
  • Automatyczny donosiciel. Automatic Diagnostic Repository (ADR) w jedenastej wersji bazy to prawdziwy zawodowy donosiciel. W przypadku wystąpienia błędu krytycznego, automatycznie wykreuje informacje o incydencie, prześle je do wiadomości DBA, włączy mechanizm sprawdzania kondycji systemu, a następnie wszystko to za pośrednictwem Incident Packaging Service (IPS)wyśle automatycznie do wsparcia Oracle.
  • Nowe oblicze konsoli OEM – powinno umożliwić łatwiejszą instalację, czy deinstalację tego produktu, dostarczyć narzędzi dla zupełnie początkujących administratorów poszukujących odpowiedzi co zrobić, aby postawić na nogi uszkodzoną bazę, poprawić narzędzia zarządzania GRIDem, oraz posiadać interfejsy pozwalające na zarządzanie aplikacjami Oracla zarówno tymi „starymi” jak i dopiero co kupionymi.

Kilka prezentów dla programistów: nowy driver PHP, poprawione kompilatory Java i PL/SQL, lepsze mechanizmy zarządzania sekwencjami umożliwiające pożegnanie się z poleceniem sequence.nextval. Nowy motor bazy wyposażony będzie również w wiele mechanizmów mających na celu poprawienie wydajności przetwarzania danych. Służyć temu ma między innymi umożliwienie łatwego uruchamiania makr pisanych w „C” . A koro o „C” mowa, to PL/SQL pozazdrościł wreszcie temu językowi starej poczciwej pętli loop i wyposażony został w nowe słowo kluczowe „continue”, które pozwoli zrezygnować z jakże niewdzięcznej konstrukcji GOTO i pominąć wykonywanie kolejnych linii kodu rozpoczynających się od słówka else. A drążąc dalej przyszłość starego dobrego PL/SQLa, jego procedury będą mogły teraz mieć status „disabled” przez analogię do statusów „enabled” i „invalid” stosowanych dla dba_objects. Uproszczona zostanie również procedura kompilacji kodu PL/SQLa: jego natywny kompilator nie będzie już potrzebował pomocy kompilatora C. Lepiej będą śledzone również wzajemne powiązania obiektów bazodanowych tak, aby zmniejszać liczbę obiektów, które mogą ucierpieć w wyniku realizacji poleceń DDL.

  • Oracle 11g XML Enhancements – jedenastka wspierać będzie Content Repository API for Java Technology (JSR 170). Możliwe będzie zatem wprowadzanie składni XML do kodu pisanego w PL/SQLu i na odwrót – jak kto lubi.
  • Do nowinek SQLa zaliczyć należy nowy hint składni zapytań /*+result_cache*/. Wymusza on zapamiętanie wyniku zapytania w buforach danych, nie zaś w blokach danych przechowujących wyniki wszystkich zapytań. Hint ten używany zarówno w składni SQLa jak i PL/SQLa; umożliwia super szybki dostęp do odczytanych w ten sposób danych. Nowym narzędziem programistów będzie niewątpliwie SQL execution Plan Management. Dzięki niemu możliwe będzie wskazywanie określonego planu wykonania zapytania (explain plan) niezależnego od aktualnych wskazań statystyk bazodanowych i mechanizmów zaimpelentowanych w danym motorze bazy danych. A skoro o optymalizacji mowa, szybciej ma działać pakiet dbms_stats. Umożliwi to nam szybsze i mniej obciążające bazę zbieranie statystyk CBO.
  • Dynamic SQL wiecznie żywy! Pakiet DBMS_SQL – jak wszystko w tej nowej bazie szybszy i nowocześniejszy, akceptować będzie operacje na danych typu CLOB (ale nie większych niż limit NDS czyli 32k).
  • Automaty, automaty. Tego w jedenastce też nie zabraknie. Dla programistów Fully Automatic SQL Tuning. O ile dziesiątka podpowiadała nam co zrobić, o tyle jedenastka może te zmiany sama na naszym kodzie zaimplementować. Kuszące to, ale chyba równie niebezpieczne. Jeśli nie ulegniemy automatycznemu przyspieszaczowi kodu, możemy skusić się na automat podpowiadający nam optymalne rozwiązania w dziedzinie rozmieszczania danych 11g SQL Access Advisor. Doradzi nam on jak spartycjonować nasze dane tak, aby uzyskać optymalnie szybki do nich dostęp. Podobnie jak poprzednio, możemy zamówić sobie nie tylko diagnozę ale i realizację poaudytowych zaleceń. I wreszcie totalna automatyzacja zużycia pamięci. Automatic Memory Tuning. Już w 9imieliśmy możliwość automatyzacji strojenia PGA. Dziesiątka rozszerzyła pole działania optymalizatorów do SGA. W jedenastce rola DBA sprowadza się do wprowadzenia jednego parametru – ile RAMu może zagospodarować baza. Reszta zrobi się sama. Dla nieco bardziej nieufnych pozostawiono na szczęście możliwość wprowadzania górnych i dolnych progów dla PGA, SGA i OS Processes. Nowe możliwości znajdziemy również przeglądając funkcje Resource Manager’a. Narzędzie to potrafi już zarządzać nie tylko CPU ale również operacjami I/O. Rozszerzenie funkcjonalności znaleźć możemy też w ADDM 11g. Narzędzie to nie tylko potrafi doradzić nam, co zrobić z pojedynczą instancją bazy danych. Wersja jedenasta potrafi zdiagnozować całą instalację RAC – oczywiście tylko w warstwie bazodanowej.
  • Nowości jak rodzynki. Wśród wielu usprawnień i modyfikacji, wyczekiwane i spektakularne nowinki są jak rodzynki w drożdżowym placku. Do takich właśnie nowinek wersji jedenastej będziemy mogli – mam nadzieję – zaliczyć nowy szybszy algorytm sortowania, nad którym pracowano już w wydaniach wersji dziesiątej, oraz nowy algorytm obsługi haseł dostępu, wprowadzający wrażliwość oraclowego hasła na użycie dużych i małych liter. Myślę że dla „starych” praktyków będzie to funkcjonalność z początku dość „uciążliwa”, a algorytm DES zastąpiony zostanie przez SHA-1.

Oczywiście większe i mniejsze ciekawostki i nowinki wymieniać można by jeszcze długo. Trudno dziś jeszcze zawyrokować, czym naprawdę jedenastka nas urzeknie. Tego dowiemy się oczywiście nawet nie w dniu premiery, ale dopiero w kilka miesięcy później, gdy będziemy już mogli autorytatywnie stwierdzić, ile w jedenastce poprawiono, a co troszkę się nie udało.

DO JEDENASTKI ZATEM – do jedenastki!