Ugrás a fő tartalomra

Python OracleDB csomag

 Python OracleDB csomag


Akkor most részletesen, lépésről lépésre bemutatom, hogyan telepítsd az Oracle adatbázis csomagot Python (Anaconda) környezeted alá.



1. Mi a cél?

  • Python-ból (Anaconda környezetből) Oracle adatbázishoz szeretnél kapcsolódni.

  • Ehhez a fő csomag, amit használnunk kell: oracledb (régebbi nevén cx_Oracle).


2. Thin vs Thick Client mód megértése

Thin mód:

  • Nem kell hozzá külön Oracle Client telepítés a gépedre.

  • A oracledb csomag natívan, "pure Python" módon közvetlenül TCP/IP-n keresztül csatlakozik az Oracle szerverhez.

  • Előnye: Egyszerűbb, gyorsabb elindulni, csak a Python csomag kell.

  • Hátránya: Néhány enterprise feature (pl. advanced security, SSL, Connection Pool tuning) nem támogatott.

Thick mód:

  • Szükséges hozzá az Oracle Instant Client telepítése (ez egy Oracle által adott C könyvtárkészlet).

  • A Python oracledb modul ezután ezt a kliens könyvtárat használja, így minden Oracle funkció elérhetővé válik.

  • Előnye: Teljes funkcionalitás, nagyobb teljesítmény enterprise környezetben.

  • Hátránya: Telepíteni kell az Instant Clientet (extra lépés).


Összefoglalva:

  • Fejlesztéshez, gyors próbákhozThin mód jó.

  • Production környezethez, bonyolult funkciókhozThick mód kell.


3. Telepítési lépések részletesen

3.1. Lépés: Anaconda environment előkészítése

Ha még nincs külön environmented, érdemes egy újat csinálni:

---bash
conda create -n oracle_env python=3.11 conda activate oracle_env

(Megjegyzés: 3.7–3.12 Python verziók jók.)


3.2. Lépés: oracledb telepítése

Konzolban:

---bash
pip install oracledb

Vagy Anaconda promptban:

---bash
conda install -c conda-forge oracledb

✅ Ezután Thin módban már tudsz csatlakozni!


3.3. Lépés: Thin mód tesztelése

Írjunk egy kis mintakódot:

---python
import oracledb # Thin mód alapból automatikusan megy connection = oracledb.connect( user="your_username", password="your_password", dsn="your_db_host:1521/your_service_name" ) cursor = connection.cursor() cursor.execute("SELECT 'Hello from Oracle!' FROM dual") for row in cursor: print(row)

Ha ezt lefuttatod, és nincs hiba → működik a Thin mód!


4. Thick mód beállítása (Oracle Instant Client telepítése)

Ha te Thick módban is akarsz dolgozni (pl. production-re készülsz), akkor:

4.1. Lépés: Oracle Instant Client letöltése

  1. Menj az Oracle oldalára:
    👉 https://www.oracle.com/database/technologies/instant-client.html

  2. Válaszd ki az operációs rendszeredet (Windows, Linux, Mac).

  3. Basic vagy Basic Light csomagot töltsd le (pl. instantclient-basic-windows.x64-21.13.0.0.0dbru.zip).

  4. Csomagold ki valahova, pl.: C:\oracle\instantclient_21_13


4.2. Lépés: Környezeti változók beállítása

Windows esetén:

  • Adj hozzá új környezet változót:

    • PATH-hoz add hozzá az Instant Client könyvtárat.

    • Például: C:\oracle\instantclient_21_13

Linux/Mac esetén:

---bash
export LD_LIBRARY_PATH=/path/to/instantclient:$LD_LIBRARY_PATH

4.3. Lépés: Pythonban Thick mód aktiválása

A Python kódban állítsd át a módot:

---python
import oracledb oracledb.init_oracle_client(lib_dir=r"C:\oracle\instantclient_21_13") # fontos! connection = oracledb.connect( user="your_username", password="your_password", dsn="your_db_host:1521/your_service_name" ) cursor = connection.cursor() cursor.execute("SELECT 'Hello from Thick Client!' FROM dual") for row in cursor: print(row)

5. Ellenőrzés: Melyik módot használja?

Ha kíváncsi vagy éppen Thin vagy Thick módban vagy-e:

---python
print(oracledb.thin_mode)
  • True → Thin mód

  • False → Thick mód (Instant Clientet használ)


6. Tippek, amik segítenek

  • Ha problémád van a Thick móddal, ellenőrizd, hogy a PATH helyesen tartalmazza-e az instantclient mappát.

  • Néha Windows-on a vc_redist (Microsoft Visual C++ Redistributable) csomagot is kell telepíteni, különösen régebbi gépeken.

  • Az Oracle DSN (pl. host:port/service_name) formátumra nagyon figyelj.


Rövid összefoglaló:

MódTelepítés kell?FunkcionalitásHasználat
ThinNemAlap Oracle kapcsolatGyors fejlesztés
ThickIgen (Instant Client)Teljes Oracle featurekProduction, Enterprise használat


7. Példa: Connection Pool használata Oracle-hez (oracledb-vel)

Ha sok párhuzamos kapcsolatot kell kezelni (pl. webapp, háttérprocesszek), akkor Connection Pool-t érdemes használni, nem egyenkénti connect/disconnect hívásokat.

Thin módban connection pool:

---python
import oracledb # Create a connection pool pool = oracledb.create_pool( user="your_username", password="your_password", dsn="your_host:1521/your_service_name", min=2, # minimális kapcsolatok száma a poolban max=5, # maximális kapcsolatok száma increment=1, # ha kell új kapcsolat, ennyit nyit egyszerre timeout=60 # másodperc után szabadul egy kapcsolat ) # Kérjünk egy connection-t a poolból with pool.acquire() as connection: with connection.cursor() as cursor: cursor.execute("SELECT 'Pooled Connection' FROM dual") for row in cursor: print(row)

Ez automatikusan visszarakja a kapcsolatot a poolba a with blokk végén! 🔥


Thick módban connection pool:

Ha Thick módban vagy, ugyanígy működik, csak előtte kell:

---python
oracledb.init_oracle_client(lib_dir=r"C:\oracle\instantclient_21_13")

Minden más ugyanaz.
Thin és Thick pool API ugyanaz!


8. Példa: Hibakezelés (Error handling)

Ha Oracle kapcsolat közben hiba történik, akkor ezt így lehet szépen elkapni:

---python
import oracledb try: connection = oracledb.connect( user="your_username", password="your_password", dsn="your_host:1521/your_service_name" ) cursor = connection.cursor() cursor.execute("SELECT * FROM non_existing_table") # Hiba lesz itt! except oracledb.DatabaseError as e: error_obj, = e.args # unpack error object print(f"Oracle-Error-Code: {error_obj.code}") print(f"Oracle-Error-Message: {error_obj.message}") finally: if connection: connection.close()

Példa kimenet:

---javascript
Oracle-Error-Code: 942 Oracle-Error-Message: ORA-00942: table or view does not exist

9. Extra: DSN builder (egyszerűbb DSN építés)

Néha a DSN string (host:port/service_name) bonyolult. Erre is van helper:

---python
import oracledb dsn = oracledb.makedsn( host="your_host", port=1521, service_name="your_service_name" ) connection = oracledb.connect( user="your_username", password="your_password", dsn=dsn )

Így szebb és átláthatóbb.


10. Instant Client extra funkciók Thick módban

Ha Instant Clienttel dolgozol, extra lehetőségeid vannak például:

  • SSL/TLS kapcsolódás Oracle szerverhez

  • Kerberos hitelesítés

  • Advanced Connection Pooling (Oracle RAC környezeteknél)

  • Oracle Advanced Queuing támogatás

  • LOB objektumok hatékony kezelése (nagy BLOB, CLOB mezők)

Ezekhez legtöbbször külön beállítások, wallet-ek vagy extra paraméterek kellenek, de ha érdekel, később ezeket is végig tudjuk menni.



🔥 Windows 32-bit és 64-bit: Oracle DB csomag függőségek

1. Alapvető különbség

  • 32-bit Windows (x86): régi, maximum 4GB memóriát tud közvetlenül kezelni, minden alkalmazásnak 32-bit-nek kell lennie.

  • 64-bit Windows (x64): modern rendszerek, nagyobb memória támogatás, 32 és 64-bit alkalmazások is futhatnak rajta.

Oracle szempontból:

  • A Python interpreter, az oracledb csomag, és az Oracle Instant Client is vagy mind 32-bit, vagy mind 64-bit kell legyen.

  • NEM keverhető 32-bit és 64-bit komponens!


2. Függőségek és kompatibilitás

Komponens32-bit Windows64-bit Windows
Python Interpreter32-bit32-bit vagy 64-bit
Oracle Instant Client32-bit szükséges32-bit vagy 64-bit verzió választható
oracledb Python packageKompatibilis mindkettővel, de a környezettől függ
Microsoft Visual C++ Redistributable32-bit (x86) kell32-bit (x86) ÉS 64-bit (x64) is ajánlott

FONTOS: Ha pl. 64-bit Python-od van, akkor 64-bit Instant Clientet kell használnod!
Ha 32-bit Python-od van, akkor 32-bit Instant Clientet kell telepítened!


3. Konkrét buktatók, amikre figyelned kell

❌ Tipikus hibák

3.1. Python - Instant Client mismatch

  • 64-bit Python + 32-bit Instant Client → hibát dob: nem található DLL (oci.dll).

  • 32-bit Python + 64-bit Instant Client → hibát dob: "Invalid Win32 Application" vagy "architecture mismatch".

Megoldás: mindig azonos bit verziójú Python és Instant Client!


3.2. Hiányzó Microsoft Redistributable

  • Oracle Instant Client Thick módja kötelezően igényli a Microsoft Visual C++ runtime-ot.

  • Ha nincs telepítve, hibák jönnek, pl.:
    The specified module could not be found (oci.dll)

Kell telepíteni:


3.3. PATH problémák

  • Ha több Oracle Client verzió van telepítve (pl. 11g, 12c, 21c), akkor PATH ütközhet.

  • A rossz verzió lesz betöltve → hibák, inkompatibilitás.

Megoldás:

  • Csak egy Instant Client könyvtár legyen a PATH elején.

  • Tesztelheted Pythonban:

    ---python
    import oracledb print(oracledb.clientversion())


4. Előnyök, ha 64-bit rendszeren vagy

ElőnyökMiért jó
Több memória kezeléseOracle adatbázis kapcsolatnál nagy adatmennyiség mozgatás
Jobb teljesítmény hosszú futású scripteknélPython memóriakezelés optimalizált
Újabb Oracle Instant Client verziók támogatásaOracle 19c/21c új feature-jei elérhetőek
Nagy connection pool / multi-threaded támogatásTöbb párhuzamos adatbázis kapcsolat

5. Extra lehetőségek Windows 64-bit rendszeren

Multi-version instant client használat (pl. külön folderben több Instant Client verzió, és dinamikusan válthatsz Python kódból)

Oracle Advanced Security támogatás (pl. SSL/TLS kapcsolódás Wallet alapú autentikációval)

High Availability kapcsolatok (Oracle RAC vagy Data Guard környezetekre felkészülve)

Nagy méretű BLOB, CLOB kezelés (64-bit memória miatt hatékonyabb)

Batch Insert / Bulk Insert optimalizálás Pythonból sokkal nagyobb adatmennyiségekkel


6. Gyakorlati telepítési példák Windows-on

64-bit Windows + 64-bit Python telepítés ajánlott lépések

  1. Telepíts 64-bit Anaconda-t / Python-t.

  2. Telepítsd az oracledb csomagot:

    ---bash
    pip install oracledb
  3. Töltsd le a 64-bit Oracle Instant Clientet:

    • pl. instantclient-basic-windows.x64-21.13.0.0.0dbru.zip

  4. Állítsd be a környezeti változókat:

    • PATH-hoz add hozzá a kibontott instantclient mappát.

  5. Ha Thick módot akarsz:

    • Telepítsd a Microsoft VC++ Redistributable (x64)-t.

  6. Írj egy kis tesztkódot:

    ---python
    import oracledb oracledb.init_oracle_client(lib_dir=r"C:\oracle\instantclient_21_13") connection = oracledb.connect(user="...", password="...", dsn="...") print("Connected!")

🎯 Összegzés: Mit kell mindig észben tartani?

Ellenőrizendő kérdésMiért fontos?
Python 32/64 bit?Instant Clientnek azonos bitness-nek kell lennie
Instant Client verzió helyes?19c/21c verziókat javaslom
Visual C++ Redistributable telepítve?Thick módhoz alapfeltétel
PATH beállítás jó?Ne legyen keveredés régi Oracle DLL-ekkel
oracledb csomag friss?Új feature-ek miatt


🛠 Oracle DB környezet ellenőrző szkript (Windows-ra)

---python
import platform import os import sys import oracledb def check_python_architecture(): arch = platform.architecture()[0] print(f"🧠 Python architektúra: {arch}") return arch def check_instant_client_path(): path_dirs = os.environ.get('PATH', '').split(';') instantclient_dirs = [p for p in path_dirs if 'instantclient' in p.lower()] if instantclient_dirs: print(f"📦 Instant Client mappa PATH-ban található:") for dir in instantclient_dirs: print(f" - {dir}") else: print("⚠️ Nincs Instant Client mappa a PATH-ban!") return instantclient_dirs def check_oracle_client_version(): try: version = oracledb.clientversion() print(f"🏛 Oracle Client verzió: {version}") except oracledb.ProgrammingError as e: print("⚠️ Oracle Client nem inicializált vagy nincs találva.") print(f"Részletek: {e}") def check_vcredist(): vcredist_32 = os.path.exists(r"C:\Windows\SysWOW64\msvcp140.dll") vcredist_64 = os.path.exists(r"C:\Windows\System32\msvcp140.dll") print("✅ Visual C++ Redistributable ellenőrzése:") if vcredist_32: print(" - 32-bit redistributable telepítve (SysWOW64)") else: print(" - ⚠️ 32-bit redistributable HIÁNYZIK!") if vcredist_64: print(" - 64-bit redistributable telepítve (System32)") else: print(" - ⚠️ 64-bit redistributable HIÁNYZIK!") def main(): print("=== Oracle környezet ellenőrzése ===") print() # Ellenőrzések python_arch = check_python_architecture() instantclient_dirs = check_instant_client_path() # Ha thick mód kellene: if instantclient_dirs: try: # Ha kell, inicializáljunk explicit Thick módra oracledb.init_oracle_client(lib_dir=instantclient_dirs[0]) except Exception as e: print(f"⚠️ Oracle Thick mód inicializációs hiba: {e}") check_oracle_client_version() check_vcredist() print("\n🎯 Ellenőrzés kész!") if __name__ == "__main__": main()

🎯 Mit tud ez a szkript?

  • Ellenőrzi a Python architektúrát (32-bit vagy 64-bit).

  • Megkeresi, hogy a PATH változóban benne van-e az Instant Client.

  • Megpróbálja kiolvasni az Oracle Client verziót.

  • Megnézi, hogy telepítve van-e a Visual C++ Redistributable.

  • Hibákat, hiányosságokat jól láthatóan kiírja.


❗ Fontos megjegyzés:

  • A msvcp140.dll ellenőrzés alapján tippel, hogy van-e C++ Redistributable.
    Ez elég jó gyakorlatban, de ha kell, írok pontosabb registry-alapú ellenőrzőt is.

  • Ha több Instant Cliented van, automatikusan az első PATH-ban lévőt próbálja inicializálni.


🛠 Telepítés és használat lépések:

  1. Mentsd el pl. oracle_env_check.py néven.

  2. Futtasd parancssorból:

    --- bash
    python oracle_env_check.py
  3. Nézd a kimenetet, javítsd a hibákat, ha kell.


Profi globális megközelítés telepítés ellenőrzésre

Először egy extra csomagra lesz szükség:

(A szép színekhez, nem kötelező, de nagyon ajánlott.)

Telepítsd:

---bash
pip install colorama

🎯 Íme a teljes szkript:

---python
import platform import os import sys import oracledb import ctypes from colorama import Fore, Style, init init(autoreset=True) # Colorama inicializálás (Windows kompatibilis!) def print_header(text): print(Fore.CYAN + Style.BRIGHT + f"\n=== {text} ===\n") def print_ok(text): print(Fore.GREEN + "✅ " + text) def print_warning(text): print(Fore.YELLOW + "⚠️ " + text) def print_error(text): print(Fore.RED + "❌ " + text) def check_python_architecture(): arch = platform.architecture()[0] print_header("Python architektúra") print_ok(f"Python futási architektúra: {arch}") return arch def check_instant_client_path(): print_header("Instant Client keresése PATH-ban") path_dirs = os.environ.get('PATH', '').split(';') instantclient_dirs = [p for p in path_dirs if 'instantclient' in p.lower()] if instantclient_dirs: print_ok("Instant Client mappa PATH-ban található:") for dir in instantclient_dirs: print(f" - {dir}") else: print_error("Nincs Instant Client mappa a PATH-ban!") return instantclient_dirs def check_oracle_client_version(): print_header("Oracle Client verzió ellenőrzése") try: version = oracledb.clientversion() version_str = ".".join(map(str, version)) print_ok(f"Oracle Client verzió: {version_str}") except oracledb.ProgrammingError as e: print_warning("Oracle Client nem inicializált. Próbáljuk meg inicializálni.") except Exception as e: print_error(f"Oracle Client inicializációs hiba: {e}") def check_vcredist(): print_header("Microsoft Visual C++ Redistributable ellenőrzése") vcredist_32 = os.path.exists(r"C:\Windows\SysWOW64\msvcp140.dll") vcredist_64 = os.path.exists(r"C:\Windows\System32\msvcp140.dll") if vcredist_32: print_ok("32-bit Visual C++ Redistributable jelen van (SysWOW64)") else: print_warning("32-bit Visual C++ Redistributable HIÁNYZIK!") if vcredist_64: print_ok("64-bit Visual C++ Redistributable jelen van (System32)") else: print_warning("64-bit Visual C++ Redistributable HIÁNYZIK!") def check_admin_rights(): print_header("Admin jogosultság ellenőrzése") try: is_admin = ctypes.windll.shell32.IsUserAnAdmin() if is_admin: print_ok("Futtatás rendszergazdai jogosultságokkal.") else: print_warning("Nem rendszergazdai jogosultsággal fut a script.") except Exception as e: print_warning(f"Hiba az admin ellenőrzés során: {e}") def main(): print(Fore.MAGENTA + Style.BRIGHT + "\n✨ Profi Oracle környezet ellenőrző ✨\n") python_arch = check_python_architecture() instantclient_dirs = check_instant_client_path() if instantclient_dirs: try: oracledb.init_oracle_client(lib_dir=instantclient_dirs[0]) except Exception as e: print_warning(f"Oracle Thick mód inicializáció nem sikerült: {e}") check_oracle_client_version() check_vcredist() check_admin_rights() print(Fore.MAGENTA + Style.BRIGHT + "\n🎯 Ellenőrzés befejezve!\n") if __name__ == "__main__": main()

📋 Mit tud ez a profi változat?

FunkciókRészletek
Színes kimenetGyorsan átlátható, hibák, figyelmeztetések, OK státuszok
Python bitness32-bit vagy 64-bit Python ellenőrzése
Instant Client keresésPATH változóban Instant Client mappa detektálása
Oracle Client verzióVerifikáció, hogy működik-e a Thick kapcsolat
Microsoft VC++ Redistributable32 és 64-bit VC++ runtime fájlok megléte
Admin jogok ellenőrzéseFuttatod-e rendszergazdaként
HibakezelésHa valami hiányzik vagy nincs jól konfigurálva, azonnal látod

📢 Extra tipp:

A szkriptet még fejleszthetjük úgy is, hogy:

  • automatikusan megpróbálja javítani a PATH-ot,

  • vagy több Oracle Instant Client mappából választani,

  • vagy letöltse az Instant Clientet, ha hiányzik.






📦 Offline Oracle Python csomag telepítése .whl fájlból


1. Miért kell .whl fájl?


Van mikor pl. egy banki, kormányzati, vagy zárt céges hálózaton dolgozol,
nincs közvetlen internet, ezért csomagok helyi telepítése (.whl fájlból) az egyetlen megoldás.

  • Mert pip normálisan az interneten keresi a PyPI szerveren a csomagot.

  • Ha nincs interneted, letöltöd máshol (.whl formátumban), viszed át pendrive-on, VPN-en, stb.

  • .whl = "wheel" = előre fordított, platform-specifikus Python csomag.


2. Oracle fontos Python csomagok offline telepítéséhez

CsomagFeladata
oracledbOracle adatbázis Python driver (cx_Oracle utódja)
coloramaSzínes terminál kimenet (ha szeretnéd a profi szkriptet színezni)
cryptography (esetleg)Biztonságos kapcsolatnál (SSL/TLS) lehet függőség


3. Lépések .whl fájl alapú telepítéshez

3.1. .whl fájl letöltése

Internetes gépen:

---bash
pip download oracledb --no-deps -d path_ahova_lemented

Példa:

---bash
pip download oracledb --no-deps -d D:\oracle_packages

Ez letölti a például:

oracledb-2.2.1-cp310-cp310-win_amd64.whl

fájlt, ahol:

  • cp310 = Python 3.10

  • win_amd64 = Windows 64-bit

⚠️ Nagyon fontos: a .whl fájl illeszkedjen a célgépen lévő Python verzióhoz és architektúrához (32/64-bit)‼️


3.2. Függőségek letöltése (ha szükséges)

Ha például colorama is kell:

---bash
pip download colorama --no-deps -d D:\oracle_packages

3.3. Átvitel a célgépre (nincs internet)

  • Másold át pendrive-ra, megosztott mappára stb.

  • A célgépen legyen egy mappa pl.: C:\offline_packages


3.4. Telepítés .whl-ből

Célgépen:

---bash
pip install C:\offline_packages\oracledb-2.2.1-cp310-cp310-win_amd64.whl

és pl.

---bash
pip install C:\offline_packages\colorama-0.4.6-py2.py3-none-any.whl

Kész!


⚠️ Buktatók, amikre figyelj offline telepítésnél:

ProblémaMegoldás
.whl nem kompatibilis a Python verzióvalEllenőrizd pontosan: python --version + architektúra (32/64-bit)
Függőségek hiányoznakpip download-nál figyelj: ha --no-deps-et adsz meg, csak a főcsomag jön. Függőségeket külön szedd le.
PATH nincs beállítvaHa Instant Client nem elérhető a PATH-ban, akkor hibát dobhat a oracledb thick mód.
Visual C++ Redistributable hiányzikNézd meg külön, és telepítsd, ha kell. (Pl. 2015-2022 Redistributable.)
Rossz platformos .whl32-bit vs. 64-bit keveredése szokott gond lenni!

💬 Kiegészítő lehetőségek:

🧰 Komplett csomag készítése

Ha sok gépre kell telepíteni internet nélkül:

  • Összecsomagolhatod egy .zip fájlba az összes .whl fájlt.

  • Írhatsz egy kis batch fájlt (install_all.bat), pl.:

---bat
pip install oracledb-2.2.1-cp310-cp310-win_amd64.whl pip install colorama-0.4.6-py2.py3-none-any.whl
  • Így 1 kattintásra telepíted mindenhol. 🚀


📚 Összefoglalva

Offline Oracle Python környezet telepítése így néz ki:

  1. Letöltés .whl fájlokkal (verzió és architektúra figyelés‼️).

  2. Átvitel zárt környezetbe.

  3. Lokális telepítés pip install path/to/whl.

  4. PATH, Instant Client, Visual C++ figyelés.

  5. (Opciósan batch script automatizálás.)


🛠 Profi offline Oracle telepítő batch fájl (oracle_offline_install.bat)

---bat
@echo off setlocal enabledelayedexpansion :: Színes kimenet aktiválása (csak vizuális) for /f "delims=" %%A in ('"prompt $H & for %%B in (1) do rem"') do set "BS=%%A" set PYTHON_CMD=python :: Használható mappa, ahova a .whl csomagokat másoltad: set PACKAGES_DIR=%~dp0offline_packages echo. echo [%BS%7]============================[%BS%7] echo [%BS%7] OFFLINE ORACLE INSTALLER [%BS%7] echo [%BS%7]============================[%BS%7] echo. :: Ellenőrizzük a Python elérhetőségét %PYTHON_CMD% --version >nul 2>&1 if %errorlevel% neq 0 ( echo [%BS%4]ERROR: Python nincs telepítve vagy nincs a PATH-ban! exit /b 1 ) :: Ellenőrizzük a pip elérhetőségét %PYTHON_CMD% -m pip --version >nul 2>&1 if %errorlevel% neq 0 ( echo [%BS%4]ERROR: pip nincs telepítve! exit /b 1 ) :: Visual C++ Redistributable DLL ellenőrzés (csak warning) if exist C:\Windows\System32\msvcp140.dll ( echo [%BS%2]OK: Visual C++ Redistributable (64-bit) megtalálva. ) else ( echo [%BS%6]WARNING: Visual C++ Redistributable (64-bit) HIÁNYZIK! ) :: Instant Client keresése a PATH-ban echo. echo [%BS%3]Instant Client PATH ellenőrzése... set FOUND_IC=0 for %%i in ("%PATH:;=" "%") do ( if /I "%%~nxi"=="instantclient" ( set FOUND_IC=1 ) ) if "!FOUND_IC!"=="1" ( echo [%BS%2]OK: Instant Client megtalálva a PATH-ban. ) else ( echo [%BS%6]WARNING: Instant Client nem található a PATH-ban! ) :: Oracle kapcsolódási csomagok telepítése echo. echo [%BS%3]Oracle csomagok telepítése .whl fájlokból... cd /d "%PACKAGES_DIR%" for %%f in (*.whl) do ( echo [%BS%7]Telepítem: %%f %PYTHON_CMD% -m pip install "%%f" --no-index --find-links . if %errorlevel% neq 0 ( echo [%BS%4]ERROR: %%f telepítése sikertelen! exit /b 1 ) ) echo. echo [%BS%2]Minden csomag sikeresen telepítve! 🎉 echo. pause exit /b 0

📋 Mappa-struktúra amit használnod kell hozzá:

---plaintext
telepito_mappa\ │ ├── oracle_offline_install.bat <-- ezt a batch fájlt ide │ └── offline_packages\ <-- ide a .whl fájlok ├── oracledb-2.2.1-cp310-cp310-win_amd64.whl └── colorama-0.4.6-py2.py3-none-any.whl

📢 Fontos tudnivalók:

DologMiért fontos
A batch ugyanabból a mappából fusson, ahol az offline_packages almappa vanKülönben nem találja a .whl fájlokat
A python és pip legyen elérhetőHa nem, adj teljes elérési utat (C:\Python310\python.exe stb.)
A batch admin joggal fussonAz Instant Client PATH módosításhoz majd később szükség lehet
Hibánál azonnal megállKönnyű hibakeresés
Függőségek (colorama, cryptography) kézzel töltsd le melléOffline installnál mindenre figyelj előre

🎯 Összegzés

Ezzel az automatikus batch telepítővel teljesen offline:

  • Installálhatsz több gépen.

  • Nem kell pip parancsokat gépelni.

  • Hibák azonnal láthatók.

➔ Pont ilyen kell nagy céges környezetbe! (pl. auditoknál is plusz pont.)


🛠 SUPER OFFLINE ORACLE INSTALLER (Batch Script)

---bat
@echo off setlocal enabledelayedexpansion ::=============================== :: BEÁLLÍTÁSOK ::=============================== set PYTHON_CMD=python set BASE_DIR=%~dp0 set PACKAGES_DIR=%BASE_DIR%offline_packages set INSTANT_CLIENT_DIR=%BASE_DIR%instant_client set VCREDIST_EXE=%BASE_DIR%vc_redist.x64.exe ::=============================== :: ÜDVÖZLÉS ::=============================== echo. echo ======================================== echo SUPER OFFLINE ORACLE INSTALLER echo ======================================== echo. ::=============================== :: Python ellenőrzése ::=============================== %PYTHON_CMD% --version >nul 2>&1 if %errorlevel% neq 0 ( echo [HIBA] Python nincs telepítve vagy nincs a PATH-ban! pause exit /b 1 ) ::=============================== :: pip ellenőrzése ::=============================== %PYTHON_CMD% -m pip --version >nul 2>&1 if %errorlevel% neq 0 ( echo [HIBA] pip nincs telepítve! pause exit /b 1 ) ::=============================== :: Visual C++ Redistributable ellenőrzése és telepítése ::=============================== echo Ellenőrzés: Visual C++ Redistributable... if exist C:\Windows\System32\msvcp140.dll ( echo [OK] Visual C++ Redistributable megtalálva. ) else ( echo [INFO] Visual C++ Redistributable HIÁNYZIK - telepítem... if exist "%VCREDIST_EXE%" ( "%VCREDIST_EXE%" /quiet /install echo [OK] Visual C++ telepítve. ) else ( echo [HIBA] VC++ telepítő nem található: %VCREDIST_EXE% pause exit /b 1 ) ) ::=============================== :: Instant Client ellenőrzése és beállítása ::=============================== echo Ellenőrzés: Oracle Instant Client... set FOUND_IC=0 for %%i in ("%PATH:;=" "%") do ( if exist "%%~i\oci.dll" ( set FOUND_IC=1 ) ) if "!FOUND_IC!"=="1" ( echo [OK] Instant Client megtalálva a PATH-ban. ) else ( echo [INFO] Instant Client nincs a PATH-ban - másolás és PATH frissítés... if not exist "%INSTANT_CLIENT_DIR%\oci.dll" ( echo [HIBA] Instant Client könyvtár hibás vagy hiányzik: %INSTANT_CLIENT_DIR% pause exit /b 1 ) set NEW_IC_PATH=%INSTANT_CLIENT_DIR% setx PATH "%PATH%;%NEW_IC_PATH%" >nul echo [OK] Instant Client hozzáadva a PATH-hoz. (Új terminált kell nyitni!) ) ::=============================== :: Oracle csomagok telepítése .whl fájlokból ::=============================== echo. echo Oracle csomagok telepítése... if exist "%PACKAGES_DIR%" ( cd /d "%PACKAGES_DIR%" for %%f in (*.whl) do ( echo Telepítem: %%f %PYTHON_CMD% -m pip install "%%f" --no-index --find-links . if %errorlevel% neq 0 ( echo [HIBA] %%f telepítése sikertelen! pause exit /b 1 ) ) ) else ( echo [HIBA] Nincs meg a .whl csomagok mappa: %PACKAGES_DIR% pause exit /b 1 ) echo. echo ======================================== echo [SIKER] Minden komponens telepítve! 🎉 echo ======================================== echo. pause exit /b 0

📂 Hogyan nézzen ki a telepítési mappa-struktúra?

---plaintext
telepito_mappa\ │ ├── oracle_super_offline_install.bat <-- ezt a scriptet ide ├── vc_redist.x64.exe <-- Visual C++ Redistributable offline telepítő │ ├── offline_packages\ <-- ide a .whl fájlok │ ├── oracledb-2.2.1-cp310-cp310-win_amd64.whl │ └── colorama-0.4.6-py2.py3-none-any.whl │ └── instant_client\ <-- ide az Oracle Instant Client állományok (pl. basiclite.zip kicsomagolva) ├── oci.dll ├── oraociei19.dll ├── ...

🧠 Plusz megjegyzések:

TémaRészletek
Visual C++ installer (vc_redist.x64.exe)Letöltheted innen: Microsoft link
Instant ClientMinimum a "Basic" vagy "Basic Lite" csomag kell, pl.: instantclient-basiclite-windows.x64-19.19.0.0.0dbru.zip
PATHAzonnal nem frissül futó parancssorban, új parancssort kell nyitni
Python architektúraFontos: 64-bit Python kell a 64-bit Instant Clienthez! (és fordítva)

🔥 Mi mindent old meg ez az installer?

ProblémaMegoldva?
Python/Pip hiányaEllenőrzi
VC++ Redistributable hiányaFeltelepíti
Instant Client hiányaBemásolja + PATH-hoz adja
Oracle Python csomagokTelepíti .whl-ből
Internet kapcsolat szükségességeNem kell internet!




Linkek:

 https://python-oracledb.readthedocs.io/en/latest/user_guide/installation.html

 https://python-oracledb.readthedocs.io/en/latest/installation.html

 https://python-oracledb.readthedocs.io/en/latest/index.html

 https://github.com/oracle/python-oracledb/discussions

 https://github.com/oracle/python-oracledb


 https://pypi.org/project/oracledb/#files 


Megjegyzések