ヘッダーをスキップ
Oracle® OLAP DMLリファレンス
11gリリース2 (11.2)
B61346-03
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

RELEASE

アナリティック・ワークスペースがマルチライタ・モードでアタッチされている場合、RELEASEコマンドは、指定の変数、リレーション、値セット、ディメンションまたは変数の1つ以上のパーティションのアクセス・モードを読取り/書込み(取得)アクセスから読取り専用アクセスに変更します。

構文

RELEASE objects

パラメータ

objects

解放する1つ以上の変数、リレーション、値セット、ディメンションの名前またはアナリティック・ワークスペースの名前(カンマ区切り)。パーティション変数の個々のパーティションを指定するには、次の構文を使用します。

variable_name (PARTITION partition_name [, PARTITION partition_name ]...)

各アナリティック・ワークスペース名の前にはAWを付けます(次の構文を使用)。

AW analytic workspace name

このリストから1つのアナリティック・ワークスペースを指定すると、そのアナリティック・ワークスペースのすべての取得済オブジェクトは、保留されているすべての変更が適用された後に解放されます。RELEASE文の実行前の変数、リレーション、値セットまたはディメンションに加えられたすべての変更は、RELEASE文の実行後にプライベートな変更として保存されます。

使用上の注意

未更新または未コミットのオブジェクトの解放

更新されているアナリティック・ワークスペースに対してAW DETACH文を使用するのと似ています。更新したオブジェクトに対してRELEASEを使用しても、そのトランザクションをコミットまたはロールバックするまで、他のユーザーはそのオブジェクトを取得できません。what-if変更をさらに進め、後でUPDATEを使用して取得済のすべての変数を更新する場合に、更新済のオブジェクトをコミット前に解放するのには役立ちます。

ディメンションの解放によるディメンションの回復

取得済のディメンションを解放すると、そのディメンションは自動的に回復します(ディメンションの回復の意味については、REVERTコマンドを参照)。

次のコードに示すように、取得済のディメンションを解放すると自動回復されます。

ユーザーAが次のOLAP DML文を発行します。

AW ATTACH myworkspace MULTI
ACQUIRE RESYNC time WAIT
MAINTAIN time ADD 'Y2002'
actuals (time 'Y2002', ...) = 37
REPORT time --> ..., 'Y2002'
... report
SHOW actuals (time 'Y2002', ...) --> 37
RELEASE time
REPORT time --> ... (no 'Y2002')
AW ATTACH myworkspace MULTI
... report
ACQUIRE RESYNC actuals, time WAIT
MAINTAIN time ADD 'Y2002'
actuals (time 'Y2002', ...) = 37
REPORT time --> ..., 'Y2002'
SHOW actuals (time 'Y2002', ...) --> 37
... report
REVERT time
REPORT time --> ... (no 'Y2002')
MAINTAIN time ADD 'Y2002'
... report
REPORT time --> ..., 'Y2002'
SHOW actuals (time 'Y2002', ...) --> NA
... report

例10-96 2人のユーザーによる同じアナリティック・ワークスペースの異なるオブジェクトの変更

マルチライタ・アタッチ・モードの従来の使用法では、2人のユーザーが同じアナリティック・ワークスペース内にある異なる2つのオブジェクトを変更できます。たとえば、アナリティック・ワークスペースに2つの変数actualsおよびbudgetがあるとします。ユーザーAがactualsを変更し、ユーザーBがbudgetを変更しようとします。この場合、アナリティック・ワークスペースをマルチライタ・モードでアタッチした後、各ユーザーは必要な変数を取得して必要な変更を行い、変更を更新およびコミットしてから、ワークスペースをデタッチするか、取得した変数を解放します。

ユーザーAは次の文を実行します。

AW ATTACH myworkspace MULTI
ACQUIRE actuals
... make modifications
UPDATE MULTI actuals
COMMIT
RELEASE actuals
AW DETACH myworkspace

一方で、ユーザーBは同時に次の文を実行します。

AW ATTACH myworkspace MULTI
ACQUIRE budget
... make modifications
UPDATE MULTI budget
COMMIT
RELEASE budget
AW DETACH myworkspace

例10-97 UPDATE後のCOMMIT前に使用するRELEASE

RELEASE文を使用しても、解放済の変数を必ずしも他のユーザーが取得できるとは限りません。たとえば、変数を更新したが変更をコミットしなかった場合、RELEASE文を実行してもコミットが実行されるまでは他のユーザーにとって効果はありません。ただし、単純なUPDATEを使用して取得済のすべての変数を更新すると、変数の更新後ではあるがコミットより前に変数を解放するのに役立ちます。最初の更新後に変数を解放すると、この変数は2回目の更新時には更新済変数のリストに含まれなくなります。次のコードでは、ユーザーB1が様々なタイミングでbudgetを解放する状況を示しています。

ユーザーB1が次の文を発行するとします。

AW ATTACH myworkspace MULTI
ACQUIRE RESYNC budget WAIT
make changes C1
RELEASE budget
UPDATE
make changes C2
UPDATE
COMMIT

ユーザーB2が次の文を発行します。

AW ATTACH myworkspace MULTI
ACQUIRE RESYNC budget WAIT

ユーザーB2はbudgetを取得して変更がないことを確認し、次の文を発行します。

...
AW ATTACH myworkspace MULTI
ACQUIRE RESYNC budget WAIT
make changes C1
UPDATE
RELEASE budget
make changes C2
UPDATE
COMMIT
...
AW ATTACH myworkspace MULTI
ACQUIRE RESYNC budget WAIT

あるいは、ユーザーB2はbudgetを取得して変更C1を確認し、次の文を発行します。

AW ATTACH myworkspace MULTI
ACQUIRE RESYNC budget WAIT
make changes C1
UPDATE
make changes C2
RELEASE budget
UPDATE
COMMIT
...
AW ATTACH myworkspace MULTI
ACQUIRE RESYNC budget WAIT

または、もう1つの可能性として、ユーザーB2はbudgetを取得して変更C1を確認し、次の文を発行します。

AW ATTACH myworkspace MULTI
ACQUIRE RESYNC budget WAIT
make changes C1
UPDATE
make changes C2
UPDATE
COMMIT
RELEASE budget
...
AW ATTACH myworkspace MULTI
ACQUIRE RESYNC budget WAIT

この時点で、ユーザーB2はbudgetを取得し、変更C2を確認します。