PostgreSQLで、次のようなテーブルを作成し、データを入れます。
ここで、WHERE区にlast_nameとfirst_nameに条件を設定してデータを取得します。
結果は次のようになります。
これと同様のことをOracleで試してみました。
結果は次のようになります。
エラーとなりました。
そこで、WHERE区を
と修正して実行してみると
正しく動作しました。
Oracleでは、値を入れる辺を括弧で括ってやるとうまくいくようです。
元々、次のように
IN区で複数の条件を指定するように作られているのかな?っという気がしますが、どうなんでしょう。
2015年4月20日月曜日
2014年5月15日木曜日
ubuntu14.04にoracle-xe 11gをインストール
ubuntu14.04 LTS ServerにOracle Database Express Edition 11g Release2をインストールしたときの手順のまとめ。
こちらのサイトを参考にさせていただきました。というか、パクリです。
まず、Oracle-XE-11.2.0のLinux x64版をダウンロードして、ubuntuにコピーしておく。
必要なパッケージをインストール。
oracle-xeのパッケージを解凍。
rpmパッケージをdebパッケージに変換。
パッケージをインストール。
/sbin/chkconfig をviで編集し
パッケージのインストール。
/etc/init.d/oracle-xeの /var/lock/subsys/ を /var/lock/ に変更。
※私の試した環境(仮想マシンに1Gのメモリを設定)では、このままconfigureを実行してうまくいきましたが、configureでエラーが出るような場合は、以下のパラメータを変更してみてください。
/u01/app/oracle/product/11.2.0/xe/config/scripts/init.ora
/u01/app/oracle/product/11.2.0/xe/config/scripts/initXETemp.ora
の2つのファイルの、memory_targetをコメントにして、pga_aggregate_targetとsga_targetを設定します。
configureを実行。
.profileを編集して、oracleの環境変数が設定されるようにする。
編集した.profileの内容を反映する。
oracleに接続できるか確認する。
これでoracleに接続できたらOK!
こちらのサイトを参考にさせていただきました。というか、パクリです。
まず、Oracle-XE-11.2.0のLinux x64版をダウンロードして、ubuntuにコピーしておく。
必要なパッケージをインストール。
sudo apt-get install alien libaio1 unixodbc unzip
oracle-xeのパッケージを解凍。
unzip oracle-xe-11.2.0-1.0.x86_64.rpm.zip
rpmパッケージをdebパッケージに変換。
cd Disk1/
sudo alien --to-deb --scripts oracle-xe-11.2.0-1.0.x86_64.rpm
パッケージをインストール。
/sbin/chkconfig をviで編集し
sudo vi /sbin/chkconfig
以下の内容を記述。#!/bin/bash
# Oracle 11gR2 XE installer chkconfig hack for Debian by Dude
file=/etc/init.d/oracle-xe
if [[ ! `tail -n1 $file | grep INIT` ]]; then
echo >> $file
echo '### BEGIN INIT INFO' >> $file
echo '# Provides: OracleXE' >> $file
echo '# Required-Start: $remote_fs $syslog' >> $file
echo '# Required-Stop: $remote_fs $syslog' >> $file
echo '# Default-Start: 2 3 4 5' >> $file
echo '# Default-Stop: 0 1 6' >> $file
echo '# Short-Description: Oracle 11g Express Edition' >> $file
echo '### END INIT INFO' >> $file
fi
update-rc.d oracle-xe defaults 80 01
configureのawkのパスが違うのでシンボリックリンクを作成。sudo ln -s /usr/bin/awk /bin/awk
ファイルのパーミッションを変更。sudo chmod 755 /sbin/chkconfig
パッケージのインストール。
sudo dpkg --install ./oracle-xe_11.2.0-2_amd64.deb
/etc/init.d/oracle-xeの /var/lock/subsys/ を /var/lock/ に変更。
sudo vi /etc/init.d/oracle-xe
※私の試した環境(仮想マシンに1Gのメモリを設定)では、このままconfigureを実行してうまくいきましたが、configureでエラーが出るような場合は、以下のパラメータを変更してみてください。
/u01/app/oracle/product/11.2.0/xe/config/scripts/init.ora
/u01/app/oracle/product/11.2.0/xe/config/scripts/initXETemp.ora
の2つのファイルの、memory_targetをコメントにして、pga_aggregate_targetとsga_targetを設定します。
sudo vi /u01/app/oracle/product/11.2.0/xe/config/scripts/init.ora
sudo vi /u01/app/oracle/product/11.2.0/xe/config/scripts/initXETemp.ora
以下の内容を記述。#memory_target=418381824
pga_aggregate_target=200540160
sga_target=601620480
configureを実行。
sudo /etc/init.d/oracle-xe configure
.profileを編集して、oracleの環境変数が設定されるようにする。
vi ~/.profile
以下の内容を追加する。source /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh
編集した.profileの内容を反映する。
source ~/.profile
oracleに接続できるか確認する。
sqlplus system/[設定したパスワード]@XE
これでoracleに接続できたらOK!
2012年3月8日木曜日
OracleでDBMS_OUTPUTを使う時に
OracleのSQL/Plusで、デバッグメッセージなどを表示したい時、DBMS_OUTPUT.PUT_LINE('メッセージ');とするが、このとき、SQL/Plusでコマンド
バッファサイズが足りないときは
set serverout on;
とする必要がある。バッファサイズが足りないときは
set serverout on size 1000000;
のようにバッファサイズを指定する。
2010年2月3日水曜日
oracleインスタントクライアントのインストール
ubuntuで、PHPからoracleに接続するために、oracleインスタントクライアントをインストールします。
まず、OTNから以下のファイルをダウンロードします。
次の手順でインストールします。
続いて、
続いて、
しばらくすると、
PHPから利用できるように
tnsnames.oraにサーバー情報を追加します。
環境変数の設定を追加します。
[補足]
phpinfo()の結果を見ると、NLS_LANGとLD_LIBRARY_PATH等の環境変数の設定が反映されていないので、
を
と修正して、apacheを再起動した。
あと、もしかしたら
まず、OTNから以下のファイルをダウンロードします。
- Instant Clientパッケージ - Basic
- Instant Clientパッケージ - SDK
- Instant Clientパッケージ - SQL*Plus
次の手順でインストールします。
$ sudo mkdir -p /opt/oracle
$ cd /opt/oracle
$ sudo unzip ダウンロードしたInstant Clientパッケージ - Basic
$ sudo unzip ダウンロードしたInstant Clientパッケージ - SDK
$ sudo unzip ダウンロードしたInstant Clientパッケージ - SQL*Plus
$ sudo mv instantclient_10_2 instantclient
$ cd instantclient
$ sudo ln -s libclntsh.so.10.1 libclntsh.so
$ sudo ln -s libocci.so.10.1 libocci.so
$ sudo su -
# echo /opt/oracle/instantclient > /etc/ld.so.conf.d/oracle-instantclient
# exit
$ sudo pecl install oci8画面に 1. Please provide the path to the ORACLE_HOME directory. Use 'instantclient,/path/to/instant/client/lib' if you're compiling with Oracle Instant Client : autodetect
1-1, 'all', 'abort', or Enter to continue:
と表示されるので、all と入力します。続いて、
Please provide the path to the ORACLE_HOME directory. Use 'instantclient,/path/to/instant/client/lib' if you're compiling with Oracle Instant Client [autodetect] :
と表示されるので、 instantclient,/opt/oracle/instantclient と入力します。続いて、
1. Please provide the path to the ORACLE_HOME directory. Use 'instantclient,/path/to/instant/client/lib' if you're compiling with Oracle Instant Client : instantclient,/opt/oracle/instantclient
1-1, 'all', 'abort', or Enter to continue:
と表示されるので、エンターキーを押します。しばらくすると、
Build process completed successfully
Installing '/usr/lib/php5/20060613/oci8.so'
install ok: channel://pecl.php.net/oci8-1.3.5
configuration option "php_ini" is not set to php.ini location
You should add "extension=oci8.so" to php.ini
と表示されればOK。PHPから利用できるように
$ sudo su -
# echo extension=oci8.so >> /etc/php5/apache2/php.ini
# exit
$ sudo /etc/init.d/apache2 restart
を行い、apacheを再起動します。tnsnames.oraにサーバー情報を追加します。
$ cd /opt/oracle
$ sudo vi tnsnames.ora
環境変数の設定を追加します。
$ cd ~/
$ vi .profile
末尾にLD_LIBRARY_PATH=/opt/oracle/instantclient
PATH=/opt/oracle/instantclient:$PATH
NLS_LANG=JAPANESE_JAPAN.AL32UTF8
TNS_ADMIN=/opt/oracle
export LD_LIBRARY_PATH PATH TNS_ADMIN NLS_LANG
を追加します。$ source ~/.profile
を行って環境変数を設定してから$ sqlplus ユーザー/パスワード@接続文字
で接続できれば完了![補足]
phpinfo()の結果を見ると、NLS_LANGとLD_LIBRARY_PATH等の環境変数の設定が反映されていないので、
$ sudo vi /etc/init.d/apache2で、ENV="env -i LANG=C PATH=/usr/local/bin:/usr/bin:/bin"を
ENV="env -i LANG=C PATH=/opt/oracle/instantclient:/usr/local/bin:/usr/bin:/bin NLS_LANG=JAPANESE_JAPAN.AL32UTF8 LD_LIBRARY_PATH=/opt/oracle/instantclient TNS_ADMIN=/opt/oracle"と修正して、apacheを再起動した。
あと、もしかしたら
$ sudo dpkg-reconfigure apacheしたかも。
登録:
投稿
(
Atom
)