shioyakitaroのブログ

主にオラクルDBやLinuxについて調べたことを書いてます。

オラクルにおける表の圧縮率を高めるために得た知見

どうも。

今回は表の圧縮率を高めるために色々と試したことについて記事に書きました。

dakensuk.github.io


要点のみ書くと、表の圧縮率を高めるためには

  • 表の中身はソートした状態にしておく
  • カラムのデータサイズを考慮し、大きいカラムについてソートしておく

以上の二点。興味のある方は読んでみてください。

オラクルデータベースに接続した際のシステムの状態確認

今回はオラクルデータベースに接続した際のシステムの状態について書きました。

確認したポイントは、ローカル接続とリモート接続の際の、システム上の

  • プロセスの見え方
  • リスナーログの見え方
  • 通信の状態の見え方

です。基本的ですがここまで把握しておけば、何か通信関連でおかしなことがあった場合に調査しやすいかなと。
以下に記したので興味のある方はどうぞ。

dakensuk.github.io

オラクルのREDOログの最小サイズについて

さてさて、今回はオラクルのREDOログの最小サイズについて書きました。

「ん?」って思った方は読む必要ありません。

と言いますのも、これ書いた後に気づいたんですが

公式ドキュメントに記載されてました

調べる必要なかったんですね。

ちょっと最近英語で有用な情報を検索するのにハマっていて、灯台下暗しといいますか、公式ドキュメントを先に調べるということを忘れてしまっておりまして。

ま、興味ある方は読んでみてください。

dakensuk.github.io

オラクル:processesの上限値の調査

久しぶりの投稿。

今回はオラクルのパラメータであるprocessesの上限値を調査した結果と
それを決めるにあたって関連しているその他のパラメータについて書いた。

ざっくりまとめると

  • processesはセマフォに関わる式を満たす必要がある
  • その式を満たすだけでは不十分で、MEMORY_TARGETの値も考慮する必要がある
  • MEMORY_TARGETは共有メモリのサイズが上限であるため、共有メモリのサイズも考慮する必要がある

といったところ。

詳しくは以下に書いたので参照されたし。

dakensuk.github.io

ヒアドキュメントをパイプで渡すときの注意点:変数使用時にはパイプを書く位置に注意すべし

久方ぶりの投稿。


dakensuk.github.io


要点は

  • ヒアドキュメントで実行したコマンドをパイプで別コマンドに渡す時に注意
  • コマンドを変数にすると変数展開の関係で、ヒアドキュメントの開始マークからパイプまでの間にスペースがあると動作しない

の二点。変数展開が絡むとどういうわけでこの挙動になるのかは不明。わかる人がいたら教えて欲しい。



ではでは。

オラクル:マルチバイトの最大文字数を確認する際に発見したRPAD関数の挙動

久しぶりの更新。

実はこの春から以下のページにて技術ブログを書き始めた。

dakensuk.github.io


興味のある方は読んでいただければ幸いである。

さて、今回は題名の件について。

dakensuk.github.io


要点はざっくり以下の通り。

  • MAX_STRING_SIZEをEXTENDEDに変更すると4000バイト制限だった文字列データ型が32767バイトに拡張される
  • RPAD関数を用いてひらがなを5000文字埋めようとしたら実際には2500文字しか入らなかった。二倍の10000文字にしたら5000文字入った。
  • varchar2( 32767 CHAR )にすると、ひらがなの最大文字数は半分の16384であることが分かった。
  • なお、varchar2( 32767 CHAR )の際、RPAD関数で二倍の65534、またそれ以上を指定してもエラーは返らず、16384文字格納されることが分かった。


ではでは。

PDBではデフォルトのDATA_PUMP_DIRは使用できません

オラクルDBのマルチテナント環境ではまったので備忘録として記しておく。

Oracle RAC環境からデータポンプでエクスポートしたデータを、マルチテナント環境のPDBにデータポンプでインポートしようとした際にエラーが発生。

ディレクトリオブジェクトにDATA_PUMP_DIRが存在しているのにも関わらず

そこにダンプファイルを置いて、ディレクトリオブジェクトにDATA_PUMP_DIRを指定してもディレクトリオブジェクト関連のエラーでインポートができない。

ディレクトリオブジェクトへの書き込み、読み込み権限を付与してもエラーは変わらず。

調べたところ、公式ドキュメントを見ると次の一文が

デフォルトのデータ・ポンプ・ディレクトリ・オブジェクトのDATA_PUMP_DIRは、PDBでは使用できません。エクスポートまたはインポートするPDB内に明示的なディレクトリ・オブジェクトを定義する必要があります。

Oracle Data Pumpの概要

にしてもエラー内容が分かりにくい。使えないなら上記のメッセージを表示してほしいものである。