I am upgrading a large Oracle Forms application from an older version (12c) to Forms 14c. The database has remained the same, but I am now getting ORA-00980: synonym translation is no longer valid when compiling pll files that reference DUAL or V$SESSION.
The Situation:
If I change the code to use
SYS.DUALorSYS.V_$SESSION, the error disappears and compilation succeeds.The error occurs while compiling a script which uses frmcmp_batch.sh. Compiling via Forms 14c Builder is fine.
I can query
SELECT * FROM DUALorSELECT * FROM V$SESSIONperfectly fine in SQL*Plus/SQL Developer using the same credentials.
What I have checked/tried:
Direct Grants: My user (
AESITPR) has been granted direct SELECT access by the DBA. RunningSELECT * FROM user_tab_privsconfirms:TABLE_NAME: DUAL | PRIVILEGE: SELECTTABLE_NAME: V_$SESSION | PRIVILEGE: SELECT
Private Synonyms: I have checked
user_synonymsand I do not have any private synonyms forDUALorV$SESSIONoverriding the public ones.Public Synonyms: Public synonyms exist and appear valid.
My Question:
Since this worked in previous Forms versions and the direct grants are in place, why is the Forms 14c PL/SQL compiler failing to resolve these standard public synonyms? Is there a specific configuration in the 14c middleware or a known change in the 14c compiler's synonym resolution logic that causes this "translation" failure?
I cannot modify hundreds of legacy files to add the SYS. prefix. How can I resolve this at the database or middleware level?