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

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

2011-01-01から1年間の記事一覧

@ITでコラム書き始めました

こんな感じの。 http://el.jibun.atmarkit.co.jp/fatalstaynight/大丈夫なのかこれ、って常に心配しながら書いてます。 お目通し頂けますと幸いです。 あ、服は自前です。

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 ; // 権限あげないと…

多段SSHのメモ

いつも忘れちゃうので。 scpでfumidai_serverを踏み台にhonban_serverに配置する例。 $ scp -o 'ProxyCommand ssh test@fumidai_server nc %h %p' test.data.gz sample@honban_server:~ 多段かましてコマンド叩く場合はこんな感じ。 $ ssh -o 'ProxyCommand …

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

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

VMWareからVirtualBoxに乗り換える

Mac

VMWare Server(ただし1.0系統に限る)は導入も簡単で仕組みも簡単で気に入ってたんですけどWin7で動かねえしそろそろ無理目な感じですよね。 で、MBAだしVirtualBoxあたりを入れてみたんですが、標準でNATも聞いててネットワークインストールもすんなり行くの…

General error: 1449 The user specified as a definer ('test'@'10.100.%') does not exist

トリガをmysqldumpすると謎のdefinerとやらが含まれてしまい、それが原因になりimportに失敗することがある。(例のエラーメッセージのように接続元IPアドレス体系が異なるとか) じゃあどうすりゃいいの、というと、--skip-triggersオプションを指定してmys…

ストアド設定しようとしたらCannot load from mysql.proc. The table is probably corrupted

どうも5.1系から5.5系でMySQLのテーブル構造が変わるのが原因らしい。 http://readit.l8r.in/2011-06-22/mysqlcannot-load-from-mysql-proc/書いてある通りmysql_upgradeの実行で治ったんだが、サーバ自体は全部5.5系なのになんで?と思ってたら理由は古いmy…

別databaseに対してトリガをしかけることはできない

たとえばTEST1というdatabaseで、 create trigger TRIGGER_SAMPLE after UPDATE on TEST2.TESTTABLE for each row みたいなことをするとエラーになるので、無理。 「そんなことしねーよ」って普通思いますけど、やる人がいるかもわからんので。。。 というか…

ファイル中の特定文字列数をカウントする

いろいろやり方はあるけどPythonでやるのが楽ちん。 文字列読み込んでstr.count('hoge')で一発。 以下、改行文字として[#@@@@#]という頭の悪い文字列を使ったCSVデータの改行文字数=列数をカウントするサンプル。count_line.py #!/usr/bin/python import sy…

ERROR 1347 (HY000): 'DBNAME.TABLENAME' is not BASE TABLE

なんでこうなるのかはわからないが、トリガ中でデータ型が違うSQLを書くと (例: SYSDATE()をvarcharカラムに叩きこむ)このエラーが出る。 にしてもMySQLは謎のエラーメッセージが多い。

MySQLではDELETE文のfrom句で指定する表名に別名はつけられない

Oracleだとできるし、当然SELECT文の場合は問題なくできる。 なんだかよくわかんない制限。

暗黙的トランザクション

MySQLストアドがautocommit = 0にして単体で呼んだ時にはrollbackできないが、 INSERT文発行した直後だとrollbackできる、のはなんで?と質問されてわけがわからないよ(◕‿‿◕)ってなったんですが、どうもMySQL(というかInnoDB)が「INSERT文を発行するときに…

SystemError: Objects/stringobject.c:3565: bad argument to internal function

gomiなのでPythonでメモリ上にがっつり乗っけるスクリプト書いたら見慣れないエラーで落ちた。 test.py ---- str = "" while True: str += "a" * 1024 * 1024 print len(str) ----これをCentOS 5.6(64bit)上のPython 2.4.3とかで流すと 2144337920 214538649…

load dataによるBLOB型の扱い

今回のsgtでは運良く使わなかったんだけど、万が一使うことになったときのメモ。・load data infile 文で指定することはできない(と、マニュアルには書いてあるが) ・基本的にはBinary句がついたTEXT型と同じ http://www.hi-ho.ne.jp/illusia/nif/mysql_2nd_…

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

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

MySQLトリガの制限

Oracleのように特定のカラムが更新された場合のトリガ、というのは設定することができない。(MySQL 5.5) 下行でいえば、OF [XXXX]の部分。 create trigger TRI_TEST after UPDATE OF [XXXX] on TEST for each row どこのカラムでもレコードが更新されたら強…

ファイル・サイズ が最大値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の場合は``でくくる。そもそも予約語なんだから最初から使うなよって感じがしますが。

FileMergeを良い感じにする

Mac

個人的なメモ。基本的には以下の通りなんですけど、 http://logic.moo.jp/memo.php/archive/492nkfはsudo brew install nkfで入れるのが楽ちんです。 あとフィルタの追加がわかりづらいんですけど、空白の列をクリックすると追加できます。拡張子ごとっての…

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…

sshで公開鍵を使わずにログインする

パスフレーズ付きの秘密鍵は~/.ssh/にちゃんと置いてあるんだけど あえてそれを使わずにログインしたいときに。 ssh -F ~ test@192.168.1.1 という感じで、-Fオプションつけてニセのコンフィグファイル指定するといける。 うさんくせえですがメモ。

SELECT ... INTO で指定する変数名をカラム名と同じにすると強制的にNULLが入る

SELECT MAX_POINT INTO max_point FROM TEST WHERE id = 1; 以上のような何の変哲もないSQLだが、max_pointの値が強制的にNULLになる。 MySQLのテーブル名やカラム名は大文字小文字区別するが、 ストアドプロシージャに関しては別らしい。大はまりしました。…

パッケージ内のファンクション(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…

InnoDB関係のパフォーマンス設定

自分用メモ。 innodb_buffer_pool_size = 120000M //適当 innodb_data_file_path = ibdata1:1G:autoextend:max:200G innodb_autoextend_increment=64 innodb_flush_method = O_DIRECT innodb_log_buffer_size = 20M innodb_flush_log_at_trx_commit = 1 // d…

指定カラムに重複があるかどうか調べる

SQL

select COL_NAME from TABLE_NAME where COL_NAME in (select COL_NAME from TABLE_NAME group by COL_NAME having count(*) > 1); お好みでdistinctをつけたりしても風流。

ユーザにSUPER権限を与える

トリガとか設定したいときに。rootユーザで入って($mysql -u root) UPDATE mysql.user SET Super_priv='Y' WHERE user='test_user'; 確認は SELECT user, Super_priv FROM mysql.user WHERE user='test_user'; こんなかんじで。

ストアドプロシージャはsqldumpに含まれない

まあなんとなくそんな気はしてた。 別途貼りつけてやんないとダメ。