• 締切済み

Oracle Databaseのインデックスを(意図的に)断片化させたい

Oracle Database 10gのインデックスについて、 再構築(ALTER INDEX ___ REBUILD )コマンドの 検証を行うため、意図的にインデックスの断片化を 発生させたいと考えています。 (一般的にはDELETE、INSERT、UPDATEを繰返すうちに 断片化していくものです。) どなたか、インデックスを断片化させる スクリプトのサンプルなどをお持ちでないでしょうか? よろしくお願いいたします。

  • Oracle
  • 回答数1
  • ありがとう数3

みんなの回答

回答No.1

一時的にPCTFREEを大きく指定してリビルドし、PCTFREEを元に戻せば、 索引全域が断片化した時と同じような状態と見なせるのではないですか?

hatabou010
質問者

お礼

お礼が遅くなり大変申し訳ございません。 ご回答ありがとうございました。 同様の事象が発生した際に試させていただきたいと思います。 ありがとうございました。

関連するQ&A

  • oracle databaseインストールできない

    Oracle Database 12cをインストールできません。 インストールの際に、下記のエラーが出ます。 ----------------------------------------------------------- Oracle Database 12cリリース1インストーラ [INS-30131]インストーラの検証実行に必要な最初の手順が失敗しました。 原因- 一時的な場所へのアクセスに失敗しました。 アクション- 現在のユーザーに、一時的な場所へのアクセスに必要な権限があることを確認してください。 追加情報: -すべてのノードでフレームワーク設定のチェックが失敗しました -原因:問題の原因はありません -アクション:ユーザー処理はありません 失敗したノードのサマリー -exectaskのバージョンはノード"○○○"から取得できませんでした -原因:問題の原因はありません -アクション:ユーザー処理はありません ----------------------------------------------------------------- PCはwindows8.1で、64bitです。 ダウンロードのファイルは、日本オラクルのダウンロードサイトから、 「Oracle Database 12c Release 1」の 「(12.1.0.1.0)-Standard Edition,Standard Edition One, and Enterprise Edition」の 「Microsoft Windows x64(64-bit)」の「File1,File2」をダウンロードしました。 http://www.oracle.com/technetwork/jp/database/enterprise-edition/downloads/index.html?ssSourceSiteId=ocomjp ダウンロードした2つのファイル ・winx64_12c_database_1of2 ・winx64_12c_database_2of2 の「winx64_12c_database_2of2」の「database」にあるファイルを、 「winx64_12c_database_1of2」の「database」の中にコピーし、 その後に「winx64_12c_database_1of2」の中にある「setUp」を実行しました。 どうすればインストールできるのでしょうか。

  • ORACLEでのSQL、シンプルな方法は?

    ORACLEでのSQL文について質問です。 SQLで条件に合うレコードがあるかどうかはどう判別するのでしょうか? 画面で2つの条件を選んで テーブル ・ステータス ・フラグ 条件に合うレコードがなければINSERT 条件に合うレコードがあればUPDATE レコードが元々あるが、画面で指定された条件から外れる場合はDELETE としたいのですが、うまくSQLが書けません。 レコードがあればupdate、なければinsertするというのは多いのですが。 何かシンプルな方法はないでしょうか。

  • Oracleデータベースのスクリプト出力方法

    Oracleデータベースの構築をすることになりました。 Oracleはなんとなくわかるレベルです、構築は見たことがある程度です。 前任者からはスクリプトファイルがあるとの引継ぎはあったのですが、現データベースのものなのか現データベースの構築時に使用されたその前のデータベースのものなのかがわかりません(前任者は退職したため確認できません)。 私としては現データベースの現状を移行できればと思っているのですがスクリプトを出力する方法を教えていただければと思います。 コマンドでもGUIでも構わないのですが、手順がわかればと思います。よろしくお願いします。 現データベースはOracle12.1.0.2.0です。

  • 共有プールの断片化解消

    鵜飼淳代さんの『Oracle データベース管理を極める13章』に共有プールの断片化解消のため、 alter system flush shared_pool; というコマンドをたまに発行するとよい、とありました。 オラクルのオンラインマニュアルをみると、パフォーマンス分析を開始する前に、共有プールを消去するためのコマンドのようですが、断片化解消のために使用すべきなのでしょうか? また、断片化解消のために使用する場合、目安としてどのくらいの時間間隔(一日1回か、月1回か、年1回か)で実行したらいいでしょう。 バッチ処理に組み込むべきか検討中なのですが、どなたか使用経験があれば教えてください。 よく読みこまれるテーブルのレコードやプロシージャの情報も消去されてしまうため、実行しないほうがいいのではないかと考えています。 よろしくお願いします。

  • ORACLEのトリガーについて勉強しているのですが現在詰っています。

    ORACLEのトリガーについて勉強しているのですが現在詰っています。 トリガーの内容ですが、table1のレコードがUPDATEかINSERTかDELETEが 実行された時にtable2にそのレコードすべてをINSERTしたいのですが CREATE OR REPLACE TRIGGER test_trg After INSERT or UPDATE or DELETE on table1 for each row  BEGIN   if inserting then    insert into (?);   elsif updating then    insert into (?);   else    insert into (?);   end if;  END; tableを使ってログを残せるようにするためこのトリガーを作ろうとしています。 この様な感じになると思っているのですが、(?)の部分をどう書けばいいのか がよくわかりません。どうしても解らないので教えていただければ幸いです。 何卒よろしくお願いします。

  • BACKUP DATABASE とINSERTが同時に行われた場合、データの不整合は発生しないのか

    SQL Server2005で DBアクセスをするツールがあり、不定期なタイミングで Insertや、Update、Deleteが発生します。 このツールを動作中に別ツールでBACKUP DATABASEで DB内の全データのバックアップを行いたいのですが、 Insert(Commit)などのタイミングと重なった場合 どうなるのでしょうか? 一番気がかりなのはバックアップしたデータに不整合が 発生しないかという点です。

  • データベースのインデックスについての基本的な質問

    とあるテーブルAとBがあり、二つはあるキーで結合するSQLを頻繁に発行しています。両テーブルとも数万件のデータがあり、パフォーマンスが遅いということだったので、結合の条件としているキーのカラムにインデックスを作成したところ、劇的に速くなりました。 というところまでは良かったのですが、最近、負荷テストを行う目的で、さらに数百万件のテストデータをいっきに両テーブルにINSERTしました。この場合、インデックスは何かしら人の手によるメンテナンスが必要なのでしょうか?(ALTER INDEX REBUILD ONLINEという再構築のSQLがあることを知りました) それとも、データがテーブルに追加されても既に以前インデックスが作成されている場合は特に人の手による保守は不要なものでしょうか? 今は負荷テスト中ですが、本稼働した後にも何か自動でデータベースのインデックスの保守作業は一般的に必要なものなのかどうか、必要な場合は具体的にどのようにやるのか教えて頂きたいです。 使用しているDBはOracle 11gです。

  • Oracleの起動時に、マウントしたりしなかったりで困っています。

    初めまして。Oracleの知識が薄く困っております。 よろしくお願い致します。 さて、現象ですがPC起動と同時にOracleが起動するように設定しているのですが、 マウントまで行ったり行かなかったりで困っております。 (起動する度に現象が異なります) Ver:ORACLE V10.1.0.2.0 OS :WindosXP SP2 アラートログを確認しますと、 XXXX started with pid=Y(XXXX=SMONだったりRECOだったり・・・) の直後に、 alter database mount exclusive のコマンドが続く場合は、うまく立ち上がるようです。 しかし、 XXXX started with pid=Y の後に何もない時はマウントできていないようです。 また、 (1) > sqlplus /nolog (2) SQL> connect sys/aaaa@bbbb as sysdba (3) SQL> select status from v$instance; とすると、「STARTED」状態であり、 SQL> alter database mount; SQL> alter database open; とすると、正常に動作するようになります。 oradim.logを確認すると、  ORA-01012: not logged on  ORA-24324: service handle not initialized が出ていますが、どこから調査をすればいいのか暗闇の中です。 お助言頂きますようお願い致します。

  • EM express が起動できません。

    オラクル勉強中の初心者です。 Oracle VM VirtualBox を用いた Oracle Database 12c Release 1 環境の構築 http://www.oracle.com/technetwork/jp/database/enterprise-edition/documentation/index.html 上記のホームページを参考にwindows上にLinuxを構築し、oracle12cをインストールしています。 なぜか、最後の段階の EM express が起動しません。 Firefox上では、 接続がリセットされました と表示されます。 ・リスナーは起動しています。 ・listener.ora、sqlnet.ora、tnsnames.oraも問題はなさそう ・プラガブルデータベースも立ち上がっていますし、alter database open;も問題ないです。 ・ファイアウォールやプロキシも問題はなさそう。 ・リナックス上で検索しても、emctlというファイルが見当たらない emctl start dbconsole をコマンドを打つと、 コマンドが見つかりません と表示されます。 これはEM expressがインストールされてないということなのでしょうか?別途インストールが必要なのでしょうか?(DBCAで、EM expressを構築するにチェックは入れていたと思いますが) また、非常に分かりやすかったので、下記のホームページも参考にしましたが、それでもEM expressが起動しません。 Oracle12c Enterprise Manager 接続できない問題 http://blog.sys-nag.net/?p=329 どなたか分かる方、教えていただければと思います。 よろしくお願いします

  • oracle シーケンスの欠番を確認したい

    いつもお世話になります。 oracleのシーケンスの欠番を確認したいのですが、以下のようにサービス、インスタンスの再起動を試してみたのですが欠番はおきませんでした。 ・サービスの再起動 コントロールパネルから、サービスを開いて、「OracleServiceXE」、「OracleXETNSListener」の再起動。 シーケンスをselectした結果、欠番確認できず。 ・インスタンスの再起動 コマンドプロンプトを起動し、sqlplusから、sysdbaでoracleに接続。 shutdown、startupコマンドを行い、インスタンスを再起動。 シーケンスをselectした結果、欠番確認できず。 インスタンスの再起動を行えば欠番がおきる、というのをサイトで見たのですが、欠番は起きませんでした。なぜ起きないのでしょうか。 何か手順に不備があるのでしょうか。 alter system文による欠番は確認しています。 しかし、意図的にこのコマンドを発行しなければよいので、確認したいのは、通常運用時、データベースが起因してシーケンスの欠番が発生してしまう、ということです。 再起動などは普通に行うと思うので、その際に欠番が発生することを確認したいのです。 宜しくお願いします。 oracle:Oracle Database 11g Express Edition Release 11.2.0.2.0 OS:Windows Vista Home Promium 64bit