Probleme apărute atunci când se utilizează în oracul 11g pe ferestre - dmitry bobrovsky blogdmitry

Începând cu GUI Oracle 11.1, utilitarul sqlplusw.exe este declarat ca fiind depreciat și exclus din distribuție. Acum trebuie să utilizați numai versiunea consola - sqlplus.exe. Când este folosit, cu limba rusă, apar probleme. Mesajele lui sqlplus în sine și mesajele scrise de scripturi (acestea sunt lucruri diferite) nu sunt afișate corect (kryakozyabrami sau simboluri ale pseudo-graficelor). Totuși, unii au început să pună întrebarea cum să setați folderul de lucru astfel încât script-urile imbricate să fie executate. Vom înțelege:







Problema mesajelor incorecte apar datorită faptului că consola afișează implicit toate codificate OEM DOS 866. script-uri ca un fișier text simplu codificat în MS WIN 1251. mesaje de codare sqlplus depinde de NLS_LANG variabilă, iar din baza cu datele rusești sunt create de obicei în CL8MSWIN1251 de codificare (nu RU8PC866), atunci variabilele sunt stabilite, respectiv, NLS_LANG CL8MSWIN1251. Ie Problema se datorează discrepanței dintre codificările console și programele care transmit mesaje către consola.

1) Pentru ca mesajele ruse să fie afișate corect în consola, este necesar să se respecte TREI condiții.

1. În proprietățile consolei (mouse-ul din dreapta pe titlul ferestrei cmd) trebuie să fie instalat un font unicode, de exemplu Lucida Console.

Probleme apărute atunci când se utilizează în oracul 11g pe ferestre - dmitry bobrovsky blogdmitry

Probleme apărute atunci când se utilizează în oracul 11g pe ferestre - dmitry bobrovsky blogdmitry

2. Pentru codificarea mesajelor tipărite se întâlnește de-a treia parte a variabilei NLS_LANG și ar trebui să fie CL8MSWIN1251 (de exemplu, AMERICAN_CIS.CL8MSWIN1251).

3. Este necesar să comutați pagina codului consolei la 1251, comanda

Dacă toate cele trei condiții sunt îndeplinite, nu vor exista probleme cu literele rusești.

1. Variabila NLS_LANG poate fi setată în trei moduri:

a) (la nivel mondial) (implicit) în registrul HKEY_LOCAL_MACHINE \ SOFTWARE \ Oracle. Aici variabila poate fi în mai multe locuri, mai ales dacă există mai multe ORACLE_HOME pe computer. Pentru a o schimba, este necesar ca ORACLE_HOME din care sqlplus să fie lansat. Pentru sistemele pe 64 de biți, există o altă ramură de registru pentru Oracle - HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Oracle. Dacă modificați o variabilă, dar rezultatul nu se schimba, chiar dacă sunt îndeplinite toate celelalte condiții, atunci când modificați o variabilă care nu încearcă să schimbe totul toate NLS_LANG, pentru a găsi sau uita-te la p c).







b) (local) Pentru o sesiune DOS specifică. Chiar în consola cu set

C:> SET NLS_LANG = AMERICAN_CIS.CL8MSWIN1251

c) (super global) Setați ca o variabilă de mediu în sistemul de operare. Făcând acest lucru nu prea recomand. Dar, această setare suprascrie variabila din registru, deci dacă modificați NLS_LANG în registru și rezultatul nu se schimbă - verificați variabilele de mediu, setate fără parametri.

2. Schimbarea variabilei NLS_LANG la nivel global afectează toate celelalte programe care rulează cu Oracle, de exemplu EXPIMP. Prin urmare, ar trebui să fiți precauți și pentru a asigura securitatea, pentru a rula sqlplus utilizați un fișier bat sau cmd în care să schimbați NLS_LANG la nivelul sesiunii curente.

2) Pentru ca mesajele sqlplus să fie afișate corect, consultați 1).

Dacă faceți totul așa cum este descris în pasul 1), toate mesajele sqlplus se vor imprima corect în limba rusă. Dacă nu aveți probleme cu limba engleză, vă recomandăm să afișați mesajele sqlplus în limba engleză. Deoarece în segmentul vorbitor de limba engleză a rețelei există mult mai multe informații decât în ​​limba rusă și dacă există o eroare atunci mesajul în limba engleză va găsi soluția mai ușoară și mai rapidă.

Prima parte a NLS_LANG este responsabilă pentru limba de mesaje sqlplus și alte utilitare de console Oracle. Pentru ca toate mesajele să fie în limba engleză, trebuie să o setați ca AMERICAN (de exemplu, AMERICAN_CIS.CL8MSWIN1251).

3) Cum să setați directorul de lucru pentru a executa scripturi imbricate.

Pentru aceasta, rulați sqlplus din dosarul de lucru. De exemplu, să presupunem că, în dosarul de lucru pe care doriți să utilizați folderul c: \ EGRP \ scripts și rulați scriptul c: \ EGRP \ scripts \ UPDATE.sql, care se face apel la alte script-uri, dintre care unele sunt situate în directorul c: \ EGRP \ SCRIPTURI .

C: \> cd c: EGRP \ SCRIPTE
c: \ EGRP \ SCRIPTĂRI> c: \ app32 \ admin \ product \ 11.2.0 \ client_1 \ bin \ sqlplus.exe / nolog
SQL> @update

(codul pentru comutarea paginii de cod este încă afișat în imagine)

Probleme apărute atunci când se utilizează în oracul 11g pe ferestre - dmitry bobrovsky blogdmitry

Pentru a ușura utilizarea, puteți crea un fișier de tip bat sau cmd pentru a rula sqlplus.

REM sună
REM Configurarea dosarului de lucru (poate fi eliminat)
cd c: \ egrp \ scripts
SET NLS_LANG = RUSSIAN_CIS.CL8MSWIN1251
chcp 1251
pauză
REM Două opțiuni pentru rularea sqlplus
c: \ app \ admin \ product \ 11.2.0 \ dbhome_1 \ BIN \ sqlplus.exe / nolog
REM c: \ app \ admin \ product \ 11.2.0 \ dbhome_1 \ BIN \ sqlplus.exe / nolog @UPDATE
ieșire

- ecou off - nu scoateți comenzile executabile la consola, ci doar rezultatul execuției lor. Prefer să văd ce se întâmplă, așa că am dezactivat (REM) această comandă.

- sqlplus.exe este indicat cu calea completă. Acest lucru este util în special pe un computer cu mai multe ORACLE_HOME pentru a ști exact care sqlplus lansați. Dacă nu specificați o cale completă, va fi pornit sqlplus din folderul care urmează mai întâi în variabila de mediu PATH. Dacă ORACLE_HOME este una - calea completă poate fi omisă.

- Există două opțiuni pentru rularea sqlplus. A doua opțiune execută imediat scriptul UPDATE.sql din directorul de lucru c: \ egrp \ scripts.







Trimiteți-le prietenilor: