Debianにoracle-xe-client_10.2.0.1-1.0とcx_Oracleのインストール

Windows上のPythonからDebianのOracleへのアクセスを試しました。
PythonからOracle xe universal 10g R2 へのデータ登録とインデックスの作成


せっかくなので、別のDebian端末からOracleをインストールしているDebian端末への
接続を試してみます。



前提条件



Oracle本体と同様、swapメモリに制限があります。
どうやら、swapが500MB以上必要な模様。

何も知らずにインストールしようとしたら、こんなエラーが表示されました。



(oracle-xe-client_10.2.0.1-1.0_i386.deb から) oracle-xe-client を展開しています...
This system does not meet the minimum requirements for swap space. Based on
the amount of physical memory available on the system, Oracle Client 10g
Express Edition requires 500 MB of swap space. This system has 357 MB
of swap space. Configure more swap space on the system and retry the installation.
dpkg: oracle-xe-client_10.2.0.1-1.0_i386.deb の処理中にエラーが発生しました (--install):
サブプロセス pre-installation script はエラー終了ステータス 1 を返しました
以下のパッケージの処理中にエラーが発生しました:
oracle-xe-client_10.2.0.1-1.0_i386.deb




DebianにOracle xe universal 10g R2 をインストール
ここと同様の手順で、swapを増やしておきます。


###swap領域を作成
# mkdir -p /mnt/swap
# cd /mnt/swap/
# dd if=/dev/zero of=swapfile bs=1M count=1024
# mkswap swapfile
# swapon swapfile

###fstabへ設定を追加
# vi /etc/fstab
/mnt/swap/swapfile     none     swap     sw     0     0





もう一つ、インストール時に必要なライブラリをインストールしておきます。


# apt-get install libaio1 bc






モジュールのダウンロード



http://www.oracle.com/technology/products/database/xe/index.html

上記URLの右側、FREE DOWNLOADの下、Linuxを選択します。

03_01_20091106203203.png


oracle-xe-client_10.2.0.1-1.0_i386.deb をダウンロード。

03_02_20091106203203.png


ダウンロードしたモジュールをDebianにコピーします。




oracle xe clientのインストール



dpkgコマンドでインストールを実行します。


# dpkg -i oracle-xe-client_10.2.0.1-1.0_i386.deb




私の環境だけかも知れませんが、oracleというユーザーの作成がエラーになり、
インストールに失敗しました。
※bcのインストールを忘れていたら発生する?

手動でoracleユーザーの追加を行い、パッケージを一旦削除。
その後、インストールを実行したら、ちゃんと入ってくれました。


###oracleユーザーの追加
# useradd oracle

###oracle-xe-clientパッケージの削除
# dpkg -r oracle-xe-client





インストール後、ORACLE_HOMEを設定するため、.bash_profileに設定を仕込みます。


# vi ~/.bash_profile

###以下の行を追加(.を忘れずに!)
. /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/bin/oracle_env.sh

###設定内容を反映
# source ~/.bash_profile



これでsqlplusが起動できるようになります。


接続テストして見ます。
接続は
sqlplus [ID]/[パスワード]@[Oracleサーバー]


# sqlplus test/[email protected]

SQL*Plus: Release 10.2.0.1.0 - Production on

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



Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
に接続されました。
SQL> select count(*) from post;

  COUNT(*)
----------
    122877

SQL> quit;
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Productionとの接続が切断されました。



いい感じです。




cx_Oracleのインストール



Windowsでは、インストーラーからモジュールのインストールを行いましたが、
Debianからはeasy_installでインストールしてみます。


# easy_install cx_Oracle



これであっさりインストールできました。

サンプルコードを書いて、テストしてみます。


#!/usr/bin/env python
# -*- coding:utf-8 -*-

import cx_Oracle

con = cx_Oracle.connect("test/[email protected]")
ora = con.cursor()
ora.execute("select * from post where zip_code='9040000'")
row = ora.fetchone()

while row != None:
    print row[0],row[1]
    row = ora.fetchone()

# カーソルを閉じます。
ora.close()
# 接続を終了します。
con.close()




実行してみると・・・


# python test.py
9040000 沖縄県沖縄市以下に掲載がない場合




上手く動いてくれているようです。









関連記事

プロフィール

Author:symfo
blog形式だと探しにくいので、まとめサイト作成中です。
https://symfo.web.fc2.com/

PR

検索フォーム

月別アーカイブ