多くの人がアクセスできるデータベースがあります。このデータベースで「変更」が発生するたびに通知を受け取り、他の関係者がそれを認識できるようにする方法を探しています。お知らせ下さい。
5 に答える
多数のデータベースイベントをキャッチするトリガーを作成できます...
http://www.psoug.org/reference/ddl_trigger.html
...スキーマのALTERの前後を含みます。
多くの人は、本番データベースに対する ALTER 権限を持つべきではありません。本番データベースに対する ALTER 権限を持つべき人はほとんどいません。実際には、テスト データベースを変更する権限を多くの人に与えるべきではありません。
監査が正しい解決策であるかどうかを検討できます。一部の DBMS では、変更を検出する 1 つの方法になりますが、アラートを出すのは難しくなります (「監査ログを grep する」というテーマのバリエーションを除いて)。Oracleには他の方法があるかもしれません。
上記のコメントについて:
これは開発データベースなので、アクセスするには多くの人が必要です。– whizmaven (8時間前)
@Jonathan Lefflerは正しいです:多くの人がそれにアクセスできるかもしれませんが、DDL権限(CREATE、DROP、ALTERなど)を持つ人々のグループは非常に制限されるべきです.
より良い解決策は、そのような変更をローカルで (ローカルにホストされた DB で、または共有テスト DB の別のユーザー アカウントとして) 行うことです。変更が検証されたら、完全に共有された環境にロールアウトする必要があります。そして、そのロールアウト/変更管理プロセスは、より正式な方法で処理する必要があります。
最低限、ロールアウトの際には、変更とそれらの変更の影響 (必要な新しいテスト、更新など) の電子メール通知を使用する必要があります。
110gが考慮に入れているようです:
http://sysdba.wordpress.com/2007/10/16/ddd-logging-in-the-alert-log-in-11g/
何を変更しますか?
ALTER SESSION は非常に一般的なコマンドです (特に ALTER SESSION SET NLS_DATE_FORMAT または CURRENT_SCHEMA)。
より一般的には、ALTER schema_object、おそらく ALTER SYSTEM と ALTER DATABASE を追跡する必要があります。