2010-03-12

ADF BC: Cleaning Up Temporary Storage Tables (JBO-28030)

1Im Oracle® Fusion Middleware Fusion Developer's Guide for Oracle Application Development Framework 11g Release 1 (11.1.1) im Abschnitt 39.5 wird beschrieben wie ADF BC abgelegte Application Module States aus den PassivationStore innerhalb der Datenbank wieder entfernt.
Die Konfiguration bzgl. der verwendeten PS_TXN und PS_TXN_SEQ – Datenbank Objekte ist von sehr großer Bedeutung für einen fehlerfreien Betrieb einer ADF Fusion Applikation mit ADF BC als Persitent Layer. Es gibt zahlreiche Einträge zu diesem Thema im Netz:


[1] http://www.oracle.com/technology/products/jdev/htdocs/bc4j/bc4j_temp_tables.html
[2] http://one-size-doesnt-fit-all.blogspot.com/2009/08/jdevadf-importance-of-getting-pstxn-and.html
[3] http://www.pascalalma.net/2007/01/02/jbo-28006-exceptions-when-running-adf-bc-application/

Folgende Hinweise möchte ich an dieser Stelle ergänzen:

a.) Verweis auf die BC4J SQL Scripte innerhalb der Fusion Development Guide

Die SQL Scripte befinden sich im Verzeichnis:
C:\oracle\product\11.1.1.2\middleware\oracle_common\modules\oracle.adf.model_11.1.1\bin
MW_HOME = C:\oracle\product\11.1.1.2\middleware

Die Dokumentation ist an dieser Stelle falsch und wird sicherlich in Zukunft korrigiert.

b.) Berechtigungen an den Schema Objekten PS_TXN und PS_TXN_SEQ
In manchen Umgebungen ist es notwendig über einen Proxy Schema, das keinerlei DDL Berechtigung besitzt, auf das Application Schema zuzugreifen. Es ist NICHT ausreichend dem Proxy Schema die folgenden Berechtigungen zu geben:


GRANT SELECT ON APP_SCHEMA.PS_TXN_SEQ TO PROXY_SCHEMA;
GRANT SELECT,INSERT,UPDATE,DELETE ON APP_SCHEMA.PS_TXN TO PROXY_SCHEMA;
[DON’T WORK]

Inklusive der benötigten Synonyme (Vgl. Link [3])

Nur mit dieser Berechtigungen kann es passieren, dass ein JBO-28030 auftritt.

 2
Ursache dafür ist. dass innerhalb der Implementierung OraclePersistManager “alter sequence” Statements zum Modifikation des nächsten Wertes durchgeführt werden.
Dies Kommando kann nicht ausgeführt werden und der OraclePeristentManager erhält eine ColId, die ggfs. bereits verwendet wurde und in der Tabelle PS_TXN existiert.
Im Development Guide ist dokumentiert, dass die Berechtigung “create sequence” benötigt wird. (RTFM and belief)


Lösung / Workaround

a.) Proxy Schema erhält die notwendigen Berechtigungen (Darf aber vom Grundsatz keine DDL ausführen.)

b.) State Managment Schema einführen

Vgl. Section 40.5, "What Model State Is Saved and When It Is Cleaned Up"

Keine Kommentare:

Kommentar veröffentlichen