Dnes: 19. září 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?
    Konkurenční přístup
    Situace, kdy k jednomu zdroji dat (nejčastěji stejným záznamům v tabulce) přistupuje současně více uživatelů. Jedním z úkolů vyspělého SŘBD je zajistit, aby nedošlo k porušení konzistence dat (například aby uživatel z tabulky četl vždy aktuální data).

    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 X. – bojujete s češtinou v Oracle podruhé?


    [Tipy - triky] - V desátém pokračování seriálu věnovaného praktickým tipům a trikům pro databázovou platformu Oracle Database se již podruhé 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í.



    Správné nastavení znakové sady na úrovni databáze jsme si popsali minule. Dnes se podíváme na to, jak zajistit správnou konverzi znaků na úrovni databázového klienta a ukážeme si i snadné řešení častého problému s příkazovou řádkou, respektive textovými aplikacemi v MS Windows. Na závěr si pak ukážeme komplexnější příklad špatné konfigurace znakových sad.

    Nastavení na úrovni databázového klienta
    V Oracle je národní prostředí na klientovi, včetně znakové sady, nezávislé na nastavení serveru. Vše řídí proměnná prostředí operačního systému nazvaná NLS_LANG, kterou můžete na klientu nastavit a určit tak výchozí konfiguraci národního prostředí.

    C:\set NLS_LANG=CZECH_CZECH REPUBLIC.EE8MSWIN1250
    

    Formát NLS_LANG je:

    <jazyk>_<region>.<znaková sada>
    

    V MS Windows existuje i druhá možnost, a to nastavit NLS_LANG v registry (každý ORACLE_HOME má svůj podstrom v HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE). Proměnná prostředí má ale logicky před nastavením v registry přednost.

    Důležité je si uvědomit, že parametr znaková sada určuje znakovou sadu, ve které pracuje daná klientská aplikace. Nikoliv tu, ve které jsou data uložena v databázi. Pokud máte databázi ve znakové sadě ISO 8859-2 a přistupujete k ní z Windows s kódováním Windows 1250, je třeba na klientu v NLS_LANG specifikovat kód pro Windows 1250 (EE8MSWIN1250). Povolené hodnoty jednotlivých sekcí NLS_LANG najdete detailně popsány v Globalization Support Guide. V českém prostředí se ale nejčastěji setkáte s těmito kombinacemi:

    • CZECH_CZECH REPUBLIC.EE8MSWIN1250 pro Win1250
    • CZECH_CZECH REPUBLIC.EE8ISO8859P2 pro ISO Latin 2
    • CZECH_CZECH REPUBLIC.EE8PC852 pro PC Latin 2 (MSDOS)
    • CZECH_CZECH REPUBLIC.AL32UTF8 pro UTF-8

    Pokud v dané aplikaci z nějakého důvodu potřebujete zachovat anglické (respektive abychom byli přesní "americké") prostředí, můžete použít například AMERICAN_AMERICA.EE8MSWIN1250 apod.

    Nastavení národního prostředí pro aktuální relaci zjistíte pomocí následujícího dotazu, znaková sada klienta mezi nimi ale není:

    select * 
      from nls_session_parameters;
    
    PARAMETER                      VALUE
    ------------------------------ ------------------------------
    NLS_LANGUAGE                   CZECH
    NLS_TERRITORY                  CZECH REPUBLIC
    NLS_CURRENCY                   Kč
    NLS_ISO_CURRENCY               CZECH REPUBLIC
    NLS_NUMERIC_CHARACTERS         ,.
    NLS_CALENDAR                   GREGORIAN
    NLS_DATE_FORMAT                DD.MM.RR
    NLS_DATE_LANGUAGE              CZECH
    NLS_SORT                       CZECH
    ...
    

    Část jazyk a region v NLS_LANG určují výchozí nastavení parametrů NLS_LANGUAGE a NLS_TERRITORY, které následně určují jazyk chybových hlášek, formáty časových dat a čísel, nebo způsob třídění. Na rozdíl od znakové sady je můžete měnit i v průběhu spojení pomocí příkazu ALTER SESSION.

    Nastavením NLS_LANGUAGE a NLS_TERRITORY změníte všechny parametry národního prostředí na výchozí hodnoty pro daný jazyk a lokalitu. Můžete ale i změnit jen jednotlivé parametry samostatně. Například:

    ALTER SESSION 
      SET NLS_SORT=XCZECH;
    
    ALTER SESSION 
      SET NLS_DATE_FORMAT="DD.MM.YYYY HH24:MI:SS";
    

    Tento příkaz změní pro aktuální spojení způsob řazení dat tak, aby "CH" bylo řazeno mezi "H" a "I" a nikoliv za "C". Změní také formát datumu ve výpisu tak, aby obsahoval i čas.

    Zrada v příkazové řádce MS Windows
    Možná už jste si také všimli zrady, která na vás čeká v chování příkazové řádky u MS Windows. Ta totiž z historických důvodů nepoužívá znakovou sadu Windows 1250, ale starou PC Latin 2 (stránka 852) z MS DOS. Pokud tedy například spouštíte SQL*Plus, který běží v textovém režimu, musíte nastavit:

    NLS_LANG=CZECH_CZECH REPUBLIC.EE8PC852
    

    NLS_LANG v registry je ale obvykle nastaven tak, aby vyhovoval aplikacím běžícím v grafickém režimu (tj. Windows 1250, nebo UTF-8). U textových administrátorských programů jako je SQL*Plus tak nezbývá, než použít proměnnou prostředí pomocí příkazu SET.

    Jestliže stejně jako my víte, že příště zase zapomenete nastavit správně NLS_LANG z příkazové řádky, nabízíme dvě variantní řešení:

    1. Vytvořte si ve Windows dávkové soubory, ve kterých nastavíte NLS_LANG a zavoláte požadovaný program
    2. Pokud tyto programy spouštíte přes okno příkazové řádky a ne přímo ve Start->Spustit…, lze využít možnost, kterou nabízí přímo příkazovou řádku, a to automatické spuštění určeného příkazu při každém startu příkazové řádky. Stačí ve Windows registry nastavit:

      [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor]
        "AutoRun"="set NLS_LANG=CZECH_CZECH REPUBLIC.EE8PC852"
      

    Příklad špatné konfigurace
    Při špatném nastavení NLS_LANG uvidíte nejspíš chybové hlášky se zkomolenou diakritikou a záznamy budou špatně řazené. Co je nejhorší, pokud budete při nesprávném nastavení znakové sady vkládat data s diakritikou, uloží se tyto informace do databáze špatně. Proto je dobré dát si na nastavení NLS_LANG pozor. Na chybu se totiž jinak může přijít až mnohem později a její odstranění bývá složité.

    Jestliže máte stejné nastavení znakové sady na klientu i v databázi, žádná konverze se neprovádí. Pokud je toto nastavení chybné, databáze ukládá a vrací sice stejný kód znaku jaký obdržela, ale považuje jej za jiný znak, než který klientská aplikace zobrazuje. Občas tak na chybu přijdete až ve chvíli, kdy se k databázi připojí klient využívající jinou znakovou sadu. Typicky jde o situaci, kdy ke stávající klient/server aplikaci přidáváte webový přístup.


    Příklad špatné konfigurace

    Administrátor bojuje s nastavením webové aplikace a aplikačního serveru, databázového klienta na aplikačním serveru, dokonce i webového prohlížeče, ale pořád se nemůže dobrat správného výsledku. Chyba totiž není ve webové aplikaci, ani v tom, že by databáze Oracle nepodporovala češtinu. Chyba vznikla již při vkládání dat do databáze, respektive už při jejím vytvoření.

    Správně by samozřejmě databáze měla být ve znakové sadě podporující češtinu (např. EE8MSWIN1258, EE8ISO8859P2, AL32UTF8) a nastavení NLS_LANG na klientu by mělo odpovídat kódování, ve kterém pracuje aplikace. V případě tlustého klienta na obrázku tedy EE8MSWIN1250.

    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 IX. – bojujete s češtinou v Oracle? (06.02.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ářů: 3 | Přidat komentář | Informační e-mailVytisknout článek )

    Vyhledávání
     

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

    Nic 
     (1446 hl.)
    Do 1 000,- Kč 
     (1005 hl.)
    Do 10 000,- Kč 
     (950 hl.)
    Do 25 000,- Kč 
     (1207 hl.)
    Do 50 000,- Kč 
     (957 hl.)
    Do 75 000,- Kč 
     (1108 hl.)
    Více než 75 000,- Kč 
     (948 hl.)

    Celkem hlasovalo: 7621


    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ář
    <<  Září  >>
    PoÚtStČtSoNe
        123
    45678910
    11121314151617
    18192021222324
    252627282930 

    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