Oracle が変更記録を記録する方法

PHPz
リリース: 2023-04-04 11:41:17
オリジナル
2585 人が閲覧しました

ビジネスの継続的な発展とデータの継続的な増加に伴い、データ変更記録のクエリと管理がますます重要になってきています。 Oracle データベースは、変更記録を記録するための便利で高速な機能を提供します。この記事では、Oracle が変更レコードを記録する方法と、これらのレコードをクエリおよび管理する方法を紹介します。

レコード変更レコード

Oracle データベースには、フラッシュバック テクノロジと監査テクノロジという、変更レコードを記録する 2 つの方法が用意されています。

フラッシュバック テクノロジ

フラッシュバック テクノロジは、データベース オブジェクトの状態を迅速にロールバックするために Oracle データベースによって提供されるテクノロジであり、テーブルまたはデータベース全体の状態をロールバックするために使用できます。レコード変更レコードはフラッシュバック・テクノロジーのサブセットであり、Oracle はフラッシュバック・データ・アーカイブと呼ばれる特別な機能を提供します。

フラッシュバック データ アーカイブの作成

フラッシュバック データ アーカイブを使用して変更レコードを記録する前に、フラッシュバック データ アーカイブを作成する必要があります。フラッシュバック データ アーカイブは、次の SQL ステートメントを使用して作成できます。

CREATE FLASHBACK ARCHIVE fda1
TABLESPACE example
QUOTA 100M
RETENTION 1 YEAR
NO DROP;
ログイン後にコピー

上記のステートメントは、fda1 という名前のフラッシュバック データ アーカイブを作成し、サンプルの表スペースを使用し、100M スペースを割り当てます。データ保持期間は 1 年です。すぐにリサイクルされます。

フラッシュバック データ アーカイブを有効にする

フラッシュバック データ アーカイブを作成した後、テーブルまたはテーブル内の特定の列に対してフラッシュバック データ アーカイブを有効にする必要があります。 EMPLOYEE 表の給与列に対してフラッシュバック・データ・アーカイブを有効にする場合は、次の SQL ステートメントを使用できます。

ALTER TABLE employee
ADD PERIOD FOR salary
FLASHBACK ARCHIVE fda1;
ログイン後にコピー

上記のステートメントは、EMPLOYEE 表の給与列に対してフラッシュバック・データ・アーカイブを追加します。 EMPLOYEE テーブルに加えられた更新はすべてフラッシュバック データ アーカイブに記録されるようになります。

監査テクノロジ

監査は、変更レコードを記録するために Oracle データベースによって提供されるもう 1 つのツールです。ユーザーがデータベース サーバー上で実行したトランザクションを追跡および記録できます。監査テクノロジは、管理者がデータベース オブジェクトにアクセスするユーザーを追跡および識別するのに役立つため、Oracle データベースのエンタープライズ環境では基本的に必須です。

監査パラメータの設定

監査テクノロジを使用して変更レコードを記録する前に、監査パラメータを設定する必要があります。次の SQL ステートメントを使用して監査を有効にできます。

ALTER SYSTEM SET audit_trail=DB, EXTENDED SCOPE=SPFILE;
ログイン後にコピー

Oracle データベースの監査証跡を DB に設定し、データベース監査証跡機能を有効にします。 SCOPE=SPFILE パラメータは、設定が SPFILE に記録されることを示します。

監査を有効にする

監査追跡を有効にするには、データベースを構成する必要があります。次の SQL ステートメントを使用して、sys ユーザーに対して監査を有効にできます。

AUDIT UPDATE ANY TABLE BY ACCESS;
ログイン後にコピー

上記のコマンドにより、sys ユーザーによって変更されたテーブルへのアクセスの監査が有効になります。

レコード変更レコードのクエリと管理

変更されたレコードが記録されたら、これらのレコードのクエリと管理を開始できます。 Oracle は、レコード変更レコードを問い合せて管理するための複数の方法を提供します。

フラッシュバック データ アーカイブのクエリ

フラッシュバック データ アーカイブ内の履歴データをクエリするには、次の SQL ステートメントを使用できます。

SELECT *
FROM table_name
AS OF TIMESTAMP TO_TIMESTAMP('YYYY-MM-DD HH24:MI:SS.FF');
ログイン後にコピー

タイムスタンプは、フラッシュバック データで発生した内容である場合があります。いつでもサーバーをアーカイブできます。上の例では、使用される日付と時刻の形式は YYYY-MM-DD HH24:MI:SS.FF です。

監査ログのクエリを実行する

監査ログをクエリするには、次の SQL ステートメントを使用できます。

SELECT *
FROM dba_audit_trail
ログイン後にコピー

このコマンドは、クエリされたデータベースのすべての監査イベントを表示します。

レコード変更レコードの管理

データ変更レコード ログ ファイルが指定されたサイズに達すると、Oracle は新しいログ ファイルを自動的に追加します。ログ ファイルで、データ テーブルに最近追加されたデータに対する変更の記録を確認できます。これらの変更記録ログ ファイルを管理するには、次のコマンドを使用します。

ALTER FLASHBACK ARCHIVE [archive_name] PURGE ALL
ログイン後にコピー

は、選択したフラッシュバック データ アーカイブ ログ ファイルを削除するために使用されます。上記のコマンドを使用すると、選択したフラッシュバック データ アーカイブ ログ ファイルは完全に削除され、復元できなくなります。

概要

Oracle は、変更レコードを記録するための一連の方法を提供します。フラッシュバック テクノロジは、テーブルまたはデータベース全体の変更を記録できます。監査では、データベース サーバー上で実行されたすべてのトランザクションを記録できます。変更レコードが存在すると、複数の方法を使用してそれらをクエリおよび管理できます。上記の方法は、管理者がモディファイアの操作を追跡し、定期的に変更記録をチェックして記録してデータベースのデータ整合性を維持するのに役立ちます。

以上がOracle が変更記録を記録する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!