ひしだまHPの更新履歴。 主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。
ひしだまの変更履歴
パーティション指定SQL
Oracleでテーブルをパーティション化した際に、パーティションを指定したSELECT文を実行できるのは知っていたけれど、INSERT文でも指定できるんだー。
試してないけど、この調子ならUPDATE文でも指定できるかな?
…逆に、パーティションを指定しないUPDATEで、パーティションキーとなっている項目を更新するのが出来ないのは何故だろう…。
更新したらパーティションを移動してくれても良さそうな気がするんだけどなー。
ユーザー定義型
Oracleのユーザー定義型(TYPE)についてメモ。
…本当はJavaDBのシステム系テーブルの項目の型にJavaのクラスがそのまま使われていたので、これってどうやって実現しているのか知りたくて調べ始めたんだけど。
Oracleの場合はCREATE TYPE文でユーザー定義型(オブジェクト)が作れて、それがそのままJavaのクラスに一致しているようだ。
でもJavaDBにはTYPEは無いようなので、どうなってるんだろう?
他にもJavaDBのシステム系テーブルではBoolean型の項目があって、これも実現方法が不明。もっともこちらは、Derbyの現時点のバージョンではサポートしてないって書いてあったので、将来サポートされるのかも。(で、それが先に使われているのかも。)
テーブルのロックを調査する方法
OracleでDB側にセッションが残り続けている場合にセッションを削除する方法は知っていたが、どのセッションを削除するか探す方法はユーザーのログオン時間を見るくらいしか知らなかった。
ロックされているテーブルを調べる方法は無いのかなーと思っていたら、案の定、あった。
あるに決まってるよなー(苦笑)
でもv$sessionはv$sqlと結合させるキー項目はあるくせに、ロック中に必ずしもSQL文が残っているとは限らない、という点がいまいち。
タイムアウト時のエラー
Oracleでタイムアウトというと、まずSELECT FOR UPDATEの“NOWAIT”や“WAITの時間指定”。
(NOWAITはタイムアウトとは違うか(苦笑))
それから、JDBCのsetQueryTimeout()。
でもあまり精度は良くない模様。
それとはあまり関係ないけど、Oracleってデッドロックをずいぶん簡単に検出してくれるんだなぁ!
てっきりトランザクションがタイムアウトするまで待つのだと思ってた。
どのパーティションに格納されているか調べる方法
Oracleのパーティション化されたテーブル、特にハッシュパーティションでは、データが実際にどのパーティションに入るか分からない。
これを調べるにはどうすればよいか?
パーティションを指定してSQLを実行することは出来るので、ひとつずつパーティション名を指定してSQLを実行すれば出来るけど、それは面倒(苦笑)
という訳で、DBMS_ROWIDROWID_OBJECT(rowid)という関数が使えるらしい。
ROWIDは知ってたけど、ROWIDからそのデータが属しているテーブル(パーティション)のオブジェクトIDに変換できるとは知らなかった…。
SQL Developerを分割
Oracle SQL Developerでテーブルのデータを見比べる方法
- 「Freeze View」をオンにして、テーブル毎にタブを開けるようにする
(これだけではまだテーブルとテーブルを同時に見られない) - 「New Tab Group」でタブグループを分割する
(これだけでは同一テーブルを複数開けない) - 「Split Document」でシート内を分割する
ここまで設定しないとダメなんかい!って感じでもあるが(苦笑)、設定できるだけでも偉いわなぁ。
SQL Developerで権限
Oracle SQL Developerは、さすがにOracleDBの細かい部分まで手が届くように出来てる。
(外見は自分でSwingとJDBC使って作ったらこんな感じになりそうな程度だけど、ここまでは自分じゃ絶対網羅しないし)
権限を扱う辺りは分かり易くていいなぁ。
テーブルのコピーも重宝しそう。
テーブルのデータのエクスポートも意外と色々な種類で出来るようになっていてちょっとびっくり。
でも逆にインポートは何故1種類だけ…?(苦笑)
SQL Developerの設定
Oracle SQL Developerの起動直後から出ているエラーが気になったので、解消法を調査。
(何事もデフォルトのまま使うのが好きなので、Oracle11gに付いていたSQL Developer1.1.3で確認したが、HPを見る限り、最新の1.5でも同じようだ)
Oracle JDBCドライバーのバージョンの末尾の「+」って、バージョン自体が11.1.0.6より上がったら、どうなるのかなぁ?
Oracle 606の極意
『Oracle逆引き大全 606の極意 DB管理編』株式会社ブリリアント・スタッフ
Oracleは細かいことが色々あるので、こういう本は頼りになるなぁ。
前回の10g対応版が2004年で、今回のは11g対応版。4年も経ってるのか。
10gから11gへの変更はそれなりにあるみたいだ(ExcelVBAの2003→2007への変化なんてほとんど無い)から、11gを扱うならこういうのは見といた方がいいんだろうなぁ。
Typ
| « 前ページ | 次ページ » |

