Nyelvet állítottál ? Mi a hiba ?
Thank you to god for making me an atheist
Nyelvet állítottál ? Mi a hiba ?
Thank you to god for making me an atheist
Hello!
kerekített dátumformátum... pl.: '98.március.12.
rootként vagy benn a rendszerben és úgy adtad ki alter sessiont?
Nyelvi beállítások lekérdezése...
SELECT * FROM NLS_SESSION_PARAMETERS;
[ Szerkesztve ]
Alapba magyar van beállítva.
systemként próbáltam kiadni a parancsot, de látszólag le is futott rendesen.
Ezek a beállítások:
NLS_LANGUAGE HUNGARIAN
NLS_TERRITORY HUNGARY
NLS_CURRENCY Ft
NLS_ISO_CURRENCY HUNGARY
NLS_NUMERIC_CHARACTERS ,
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT RR-MON-DD
NLS_DATE_LANGUAGE HUNGARIAN
NLS_SORT HUNGARIAN
NLS_TIME_FORMAT HH24.MI.SSXFF
Ja és még egy kérdés:
Ha van egy SQL scriptem amivel töltöm fel a táblákat, akkor egy csomó helyen nem ismeri fel az ékezeteket és helyette fordított kérdőjeleket tesz be a táblába:S
Például így:
insert into mkonyv values('Sz¿el-l¿kkel f¿zni', 'Kylie Kwong',2008);
Unicode UTF8-ként töltöttem fel a scriptet.
Akkor már csak a lényeg hiányzik, az sql és a ora hibakód.
Thank you to god for making me an atheist
Épp ez az, nincs semmi hibakód.
Úgy tűnt a leírásból, hogy a dátumot tartalmazó insert nem fut le ("sose fogadja el"), míg az alter session lefut. Hát ez így érdekes.
Thank you to god for making me an atheist
Dátumos dolgot megoldottam. Azt hittem az ékezetest kérdezed.
Hello!
Egy újabb problémám merült fel.
Kitöröltem az első oldalt az egyik általam készített alkalmazásból és mikor a "run application" -re megyek akkor hibaüzenetet dob ki. 'Page 1 not found'.
Gondolom van valami referencia az első oldalra (de nem általam beállított, mert azt tudnám).
Van valakinek esetleg tippje?
Nah..senki se tudja?:S
Köszi, már megoldódott.
Sziasztok!
Egy olyan kérdésem lenne, hogy olyat hogyan lehetne csinálni:
Van 1 adatbázisom a helyi gépen (xe) és 1 távoli adatbázis (teljes). Létrehoztam 1 database linket a helyi adatbázison és egy nézettáblát amiben 1 helyi tábla és 1 távoli tábla adatai szerepelnek (union-nal). Ez működik is, de a gond akkor van, amikor a távoli server nem elérhető. Ilyenkor lehal a nézettábla:
ORA-12545: Connect failed because target host or object does not exist
Azt hogyan lehetne megoldani, hogy amikor a távoli server offline akkor is működjön a nézet? (a nézetben ne szerepeljenek annak az adatai) Gondoltam job-ra ami futna mondjuk percenként és ha nem elérhető a távoli gép akkor a database linket magára állítaná. Csak megvalósítani nem sikerült .
Lenne esetleg valami ötletetek, hogyan lehetne ezt megoldani?
Köszi: Yom
I came. I saw. I lagged out.
PL/SQL + kivételkezelés?
Na ezt már sikerült megoldani, már csak egy olyan problémám van, hogy view-nál nem tudom megadni feltételhez legyen kötve a lekérdezés:
SELECT
*
FROM
"Local"
if (Select Test_dbLink() from Dual) IS NOT NULL then
UNION
SELECT
*
FROM
"DBLink"
end if;
ilyenkor:
ORA-00933: SQL command not properly ended
00933. 00000 - "SQL command not properly ended"
*Cause:
*Action:
where feltételbe téve (select * from "DBLink" where (Select Test_dbLink() from Dual) IS NOT NULL) nem jó, mert mire teszteli a kapcsolatot, addigra már olvasna a távoli táblából.
valami feltételhez kötött view-t hogyan lehetne csinálni?
I came. I saw. I lagged out.
én inkább materializált nézetet használnék ehhez a feladathoz.
=Kilroy was here============================ooO=*(_)*=Ooo=======
Sajnálom hogy ennyire halott a topic.
Oracle licencekkel kapcsolatos kérdésekben tud vki segíteni?
A megkérdezettek közel egyharmada egyetért, viszont a többit nem érti. Az egyharmad azt az egyet se érti.
Nem teljesen témába vágó dolog de gondoltam hátha valakinek hasznos lesz:
Oracle DB 11g XE telepítése Debian 6.0-ra:
# install necessary packages
apt-get install alien bc libaio1
# convert the file including scripts
alien --to-deb --keep-version --scripts oracle-xe-11.2.0-0.5.x86_64.rpm
# create the user and directory (suse-specifics in scripts, not working with debian... I assume somebody with more experience with package conversion could fix this)
mkdir -p /u01/app
groupadd dba
/usr/sbin/useradd -m -g dba -d /u01/app/oracle -s /bin/bash oracle
touch /sbin/chkconfig; chmod u+x /sbin/chkconfig
# 2. install
dpkg --install oracle-xe_11.2.0-0.5_amd64.deb
# 3. configure
/etc/init.d/oracle-xe configure
nyilván a verziószámok megfelelően helyettesítendők.
Jelenleg: oracle-xe-11.2.0-1.0.x86_64.rpm.
Oracle Enterprice Linux 5 update 2-on tökéletesen megy minden különösebb konfigolás nélkül is.
Részletek itt olvashatók
Sziasztok!
Szeretnék egy olyat lekérdezni oracle-ben, hogy keressük azokat a termékeket, amelyeknél az adott termékhez tartozó címke nevében szerepel a márka neve.
Ez a mező így néz ki, pl:
ADIDAS tusfürdő akármileírás 250 ml
És van egy külön mező a márkára, amiben szerepel az ADIDAS.
A gondom az, hogy sima LIKE paranccsal nem tudom azt lekérdezni, hogy egy mező adatát keresse meg a szövegben. Van erre valami megoldás?
Előre is köszönöm!
Közben rájöttem
Ha valakinek gondja lenne vele akkor ezek segíthetnek:
Select-re kihegyezett anyag:
http://psoug.org/reference/select.html
Like-ra kihegyezett anyag:
http://www.techonthenet.com/sql/like.php
XE alatt hogyan írtanátok ki a HR minta adatbázis-t.
eldobod a felhasználót?
=Kilroy was here============================ooO=*(_)*=Ooo=======
És vele együtt törlődik a hozzá tartozó schema és minden adat?
Ezzel kezdtem:
SQL> DROP USER HR CASCADE;
User dropped.
UTF8-ra szeretném konvertálni az adatbázis karakterkészletét. De egyszerűen nem sikerül mindig ugyan azzal a hibaüzenettel száll el:
SQL> connect as sysdba
Enter user-name: system
Enter password:
Connected.
SQL> SHUTDOWN IMMEDIATE;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> STARTUP MOUNT;
ORACLE instance started.
Total System Global Area 392495104 bytes
Fixed Size 2226840 bytes
Variable Size 171967848 bytes
Database Buffers 213909504 bytes
Redo Buffers 4390912 bytes
Database mounted.
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
System altered.
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
System altered.
SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
System altered.
SQL> ALTER DATABASE OPEN;
Database altered.
SQL> ALTER DATABASE CHARACTER SET AL32UTF8;
ALTER DATABASE CHARACTER SET AL32UTF8
*
ERROR at line 1:
ORA-12716: Cannot ALTER DATABASE CHARACTER SET when CLOB data exists
Mi lehet a gond?
[ Szerkesztve ]
Karakterkészletet csak export/importtal tudsz átállítani (hacsak nem változott valami e téren a 9i-10g óta)
Bár a hibaüzenetből úgy tűnik, talán mégis változott.
[ Szerkesztve ]
Kicsit jobban megnézve: a hibaüzeneted alapján a nálad futó verzió nem engedi a karakterkészlet változtatását, ha az adatbázisod tartalmaz CLOB típusú oszlopokat.
Ha lekéred a dba_tab_columns nézetből azokat a sorokat, amelyekben a DATA_TYPE='CLOB', akkor látni fogod, hogy a SYS tulajdonában rengeteg ilyen tábla van. (nálam egy patch-eletlen 10.2 fut, abban nagyon sokat találtam)
Az egyetlen, amit szerintem tehetsz, ha exportálod, létrehozol egy üres adatbázist a megfelelő karakterkészlettel és importálod.
uhh nálam is van bőven 566-at talált .
Szerintem is export/import lesz belőle mert így nem fogok boldogulni.
Azzal szerintem is működnie kell.
Köszi szépen a tippet. Hasznos volt.
[ Szerkesztve ]
Én is az export/importot javaslom. Ha nagy az adatbázisod, akkor a datapump-ot (expdp).
=Kilroy was here============================ooO=*(_)*=Ooo=======
Köszönöm a tippet. Mivel adatot még nem tartalmazott így arra döntöttem hogy a createdb.sh-t újra futtatom abban átírtam a karakterkészetet UTF8-ra. Hátha így már jó lesz ha nem akkor addig csinálom míg jó nem lesz. Ez nagyon fájdalmas dolog .
[ Szerkesztve ]
jajj. a gyári createdb.sh-t futtattam le - amiben az előző gatya karakterkészlet volt
újra próba
Bevált a megoldás .
Viszont van újabb probléma:
Ez mitől van:
Recovery Manager: Release 11.2.0.2.0 - Production on Wed Oct 19 21:19:27 2011
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
RMAN> show all;
using target database control file instead of recovery catalog
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of show command at 10/19/2011 21:19:36
RMAN-06171: not connected to target database
És egy másik probléma:
oracle@server1:/u01/app/oracle/product/11.2.0/xe/bin$ exp full=Y
Export: Release 11.2.0.2.0 - Production on Wed Oct 19 22:13:44 2011
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Username: system
Password:
EXP-00056: ORACLE error 1017 encountered
ORA-01017: invalid username/password; logon denied
Mit csináltam rosszul?
1. Az "as sysdba" kapcsoló maradt le.
exp 'userid="/ as sysdba"' full=y
vagy
exp \'/ as sysdba\' full=y
2. exp helyett javaslom az expdp progit. Ez a korszerű exportáló ma már.
expdp 'userid="/ as sysdba"' full=y
3. Az RMAN-hoz nem értek sajnos. Mire akarod használni? Ez egy elég új dolog még, nem tudom mennyire kiforrott.
[ Szerkesztve ]
=Kilroy was here============================ooO=*(_)*=Ooo=======
Köszi szépen az exp nekem tökéletesen elegendő volt.
A 10g óta biztosan van RMAN, pontosan nem tudom mióta létezik.
Az RMAN-t backup-ra akarom használni és recovery-re ha szükséges.
[ Szerkesztve ]
RMAN már 8-as Oracle óta van, szóval egyáltalán nem új dolog, és teljesen kiforrott, az rman A backup
kétféle backup/recovery módszer létezik egyébként:
user managed, és RMAN - ebből az utóbbit használják 99%-ban
lakisoft:
rman-t csak elindítottad, de nem csatlakoztál az adatbázishoz, így a show all nem tudja lekérdezni a controlfile-ból a paramétereket
rman target /
282,283# azért ne keverjük a dolgokat
SYSTEM jelszót rosszul adta meg
a SYSTEM-nek köze nincs a SYSDBA jogosultsághoz
a "/ as sysdba" az SYS userként fog belépni
[ Szerkesztve ]
Köszi az infót. Én csak lelkes amatűr vagyok Oracle téren. Ám szorgalmas.
kösz a pontosítást!
=Kilroy was here============================ooO=*(_)*=Ooo=======
Mi a magyarázata, hogy két tábla összekapcsolásnál, amelyik táblát outerrel kapcsolom és konstanssal is akarom szűrni ezt a táblát, akkor elvesznek rekordok, ha nem outerrel kapcsolom a konstanst is?
select a,*,b.* from a,b where a.id(+) = b.id and a.name(+) = 'talmi'
A második + azért nem kell, mert az nem join, hanem reláció.
select a,*,b.* from a,b where a.id(+) = b.id and a.name = 'talmi';
=Kilroy was here============================ooO=*(_)*=Ooo=======
[ Szerkesztve ]
Egy érdekes kérdésem lenne dátum/timestamp konverzióknál használt format maskok működéséről, lehet, hogy csak én nem látom a logikát benne egyelőre.
Oracle leírás: [link]
SELECT to_date('02/01/01', 'YY/MM/DD') FROM DUAL;
Ez azt adja, amit vártam, 2002-01-01. YY az utolsó két digitet állítja, az első kettőt az aktuális évből veszi (2011)
Az is tiszta, ha a YY digiteknek csak egy hosszú adatot adok, akkor a szabad helyre nullát tesz. Példa:
SELECT to_date('11/01/01', 'YY/MM/DD') FROM DUAL;
-> 2011-01-01
SELECT to_date('1/01/01', 'YY/MM/DD') FROM DUAL;
-> 2001-01-01
Ezek működnek YYYY, YYY, YY-vel, Y-nél ugye nem lehet kevesebbet, az már hiba. A leírás szerint többet egyik sem fogad el. Ez YYYY / YYY / Y esetében igaz is. Viszont YY esetén nem!
SELECT to_date('111/01/01', 'YY/MM/DD') FROM DUAL;
-> 0111-01-01
Látszólag olyan, mintha YYYY maszkot használnék három digittel és ezt nem értem, hogy miért van így, ötletek?
[ Szerkesztve ]
What else you gonna do on a Saturday?
pedig le van írva ez is ugyanitt: [link]
"If a match fails between a datetime format element and the corresponding characters in the date string, then Oracle attempts alternative format elements, as shown in Table 2-18."
és ott van hogy a YY-t YYYY-ra cseréli
Ó, hogy az a... Köszönöm!
What else you gonna do on a Saturday?
Oracle 10g XE-t be lehet úgy állítani, hogy magyar karakterkészletet használjon? Az alap telepítés (apt-get install + Oracle által biztosított csomag) közben ilyen beállításra nem emlékszem. Ahogy olvastam, második adatbázist létrehozni nem lehet, mivel ez az XE egyik korlátja.
What else you gonna do on a Saturday?
arra az adatbázisra amit alapból létrehoz, nincs lehetőség ezt megmondani
újabb adatbázist lehet létrehozni, ha az ember tudja a módját (manuálisan), de egyszerre csak 1 adatbázis futhat
én pl. most simán csináltam egy újabb XE adatbázist magyar (ee8iso8859p2) karakterkészlettel
de ugyanezzel a módszerrel az eredeti adatbázis is újra létrehozható más karakterkészlettel, és akkor még új sem kell
Ez utóbbira tudnál adni egy kis útmutatást, ha lesz majd időd/kedved?
What else you gonna do on a Saturday?
XE-ben a default adatbázis UTF8 kódolású, amiben hibátlanul működnek a magyar ékezetes karakterek is
ha nálad mégsem (és ezért akarsz karakterkészletet váltani), akkor nem ez a gond
ha mégis ragaszkodsz a magyar/kelet-európai karakterkészlethez (ee8iso8859p2), kb. ezt kell végigcsinálni egy kicsit máshogy [link]
- a mostani adatbázisból controlfile-ból kell egy "szöveges" változat
export ORACLE_SID=XE
sqlplus / as sysdba
SQL> show parameter user_dump_dest
SQL> alter database backup controlfile to trace;
a user_dump_dest egy könvytár, és oda létrejön egy XE_ora_... nevű fájl (dátum szerint valószínűleg a legújabb, saját nevet nem lehet adni neki) amiben lesz egy 'CREATE CONTROLFILE...' több soron keresztül tartó parancs
- mostani db leállít
- step 1-2-3-4-5 felesleges ha ugyanolyan nevű db-t szeretnél
- step 6: startup nomount
- step 7: össze kell rakni egy CREATE DATABASE parancsot mint a doksiban és lefuttatni, ehhez segítség az elején létrehozott fájl
mivel az adatfájlok, redo logok már megvannak a fájlok méreteinek megadása után még kell egy REUSE is (így felülírja a régieket) + a CREATE DATABASE xe után még kell egy CONTROLFILE REUSE is, hogy azt is tudja, hogy felülírhatja
alternatív lehetőség: törlöd az összes fájlt (ami fel van sorolva a korábban generált fájlban) és nem kell a REUSE-zal foglalkozni
a CREATE DATABASE-ben van egy olyan opció hogy CHARACTER SET, ezután kell beírni amilyet szeretnél (ee8iso8859p2 - Kelet-Európa, ebben van a magyar)
- step 8: opcionális
- step 9: ezt mindenképp csináld meg
- step 10-11: opcionális
szerk: ezzel egy teljesen új, üres adatbázisod lesz
a régi adatbázisból ha kell adat exportáld ki, majd az újba importáld be
[ Szerkesztve ]
Először is köszönöm a részletes leírást!
Most értem haza, így megnéztem, amit elsőnek írtál, a karakterkódolást, ami valóban az. Eddig csak a webes felületen néztem a próba lekérdezést, aminél az ékezetes karakterek helyén két kérdőjel jelent meg, ezért tippeltem arra, hogy emiatt nem stimmel valami, így utólag látom, hogy hibásan.
Most megnéztem terminálban az SQLPlus-szal, ott minden rendben. Még nem volt fent, ezért letöltöttem az Oracle SQL Developert is, amin pedig újból a kérdőjelek fogadtak.
Lehet, hogy az NLS paraméterek körül van valami gond (az adatbázis alaból amerikai beállításokat tartalmaz) vagy csak én néztem el valamit ismét?
SELECT * FROM nls_database_parameters;
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET AL32UTF8
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_RDBMS_VERSION 10.2.0.1.0
What else you gonna do on a Saturday?
akkor ez csak kliens oldali probléma, az NLS_LANG környezeti változót kell jól beállítani [link]
Sikerült, természetesen megint én voltam a figyelmetlen...
Most jól beállítottam az NLS_LANG-ot, így már minden jól működik.
"hungarian_hungary.UTF8" volt a barátom.
Köszönöm a segítséget
What else you gonna do on a Saturday?