|
-
Problem solved :
The Test-Statement
SELECT vw_0141_orca777.le_rowid
FROM vw_0141_orca777
WHERE vw_0141_orca777.auft_nr = 13826
The Explain-plan on Test Environment (OREK) is different from the Explain-plan (ORCK)!!!
EXPLAIN-Plan Test-DB OREK
SELECT STATEMENT, GOAL = CHOOSE 6 1 35
NESTED LOOPS 6 1 35
NESTED LOOPS 6 1 31
INDEX RANGE SCAN LPK AUFT_PK 3 1 10
TABLE ACCESS BY INDEX ROWID LPK LADEEINHEITEN 3 3 63
INDEX RANGE SCAN LPK LAEI_AUFT_FK_I 2 3
INDEX UNIQUE SCAN LPK GATT_PK 650 2600
EXPLAIN-Plan Prod-DB ORCK
SELECT STATEMENT, GOAL = CHOOSE 5 1 41
NESTED LOOPS 5 1 41
NESTED LOOPS 5 1 37
TABLE ACCESS BY INDEX ROWID LPK LADEEINHEITEN 4 1 27
INDEX RANGE SCAN LPK LAEI_AUFT_FK_I 3 1
INDEX UNIQUE SCAN LPK AUFT_PK 1 1 10
INDEX UNIQUE SCAN LPK GATT_PK 706 2824
With rule-hint the explain-plan on test-environment OREK ist the same as productional ORCK
SELECT STATEMENT, GOAL = CHOOSE 5 1 41
NESTED LOOPS 5 1 41
NESTED LOOPS 5 1 37
TABLE ACCESS BY INDEX ROWID LPK LADEEINHEITEN 4 1 27
INDEX RANGE SCAN LPK LAEI_AUFT_FK_I 3 1
INDEX UNIQUE SCAN LPK AUFT_PK 1 1 10
INDEX UNIQUE SCAN LPK GATT_PK 706 2824
And now thats very interesting : following SQL on OREK Test-DB fails with ORA-01445
ORA-01445: cannot select ROWID from a join view without a key-preserved table
Cause: A SELECT statement attempted to select ROWIDs from a view derived from a join operation.
Because the rows selected in the view do not correspond to underlying physical records, no ROWIDs can be returned.
SELECT *
FROM vw_0141_orca777
WHERE vw_0141_orca777.ROWID = (SELECT vw_0141_orca777.le_rowid
FROM vw_0141_orca777
WHERE vw_0141_orca777.auft_nr = 13826)
But with RULE-Hint (same Explan-plan as ORCK Prod-DB )
The SAME Statement on OREK Test-DB worked WITHOUT ORA-ORA-01445
SELECT /*+RULE*/ *
FROM vw_0141_orca777
WHERE vw_0141_orca777.ROWID = (SELECT vw_0141_orca777.le_rowid
FROM vw_0141_orca777
WHERE vw_0141_orca777.auft_nr = 13826)
Conclusion :
Depending on the Execution-PLAN Oracle decided if it can return a rowid or not
In production-DB (ORCK) the problem never arised due to production amount data.
So if a View is adressed in Oracle forms it is recommended for locking
to specify the right columns as prime-key columns
you should not let Forms take control.
Thanks for help
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|