Hirdetés

2024. június 10., hétfő

Gyorskeresés

Útvonal

Fórumok  »  Szoftverfejlesztés  »  Oracle topic

Hozzászólások

(#601) sutszi válasza bpx (#600) üzenetére


sutszi
veterán

:( Ezt szomorúan hallom.

Egy darabig még keresgélek hátha...de már tegnap is elég sok időt öltem bele és eredménytelenül. Hát ha ezt tudom akkor backupoltam volna egyet...

Azért köszi.

Mondja, Mr. Babbage, ha rossz adatokat ad meg a gépnek, akkor is jó válasz fog kijönni belőle?" Képtelen vagyok felfogni azt az értelmi zavart, ami valakit egy ilyen kérdés feltevésére késztethet. - by Charles Babbage

(#602) peterszky


peterszky
őstag

Egy kis miért szeretjük az átállásokat történet :)

Ugye május/június tájékán szűnik meg az iAS support, ezért bizonyos helyeken fontos kérdés a WebLogic szerverre való áttérés. Böngészed az Oracle doksikat, hogy mi-milyen-melyik verzióval működik. Ez alapján nekiállsz. Aztán jön a valóság.

A Fusion Middleware 11gR2 Java 1.7-re hitelesítve van. Igen ám, de a Reports alkalmazásban található egy olyan függvény (képkezelés), ami régóta deprecated volt, az 1.7-es verzióból pedig már ki is törölték.

Köszönjük! :DDD

[ Szerkesztve ]

What else you gonna do on a Saturday?

(#603) Ablakos


Ablakos
őstag

Jó ez az átalakítás (mergeről update-ra) ?

MERGE INTO table1 o
USING (
SELECT
id,
erv_vege
FROM
table2
) c
ON (
o.id = c.id AND
o.erv_vege != c.erv_vege
)
WHEN MATCHED THEN
UPDATE
SET
o.erv_vege = c.erv_vege;
**************************************************************
Update table1 o
Set o.erv_vege = (SELECT
c.erv_vege
From countries c
Where o.id = c.id
And o.erv_vege != c.erv_vege;
)

[ Szerkesztve ]

(#604) Ablakos válasza Ablakos (#603) üzenetére


Ablakos
őstag

Na, késő volt :(((

Update table1 o
Set o.erv_vege = (SELECT
c.erv_vege
From table2 c
Where o.id = c.id
And o.erv_vege != c.erv_vege
);

[ Szerkesztve ]

(#605) bpx válasza Ablakos (#604) üzenetére


bpx
őstag

Ez így azért nem jó, mert nem az update-ben van a where, ezért a table1 összes sorát update-eli, és azoknál a soroknál, amelyek table1-ben és table2-ben az erv_vege egyezik az erv_vege értéke null lesz, mivel az allekérdezés ott nem eredményt.

Ha már update, akkor pl. így:

update table1 o
set o.erv_vege = (select c.erv_vege from table2 c where o.id = c.id)
where o.erv_vege != (select c.erv_vege from table2 c where o.id = c.id);

Ezzel az a gond, hogy nem optimális, feleslegesen dolgozik. Az Oracle nem engedi az update table1, table2, ... szintaktikát, ilyesmire a merge használható. Az eredeti merge azért nem jó ugye, mert az onban levő oszlopot szeretnéd update-elni, de ettől még lehet ezt merge használatával, ami jobb, mint a fenti update:

merge into table1 o
using table2 c
on (o.id = c.id)
when matched then
update set o.erv_vege = c.erv_vege
where o.erv_vege != c.erv_vege;

(#606) Ablakos válasza bpx (#605) üzenetére


Ablakos
őstag

Köszönöm ! ora-38104 miatt nem ment az eredeti mördzs. :R

(#607) peterszky


peterszky
őstag

Hátha valaki jártasabb egy kicsit a WebLogic (10.3.6) világában:

Van egy ear fájlom, benne egy war-ral, amiben a WEB-INF/web.xml tartalmaz egy bejegyzést, amit környezetek szerint felül kellene írni.

2.5 web-app xml

<env-entry>
<env-entry-name>dsn</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>jdbc/tesztDSN</env-entry-value>
</env-entry>

plan.xml

<?xml version='1.0' encoding='UTF-8'?>
<deployment-plan xmlns="http://xmlns.oracle.com/weblogic/deployment-plan" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/deployment-plan http://xmlns.oracle.com/weblogic/deployment-plan/1.0/deployment-plan.xsd" global-variables="false">
<application-name>A</application-name>
<variable-definition>
<variable>
<name>dsn</name>
<value>jdbc/ujTesztDSN</value>
</variable>
</variable-definition>
<module-override>
<module-name>B.war</module-name>
<module-type>war</module-type>
<module-descriptor external="false">
<root-element>web-app</root-element>
<uri>WEB-INF/web.xml</uri>
<variable-assignment>
<name>dsn</name>
<xpath>/web-app/env-entry/env-entry-name/</xpath>
<operation>replace</operation>
</variable-assignment>
</module-descriptor>
</module-override>
</deployment-plan>

Ez lement (admin konzolban update a deployolt alkalmazásra), de hogy a dsn bejegyzés nem változott meg, az tuti, mivel továbbra is működik, pedig nem kellene.

What else you gonna do on a Saturday?

(#608) sutszi


sutszi
veterán

Adott egy cursor ami visszaadja egy adott csomag eljárásait. Amikor ezeket feldolgozom mindegyik egy fájl generálásáért felel. Az egyik eljáráson belül viszont van egy select mert egy másik fájlt is belegenerál amit egy táblából kérdezek le.
Ennél az egynél elszáll ORA-22275: invalid LOB locator specified.

Értem, hogy mi a gondja, csak megoldást nem találtam rá. Cursor-on belül kellene az adott eljáráson belül egy másik cursor? Mi ilyenkor az elegáns megoldás?

Mondja, Mr. Babbage, ha rossz adatokat ad meg a gépnek, akkor is jó válasz fog kijönni belőle?" Képtelen vagyok felfogni azt az értelmi zavart, ami valakit egy ilyen kérdés feltevésére késztethet. - by Charles Babbage

(#609) D@ni88


D@ni88
addikt

Az nagyon nagy probléma ha az alkalmazás futtatása során nem zárjuk le a selecteket, ezért az open cursor számlázó szépen kúszik felfele? :)
Jelenthet ez egy idő után teljesítmény csökkenést?

[ Szerkesztve ]

(#610) kemcso válasza D@ni88 (#609) üzenetére


kemcso
Ármester

Lesz belőle Too many open cursor hiba, és megállítja a session futását :)
Egész pontosan ezt mondja: ORA-01000: maximum open cursors exceeded

[ Szerkesztve ]

(#611) D@ni88 válasza kemcso (#610) üzenetére


D@ni88
addikt

Igen, de pl olyanra gondoltam, hogy ha nyitva marad a cursor, akkor gondolom a DB memóriát foglalja.

(#612) lakisoft válasza D@ni88 (#611) üzenetére


lakisoft
veterán

Miért nem lehet lezárni a cursort?

(#613) D@ni88 válasza lakisoft (#612) üzenetére


D@ni88
addikt

Én szívesen lezárnám :D Sőt azon vagyok, csak szeretném tudni, hogy milyen pozitív hatásai lehetnek ha lezárom :)

-Zeratul- pl tudja milyen csodás munkám van, 14-15 éves kódot foltozgatok szépítgetek :)

(#614) lakisoft válasza D@ni88 (#613) üzenetére


lakisoft
veterán

De jó neked. :).

Hát szerintem alap, hogy zárjuk a cursor-t. De lehet én vagyok tudatlan.

(#615) D@ni88 válasza lakisoft (#614) üzenetére


D@ni88
addikt

Ok, de ha jól sejtem fogja a memóriát ilyenkor :)

Ezen vagyok én is, hogy a régi világ hibáit javítgassam :)

(#616) kemcso válasza D@ni88 (#615) üzenetére


kemcso
Ármester

Memóriát viszi, ezért is van limitálva a nyitott cursorok száma. Belassulást én még nem tapasztaltam, előbb éred el a MAX számot (hacsak nincs extrém magasra állítva alapból), ami általában programozási hiba.

(#617) Nyx89 válasza D@ni88 (#615) üzenetére


Nyx89
aktív tag

Attól függ, mennyi cursor van, milyen arányú a nyitott cursorok száma a többi session számához képest, és hogy mennyiben hasonlóak ezek. Nyílván több dolgot is befolyásolhat, PGA, SGA egyaránt(egy szóval memória)

Alap esetben én a lezárás kikényszerítését szoktam javasolni. Mivel ez egy elég régi rendszer, tul sokat nem lehet(nem éri meg) már kihozni belőle, zárogasd be. Vagy ha van az alkalmazás szintjén valamilyen session pooling, old meg ott globálisan.

(#618) lakisoft


lakisoft
veterán

Tudnátok működő leírás adni Debian 6 vagy 7-hez Oracle DB 11g-től felfelé?

Egyáltalán létezik ilyen ami teljes értékűen működik?

(#619) bpx válasza lakisoft (#618) üzenetére


bpx
őstag

Definiald a teljes ertekut. Egyebkent a Debian nem tamogatott.

(#620) lakisoft válasza bpx (#619) üzenetére


lakisoft
veterán

ömm működik minden XE oracle feature. Tudom hogy nem támogatott, de láttam már olyan leírást ami alapján meg lehet csinálni.

(#621) bpx válasza lakisoft (#620) üzenetére


bpx
őstag

Ok, leírást én is legfeljebb csak keresni tudok, de az XE feature-ök simán menni fognak.

(#622) lakisoft válasza bpx (#621) üzenetére


lakisoft
veterán

Megoldom. Keresni nekem se probléma. :R

(#623) sutszi válasza lakisoft (#622) üzenetére


sutszi
veterán

A Debian nagyon kőbe van vésve?

Mondja, Mr. Babbage, ha rossz adatokat ad meg a gépnek, akkor is jó válasz fog kijönni belőle?" Képtelen vagyok felfogni azt az értelmi zavart, ami valakit egy ilyen kérdés feltevésére késztethet. - by Charles Babbage

(#624) lakisoft válasza sutszi (#623) üzenetére


lakisoft
veterán

Kifejtenéd? :)

(#625) sutszi válasza lakisoft (#624) üzenetére


sutszi
veterán

Kötelező Debian-al küzdened? Más disztrót nem választhatsz? Pl amire több leírás tapasztalat van. Ilyen Red Hat rokonokra gondolok mint CentOS, vagy Oracle Linux...

Mondja, Mr. Babbage, ha rossz adatokat ad meg a gépnek, akkor is jó válasz fog kijönni belőle?" Képtelen vagyok felfogni azt az értelmi zavart, ami valakit egy ilyen kérdés feltevésére késztethet. - by Charles Babbage

(#626) adalbert1 válasza sutszi (#625) üzenetére


adalbert1
veterán

Főleg azt figyelembe véve, hogy az Oracle Linux is ingyenes, ha jól tudom (csak a support fizetős)...
Ha már itt tartunk, mi a legkisebb helyigényű virtuális gép (Virtual Box-ot használva és OEL-ot telepítve rá), amire fel lehet tenni az XE-t? Valamelyik nap el fogok játszadozni ezzel, csak az a probléma, hogy ha jól olvasom a Virtualbox a dinamikusan allokált helynél nem szabadítja fel a már nem használt helyet, hanem utólagosan kell még dolgozni vele.

(#627) sutszi válasza adalbert1 (#626) üzenetére


sutszi
veterán

VMware alatt nálam működik a compact funkció. Virtualbox alatt még nem használtam...

Mondjuk amióta volt szerencsém CentOS core minimal (core) verzióhoz...azóta nagyon azt preferálom. Az kb 1-2 GB körül mozgott egy telepített Nagios-al. Oracle-t még nem raktam rá, azzal nem tudom mennyi lenne.

Oracle Linux-ból elvileg van készre gyártott virtualbox image...de most hirtelen nem tudom mekkorák.

Mondja, Mr. Babbage, ha rossz adatokat ad meg a gépnek, akkor is jó válasz fog kijönni belőle?" Képtelen vagyok felfogni azt az értelmi zavart, ami valakit egy ilyen kérdés feltevésére késztethet. - by Charles Babbage

(#628) lakisoft


lakisoft
veterán

Hogyan kell az megoldani hogy a system user tudjon távolról csatlakozni. Csak tesztrendszeren kell és csak kényelmi okai vannak.

(#629) rum-cajsz válasza lakisoft (#628) üzenetére


rum-cajsz
őstag

Az nem megoldás, hogy ssh-val belépsz távolról, su-val oracle userre váltasz és máris tied a világ?

=Kilroy was here============================ooO=*(_)*=Ooo=======

(#630) lakisoft válasza rum-cajsz (#629) üzenetére


lakisoft
veterán

Ez most is megvan persze. Azt szeretném hogy ha system userrel be tudnék logolni SQLDeveloperrel. User add és egyéb finomság menne grafikus felületen. Tudom nagyok az igényeim. :K

(#631) bpx válasza lakisoft (#628) üzenetére


bpx
őstag

SYS vagy SYSTEM?

A SYSTEM-ben nincs semmi különleges, ugyanúgy be lehet lépni vele, mint hagyományos userrel.

A SYS már más, hiszen ő az atyaúristen. A SYS-hez a remote_login_passwordfile paraméter értéke shared vagy exclusive kell legyen. Ha none-ra van állítva, akkor a változtatáshoz DB restart kell.

Ezen kívül létre kell hozni egy password file-t, mert távoli SYSDBA loginnál azon keresztül megy az autentikáció. pl.:

orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=atomtitok

Végül a loginnál be kell lépni hogy ne normál userként, hanem SYSDBA-ként lépjen be.

(#632) lakisoft válasza bpx (#631) üzenetére


lakisoft
veterán

System csak:

Ezzel megoldhatom:

GRANT CONNECT TO system;

GRANT CREATE SESSION TO system;

(#633) bpx válasza lakisoft (#632) üzenetére


bpx
őstag

Igazából azt is leírhatnád mi a hiba, mert ez pl. tök felesleges, hiszen a SYSTEM ezzel eleve rendelkezik, és alapértelmezett esetben semmit nem kell csinálni, hogy a SYSTEM-mel menjen a távoli belépés. Feltételezem listener fut és az adatbázis be van regisztrálva, hiszen valahogy a usereknek is be kell tudni lépni.

(#634) lakisoft válasza bpx (#633) üzenetére


lakisoft
veterán

Na akkor menjünk lépésről lépésre.

hibaüzenet SQLDeveloperben ez:

An error was encountered performing the requested operation:

ORA-01031: insufficient privileges
01031. 00000 - "insufficient privileges"
*Cause: An attempt was made to change the current username or password
without the appropriate privilege. This error also occurs if
attempting to install a database without the necessary operating
system privileges.
When Trusted Oracle is configure in DBMS MAC, this error may occur
if the user was granted the necessary privilege at a higher label
than the current login.
*Action: Ask the database administrator to perform the operation or grant
the required privileges.
For Trusted Oracle users getting this error although granted the
the appropriate privilege at a higher label, ask the database
administrator to regrant the privilege at the appropriate label.
Vendor code 1031

(#635) bpx válasza lakisoft (#634) üzenetére


bpx
őstag

SYSTEM helyi login ugye megy?
van valami spéci dolog a a listener.ora/sqlnet.ora-ban?

(#636) lakisoft válasza bpx (#635) üzenetére


lakisoft
veterán

Hétfőn csekkolom.

(#637) lakisoft válasza bpx (#635) üzenetére


lakisoft
veterán

local system login megy.
SQL> connect as sysdba
Enter user-name: system
Enter password:
Connected.

# listener.ora Network Configuration File:

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/xe)
(PROGRAM = extproc)
)
)

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle.co.wer)(PORT = 1521))
)
)

DEFAULT_SERVICE_LISTENER = (XE)

# tnsnames.ora Network Configuration File:

XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle.co.wer)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)

EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)

(#638) bpx válasza lakisoft (#637) üzenetére


bpx
őstag

De itt SYSDBA logint csináltál, és nem SYSTEM-et. Amikor az adatbázis szerveren oracle userrel azt mondod sqlplus-ban, hogy as sysdba, ott OS autentikációt használ (azt nézi, tagja vagy-e a dba groupnak), tehát a user-name és password-höz írhatod azt is hogy ingyom/bingyom, nem számít, beenged bármivel. Ha a fenti módszerrel lépszbe, és mondasz egy "show user"-t, azt fogja mondani, hogy SYS.
SYSTEM-mel kellene belépni: connect system

(#639) lakisoft válasza bpx (#638) üzenetére


lakisoft
veterán

Holnap csekkolom. :R

(#640) Ablakos


Ablakos
őstag

Adott egy születési dátum. Abból szeretném megmondani, hogy hány éves, hány hónapos, hány napos a személy. Van erre okos beépített fv. vagy darabolással kell kibütykölni az eredményt?

(#641) lakisoft válasza Ablakos (#640) üzenetére


lakisoft
veterán

1. megoldás:
SQL> select trunc(months_between(sysdate,dob)/12) year,
2 trunc(mod(months_between(sysdate,dob),12)) month,
3 trunc(sysdate-add_months(dob,trunc(months_between(sysdate,dob)/12)*12+trunc(mod(months_between(sysdate,dob),12)))) day
4 from (Select to_date('15122000','DDMMYYYY') dob from dual);

YEAR MONTH DAY
---------- ---------- ----------
9 5 26

SQL>

2. megoldás:

SELECT TRUNC(
MONTHS_BETWEEN(
SYSDATE,
CASE TO_CHAR(birthdate,'MMDD')
WHEN '0229' -- born on February 29
THEN CASE TO_CHAR(TRUNC(SYSDATE,'YYYY') + 59,'MMDD')
WHEN '0229'-- current year is leap year
THEN birthdate
ELSE birthdate - 1 -- if person was born on February 29 and current year is not a leap year
END -- we will consider person was born on February 28
ELSE birthdate
END
) / 12
) age
FROM tbl

3. megoldás:

SELECT FLOOR((SYSDATE - (ADD_MONTHS(SYSDATE,-22)+1))/365) YEARS,
MOD( (SYSDATE - (ADD_MONTHS(SYSDATE,-22)+1)),365) DAYS
FROM DUAL

4. megoldás:

select
trunc((to_number(to_char(sysdate,'yyyymmdd'))
-to_number(to_char(date '2002-12-07','yyyymmdd'))
)/10000) as "age of this thread"
from dual;

(#642) Ablakos válasza lakisoft (#641) üzenetére


Ablakos
őstag

Igen, az első szerint oldottam meg. Nem találtam beépített függvényt azóta sem. Köszönöm a segítséget.

(#643) lakisoft válasza Ablakos (#642) üzenetére


lakisoft
veterán

Mert szerintem nincs is. Ez nem olyan általános dolog amire kell beépített függvény. :).

(#644) Ablakos válasza lakisoft (#643) üzenetére


Ablakos
őstag

Select extract(year from (sysdate - born_date) year to month) 'year',
Extract(month from(sysdate - born_date) year to month 'months' from employs

Ez valami hasonló, de napokra nem találtam megoldást.

(#645) rum-cajsz válasza Ablakos (#644) üzenetére


rum-cajsz
őstag

természetesen extracttal is működik:
SELECT EXTRACT(YEAR FROM SYSDATE),EXTRACT(MONTH FROM SYSDATE),EXTRACT(DAY FROM SYSDATE) FROM DUAL;

=Kilroy was here============================ooO=*(_)*=Ooo=======

(#646) lakisoft válasza lakisoft (#639) üzenetére


lakisoft
veterán

SQL*Plus: Release 11.2.0.2.0 Production on Tue Jul 29 06:21:32 2014

Copyright (c) 1982, 2011, Oracle. All rights reserved.

Use "connect username/password@XE" to connect to the database.
SQL> connect system/x@XE
ERROR:
ORA-12528: TNS:listener: all appropriate instances are blocking new connections


SQL>

SQL> connect dbuser01/x@XE
ERROR:
ORA-12528: TNS:listener: all appropriate instances are blocking new connections


SQL>

[ Szerkesztve ]

(#647) bpx válasza lakisoft (#646) üzenetére


bpx
őstag

Ok, én 2 lehetőséget látok.

1. Az adatbázis NOMOUNT állapotban van, ilyenkor dinamikus listener regisztrációnál BLOCKED állapotú lesz a service státusza, ez egy "lsnrctl status" kimenetből látszik is. Az adatbázisban a select status from v$instance ha azt írja, hogy started, akkor ez van.

Az adatbázist el kellene indítani:

sqlplus / as sysdba
SQL> alter database mount;
SQL> alter database open;

2. Az adatbázis elérte a maximálisan indítható processzek számát, de ott inkább TNS-12518 lenne a hiba TNS-12528 helyett és ebben az esetben SYSDBA-val sem tudnál belépni, szóval szerintem nem ez a helyzet.

Az adatbázis viszont magától nem kerül NOMOUNT-ba, gondolom megpróbáltátok indítani a DB-t az init.d scripttel, vagy reboot után megpróbált automatikusan elindulni, és ennél a lépésnél elakadt. A MOUNT akkor nem szokott menni, amikor a controlfile-okkal van gond (hiányoznak, korruptak), ezt ki kellene írnia az "alter database mount" kiadásakor, vagy az alertlogban.

(#648) lakisoft válasza bpx (#647) üzenetére


lakisoft
veterán

1. variáció volt a gond:

SQL*Plus: Release 11.2.0.2.0 Production on Tue Jul 29 09:28:06 2014

Copyright (c) 1982, 2011, Oracle. All rights reserved.

Use "connect username/password@XE" to connect to the database.
SQL> connect / as sysdba
Connected.
SQL> alter database mount;

Database altered.

SQL> alter database open;

Database altered.

SQL> select status from v$instance;

STATUS
------------
OPEN

SQL> connect system/x@XE
Connected.
SQL>

Hogyan tovább?

[ Szerkesztve ]

(#649) bpx válasza lakisoft (#648) üzenetére


bpx
őstag

Ennyi, pont az utolsó lépésben prezentáltad, hogy megy a távoli belépés SYSTEM-mel, hiszen ha így jelentkezel be (@XE), az távoli kapcsolat.

[ Szerkesztve ]

(#650) lakisoft válasza bpx (#649) üzenetére


lakisoft
veterán

okés akkor tűzfal config probléma lehet ha még mindig nem tudok csatlakozni? igaz?

Útvonal

Fórumok  »  Szoftverfejlesztés  »  Oracle topic
Copyright © 2000-2024 PROHARDVER Informatikai Kft.