いっぽんの猟銃のむこうに (DAIZOじいさんとGun)

ヌルめの技術メモとか。フリーランスやってます (http://acez.jp/)

Oracle

cx_Oracleをcygwin上のPython(2.6)に入れる

ベンチマーク比べするためだけにWin上で動かしたいなーなんて場合はとりあえずCygwinなんですけど、この場合setup.pyスクリプトに手でパッチ当てないとうまく動いてくれません。詳細は以下のとおり。 http://permalink.gmane.org/gmane.comp.python.db.cx-or…

Super-Smackの--with-oracleオプションはダミー

最近ではDBのサンプルデータベースを作るのに専らSuper-Smackを使ってたんですが(使い方は http://thinkit.co.jp/cert/article/0707/2/2/2.htm (自分メモ))久しぶりにconfigureしたらOracle指定ができたので、「あれ?Oracle対応してるのかな?」とか…

cx_Oracleのインストール(pip編)

最近だとvirtualenv切ってPIPで入れるのがお作法的に綺麗な感じがするので、その手順をメモ。 ■前提条件 ・Pythonの比較的新しめな奴(2.5以降系) ・Oracle Instant Clinetが導入され、sqlplusでの接続確認済 ・Oracle環境変数等設定済 [oracle@oracle11g ~]$…

Oracle表領域、ユーザの追加をSQLベースで

OEMで手でポチポチやってらんねえーって時に。スクリプトとかにしておくと吉。 ・まずはSYSDBAでログイン $ sqlplus sys/test as sysdba ・表領域追加 create BIGFILE tablespace TEST_20110930 datafile '/opt/oracle/oradata/TEST_20110930.ORA' size 5000…

SYSDATEをSYSDATE()で置き換えるのはNG

結論から言うと「OracleのSYSDATEをMySQLに移行する場合はNOW()使え」ということらしい。 http://nippondanji.blogspot.com/2009/04/sysdatenow.html 以下検証ソース。 SQL> CONN / AS SYSDBA SQL> GRANT EXECUTE ON DBMS_LOCK TO SCOTT ; // 権限あげないと…

Oracle11g(release2) Enterpriseを入れるときのメモ

CentOSに入れるとなんだかんだで13GBくらい食う。なのでVMの場合でも20GBくらいは確保しておいたほうがよい。 MBAだからセコセコやってたら3回くらいやり直すはめに。LVMとか切り直せばいいんでしょうけどめんどくて。 手順は以下の通りやるのがおすすめ。 h…

てっとり早く10gのOracleダンプデータを取得する

Oracleのdmpファイルは上位互換はあるが下位互換はないので、11gのexpコマンドで10gに接続してdmp吐こうとすると怒られる。 かといって今更RHEL4(CentOS4)入れて10g入れて、、、なんてやってらんない。 そんなときにdmpを吐くだけならXEを入れてみるのもあり…

ファイル・サイズ が最大値4194303ブロックを超えています。

ビッグサイズ表領域を使うのが手っ取り早い。 create BIGFILE tablespace TEST_BIGSIZE datafile '/opt/oracle/oradata/TEST_BIGSIZE.ORA' size 50000M AUTOEXTEND ON next 100M maxsize unlimited segment space management AUTO; EnterpriseManagerからも…

Oracleで予約語をカラム名に使う

Oracleで予約語をカラム名に使うには以下のように" " でくくる。 SQL> select MAX("mode") from TEST; MAX("MODE") ----------- 1ちなみにMySQLの場合は``でくくる。そもそも予約語なんだから最初から使うなよって感じがしますが。

Oracleの波ダッシュ(〜)問題に対処する

まず、UTF-8とSJISで文字コードを変換したときに化けやすい文字、ってのがある。 http://ja.wikipedia.org/wiki/Unicode#.E6.B3.A2.E3.83.80.E3.83.83.E3.82.B7.E3.83.A5.E3.83.BB.E5.85.A8.E8.A7.92.E3.83.81.E3.83.AB.E3.83.80.E5.95.8F.E9.A1.8Cそんなか…

Mac OS X LionにOracle instantclientを入れる

(Oracle Instantclient Version 10.2.0.4 の場合です)相変わらず変なコツがいるので。まず32bit版を落とす。解凍してライブラリに別名をつける $ ln -s libclntsh.dylib.10.1 libclntsh.dylib $ ln -s libocci.dylib.10.1 libocci.dylib 環境変数の設定~/.ba…

パッケージ内のファンクション(OUT引数付き)を呼び出す

TESTパッケージ内のファンクションを呼び出すには以下のようにしとくのが無難。 set serveroutput on declare arg1 VARCHAR2(200); arg2 VARCHAR2(200); result NUMBER; begin result := TEST.TESTFUNC(arg1, arg2); DBMS_OUTPUT.PUT_LINE(arg1); DBMS_OUTPU…

MySQLの文字列型(CHAR, VARCHAR, TEXT)は大文字小文字を区別しない(Ignore Case)

'aaa' = 'AAA' なんでPKにすると余裕でduplicate keyしたりする。すげえ。これを防ぐにはDDLで VARCHAR(20) BINARY; などとバイナリ指定しないといけない。めんどくせえー ちなみにテーブル名とかOracleは大文字小文字を区別しないのは有名だけど、 MySQLもm…

Oracle -> MySQL SQL変換メモ

■システム日付 ・Oracle SYSDATE ・MySQL NOW()■日付型→文字列型変換(YYYY/MM/DD) ・Oracle: TO_DATE(TO_CHAR(SYSDATE), 'YY-MM-DD') ・MySQL: DATE_FORMAT( SYSDATE() , '%Y-%m-%d')■TRUNC(日付) ・Oracle TRUNC(SYSDATE) ・MySQL DATE(SYSDATE())■ADD_MONT…

下位バージョンのサーバに上位バージョンのサーバからExpすると ORA-00904: "POLTYP": invalid identifier

10gのDBサーバに11gのクライアントからEXPしたりしようとすると ORA-00904: "POLTYP": invalid identifier って出て途中でアボートする。逆(10gでexpしたものを11gにimp)とかは普通にできるので なんつーか割り切った仕様なんですかね。めんどくせえなー

sqlplusでコマンド実行履歴とか使えるようにする(rlwrap)

sqlplusは前回の履歴とか呼び出せないのがなんとも切ないですよねー。 以下の手順でrlwrap入れると、シェルで履歴呼び出しとかできるようになります。便利。依存ライブラリのインストール $ yum -y install readline-devel (Debian系は $ apt-get install li…

Oracle Instant Client導入

とりあえずcx_Oracle動けばいいやって感じの場合のメモ。こっからBasicとSDKを拾ってくる http://www.oracle.com/technetwork/jp/topics/index-099943-ja.html■rpmインストール # rpm -ivh oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.rpm # rpm -i…

sqlplusでSQLを流し、その実行時間をtimeで計測する

Linuxでコマンド実行時間を取るのに便利なtimeコマンドですが、sqlplusとかだと途中で入力受付になってそこで止まってしまって計測できないことがあります。そういう時にヒアドキュメントなんですが、いつも忘れちゃうのでメモ。 $ time sqlplus benchmark/t…

超適当にapacheにORACLE_HOMEを認識させる

普通にphpコマンドで流すと通るのにWebから接続できねー!って場合、apacheユーザのパスにORACLE_HOMEとかが通ってない。かといえ、apacheとかPHPとかソースから入れるのはめんどくさい。。。という糞畜生向けに、起動スクリプトに環境変数を直書きするとい…

cx_Oracleのインストール

Python用Oracleコネクタのインストール方法です。いまんとこ最新の5.1で確認しました。Oracleがインストールされているのと同じサーバーに入れることを前提とします。そうでない場合はOracle instantclientとか入れればいいみたい。その場合の手順は必要にな…

SQLでテーブル定義情報とかストアドプロシージャ情報とかを取得

SELECT object_name, object_type FROM user_objects WHERE object_type = 'PROCEDURE' OR object_type = 'FUNCTION' OR object_type = 'PACKAGE' OR object_type = 'LIBRARY' ORDER BY object_type, object_name ;object_typeで指定するスキーマの種類とか…