Oracle

インデックスの一覧

●インデックスの一覧 SQL# select * from user_ind_columns; ※指定した表のインデックスのみ、表示することもできます。 SQL# select column_name from user_ind_columns where table_name = '表名'; http://ash.jp/db/ora_tips.htm

DB作成

機会があったので、自分でDBを立ててみた まぁdbcaを使うので、楽々・・・と思ったら、パッチを入れた途端に作成できなくなる アラートログ($ORACLE_HOME/rdbms/log/alert_.log)はこんな感じ ORA-39700: database must opened be with UPGRADE option しば…

NLS_LANG

よくあるもの AL32UTF8 JA16SJISTILDE JA16EUCTILDE ここを読む http://biz.rivus.jp/words/multibyte_characterset.html

シーケンスのエクスポート

ちょっと調べたが結局シーケンスのみのエクスポートはできない。 結局作り直して、start値を設定することに。

タグ検索

サイト内をタグ検索したい、という要望があったが。 作るとしたら、全文検索というのを使う必要があるようだ。 Oracleだとこんな感じ http://www.okisoft.co.jp/esc/ora.html MySQLではSennaというものもあるようだ Tagの検索をSenna+MySQLで http://blog.ya…

画像の取り扱い

BLOB型+Streamで行う。 JDBC プログラミングの基本 (BLOB の扱い方の基本) http://www63.tok2.com/home2/jd4/BLOBbasics.html BLOB型の利用 http://www.doyouphp.jp/sample/sample_ora_blob.shtml

コネクションの枯渇

Oracleドライバを使用しているときに、例えばApコンテナの切り出すスレッドがMAX100、コネクションプールがMAX10にした場合の話の動作。 負荷をかければ当然コネクションプールが枯渇するわけです。 この時どのような動作になるかとは「JDBC開発者ガイドおよ…

OracleDataSource

Tomcat標準ではCommons-DBCPを利用する。

とりあえず

RACに繋がらないやつ。 JSPから直接JNDIを取得してSQL発行してみた。 既にこの段階でうまく行ったりいかなかったり。 ロードバランスを設定すると、片方からしかセッションを取得できない。 ロードバランスを切ると、最初に設定した方からセッションを取得す…

ORU-10027

ORU-10027: buffer overflow, limit of x bytes。 テストなどで大量のDBMS_OUTPUTを出すと、バッファ領域が足りなくなってストアドの実行自体がエラーになる。 DBMS_OUTPUT パッケージの使用目的としては、デバック時の出力と簡易な終了ステータス情報の出力…

UTL_FILE

どうも9i〜で変わったのかな? http://biz.rivus.jp/technote507106.html create directoryというやつを使えば、Oracleを再起動することなく設定できる(らしい)。 であとはUTL_FILE.FOPENでディレクトリオブジェクト名を指定してやるだけと。 ディレクトリ…

ファイルの読み書き

UTL_FILEを使う。 http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/sq_pl07_1.htm パスの設定は9と10で違うという話なので調べてみる。

変数の長さ

HOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGE NUMBER(10); などと定義すると怒られる。 ORA-06550: 行4、列3: PLS-00114: 識別子HOGEHOGEHOGEHOGEHOGEHOGEHOGEHOが長すぎます 参考書によると、どうも変数名は30バイト以下のようだ。プロとしてのOracle PL/SQL入門作者:…

戻り値のあるストアドの実行

何度使っても忘れるのでメモしておこう。 パッケージをこのように宣言する。 CREATE OR REPLACE PACKAGE HOGE IS PROCEDURE HOGEHOGE( IN_YM IN VARCHAR2, OUT_RET OUT NUMBER ); END HOGE; まずOUTパラメータのバインド変数を宣言する。 SQL> var ret numbe…

制約の解除

あまり使わないだろうシリーズ。 まぁ動いちゃってる環境で定義変更が起きた時ぐらいか。 制約を確認する SELECT * FROM user_constraints; ※↑制約名を検索するための条件がLONGなので面倒なことこの上ない select * from USER_CONS_COLUMNS; 制約を削除する…

改行コード

改行コード*1 多くの開発言語では改行をあらわす記号 '\r' や '\n' などがある。しかし、SQL や PL/SQL にはない。 代わりに CHR 関数を使用する。 CHR(13) ... キャリッジリターン( CR ) CHR(10) ... ラインフィード( LF ) 改行が CR+LF か LF のみかは OS …

SEQの手動カウントアップ

DBAを持っている人がいないのに、SEQの値がずれているのをなおさねばという時(誰かが手動でデータを作った?w)。 仕方がないので無理矢理カウントアップする力技。 SQL> SELECT SEQ_HOGE.CURRVAL FROM DUAL; CURRVAL ---------- 65637 SQL> SELECT MAX(HO…

端数処理

「丸め」と「四捨五入」はよく混同される。 というか混同していた。 厳密には、「丸め」は丸め単位(10進であるとは限らないわけだ)の中間点の場合は偶数にすること*1。 四捨五入 1.5=>2 2.5=>3 丸め 1.5=>2 2.5=>2 ROUNDは直訳すれば「丸め」なのだが、関…

AmbiguousTableNameException

ある日突然テストが動かなくなってしまった。 org.dbunit.database.AmbiguousTableNameException: HOGE_HOGE at org.dbunit.database.DatabaseDataSet.initialize(DatabaseDataSet.java:140) at org.dbunit.database.DatabaseDataSet.getTableMetaData(Datab…

カーソルのクローズ

運用監視をしていて気がついたのだが、オープンカーソルの数が増えているのだ。 SELECT COUNT(*) FROM V$OPEN_CURSOR; COUNT(*) - 154 ま、まさかカーソルの解放漏れか???ということで必死こいて調べてみたのだが、さっぱり分からない。 とりあえず問題の…

障害調査

ちらしの裏。■オープンカーソルの情報 SELECT SID, OSUSER, MACHINE, PROGRAM, USERNAME,SQL_TEXT FROM V$OPEN_CURSOR JOIN V$SESSION USING (SID) WHERE USERNAME IN ('hoge'); ■セッションの情報 参考:*1 SET LINES 120; SET FEED ON; COL SID FORMAT 990…

シノニムの作成とViewでの利用

複数のスキーマがあるのだが、マスタについては一箇所で管理するためにシノニムを使う。 まずDBA権限で接続し、シノニム作成のための権限を追加する SQL> connect system/manager 接続されました SQL> grant create synonym to test_user;権限付与が成功しま…