• ベストアンサー

Oracleの追加した索引を利用しているのか確認。

こんにちは。 Oracleの調整を行っています。 テーブルに対して索引を追加して、実行速度の改善を図ろうとしていますが、追加された索引がSQL文発行後に、正しく利用されているのかを確認したいと思っています。 暫く触っていなかったので、記憶だけですがDBA Studioにて確認できたと思って探していますが見当たりません。 別の方法での確認方法でも構いませんので、ご存知の方教えて頂けないでしょうか。 Oracle8iです。宜しくお願い致します。

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

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

  • ベストアンサー
回答No.1

「EXPLAIN PLAN」にて確認が可能です。 OTNから「Oracle8i パフォーマンスのための設計およびチューニング リリース8.1」をダウンロードするなりして第II部第5章「EXPLAIN PLAN」の使用方法を見てみて下さい。 OTNに登録していないとダウンロードは出来なかったカナ・・・

i_september
質問者

お礼

有難う御座います。 「PLAN_TABLE」既にありましたので早速試してみます。

その他の回答 (1)

  • SUPER-NEO
  • ベストアンサー率38% (706/1857)
回答No.2

こんばんは。 Explain Plan の方法は非常に役に立ちます。 Oracle の場合、索引を追加したからと言って、 即座にパフォーマンスに反映されるかといえば、 そういうことはなく、索引が必要ないと判断されれば、 全表検索が行われたり、はたまた索引の全体検索が行われるなど、 パフォーマンスに影響を与える悪い面が見られたりします。 これが、Explain Planを使うことによって解決できます。 SQL 中にボトルネックとなる箇所があれば、 そこを重点的に改善するのがいいでしょう。 必要に応じて、SQL のパフォーマンス改善を行うのがいいです。 私の経験上、Oracleのチューニングの肝となるのがSQLのチューニングです。 必ずボトルネックが潜んでいますので、そこを重点的に改善していくといいです。

i_september
質問者

お礼

ご回答有難う御座います。 色々と調査しながら進めたいと思います。

関連するQ&A

  • Oracleのテーブル作成スクリプトを作成したい

    Oracle8i のDBA Studioで数十の表を作成したのですが、ここからテーブルの作成スクリプトを出そうとして困りました。いわゆる Create Table文なのですが、これを自動で簡単に作る方法はないでしょうか?SQL-ServerのEnterprise Managerでは、SQLスクリプトの作成があって、Create文を簡単に生成できるのですが、これと同じような感覚で、既に作成してあるテーブルのCreate文を出力する方法はないでしょうか?Oracleには、ほとんど慣れていないので、方法があると思うのですが、探し方が悪いらしく途方にくれています。どなたかよい方法を御存じないでしょうか。

  • oracle bronzeについて

    現在、oracle bronzeを取得しようと思っております。 質問ですが、 oracle 11g SQL基礎I(1Z0-051)を取得し、 oracle 10g DBA1(1Z0-041)を取得した場合は、 oracle 10g bronzeを取得したことになるのでしょうか? どなたかご回答頂けますでしょうか。

  • オラクルからAccessにデータ追加

    オラクルから、必要なデータを抜出し加工の為のDBをAccessで作成していますが、オラクルから抜き出したデータ(レコードセット)を、どうやってAccessのテーブルに書き込めばよいかがわかりません。 ◎環境 Oracle:10g Access:2010 ◎現在の状況 Dim CON As New ADODB.Connection Dim RS As ADODB.Recordset Dim SQL As String Dim i As Integer 'DB接続定義 CON.Open "DSN=DNS名;UID=ユーザー名;PWD=パスワード;" 'SQL文 SQL = "SELECT " SQL = SQL & "カラム1," SQL = SQL & "カラム2," SQL = SQL & "カラム3" SQL = SQL & "FROM オラクルテーブル名 " SQL = SQL & "WHERE 抽出条件 " SQL = SQL & "AND 抽出条件" SQL = SQL & "GROUP BY カラム" SET RS = CON.EXCUTE(SQL) For i = 1 To 10 Debug.Print rs(カラム1) & rs(カラム2) next i ここまでは、オラクルのテーブルから、レコードセットにデータが取り込まれてます。 rs.close: SET RS = Nothing con.close:SET CON=Nothing end sub 案1 レコードセットのデータを、Access側のテーブルにループで回して、1行ずつデータ追加 案2 INTO句で直接、テーブル作成 調べていて、2通りのやり方があると思うのですが、どちらにしても、テーブルへの書き込み方がわかりません。 案1の場合、Access側のテーブルを開いてデータ追加する方法 ※同時に2つのテーブルを開くことになるのでは? 案2の場合、SQL文はオラクルで処理する為の物なので、AccessテーブルのINTO句が使えるのか? オラクルのテーブルをリンクする事も考えたのですが、実際動かすPCにはAccessRuntimeしかインストールしてませんので、オラクルのテーブルをリンクしてくれませんでした。 よい方法があれば、アドバイスを頂けたら幸いです。

  • oracleに資格認定について

    oracleに資格認定について 以前oracle Bronze SQL 基礎1 [1ZO-017]に合格しました。DBAはまだとっていません。 試験結果レポートに認定申請を3年以内に実施して下さいと書かれていたのですが。 その記載ページを見ても、1ZO-017の科目見当たりません。 (bronze10g、11g単位ではあるのですが) DBAを取得して、bronze11gとなってから認定申請するのでしょうか? SQL 基礎1だけでも行う必要があるのなら方法を教えて下さい。 宜しくお願いします。

  • オラクルのデータをAccessに追加 無限ループ

    前回、オラクルからデータを取り出し、Accessのテーブルに書き込みを教えて頂き、データ追加は出来たのですが、データ追加時に無限ループが発生しました。 【環境】 Oracle:10g Access:2010 Dim CON As New ADODB.Connection 'Oracle側コネクション Dim RS As ADODB.Recordset 'Oracle側レコードセット Dim SQL As String 'Oracle側SQL文 Dim i As Integer '処理用インクリメント Dim DT As Date '抽出日付変数(日付型) Dim sDT As String '抽出日付変数(テキスト型) Dim RS2 As ADODB.Recordset 'Access側レコードセット ◎現在の状況 Dim CON As New ADODB.Connection Dim RS As ADODB.Recordset Dim SQL As String Dim i As Integer 'DB接続定義 CON.Open "DSN=DNS名;UID=ユーザー名;PWD=パスワード;" 'SQL文 SQL = "SELECT " SQL = SQL & "カラム1," SQL = SQL & "カラム2," SQL = SQL & "カラム3" SQL = SQL & "FROM オラクルテーブル名 " SQL = SQL & "WHERE 抽出条件 " SQL = SQL & "AND 抽出条件" SQL = SQL & "GROUP BY カラム" SET RS = CON.EXCUTE(SQL) ’取得したレコード数表示 MsgBox "オラクル側のレコード数は: " & RS.RecordCount (1)↑↑↑オラクルから、抽出したレコード数表示 rs2.Open "新しいテーブル名", CurrentProject.Connection, adOpenKeyset, adLockOptimistic rs.MoveFirst Do Until rs.EOF rs2.AddNew rs2!カラム1 = rs!カラム1 rs2!カラム2 = rs!カラム2 rs2!カラム3 = rs!カラム3 rs2.Update rs2.Close: Set rs2 = Nothing rs.close: SET RS = Nothing con.close:SET CON=Nothing end sub 上記を実行したところ、いくら待っても処理がおわらず、強制終了をかけた所、新テーブルには、約150万件追加されてました。 (1)でオラクルから抽出した、レコード数を表示させてみた所、-1でした。 ◎疑問点、 -1ってありえない数値だと思うのですが。 ちなみに、オラクル側で同様のSQLを実行させた所、取得件数は48件でした。 上記について、ご存じの方がいらっしゃいましたら、アドバイスお願いいたします。

  • oracle 11g複製

    現在本稼働しているDBを開発環境構築の為、テーブルを複製したいと考えております。 本環境:Oracle Database 11g 開発環境:Oracle Database 11g Express Edition 全てのテーブルを複製する必要はありません。 SQLのテストのため、Userテーブルを複製したいと考えてます。 必要なテーブルが、30テーブルほどあり内10テーブルは、200万件程度のレコード数があります。 安全かつ、本サーバーに負担の少ない方法はどうしたらよろしいでしょうか? 本環境のSQL sql developerのエクスポート機能で、テーブルを1個づつ出力し、開発環境のSQL developerでインポートを実行すれば、正常に稼働するのでしょうか? MS SQL Serverなら、上記の方法で問題無いのですが、Oracleは初心者の為、全く分かりませんので、ご教授頂けましたら幸いです。

  • intra-martのOracle接続セッション確認について

    Intra-mart バージョン Ver6.0 Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - 64bit Production を使用してます。 Oracle上でセッションを確認したいのですが、下記SQLでは正しく表示がされていないような気がしています。 正しくOracle-10gRACでノードが振り分けられているか確認したいです。 下記三つを参考にして検索するSQLを組んでいます。 gv$session , gv$process , gv$sqlarea 見る方法のSQLや、方法を教えてくださいm(__)m

  • ORACLE MASTER Silver 9i か 10g

    現在、サーバー管理系の仕事をしております。 会社の指示でORACLE MASTER Silverを取得しなければいけないことになりました。 バージョンは9iと10gのどちらでも良いのですが、出来るだけ早く取得しなければいけません。 現在では 10gの場合、Bronze SQL基礎→DBA10g→Silver DBA 10g 9iの場合、SQL、Oracle入門→DBAI のパターンがあると思いますが、一番簡単に取得する方法はどちらでしょうか?

  • SQL ServerにOracleのリンクサーバー

    SQL Server 2000にOracle 11g R2のインスタンスをリンクサーバーとして追加したいです 以下の通りSQL Server 2000にOracle 11g R2のインスタンスをリンクサーバーとして追加することは 可能でしょうか。 <サーバー1> OS:Windows Server 2003 Standard Edition DBMS:SQL Server 2000 設定内容: (1)Oracle 11g R2のクライアントをインストール (2)サーバー2のインスタンスへのリンクサーバーを設定し、テーブルを参照(更新はしない) <サーバー2> OS:Windows Server 2008 R2 Standard Edition DBMS:Oracle 11g R2 設定内容:あるインスタンスにサーバー1が参照するためのテーブルを準備 また、さらに別のクライアントPCからMS Access 2010でサーバー1のリンクサーバーに対して パススルークエリを発行したりAccessにリンクテーブルを作成することは可能でしょうか。 SQL Server向けのSQL文が使えますでしょうか。

  • オラクルについて

    オラクルでDBを作り、DBAスタジオでツリーに加えたのですが、接続できません。 「ORA-12154:TNS:サービス名を解決できませんでした」というメッセージが出てきました。どうすれば接続できるようになるのでしょうか?解決方法を教えてください。