• ベストアンサー

Oracleで流したSQLのログを取得できますか?

ASP+Oracle9iで作られたシステムがあります。 Oracleの設定などは前任者がしており、まともな引継ぎを受けないまま私が維持運用員となりました。 現在DBからあるレコードが消えてしまい(最初から作られてない可能性もあり)、顧客からクレームがついています。 状況から考えて怪しいプログラムを調査したのですが、原因不明でした。 そこで、Oracleの方で今まで流れたSQLをログとして保存していれば手がかりがつかめるのではないかと思い、情報を探しているのですが見つからないので教えて頂きたいのです。 私はOracleの知識(管理面について)が殆どなく、Oracleを使うことはできるが、Oracleの設定がどういう状況になっているか調べることもできず、資料もありません。 1.そもそもOracleにSQLをログとして保存する機能があるのか? 2.あるとすれば、保存機能が有効になっているか、保存したファイルがどこにあるかをどこで確認できるか? 以上の点についてご存知の方、どうぞ回答よろしくお願いします。

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

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

  • ベストアンサー
  • guchi32
  • ベストアンサー率100% (10/10)
回答No.2

OracleのSQL実行痕跡は以下に示すものの中にあります。 ただし、それぞれの設定レベル、保存方法によって、参照できる範囲は変わります。 1.オンラインREDOログとアーカイブログ   オンラインREDOログはすべてのOracleデータベースに存在します。   ですが、そのREDOログのサイズとシステムのアクセス量によって保存期間は変化します。アーカイブログ設定しておけば、古いREDOログはアーカイブとして吐き出されます。   これらは#1の方がおっしゃったLOGMINERで実行済みSQLを調査することができます。   アーカイブログモードになっているかどうかは、下記で確認できます。    SQL> select log_mode from v$database;   また、どのアーカイブログファイルを調査するかは下記を参照すれば良いと思います。    SQL> select name,to_char(completion_time, 'yyyy/mm/dd hh24:mi') adate from v$archived_log; 2.フラッシュバック問い合わせ   これは初期化パラメータUNDO_MANAGEMENTがAUTOに設定されており、かつUNDO_RETENTIONが保存期間として適切に設定されている場合のみ使用できます。   やっていることは、UNDO表領域(旧RBS用表領域)の中に残っている実行履歴を参照しています。したがって、データベース設計時にフラッシュバック問い合わせを前提としていない限り、使える可能性は低いです。 3.その他   監査を実行していれば、実行SQLを取得できる可能性があります。   ただし、監査レベルなどを理解しておかないと、すべてのSQLが取得されていない可能性がありますので、難しいかもしれません。

kenthy
質問者

お礼

ご丁寧にありがとうございます。 調べてみたところ、アーカイブモードで月切りで取っているようでした。 残念ながら不具合発生したのは2月末時点で、その時のログは残っておりませんで、ログからの解析はできませんでしたが、これからのトラブル解決に役立てそうです。 どうもありがとうございました。

その他の回答 (1)

回答No.1

オラクルが処理した痕跡というのは、幾つか残りますが.. アーカイブログを残しているのであれば、それを解析するのが 最も確実な方法でしょう。 解析用のLOGMINERという標準ツールも付属しています。 (詳しくはマニュアル参照)

kenthy
質問者

お礼

REDOログというのがあるというのを知り、テスト環境のログを開いてみようとテキストエディタに突っ込んでみたところ、テキストエディタでは開けなかったので、専用のツールか何かで見るようになっているんだと思っておりましたが、 LOGMINERという名前まではわかりませんでした。 どうもありがとうございました。

関連するQ&A

  • PL/SQLで実行したSQLのログの取得について

    ASP(ActiveServerPage)より、PL/SQLのFunctionを実行し、Oracleの複数のTABLEを更新しようとしています。 ASPから実行する際には、引数を渡し、その引数をSQL実行の条件としていますが、実際に実行されたSQL文のログを取得したいのですが、どうしたらよいでしょうか? 何か良い方法をお教えいただけますよう、よろしくお願いいたします。 [実行環境] DB:Oracle8i

  • sql ログを取得したい…

    現在サーバの移行をしているのですが アプリケーションが意図するように動きません。 なにやらDBとのつながりの部分に問題があるようなのですが それすら分からない状況です。 オラクルに投げたSQLを取得したいのですがどうすればいいのでしょうか?

  • oracle sql developerについて

    oracle sql developerを現場でインストールしました。 現場ではネットは全くつながっておりません。 postgreSQL2005は使用したことがあるのですが、 oracle sql developerは今まで全く使用したことが無く「インストールしてテスト台帳につなげてDB内容確認して」とか言われても正直困っております。 既存で作成されている「テスト台帳」にどうやって接続をすればいいのでしょうか? 設定方法やコネクトの手順がわかる方いましたらアドバイスをいただけないでしょうか? 現段階ではoracle sql developerをインストールしただけです。

  • oracleとSQL Server比較検証

    PKG構築において、過去の実績からOracleを 使用する方向で検討中ですが、SQL Serverとの比較 を行った結果を添付するように顧客から依頼がありました。 保守性、可用性、性能、コスト等の視点から、 比較した情報等はありますでしょうか。 このご時世もあり、顧客からは低コストでの構築を依頼 されています。 こちらとしては、Oracleの実績しかなく、Oracleで押して行く 考えですが、根拠となるネタが欲しいです。 色んなサイトで調べては見ましたが・・・ ちなみに、構築環境は OS :Windows Server 2008 Standard 言語:Microsoft Visual Studio 2008 Professional Edition DB :Oracle Database 11g です。 親和性を考えたら、SQL Serverにした方が良いと言う声も聞こえて 来そうですが。 情報提供をして頂けたら助かります。 宜しくお願いします。

  • オラクル SQLサーバーにて ファイルをDB管理したい

    オラクルもしくはSQLサーバーにて ファイルとか画像もデータベースで管理したいのですが オラクルやSQLさーばーはファイルとかDBは 管理できるのでしょうか? 管理できる場合 ファイルをDBに保存するのでしょうか? もしくは ファイルへのリンク アドレスを 管理するのでしょうか? 詳しい方教えてください

  • Oracleへのリンクサーバー設定について

    お世話になります。 下記環境におきまして、SQL ServerよりOracleへリンクサーバーを作成しようとしたところ、 「リンクサーバー"XXX"のOLE DB プロバイダ"MSDAORA"のデータソースオブジェクトを初期化できません。 リンクサーバー"XXX"のOLE DB プロバイダ"MSDAORA"から、メッセージ"Oracle"クライアントと ネットワークコンポーネントが見つかりません。これらのコンポーネントはOracle Corporationから提供され、 Oracle Version 7.3.3(またはそれ以降)のクライアント ソフトウェアの一部としてインストールされます。 プロバイダは、これらのコンポーネントがインストールされるまで機能しません。"が返されました。 (Microsoft SQL Server,エラー:7303)」 となり、作成に失敗してしまいます。 SQL Serverには10gのOracleクライアントをインストールしてあるのですが、原因がわかりません。 どなたか、同じ原因を経験され、解決された方はいらっしゃいますか。 もし、お分かりでしたら、ご教授頂きたいのですが。 よろしくお願いいたします。 尚、SQL Serverは運用の関係上、Oracleクライアントインストール後、再起動は行っておりません。 環境 OS:Windows2003 DB:SQL Server 2005 Oracle:10g

  • oracleの勉強がしたい初心者です。

    DBに関しては、SQL文とMySQLで初歩の初歩を講座で受けたぐらいのレベルです。Oracleで設計、構築がしたく、Oracleの本を買い「Oracle Enterprise Maneger」をインストールしましたが、パソコンが重くなるのでアンインストールしました。よく調べると「Oracle Enterprise Maneger」はDB管理者が使い現場でも1つのパソコンにインストールするぐらいで、通常の設計、構築をするDBをやるSEは使わないと聞きました。では、Oracleの全くの初心者が設計、構築をするには、どのツールで勉強はじめればいいですか?参考になりそうなサイト、本、ツールなどありましたら、教えてください。

  • ORACLEのアクセス

    oracle10gで構築したDBをoracle9iのクライアントからアクセス可能でしょうか。(SQLを参照したりVBで作成しらプログラムからODBC/OLE形式でアクセスする)

  • oracle 9i と SQL SERVER 2005 DBリンクにつ

    oracle 9i と SQL SERVER 2005 DBリンクについて とても困ってます。 よろしくお願いします。 仕事で、oracle 9iとSQL SERVER 2005をDBリンクさせて、oracle 9iのTableとSQL SERVER 2005のTableを結合させて、SELECT文を作成したいです。 本番環境は、DBサ―bとWebサーバは別々でとりあえずlocal開発環境を作成しています。 <確認したこと> ・global_names = Flase ・ODBCの設定はSQL SERVER 2005に接続確認しました。  →データソース名は、「SQLSRV」です。 ・inithsodbc.oraの設定    HS_FDS_CONNECT_INFO = SQLSRV    HS_FDS_TRACE_LEVEL = OFF ・LISTENER.ORAの設定(編集後再起動しました)  → (SID_DESC = (SID_NAME = HSODBC) (ORACLE_HOME = D:\oracle\Ora9IUTF) (PROGRAM = hsodbc) ・TNSNAMES.ORAの設定 HSODBC = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST =localhost)(PORT = 1521)) ) (CONNECT_DATA = (SID = HSODBC) ) (HS = OK) ) ・DBリンク作成(小文字を認識するため、ダブルクォーテーションで囲います)   CREATE DATABASE LINK DB_LINK_SQLSRV   CONNECT TO "ユーザ" IDENTIFIED BY "パスワード" USING 'HSODBC'; ・SELECT文   SELECT * FROM テーブル名@DB_LINK_SQLSRV; 上記の手順ですが、サービス名が解決できません。

  • Oracleのエクスポート、インポートについて困っています・・・

    Oracleのエクスポート、インポートについて詳しい方にお伺いしたいのですが。 質問の内容と、スペックですが、 エクスポートの対象にしているOSがlinuxで、DBがOracleです。このサーバーは私のローカル内にありません。 インポートしたいデモ環境(OSがlinuxで、DBがOracle)が、私のローカル内にあります。二つとも別場所です。 お分かりのとおり、この対象OSのOracle内のデータとデモ環境(OSがlinuxで、DBがOracle)のOracle内のデータを 同じようにしようとしております。 私のOSはwindowsXPで、Oracleはインストールしておりません。 これが痛くてフリーソフトをあれこれ使おうとすると、SQL*Net(有料?あまりよくわからない)が必要なことを知ってより困っています。 この私の環境(OSはwindowsXPで、Oracleはインストールしていない)で 別場所のOracleからエクスポートし、自分のローカル内にあるデモ環境(OSがlinuxで、DBがOracle)のOracleに インポートできるフリーソフトってあるのでしょうか。 別場所であろうが、自分のローカル内だけであろうが、 エクスポートだけしかできないフリーソフトでもほしいです。 ないとは思いますが(結構、調べたので)、もし、ご存知のかたがいれば教えていただけないですか。 あと、実際、上記のような質問をしていますが、やはり、この件に関しては、 コマンドプロンプトを開いてimp/expをするのがよいのでしょうか。 できるだけ、シンプルな方法をつかみたい次第です。 もし、コマンドからの操作しかないのでしたら、 imp/expにおいて気をつけなければいけないこと等はあるのでしょうか。 expはDBに危険がないような気がするのですが、impはなにかと気をつけないといけなさそうな気がしますが・・・。 初心者すぎる質問で見苦しく恐縮です。 OracleのSQL文もよく知らないもので。 できれば詳しい方、よろしくお願いします。