Oracle

REDOログファイルのサイズ変更方法

色々調べたが、既存のREDOログファイルのサイズを変更することはできないみたい。 REDOログファイルのサイズを変更するには、下記手順を踏まないといけない。 既存のREDOロググループを削除 新しいREDOロググループを作成 REDOロググループの数だけ1,2を繰り…

REDOログファイルサイズの違いによる更新処理速度検証

この前少しかかわったシステムのREDOログファイルを見てみると4MBしかなかった。 いくらなんでもすくな過ぎるだろって思ったけど、サイズが小さければ実際どの程度 パフォーマンスに影響が出るのかあまり実感がないので検証してみた。 検証環境 Oracle 10g W…

REDOログファイルは何故必要か?(2)

遅くなったけど前回の続き。REDOログファイルは何故必要か?(1) まずディスクの仕組みを整理。 ディスクのアクセスにかかる時間は大きくこの2つに分けられる。 シークタイム データ転送時間 このうち非常に遅いのがシークタイム。シークタイムとは ハー…

REDOログファイルは何故必要か?(1)

REDOログファイルの目的は、コミットしたデータを保障するため。 通常コミットした段階ではデータファイルにコミットしたデータは書き込まれず、 メモリ(データベースバッファ)上でのデータの変更となる。 メモリ上での変更なので急にデータベースが落ちた…

1件のみ取得するSELECT文

よくこのブログに「SELECT」「1件のみ」の検索条件で、よくアクセスしていただいているが恐らく求めてるものがないと思うので、この際書いておく。SQLのSELECT文で1件のみ取得するにはROWNUMを使用する。 SELECT * FROM TEST WHERE ROWNUM <=1ソートしたも…

SQLチューニングに必要な情報

SQLをチューニングする際に、アクセスしてるテーブルの情報が必要ですが、いつも場当たり的に集めていたので必要な情報をまとめておこうと思います。 データ件数 データ増加件数 現在のINDEX WHERE句で使用されているカラム WHERE句で使用されているカラムの…

ブロックサイズ変更

Oracle9iから表領域ごとにブロックサイズを、変更できるようになったのでやってみた。 デフォルトは8Kなので、32Kを作る。 ブロックサイズを変更した表領域を作成する SQL> create tablespace test_32k datafile 'gekimu/test.dbf' size 10m blocksize 32k …

データベースバッファの検証

データベースバッファに関することで、前から気になってたことがあったので検証してみた。10万件のテーブルから1件のレコードをテーブルフルスキャンによって取得した際に、データベースバッファ上に載る対象となるのは、 10万件か、1件のみなのか? …

平均行サイズの求め方

Oracleで行サイズを求めるには、「USER_TABLES」の「AVG_ROW_LEN」が使える。 ただし、ANALYZEをしていないと取得できない。 ANALYZE未実施 SQL> SELECT TABLE_NAME,AVG_ROW_LEN FROM USER_TABLES; TABLE_NAME AVG_ROW_LEN ------------------ -------------…

行連鎖と行移行

行連鎖と行移行。ややこしいのでまとめておく。 行連鎖 データサイズが大きすぎて一つのブロックに収まらず、複数のブロックに 分散されてデータが格納されていること。 ブロックサイズを大きくすることで、回避可能。どうしても無理な場合もある。 行移行 …

統計情報収集

うちの会社の運用しているシステムは、ほぼルールベースオプティマイザで 動いている。というか全部?仕事でコストベースさわったことない。。 だから、この機会に統計情報収集の方法を理解し解きます。 ANALYZEコマンド これは知ってた。けど2パターンある…

使っていない索引を調べる

システムによっては索引を無駄に作ってあって、一度も使用されたことがない索引がある場合もある。それを見つけるための手順をまとめておく。 ALTER INDEX インデックス名 MONITORING USAGE で監視開始 しばらく通常業務 V$OBJECT_USAGE で結果を確認(USERD…

ファイルI/Oのチューニング

フルスキャンのチューニング DB_FILE_MULTIBLOCK_READ_COUNT初期化パラメータで、 一度に読み込むデータブロック数を調整できる。 これを大きくすれば、フルスキャンは早くなる。 ただし、CBO(コストベースオプティマイザ)を使っている場合は、 フルスキャン…

共有プールのチューニング2

共有プール続き。 データディクショナリキャッシュ データディクショナリから読み込まれたデータが、格納される。 キャッシュミスは、「V$ROWCACHE」で確認する。 ユーザーグローバル領域 セッションデータとカーソル情報のことをいう。 専用サーバ接続では…

共有プールのチューニング1

共有プール概要 一度利用したSQLやデータディクショナリ等を再利用するために確保しておく場所。 Oracle9iから、動的に値が変更できるようになったが、SGA_MAX_SIZEより大きい値は指定できない。 また、SGA_MAX_SIZEは静的パラメータなので、変更するには…

Export/Import まとめ

これは、日々の業務で使っているので楽勝。 これらの仕組みのイメージは、エクスポートを行なうとdumpファイルができるに CREATE TABLE文,INSERT 文が格納されており、 インポートでその文が実行されてデータが移行できますよ。と思っている。 エクスポート …

不完全リカバリまとめ

不完全リカバリとは データベースをある時点に戻すこと。特定の時間、SCNへ戻すことができる。 手順は、 データベース停止 データファイルリスト マウント データファイルをリカバリ*1 RESETLOGSでオープン *2 クローズデータベースの全体バックアップ *1…

完全リカバリまとめ

NOARCHIVEログモードでのリカバリ 最低、全てのデータファイルと、制御ファイルが必要。 手順 REDOログありの場合 インスタンス停止 ファイルリストア(コピー) インスタンス起動 REDOログなしの場合 インスタンス停止 ファイルリストア(コピー) 取り消し…

バックアップまとめ

バックアップの種類 クローズデータベースのバックアップ 停止中にとる。 最低、「データファイル」「制御ファイル」が必要。 「REDOログファイル」もあると、リカバリが早い。 取得方法は、OSコマンドのコピー。 オープンデータベースのバックアップ 稼動…

データベース索引とは

索引の概念を整理。 基本的には本の索引と一緒。 500ページある本から特定の言葉を探すとき、索引があれば索引のページを見て直接ページに飛ぶだけ。 即ち2回ページを開くだけでいける。 特定の言葉が複数のページにある場合だと、索引ページに180ページ…