Oracle洗い替えって言葉は普通に使う言葉なのかなと疑問に思いつつも、今回はEXPしたデータにまるまる入れ替える処理のメモを。簡単に行いたいのでユーザーを消してしまい関連するオブジェクトを全て削除するという戦略をとりました。TAMTAM;この後普通にIMPコマンドを実行します。ちなみにパスワードにドットが入っている場合は""でくくります。OracleOracle11gのユーザーのパスワードの有効期限はデフォルトのプロファイルを使っていると180日のようです。家のPCに入れていた検証用のOraacleに接続できなくてありゃりゃ?と思ったらそういう事でした。いうわけで気をつけないと。こちらの記事を参考にしました。Oracle今日はまってしまった行値式について。行値式とはこんな感じのやつです。(1,2),(3,4)と書いていました。́・ω・`)製品によっては行値式をサポートしていないらしいので、そういう場合は以下のように無理矢理書いちゃいます。Oracle作ってみたものの、ストプロの中でINSERT/UPDATE等を発行している場合はそのストプロはSELECT文の中で呼び出せないという制約があるらしいです。rndseq_next;/後はこんな感じで呼び出します。10);シーケンサーっぽく使おうと思ったけどダメぽ。OracleユニークなIDを生成する話なんですが、連番で生成すると会員数というか規模がばれてしまいます。普通は乱数を生成したり、シーケンス番号からHash値を求めたりしてると思いますが、今回はOracleを使ったランダムシーケンサーを実装してみたいと思います。今回はその準備編ということで必要な関数を作ってみました。作ったと言っても、DBMS_RANDOMパッケージの実装の拡張です。大小英数と数字バージョンが無かったので。後は重複チェックが必要です。重複チェックをするにはテーブルが必要になるわけですが、実際に主キーとして使っているテーブルを捜査するのか、それとも専用のテーブルを用意するのかが悩みどころです。今回は専用のテーブルを用意する予定です。重複チェックもする関数を作ったら完成ですが、それは次回ということで。OracleOracle11gにObjectBrowserからログインできない・・。他のアプリからはログインできるので調査したところ、11では認証が厳しくなったようです。パスワードの大文字小文字を区別するようになりました。今までしてなかったのか・・。́)ノ以下のURLを参照。SensitivityDBA_USERSというビューのPASSWORD_VERSIOONSに11Gが含まれていて、かつignorecaseがnの場合に区別されるようです。システム全体、またはユーザー毎に区別できるそうです。OracleCommons-DBCPの使い方です。Commons-DBCPはデータベースのコネクションプールとPreparedStatementのキャッシュをしてくれます。Springなど有名なアプリケーションサーバやフレームワークが採用しているライブラリですが、これを直接使ってみたいと思います。ちなみに、こんな記事を見つけました。前の内容のようなので現状はわかりませんが・・・。適切な(?)ファイナライザが実装されていないらしく、Connectionにしても、Statementにしても、ResultSetにしても、closeし忘れるとメモリリークが起こるという不具合というか仕様があるらしいです。もって、Oracleのコネクションプーリング実装でclose忘れされた日には、どうにも開放する手段がなく、メモリリークしてしまいます。高負荷時にConnectionを取得できないことがあるが、メモリリークはなし。高負荷時にConnectionを取得できないことがあり、メモリリークもある。高負荷時もConnectionを取得でき、メモリリークはなし。(ただし、必要最小限のメモリは使用していると思われる。)という結果が得られました。「百害あって一利なし」ということが判明しました。それはさておき、簡単なサンプルコードは以下になります。