2.5 ランダム値を生成するランダム・データ・リダクション

ランダム・データ・リダクションでは、値全体がランダムな値に置換されてリダクションされます。

問合せの結果セットに表示されるリダクションされた値は、アプリケーション・ユーザーが問合せを実行するたびに、ランダムに変更されます。

このタイプのリダクションは、データがリダクションされていることを明らかにしたくない場合に便利です。ランダム・データか実際のデータかの区別が難しい、数値および日時データ型の場合に特に適しています。

ランダム値として表示される出力は、次のように、リダクションされた列のデータ型によって異なります。

  • 文字データ型: ランダムな出力は、文字が混合されています(たとえば、HTU[G{\pjkEWcK)。CHARVARCHAR2のデータ型では、次に示すように動作が異なります。

    • CHARデータ型: リダクションされた出力の文字セットは、常に列の文字セットと同一になります。リダクションされた出力のバイト長は、常に列定義の長さ(つまり、表の作成時に指定した列の長さ)と同一になります。たとえば、列がCHAR(20)である場合、ユーザー問合せのリダクションされた出力には、ランダムな20文字が提供されます。

    • VARCHAR2データ型: VARCHARデータ型のランダム・リダクションでは、リダクションされた出力の文字セットは、常に列の文字セットと同一になります。リダクションされた出力の長さは、列の実際のデータの長さに基づいて制限されます。実際のデータの長さを超える文字は表示されません。たとえば、列がVARCHAR2(20)で、リダクションされる行に長さ12の実際のデータが含まれている場合、その行に対するユーザー問合せのリダクションされた出力には、ランダムな12文字(20文字ではない)が提供されます。

  • 数値データ型: 実際の各数値は、ランダムな非負数に置換されてリダクションされます。このリダクション結果は、実際のデータの精度を超えないランダムな数値になります。たとえば、数値987654321は、数値12345678135790または987654320のいずれかに置換されてリダクションされます。数値98765432199987654321または-1に置換されることはありません。数値-123は、数値1220または83に置換されてリダクションされますが、数値1231123または-2のいずれかに置換されることはありません。

    前述の例の唯一の例外は、実際の値が-1から9の間の整数である場合です。この場合、実際のデータは、ランダムな非負整数であるmodulo 10に置換されてリダクションされます。

  • 日時データ型: 日付データ型の値がランダム・データ・リダクションを使用してリダクションされる場合、Oracle Databaseには、実際のデータの日付と異なるランダムな日付が常に表示されます。

ランダム・リダクションを使用する設定は、次のとおりです。

function_type => DBMS_REDACT.RANDOM