goo

パーティション指定SQL

Oracleでテーブルをパーティション化した際に、パーティションを指定したSELECT文を実行できるのは知っていたけれど、INSERT文でも指定できるんだー。

試してないけど、この調子ならUPDATE文でも指定できるかな?

…逆に、パーティションを指定しないUPDATEで、パーティションキーとなっている項目を更新するのが出来ないのは何故だろう…。
更新したらパーティションを移動してくれても良さそうな気がするんだけどなー。

コメント ( 0 ) | Trackback ( 0 )

ユーザー定義型

Oracleのユーザー定義型(TYPE)についてメモ。

…本当はJavaDBのシステム系テーブルの項目の型にJavaのクラスがそのまま使われていたので、これってどうやって実現しているのか知りたくて調べ始めたんだけど。
Oracleの場合はCREATE TYPE文でユーザー定義型(オブジェクト)が作れて、それがそのままJavaのクラスに一致しているようだ。

でもJavaDBにはTYPEは無いようなので、どうなってるんだろう?
他にもJavaDBのシステム系テーブルではBoolean型の項目があって、これも実現方法が不明。もっともこちらは、Derbyの現時点のバージョンではサポートしてないって書いてあったので、将来サポートされるのかも。(で、それが先に使われているのかも。)

コメント ( 0 ) | Trackback ( 0 )

テーブルのロックを調査する方法

OracleでDB側にセッションが残り続けている場合にセッションを削除する方法は知っていたが、どのセッションを削除するか探す方法はユーザーのログオン時間を見るくらいしか知らなかった。

ロックされているテーブルを調べる方法は無いのかなーと思っていたら、案の定、あった。
あるに決まってるよなー(苦笑)

でもv$sessionはv$sqlと結合させるキー項目はあるくせに、ロック中に必ずしもSQL文が残っているとは限らない、という点がいまいち。

コメント ( 0 ) | Trackback ( 0 )

タイムアウト時のエラー

Oracleでタイムアウトというと、まずSELECT FOR UPDATEの“NOWAIT”や“WAITの時間指定”。
(NOWAITはタイムアウトとは違うか(苦笑))

それから、JDBCのsetQueryTimeout()
でもあまり精度は良くない模様。

それとはあまり関係ないけど、Oracleってデッドロックをずいぶん簡単に検出してくれるんだなぁ!
てっきりトランザクションがタイムアウトするまで待つのだと思ってた。

コメント ( 0 ) | Trackback ( 0 )

どのパーティションに格納されているか調べる方法

Oracleのパーティション化されたテーブル、特にハッシュパーティションでは、データが実際にどのパーティションに入るか分からない。
これを調べるにはどうすればよいか?

パーティションを指定してSQLを実行することは出来るので、ひとつずつパーティション名を指定してSQLを実行すれば出来るけど、それは面倒(苦笑)

という訳で、DBMS_ROWIDROWID_OBJECT(rowid)という関数が使えるらしい。
ROWIDは知ってたけど、ROWIDからそのデータが属しているテーブル(パーティション)のオブジェクトIDに変換できるとは知らなかった…。

コメント ( 0 ) | Trackback ( 0 )

SQL Developerを分割

Oracle SQL Developerでテーブルのデータを見比べる方法

  1. Freeze View」をオンにして、テーブル毎にタブを開けるようにする
    (これだけではまだテーブルとテーブルを同時に見られない)
  2. New Tab Group」でタブグループを分割する
    (これだけでは同一テーブルを複数開けない)
  3. Split Document」でシート内を分割する

ここまで設定しないとダメなんかい!って感じでもあるが(苦笑)、設定できるだけでも偉いわなぁ。

コメント ( 0 ) | Trackback ( 0 )

SQL Developerで権限

Oracle SQL Developerは、さすがにOracleDBの細かい部分まで手が届くように出来てる。
(外見は自分でSwingJDBC使って作ったらこんな感じになりそうな程度だけど、ここまでは自分じゃ絶対網羅しないし)

権限を扱う辺りは分かり易くていいなぁ。
テーブルのコピーも重宝しそう。

テーブルのデータのエクスポートも意外と色々な種類で出来るようになっていてちょっとびっくり。
でも逆にインポートは何故1種類だけ…?(苦笑)

コメント ( 0 ) | Trackback ( 0 )

SQL Developerの設定

Oracle SQL Developerの起動直後から出ているエラーが気になったので、解消法を調査。
(何事もデフォルトのまま使うのが好きなので、Oracle11gに付いていたSQL Developer1.1.3で確認したが、HPを見る限り、最新の1.5でも同じようだ)

Oracle JDBCドライバーのバージョンの末尾の「+」って、バージョン自体が11.1.0.6より上がったら、どうなるのかなぁ?

コメント ( 0 ) | Trackback ( 0 )

Oracle 606の極意

Oracle逆引き大全 606の極意 DB管理編』株式会社ブリリアント・スタッフ

Oracleは細かいことが色々あるので、こういう本は頼りになるなぁ。
前回の10g対応版が2004年で、今回のは11g対応版。4年も経ってるのか。
10gから11gへの変更はそれなりにあるみたいだ(ExcelVBAの2003→2007への変化なんてほとんど無い)から、11gを扱うならこういうのは見といた方がいいんだろうなぁ。

コメント ( 0 ) | Trackback ( 0 )

Typ

DUMP関数を使うとデータの型が表示されるのは知ってたんだけど、Typには数字しか出ない…。これが何を意味するのか、ちょっと調べてみた。
と言っても、ちょっと探しただけでは正式な資料は見つからなかったんで実験してみただけなんだけど。

というか、右の方に出ている数字はデータの中身だったのか(爆)
十進数でデータの羅列が出るなんて慣れてないもんだから、ちっとも気付かなかった。なんでデフォルトで十六進数じゃないんだろう?
(そういう意味では、UNIXのodもデフォルトは八進数なんだよな〜。まぁodだからoctal dumpなので八進数なのは当然なんだけど^^;)

コメント ( 0 ) | Trackback ( 0 )
« 前ページ 次ページ »