Dnes: 17. prosince 2017    | Registrace | Hledáme | Redakce | Info | Testy | Školení | Ocenění | Nápověda | Čtenář: nepřihlášen

Rychlé odkazy
  • Hlavní stránka
  • Seznam rubrik
  • Ankety
  • Editoriály
  • TOP 15
  • KONFERENCE 2008
  • KONFERENCE 2007
  • KONFERENCE 2006
  • KONFERENCE 2005
  • KONFERENCE 2004
  • Sborník
  • Testy
  • Virtuální školení
  • Personalizace


  • Hledáte práci?
    Hledáme redaktora - pojďte s námi tvořit Databázový svět!

    Vyhledávání

    Hledej
    na Databázovém světě!



    Rozšířené vyhledávání

    Rubriky
    Aktuality
    Bezpečnost
    Business
    Česká scéna
    Datové sklady
    Dokumentace
    Dotazovací jazyky
    Hardware
    Historie
    Komentáře
    Literatura
    Metodologie
    Nondb
    Open Source
    Poradna
    Produkty
    Případové studie
    Redakce
    Rozhovory
    Standardy
    Technologie
    Tipy - triky
    Tiskové zprávy
    Vývoj
    Vývojové nástroje
    Zajímavosti

    Co je to?
    Systémový katalog
    Struktury, ve kterých jsou uloženy informace o dané databázi, případně databázovém serveru. Někdy je možné se z anglického Data Dictionary setkat s pojmem datový slovník.

    Akce
    Dynamická Datová Centra
    - na semináři se seznámíte s komplexním řešením a koncepcí Dynamických Datových Center od Fujitsu Siemens Computers se speciálním důrazem na řešení FlexFrame.

    Textová inzerce
    IBPhoenix - Vše o InterBase a Firebirdu.

    Smějete se rádi? - Pak je pro vás Vtipník to pravé!

    Prodejce reklamy - Hledáme schopného prodejce reklamního prostoru, možnost i externí spolupráce.

    Přihlášený čtenář
    Nepřihlášený čtenář

    O portálu
    Databázový svět
    ISSN: 1213-5933

    Web je optimalizován pro rozlišení 1024x768, nicméně kromě větších rozlišení podporujeme i 800x600. Podrobnosti najdete zde.

    Chcete-li mít kdykoliv možnost zkontrolovat obsah našeho portálu, můžete využít podporu rss. Podrobnosti najdete zde.
    Tipy a triky pro Oracle IX. – bojujete s češtinou v Oracle?


    [Tipy - triky] - V devátém pokračování seriálu věnovaného praktickým tipům a trikům pro databázovou platformu Oracle Database se zaměříme na problémy s češtinou – komolí se vám v databázi Oracle záhadně znaky s diakritikou nebo se třeba špatně řadí záznamy? Funguje vám čeština v databázových aplikacích s grafickým rozhraním, ale máte problémy při práci v textovém SQL*Plus? Cílem seriálu je přinášet vám nejen praktické informace, které vám mohou pomoci při správě či vývoji na této platformě, ale také upozorňovat na zajímavé funkce. O kterých možná ani nevíte, že existují.



    Databázová platforma Oracle Database je navržena tak, aby se stejnou databází mohli pracovat i uživatelé s různým národním prostředím a nebo pracující na různých operačních systémech. Je proto docela běžné, že zatím co databázový server běží na unixu a ukládá data ve znakové sadě ISO 8859-2 (ISO Latin 2) nebo třeba v Unicode, klient běžící na Windows pracuje s daty ve znakové sadě Windows 1250.

    Oracle, konkrétně databázový klient, automaticky zajišťuje oboustrannou konverzi, aniž by se o to aplikace musela starat. Chce to jen dvě věci: rozmyslet si, co potřebujete a říct to databázové platformě Oracle – tj. provést správně konfiguraci na straně klienta i serveru. Bohužel zvláště začínající administrátoři na toto nastavení často zapomínají.

    V dnešním článku se podíváme na nastavení na úrovni databáze, specificky se pak zmíním o odlišnostech při použití Oracle Database Express Edition a specifikách databází v Unicode. V dalším pokračování se oak podíváme na nastavení databázového klienta a ukážeme si častou chybu danou specifickým chováním příkazové řádky, resp.aplikací v textovém režimu pod MS Windows.

    Problém s nastavením znakové sady je v tom, že se chyba projeví často až příliš pozdě, občas i po mnoha měsících provozu, kdy už databáze obsahuje velký objem špatně uložených informací. Konverze dat do správné znakové sady pak může být náročná na promyšlení i realizaci. V některých případech je konverze prakticky nemožná. Taková situace může nastat například ve chvíli, kdy na klientu použijete při DML operacích znakovou sadu, kterou nelze beze ztrát převést na databázovou znakovou sadu nebo pokud tabulka obsahuje část dat vložených správně a část ze špatně nakonfigurovaných klientů.

    Vše začíná již při tvorbě databáze
    To základní, co musíte udělat pro správnou podporu češtiny, je zvolit odpovídající znakovou sadu při vytváření databáze. Tomuto bodu je dobré věnovat velkou pozornost. Změnit znakovou sadu existující databáze sice lze, ale postup není úplně triviální.

    Pokud máte stoprocentní jistotu, že všichni vaši uživatelé budou vždy používat na svých stanicích stejnou znakovou sadu, například Win1250, je vaše rozhodnutí jednoduché. Použitím stejné znakové sady na klientovi i v databázi odpadá samozřejmě ta nevelká zátěž způsobená automatickou konverzí. Důležité je ale především zvážit v jakých jazycích budou data, která do databáze budete vkládat.

    Čím dál častěji se databáze vytvářejí s kódováním Unicode, protože nikdy nevíte, kdy vaše firma začne spolupracovat se zahraničním partnerem. Navíc řada aplikací již sama o sobě vnitřně s daty v Unicode pracuje. Aspekty volby databázové znakové sady detailněji popisuje manuál Globalization Support Guide.

    Pro databázi v českém prostředí nejspíše připadají do úvahy tyto znakové sady:

    • EE8MSWIN1250 (MS Windows 1250)
    • EE8ISO8859P2 (ISO Latin 2)
    • AL32UTF8 (UTF-8 - Unicode 4.0 s variabilní délkou znaku)

    Často dochází k chybě, pokud databázi vytváříte přímo během procesu instalace software. Pokud totiž jdete cestou základní instalace (na první obrazovce nezvolíte Advanced Installation), určí se znaková sada databáze podle národního prostředí operačního systému. Častou chybou je právě to, že využijete základní instalaci, ale na úrovni operačního systému nemáte nastavené správné kódování – používáte například anglickou verzi operačního systému se západoevropskou sadou. V tu chvíli se vám i databáze vytvoří se špatnou – například západoevropskou – znakovou sadou.

    V případě pokročilé instalace, nebo pokud vytváříte databázi až následně po instalaci software v samostatném kroku, můžete kódování nastavit v Database Configuration Assistentovi (dbca) nezávisle na operačním systému.


    Database Configuration Assistant

    Popisované nastavení databázové znakové sady ovlivňuje ukládání dat v datových typech VARCHAR2, CHAR, CLOB a LONG. Pro tzv. "národní" datové typy (NVARCHAR2, NCHAR, NCLOB) lze využít variantní znakovou sadu UTF-16 nebo UTF-8. Osobně se ale domnívám, že v našem prostředí tyto "národní" datové typy nejspíš nevyužijete.

    U existující databáze zjistíte její národní nastavení tímto dotazem:

    SELECT * FROM NLS_DATABASE_PARAMETERS;
    
    PARAMETER                      VALUE
    ------------------------------ ------------------------------
    NLS_LANGUAGE                   AMERICAN
    NLS_NUMERIC_CHARACTERS         .,
    NLS_CHARACTERSET               AL32UTF8
    NLS_NCHAR_CHARACTERSET         AL16UTF16
    ...
    

    Databázová znaková sada v Express Edition
    Při instalaci Oracle Database Express Edition máte celé rozhodování jednodušší. Express Edition totiž podporuje jen dvě databázové znakové sady, a to západoevropskou Latin 1 a Unicode UTF-8. Kvůli zmenšení velikosti downloadu přitom volbu provádíte již tím, jakou instalaci si stáhnete z webu. Pro české prostředí vždy z OTN stahujte Oracle Database Express Edition označenou "Universal" a nikoliv "Western European".

    Toto omezení Express Edition se ale netýká podpory znakových sad na straně klienta. I nad Express Edition tedy může pracovat aplikace v kódování Win1250. Správnému nastavení klienta se ale budeme věnovat až příště.

    Úskalí Unicode: bajty a znak
    Volba databázové znakové sady je obvykle pro aplikaci transparentní. Pokud napíšete aplikaci (ať již klientskou část, nebo uložené procedury v PL/SQL) nad databází s kódováním Win1250, bude nejspíš fungovat i v databázi s kódováním ISO 8859-2. Výjimkou je ale určování délek textů u vícebajtových znakových sad. Při deklaraci je třeba rozlišovat, zda délky textů zadáváte pomocí počtu bajtů nebo znaků:

    CREATE TABLE tabulka (
    	jmeno VARCHAR2(20 BYTE),
    	prijmeni VARCHAR2(20 CHAR)
    );
    

    Bude-li tato tabulka uložena v databázi s kódováním Unicode, vložení dvacetiznakového textu s českými znaky do sloupce JMENO selže, zatímco stejný text vložený do PRIJMENI chybu nezpůsobí. Dvacetiznakový český text bude totiž v Unicode nejspíše zabírat více než 20 bajtů, protože znaky s diakritikou budou zabírat dva bajty.

    Většina aplikací a skriptů však způsob určení délek nespecifikuje. V těchto případech rozhoduje hodnota parametru NLS_LENGTH_SEMANTICS. Ten lze nastavit na úrovni databázové instance nebo individuálně pro jednotlivá spojení pomocí SQL či proměnné prostředí na úrovni operačního systému klienta:

    ALTER SESSION SET NLS_LENGTH_SEMANTICS=BYTE;
    CREATE TABLE tabB (sloupec VARCHAR2(50));
    ALTER SESSION SET NLS_LENGTH_SEMANTICS=CHAR;
    CREATE TABLE tabC (sloupec VARCHAR2(50));
    

    Zatímco tabulka v tabulce tabB je délka sloupce omezena na 50 bajtů, v tabulce tabC je omezena na 50 znaků. Obě tabulky jsou přitom vytvořeny zcela stejným příkazem CREATE TABLE. Více se o širokých možnostech národní podpory v databázi Oracle, jako je například možnost přizpůsobení formátů dat a čísel, jazyka oznámení, řazení dat, nebo podpory časových zón, můžete dočíst v manuálu Globalization Support Guide.

    Dnešní ukázky si můžete vyzkoušet na libovolné edici Oracle Database, včetně volně dostupné Express Edition. V případě potřeby si Oracle Database můžete stáhnout na webu společnosti Oracle.

    O autorovi
    David Krch (*1976) pracuje ve společnosti Oracle Czech na pozici Technology Sales Consultant. Vystudoval obor Informační technologie na Vysoké škole ekonomické. Od roku 2001 působí ve firmě Oracle Czech na pozici Technology Sales Consultant, ve které je zodpovědný za podporu prodeje technologií Oracle. Z počátku se zaměřoval na portálová řešení. Od roku 2002 se specializuje na podporu prodeje databáze Oracle a témata související se zajištěním provozu, jako je bezpečnost a vysoká dostupnost. Jako nezávislý vývojář vyvíjel na zakázku databázové aplikace s využitím desktopových databází.

    Související články:
    Tipy a triky pro Oracle XVI. – rychlejší aplikace i bez změn dotazů podruhé (03.02.2009)
    Tipy a triky pro Oracle XV. – rychlejší aplikace i bez změn dotazů poprvé (21.11.2008)
    Tipy a triky pro Oracle XIV. – datová komprese (21.10.2008)
    Tipy a triky pro Oracle XIII. – externí data rychle (17.09.2008)
    Tipy a triky pro Oracle XII. – Jak na řízení přístupu na úrovni záznamů? (15.04.2008)
    Tipy a triky pro Oracle XI. – Error Logging Tables (12.11.2007)
    Tipy a triky pro Oracle X. – bojujete s češtinou v Oracle podruhé? (14.05.2007)
    Tipy a triky pro Oracle VIII. – jak na přenosy velkých dat podruhé (03.01.2007)
    Tipy a triky pro Oracle VII. – jak na přenosy velkých dat poprvé (21.11.2006)
    Tipy a triky pro Oracle VI. – trochu jiné triggery (25.09.2006)
    Tipy a triky pro Oracle V. – změna dat v pohledu? (06.09.2006)
    Tipy a triky pro Oracle IV. – analytické funkce podruhé (14.08.2006)
    Tipy a triky pro Oracle III. – analytické funkce poprvé (19.07.2006)
    Tipy a triky pro Oracle II. – jak na hierarchické struktury? (07.06.2006)
    Tipy a triky pro Oracle I. – jak na automatické přidělování ID? (05.05.2006)

    ( Celý článek! | Autor: David Krch | Počet komentářů: 9 | Přidat komentář | Informační e-mailVytisknout článek )

    Vyhledávání
     

    Anketa
    Kolik ročně utratíte za dovolené?

    Nic 
     (1507 hl.)
    Do 1 000,- Kč 
     (1044 hl.)
    Do 10 000,- Kč 
     (978 hl.)
    Do 25 000,- Kč 
     (1347 hl.)
    Do 50 000,- Kč 
     (994 hl.)
    Do 75 000,- Kč 
     (1151 hl.)
    Více než 75 000,- Kč 
     (993 hl.)

    Celkem hlasovalo: 8014


    Poslední komentáře
    frontierd@126.com
    frontierd@126.com
    frontierd@126.com
    c
    http://www.coachoutl

    Newsletter
    Přihlaste si nezávazně - i bez registrace - odběr informačního newsletteru. Podrobné informace najdete zde.

    Emailová adresa:


    Kalendář
    <<  Prosinec  >>
    PoÚtStČtSoNe
        123
    45678910
    11121314151617
    18192021222324
    25262728293031

    Redakci připojuje


    Nejčtenější

    Databáze je prázdná!


    Nejvíce komentářů

    Databáze je prázdná!


    Reklama






    Nenechte si ujít články na dalších webech




    Na této stránce použité názvy programových produktů, firem apod. mohou být ochrannými známkami
    nebo registrovanými ochrannými známkami příslušných vlastníků.

    Databázový svět | dfKlub - digitální fotografie | Vtipník - vtipy přímo k Vám | Reminder - přestaňte zapomínat | Databázový svět

    Copyright (c) 2004 AVRE Publishing, spol. s r.o. Všechna práva vyhrazena