Oracle parancssor ügyesítése

Megírom első blogbejegyzésem. :-)

Nagy szerencsémre a munkahelyemen rám van bízva, hogy milyen operációs rendszert és milyen eszközöket használok. Így aztán különféle linuxokon dolgozom; alapvetően Ubuntun, és néha (főleg, ha túl sokat fagyogat a LibreOffice vagy Apache OO, akkor) rákattanok a (még messze nem olyan kényelmesre belőtt) Archlinuxra. Egyébként föltett szándékom, hogy előbb-utóbb kitaposom ezt az Archlinuxot is, de hát a munkaidőből nem szeretek erre elvenni időt, így aztán ez tolódik, tolódik...

Ubuntun használtam tehát az Oracle sqlplus-t. Zavart, hogy nem megy az előző parancs szerkesztése (felfelé nyíllal), meg a kurzor gombok, delete... így aztán rákerestem a témára, és találtam egy remek kis írást. Az hagyján, hogy sikerült lefordítani, (és az sqlplus-szal azonos könyvtárba másolással) beüzemelni a gqlplus-t, ami az sqlplus felhabosítása, de még ennél is jobban tetszett, hogy van olyan, hogy "readline wrapper", azaz rlwrap. Van egy alkalmazásod, ami a szerkesztést illetően buta, mint a föld ( = sqlplus vagy akár a cpan), és egyszerűen becsomagolod a readline-ba.

rlwrap sqlplus ...

S ettől kezdve az slqplus-ban is lehet visszalépegetni előző sorokra, használni a kurzorgombokat stb.

Hozzászólások

Oracle-t jobb helyen nem az skulapluszból matatja az ember, hanem valami értelmes eszközt alkalmaz.

Telepítettem a cpan DBI::Shellt (= dbish), de a DBD::Oracle felrakása már nem sikerült, mert ütközik a felrakott 32 bites Oracle és a jelenlegi rendszerem 64-bitessége. (Egyébként ez eddig nem okozott fennakadást.)

Egy apró örömöm azért ebben a témában is akadt: a cpan és maga a dbish is tudja használni az rlwrap-et (azaz: tudom használni a kurzorgombokat). :-)

Amúgy ilyen hibán száll el a cpan-beli install "DBD:Oracle":
/usr/bin/ld: skipping incompatible /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/lib//libclntsh.so when searching for -lclntsh
Rákeresve kiderül, hogy más is elakadt ezen a 32/64 bites témán.

64 bites környezetben nagyot lehet oboázni a Perl - Oracle házasítással, de emlékeim szerint összekalapálható, bár per pill. nincs "játszadozós" 64 bites gépem, amin kitesztelhetném.
A 32 és 64 bites cuccok összelinkelése nem igazán fog működni :-D úgyhogy a 64 bites Perl mellé 64 bites Oracle klienset próbálj felkalapálni indulásnak.

Néha egészen egyszerű dolgok jelentik a megoldást. Most pl. az történt, hogy felraktam a 64 bites O-klienst. (Sokáig nem volt ilyen, s fel sem merült bennem, hogy utánanézzek, hogy már van-e azóta...) Végül is ez egész frappáns: http://blog.radaczynski.com/2011/07/install-oracle-client-and-sql-loade…

Köszi, ezt megnéztem, mert soha sem lehet tudni, mikor futok bele ismét ilyesmibe. Nagyon lassú az oldal nekem, úgyhogy okulásul, mert igen rövid és elegáns...:

  1. Install the client and verify that it is working
  2. Download the 11g beta version of the database. Take the RPM of course and not .exe ;)
  3. Extract the rpm, then cpio and then contents of the cpio (I know, how insane is that?).
  4. copy the u01/app/oracle/product/11.2.0/xe/bin/sqlldr to /usr/lib/oracle/11.2/client64/bin/ (or /usr/lib/oracle/11.2/client/bin/ depending on your arch)
  5. copy the u01/app/oracle/product/11.2.0/xe/rdbms/mesg to /usr/lib/oracle/11.2/client64/rdbms/mesg/

Igen, ez príma összefoglalás (és komoly helyspórolás, hogy egy puszta sqlldr miatt ne kelljen az egész gigabájtos szerverpakkot feltenni). Talán még azzal egészíteném ki, hogy már nem érhető el a 11g beta, hanem helyette (2012 nyarán: 11gR2) ez használható.

Egyébként sikerült beüzemelnem a dbish/Oracle ügyet, megy szépen. Már csak ki kell tapasztalnom a részleteket. (Egyúttal a dbish/SQLite-ot is fellőttem -- az SQLite is a szívem csücske; ő is sokszor megkönnyítette már az életem.)

Még érdemes ezt is meglépni (bár nem kötelező): "which sqlplus64" alapján...
cd /usr/bin; sudo ln -s /usr/lib/oracle/11.2/client64/bin/sqlldr sqlldr64