だれかがOracle10gのあるテーブルの金額データをAccessなどの編集ツールで変更してしまい、問題になっているのですが誰が変更したのか突き止める方法はあるのでしょうか?

また、今回はわからないとしても今後、このようなことがないように変更した人を特定するようにしたいのですがどのようにするのがよいでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (3件)

今後はデータベース監査証跡を使って当該テーブルのUPDATEの記録を残すと良いですね。


DBAユーザで、
AUDIT UPDATE ON テーブル名;
という感じで監査を有効にし、
監査記録はDBA_AUDIT_TRAILテーブルで確認します。
たまりすぎないように古いレコードを掃除するなどの配慮も必要です。

詳しくは、Oracleドキュメントのセキュリティ・ガイドをごらんください。

参考URL:http://otndnld.oracle.co.jp/document/products/or …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
初めて聞く用語なので調べて検討してみます。
ありがとうございました。

お礼日時:2009/05/17 12:28

自社開発で無い限りDBの変更は難しいかも



プログラム修正が不可能ならトリガーでログ出力させる方法も検討されては?
こちらならプログラムは一切修正しませんし出力テーブルも検索のため2次キーは付けるけど主キー無しの追加オンリーとしてやると容量オーバーしかこける要素がなくなりますし。
まぁ、バッチ等で大量更新される場合はトリガーを停止させるなど設定を工夫する必要はありますが
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
そうですね、トリガーがよさそうですね。
早速、検討してみます。
ありがとうございました。

お礼日時:2009/05/17 12:25

基本的には自分でログを取るしかありません。



変更者、変更日時等のカラムを取り毎回Updateするか
変更履歴テーブルを取り出力するなどの手法が確実かと

Access等のテーブルビューで自由に変更できるのは問題です。
操作ミスで変更、削除等の問題がありますので

AccessやExcel等で読み込む必要があるなら読込権限のみの別ユーザーを取り
このユーザーで行うのがベターでしょうね

Access等のテーブルビューで名称変更程度はかまわないでしょうが
追加、削除等はそれなりのチェックが必要でしょうからプログラム化するほうがよろしいのでは
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
おっしゃられるとおりなのですが、色々しがらみがあり、テーブル追加や変更、プログラム変更などはできないの現状です。
権限については検討してみます。
ありがとうございました。

お礼日時:2009/05/15 12:02

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QPCデータのバックアップのために、RAID1(ミラーリング)を簡単にし

PCデータのバックアップのために、RAID1(ミラーリング)を簡単にしてくれるソフト

お世話になります。
現在、PCデータのバックアップを取りたいと考えています。
その際の形として、
・外付けHDDを2台用意
・ミラーリングソフトを購入
で考えております。

また、ソフトに求める形として、
・ミラーリング
・前回の差分のみをコピーしてくれる。
形を望んでいます。

有料のソフトでも結構ですので、教えて頂ければと思いますので
宜しくお願いします。

また、ほかによい方法ありましたら教えてください。

Aベストアンサー

>HDD2台に対してのミラーリングという意味でした。。。
RAIDという用語が不適切でしたね ^ ^;

>定期的に外付けHDD×2に手動でバックアップ
> そのHDD2台に対して、一度にミラーリング・前回分との差分を判断してコピー
>をしてくれるソフトなのです。
UNIX系なら rsync で決まりのようですが、Windows環境でも rsync を使うのが多いようです

下記のサイトを参照してみて下さい。
http://ebony.blog.so-net.ne.jp/2009-02-21

Cygwin + rsync
http://satospo.sakura.ne.jp/blog_archives/tech/tool/cwrsync.html

Qoracle テーブルコピー

はじめまして

現在、oracle9iを使い、開発しています。
宜しければご回答の方をお願い致します。

スキーマAAAにあるテーブルBBBをテーブルデータは不要として
スキーマCCCに同じ定義のテーブルBBBをコピー作成したいと考えています。

どのように行えば、良いのでしょうか。

当方、初心者ですが、何卒ご回答の程、よろしくお願い致します。

Aベストアンサー

よくよく考えると、1つのテーブルだけなので、
create table bbb as select * from aaa.bbb where 1=2;
で、テーブル定義だけコピーすれば良いような気がします。

もし、索引等の定義もコピーが必要なら、エクスポートで定義だけダンプして
exp userid=aaa/pass file=aaa.dmp owner=(aaa) rows=N direct=Y

インポートで、定義を出力させ、コピー&ペーストで、必要なSQL部分を切り出せば良いかと。
imp userid=ccc/pass file=aaa.cmp show=Y
(インポートユーティリティは、show=Yが指定されると、画面表示のみで、インポート処理をしません。)

QRAID1をバックアップ代わりに使用する

RAID1をバックアップ代わりに使用する

RAID1の場合、マザーボードが故障した場合、HDDを外して、別のパソコンに繋いだ場合、
フォルダー単位でデータファイル(Excelやjpg等)は見ることが出来るのでしょうか?

RAID1のの概要は存じていますが、ネットで調べると、RAID1とバックアップは別物と書かれて
いるものばかりですが、HDD一台で使用しているパソコンで、ソフト的におかしくなっても、
大概は、別パソコンに外付けすると、中身が見れるので、RAID1もそうであるのならば、
基本的に、データ的には、バックアップしていると同じ事と理解してよいのでしょうか?
よろしくお願いします。

Aベストアンサー

>RAID1の場合、マザーボードが故障した場合、HDDを外して、別のパソコンに繋いだ
微妙な問題で、同じコントローラなら見えると思いますが・・・見えない場合もあると思います。


>データ的には、バックアップしていると同じ事と理解
RAID1の機能を正しく理解すると「バックアップ」との違いが明らかになると思います。

RAID1は、2台のHDDで1台のHDDに見せ掛けて1台分のHDD容量を犠牲にして信頼性を高めます。 同時に2台のHDDが故障しなければ、障害が発生した時点で警告が発生するのでデータが失われるという最悪の事態に進展することを防止できる可能性が高いですが、ユーザの間違えた操作によるデータの削除に対しては無力です。

バックアップはバックアップを取得した時点のデータを別なメディアに書き込んで保存し、データが失われるなどの障害時に保存していたデータから復旧するために行います。 障害が発生してから、バックアップによるリカバーが実施されるので、障害発生を防止・検出する仕組みは皆無です。


端的に言えば、RAIDを構成すると本来のHDDの信頼性を更に高める機能であってバックアップを排除するまでの機能は持っていないです。

>RAID1の場合、マザーボードが故障した場合、HDDを外して、別のパソコンに繋いだ
微妙な問題で、同じコントローラなら見えると思いますが・・・見えない場合もあると思います。


>データ的には、バックアップしていると同じ事と理解
RAID1の機能を正しく理解すると「バックアップ」との違いが明らかになると思います。

RAID1は、2台のHDDで1台のHDDに見せ掛けて1台分のHDD容量を犠牲にして信頼性を高めます。 同時に2台のHDDが故障しなければ、障害が発生した時点で警告が発生するのでデータが失われると...続きを読む

QOracleによるリンクテーブルでの接続エラー

よろしくお願い致します。
今、ASPによるWebシステムを作成しています。
データはSQLserver・accessによって管理しています。

システムを動作させているサーバをAとします。
同じネットワーク上のBというサーバのOracleDB内の、ある情報の入ったテーブルを、A上のaccessからリンク(地球のマーク)しています。

そのリンクテーブルを参照して、AのWebシステムを動作させるところ(Select文によるデータ抽出)があります。

しかし、エラー「ODBC--"XXXXX"への接続が失敗しました。」と出てしまいます。

接続にはODBCを利用しており、accessを開いて直接テーブルを見ようとすれば見れます。
しかし、Web上で動作させようとするとエラーが出ます。
何が原因と考えられますでしょうか?
ご教授お願い致します。

補足ですが、
OracleのバージョンはA、B共に同じです。
A:Win2000server 、B:Win2003server
tnsnames.oraは修正してあり、テーブルも参照は出来ているので問題ないと思います。
Aのaccess(リンクテーブル)からBのテーブルを参照するにはパスワードが必要ですが、レジストリの設定により入力不要にしています。

よろしくお願い致します。
今、ASPによるWebシステムを作成しています。
データはSQLserver・accessによって管理しています。

システムを動作させているサーバをAとします。
同じネットワーク上のBというサーバのOracleDB内の、ある情報の入ったテーブルを、A上のaccessからリンク(地球のマーク)しています。

そのリンクテーブルを参照して、AのWebシステムを動作させるところ(Select文によるデータ抽出)があります。

しかし、エラー「ODBC--"XXXXX"への接続が失敗しました。」と出てしまいます。...続きを読む

Aベストアンサー

Webうを動かしているOSユーザの権限はどうなっているのでしょうか。
IISで動かしていると思いますが、IISの実行ユーザが参照できてますか。

手動で使用したユーザとIISの実行ユーザとの差を確認してください。

QRAID1はバックアップではない?

RAID1(ミラーリング)はバックアップにならないのでしょうか。
ブログ等、どこかでそんな話を読んだような記憶があって…

私は、データを二重化するRaid1はバックアップになると思うのですが、
実際のところ、どうなのでしょうか。

私は今、大事なデータに関してはRaid1及び別HDDへの同期をとって
3重化しております。無意味でしょうか。

バックアップの仕方でアドバイス頂けたらと思います。

Aベストアンサー

バックアップという言葉の解釈によって違ってきます。

ご承知のように、RAID1は2つのドライブに同じデータを書き込みますから、どちらかが故障しても、もう一方のドライブでデータを復旧することができます。その意味ではバックアップはとれていると言えます。
しかし、RAIDカードが故障するなどの事態が発生すると、2台のドライブのデータが一気に失われますので、バックアップとしては不十分と言えます。

ご質問を拝見すると、さらに別のドライブへ同期バックアップをされているということなので、RAIDカード故障のリスクはヘッジされているということになります。3重化は無意味ではありません。

QOracleでテーブルの結合について

SQL初心者です。結合について質問させていただきます。
使用するテーブル
(1) 顧客テーブル
(2) 取引先テーブル

カラム
顧客TBL      取引先TBL
顧客CD       取引先CD
仕入先CD      取引先名称
             仕入先名称
  :         :

とあるとします。抽出したい情報は、
(1) 顧客TBL.顧客CD  = 取引先TBL.取引先CD を条件に取引先TBL.取引先名称
(2) 顧客TBL.仕入先CD = 取引先TBL.取引先CD を条件に取引先TBL.取引先名称

自分が書いたSQL文

SELECT
顧客CD,
仕入先CD,
取引先名称,
(SELECT 仕入先名称 FORM 取引先TBL WHERE 顧客TBL.仕入先CD = 取引先TBL.取引先CD AND ROWNUM=1) AS 仕入先名称
FORM
顧客TBL LEFT JOIN 取引先TBL ON 顧客TBL.顧客CD = 取引先TBL.取引先CD


これで一応データの取得はできています。
副問合せを使わずに取引先名称と仕入先名称を取得する書き方はあるのでしょうか?
後、自動でSQLを生成してくれるツールとかありましたら紹介してください。

SQL初心者です。結合について質問させていただきます。
使用するテーブル
(1) 顧客テーブル
(2) 取引先テーブル

カラム
顧客TBL      取引先TBL
顧客CD       取引先CD
仕入先CD      取引先名称
             仕入先名称
  :         :

とあるとします。抽出したい情報は、
(1) 顧客TBL.顧客CD  = 取引先TBL.取引先CD を条件に取引先TBL.取引先名称
(2) 顧客TBL.仕入先CD = 取引先TBL.取引先CD を条件に取引先TBL.取引先名称

自分が書いたSQL...続きを読む

Aベストアンサー

ちょっと間違っているので訂正。

SELECT
DISTINCT
顧客CD,
仕入先CD,
X.取引先名称,
Y.仕入先名称
FORM
顧客TBL
LEFT JOIN 取引先TBL X ON 顧客TBL.顧客CD = X.取引先CD
LEFT JOIN 取引先TBL Y ON 顧客TBL.仕入先CD = Y.取引先CD

Qバックアップ v.s. RAID

こんにちは。

先日、http://oshiete.goo.ne.jp/qa/8169080.html に対して「データの量が大きすぎるから、ネットワーク経由でバックアップするよりもRAIDを組んだほうが良いんじゃないの?」と回答した所、「RAIDはバックアップの代わりにはなりませんよ」と別な方からご指摘を頂きました。

そこで質問なのですが、変更の追跡以外の面で、どういった場合にRAIDはバックアップに機能面で劣るのでしょうか。

Aベストアンサー

ぱっと思いつくのが、災害対策でしょうか。
強固なRAIDでも火災にあえば駄目になりますが、バックアップを別な場所に保管してあればそこから復旧できます。

あと、個人的に経験があるのが、RAID5のHDDが雪崩式に次々壊れてシステムが駄目になった事。搭載していたHDDが全て同じロットだったのですが、どうやらロット不良が有ったらしく、その時はバックアップの重要性を実感しました。

まぁ、どちらもレアケースです。

QOracle8.1iでテーブルごとの使用量を調べたい

oracle8.1iを利用しています。
テーブル毎に、現在件数、最大格納件数、
ディスク容量を知りたいのですが、どのように
調べたらよいでしょうか?

Aベストアンサー

件数については count(*) で取るとして、
ディスク容量につていは
DBA_SEGMENTS ビューをリファレンスで調べてみて下しさい。
BYTES列を見ればセグメント(表)毎のサイズが見れるはずです。

QRAID1設定は、バックアップソフトで作成したバックアップイメージにまで影響する?

前提条件:
デスクトップコンピュータ買い替えを検討していますが、買い換えたコンピュータの内蔵ハードディスクをミラーリングしようと思います。

構築したい構成内容:
OS:WindowsXP SP3
内蔵ハードディスクは、以下の4つを使用します:
HD1(CドライブRAID1:OSインストール)
HD2(DドライブRAID1:データ保存)
HD3(CドライブRAID1ミラー)
HD4(DドライブRAID1ミラー)

http://oshiete1.goo.ne.jp/qa5514901.html
これに関して、上記のスレでk-ayakoさん(回答番号:No.4)にシステムのイメージをTrueImageなどで作成するという助言をいただきました。

k-ayakoさんの助言では、CドライブはRAID1でミラーリングする必要はないのではということでしたが、下記の質問は、CドライブもRAID1でミラーリングする前提でお聞きしています。

質問:
RAID1を使用してHD1(CドライブRAID1:OSインストール)のミラーをHD3(CドライブRAID1ミラー)に取るとして、HD1のバックアップイメージをTrueImageなどのバックアップソフトで作成した場合、そのバックアップイメージ(バックアップイメージのCドライブ)はRAID1が設定された状態のCドライブイメージとなるのでしょうか(RAID1設定は、バックアップソフトで作成したバックアップイメージにまで影響するのですか?)? つまり、そのバックアップイメージを別のHDに復元した場合、“RAID1が設定された状態の”Cドライブとして復元されるのですか?

また、そもそもHD1(CドライブRAID1:OSインストール)にRAID1を設定した状態で、バックアップソフトを用いてHD1(CドライブRAID1:OSインストール)のバックアップイメージを作成すること自体可能なのでしょうか(バックアップソフトを用いてRAID1設定されたHDのバックアップイメージを作成することは可能ですか?)?

参考サイト等も教えて下さい。

よろしくお願いします。

前提条件:
デスクトップコンピュータ買い替えを検討していますが、買い換えたコンピュータの内蔵ハードディスクをミラーリングしようと思います。

構築したい構成内容:
OS:WindowsXP SP3
内蔵ハードディスクは、以下の4つを使用します:
HD1(CドライブRAID1:OSインストール)
HD2(DドライブRAID1:データ保存)
HD3(CドライブRAID1ミラー)
HD4(DドライブRAID1ミラー)

http://oshiete1.goo.ne.jp/qa5514901.html
これに関して、上記のスレでk-ayakoさん(回答番号:No.4)にシステムのイメ...続きを読む

Aベストアンサー

kitty1000さんこんにちは!
>TrueImage及びShadowProtectのハードウェアRAIDに対するバックアップは、可能なのでしょうか?
私の使用しているRAID1はIntelが供給しているチップセットの依存しているソフトウエアRAIDなのでハードウェアRAIDについては、わかりません。
前回もお話した通り私の環境(これは前回書いていない:WinXPPro、P5K-E、Q9450、seagate500G台RAID1)では、両方ともバックアップ及びリストアは出来たと記憶しています。
>TrueImage及びShadowProtectを両方と使ってみて、感想はどうですか?
TrueImageはポピュラーなバックアップソフトですね。機能も充実しています。
デスクのクローン作成は80GBを300GBのHDへの引越し(OS含む)には良い機能だとおもいます。
ShadowProtectは売れてないのかマイナーなイメージがありますね。
基本的にHD単位のバックアップが中心ですが、スケジュールが小まめに設定できます。
一番の売りは、私はやったことがないですが、バックアップイメージを他のパソコンにリストアできることです、本当かな?私は、RAID対応ということで購入してしまった。
>ShadowProtectの事業用(電話サポートあり)は高額そうですね。
私は、ベクターからダウンロード版(サポートなし)の安いのを購入。

TrueImage及びShadowProtect両方とも500GB中300GB使用でバックアップに2~3時間、リストアに5~6時間かかったと記憶しています。ShadowProtectの方が少し高速です。また、バックアップイメージは圧縮がそれほど効かないため、1TGBの外付HDに3世代前後(3回の完全バックアップ)しか出来ませんから、実用的ではないと思います。
私は、新しいソフトをインストールする前とか、RAIDボリュームの1台のHDが故障したとき交換前にバックアップを取るとか、HD全体をバックアップはしていません。通常は、RAID1のミラーリンクである程度の問題には対応できると考えています。
先日、RAIDボリュームの1台のHDが故障したとき、2~3日1台でRAID1が解除のまま、パソコンを稼働していましたが、問題ありませんでした。故障したHDを交換後、RAID1の再構築も問題なく行なえました。故障したと思ったHDはHDケースに組み込みUSB接続でWin上からは、中を見れました(壊れてなかった?)。多分、そのHDはセクタ不良があるのではなのでしょうか?!一方のHDにセクタ不良があれば、RAID1のミラーリンクは解除され、故障と判断すると考えます。
長文で失礼しました。bobnash

kitty1000さんこんにちは!
>TrueImage及びShadowProtectのハードウェアRAIDに対するバックアップは、可能なのでしょうか?
私の使用しているRAID1はIntelが供給しているチップセットの依存しているソフトウエアRAIDなのでハードウェアRAIDについては、わかりません。
前回もお話した通り私の環境(これは前回書いていない:WinXPPro、P5K-E、Q9450、seagate500G台RAID1)では、両方ともバックアップ及びリストアは出来たと記憶しています。
>TrueImage及びShadowProtectを両方と使ってみて、感想はどうです...続きを読む

QORACLEから各テーブルをCSV形式で出力するコマンド

上記のとおりですが、そういったコマンドはないのでしょうか?
調べてもラインサイズを1000にしてページサイズを0にしてトリムして…できたけど無駄な文字列が入っていたり。。
どなたかアドバイスお願いします。

Aベストアンサー

残念ですがそういうコマンドはありません。
他の回答者さんが言っているようにPL/SQLやツールですね。

私はObjectBrowserってツールを使ってます。
これあると非常に便利ですよ。
有料ですが一ヶ月の試用もあるので検討してみては?

参考URL:http://www.sint.co.jp/siob/default.asp


人気Q&Aランキング

おすすめ情報