• ベストアンサー

ORACLE DBMS_STATSとテーブル更新

テーブル更新中にDBMS_STATSは実行できるのでしょうか。

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

質問者が選んだベストアンサー

  • ベストアンサー
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

実行はできますが ・更新(コミット)以前の古い統計情報を取得することになる。 ・更新処理が書き込んでいるUNDO表領域を読み取りにいくのでI/Oの競合が発生する。 ので、注意が必要です。

namidame_dion
質問者

お礼

早速ご回答いただき、ありがとうございます。 I/O競合が発生するものの統計情報取得とテーブル更新は並行稼動できるということですね。 安心致しました。

関連するQ&A

  • DBMS_STATS.GATHER_DATABASE_STATSの使い

    DBMS_STATS.GATHER_DATABASE_STATSの使い方がわかりません。 PLSQLで下記のように入力して実行しましたが、1時間経っても結果が返ってきません。  BEGIN   DBMS_STATS.GATHER_DATABASE_STATS (     OPTIONS => 'GATHER'    ,CASCADE => TRUE   ) ;  END; 記述が間違っているのでしょうか? DBMS_STATSの使い方がわかっていないのですが、プロシージャに埋め込まないとダメなものなのでしょうか?

  • DBMS_STATSのdegree句について

    DBMS_STATSのdegree句についてご存じの方、教えて下さい。 1.degree句を設定すると対象テーブルの統計情報取得処理がn並列で   稼働し、処理時間の短縮が図れるということでしょうか。 2.適切な並列数はどのように設定すればよいでしょうか。   多ければいいというものではないですよね。 以上、よろしくお願い致します。

  • ストアドプロシージャからアナライズをしたいです

    どなたかアドバイス願います。 ストアドプロシージャから「DBMS_STATS.GATHER_TABLE_STATS」パッケージを使って アナライズをやりたいと思っているのですができません。 以下のSQLをSQL*Plusから実行するとうまく動作するのですが、 プロシージャから「EXECUTE IMMEDIATE」を使って動作させると コンパイルエラーとなってしまうのです。 ※本当はテーブル名を動的に変更したいと考えているのですが、まずはコンパイルを 通したいと思いまして以下サンプルとしています。 (SQL*Plus経由で以下を実行すると動作します) exec DBMS_STATS.GATHER_TABLE_STATS (OWNNAME=>'SCOTT',TABNAME=>'EX001',METHOD_OPT =>'FOR ALL INDEXED',CASCADE => TRUE); (コンパイルエラーとなるプロシージャ) CREATE OR REPLACE PROCEDURE TEAT01 AS BEGIN EXECUTE IMMEDIATE DBMS_STATS.GATHER_TABLE_STATS (OWNNAME=>'SCOTT',TABNAME=>'EX001',METHOD_OPT =>'FOR ALL INDEXED',CASCADE => TRUE); END TEAT01; (エラーメッセージ) Error(3,19): PLS-00222: この有効範囲内に、名前GATHER_TABLE_STATSの関数は存在しません。 以上よろしくお願いします。

  • DBMSとツールとは

    有る会社でデータベースについてDBMSとツールを教えて下さいという質問がありました。DBMSはオラクルとかDBを扱う為のソフトだと思うのですが・・ツールとは違うのでしょうか?DBMSもDBを使う為のツールというわけではないのでしょうか?分かる方、教えて下さい。

  • オラクルテーブルで受け付けない文字

    ACCESS97のデータベースで オラクルのテーブルを使用しています。 アクセスのテーブルではクエリーが実行できたのですが (実行時に読込めた) 名前を変更して、(リンクしている)オラクルテーブルで実施すると 上手く行きません。 オラクルテーブルでは、受けつけない文字があると聞いたことがあります。 例えば、 " や ' など。 このような文字 一覧がわかるページ等 ないでしょうか? 

  • DBMSとDC

    DBMSとDCはどのように違うのでしょうか?

  • どのDBMSを・・・

    こんにちわ現在、イントラ向けのDBシステム構築の検討中のものです。サーバは、一番使い慣れているWindows2Kサーバで考えております WEBブラウザで閲覧が可能である事を要求されているので、いろいろ選択肢がある中でVBSでASPを書くことになりました(作成者全員の使える共通言語だったもので) ここまではいいのですが、DBMSの選定で止まってしまいました 今まではOracleを使っていたのですが、今回はコストを抑えたいので、それは難しい、ということになったのです。 MS SQL Serverでもコストが高い、ということになり、そうすると、PostgreSQLかMySQLか…というところになっております。 ちなみにテスト版のサンプルプログラムは、MS-Accessを使って動かしているのですが、それではアクセスが集中した時に耐えられないであろう、ということで却下になっております。 日常の利用の中では、大したアクセス数は予想されないのですが、混雑時になると百台を超える端末からのアクセスが予想されます。 DBのレコード数は1テーブルあたり多いもので百万件程度のものとなる予定です 前書き長くなってしまいましたが、このような状態です Oracle,MS SQL Serverが駄目といわれた以上、PostgreSQLかMySQLだと思うのですが、皆様、どのような基準で、DBMSを決定しているのでしょうか? また、それぞれのメリット、デメリット等があれば教えてください(自分なりに調べてはいるのですが、実際運用されてる方のお声をお聞かせ願いたいと思っています) もしくは、その二者以外にも候補として考え得るDBMSは何かあるでしょうか? http://oshiete1.goo.ne.jp/kotaeru.php3?q=158746 この方の投稿は非常に参考になりました。 非常に漠然としていますし、その場に応じた環境があると思いますが、皆様の判断基準としている点をお聞かせ願えれば幸いです

  • データベースとDBMSについて。

     書籍を読んでいると、「データベースはプログラムから独立しているべきだ。」と書いてあります。  この場合のプログラムとは、OracleやPostgreSQLみたいなDBMSの事でしょうか?  それとも、プログラマーがJAVAなどで作った、アプリケーションの事でしょうか?  仮に、後者の場合だとします。その場合、データベースとDBMSをひとつの物と捉えて良いんでしょうか?  よろしくおねがいします。

  • DBMS_LOCK.SLEEPについて

    いつもお世話になっております。 PL/SQLパッケージにて、DBMS_LOCK.SLEEP()を使用したいのですが、 「DBMS_LOCKは宣言されてません。」とエラーになります。 DBMS_OUTPUTプロシージャに関しては正常に動作しているのですが、DBMS_LOCK.SLEEP()を使用するさいにインストールしなければいけないパッケージなどあるのでしょうか? 初心者で申し訳ありませんが、宜しくお願いします。

  • SQLサーバーのテーブルに対してアクセスで更新クエリを行ないたい

    こんばんは。 ・vista ・アクセス2003 ・SQL Server 2005 です。 SQL ServerからテーブルをMDBへリンクしているのですが そのテーブルに対し、アクセス側で更新クエリを実行しようとすると 実行時エラー '3157': ODBC--リンク テーブル'テーブル名'での更新に失敗しました。 [Microsoft][ODBC SQL Server Driver]時間切れになりました。(#0) と言うエラーになり、更新クエリができません。 どうすればアクセスでSQLサーバーのテーブルに対して更新クエリを行えるのでしょうか? よろしくお願いします。