Oracle APEX生产环境按钮失效求助:RAS is not supported on this system错误排查
Let’s work through this tricky issue—your button works perfectly in development and runs fine when executed directly in the database, but fails in production with a RAS-related error. Here’s a step-by-step breakdown of what to check:
1. Start with RAS Compatibility Basics
First, a critical detail: Oracle Real Application Security (RAS) was introduced in 12cR1, and your production database is 11.2.0.4.0—this version does not support RAS at all. This means something in your production APEX/ORDS stack is trying to invoke RAS functionality that your database can’t handle, while your dev environment avoids this (either via a newer database or different configuration).
2. Disable RAS in ORDS Configuration
Your production ORDS version is 19.2.0.r1991647, which may default to enabling RAS support—even though your 11g database can’t use it. Let’s explicitly turn this off:
- Locate your ORDS configuration file (
ords_params.properties, usually in the ORDS config directory) - Add or update this line to disable RAS:
security.ras.enabled=false - Restart the ORDS service and test the button again.
3. Check APEX Authorization Schemes
It’s possible your production application uses an authorization scheme that relies on RAS, which will fail in 11g:
- Navigate to your APEX app’s Shared Components > Authorization Schemes
- Look for any scheme using the "Real Application Security" type
- If found, switch it to a 11g-compatible type (e.g., "Database Account" or a custom PL/SQL scheme that doesn’t depend on RAS), then redeploy to production.
4. Rule Out Unintended RAS-Related Code/Permissions
Even though your button code runs directly in the database, check for hidden layers in production that might trigger RAS calls:
- Verify
APEX_PUBLIC_USERdoesn’t have unnecessary RAS-related privileges with this query:SELECT privilege FROM dba_sys_privs WHERE grantee = 'APEX_PUBLIC_USER' AND privilege LIKE '%RAS%'; - Look for production-only database triggers, packages, or application processes that invoke
DBMS_RASprocedures (these won’t exist in 11g, so any calls to them will throw errors).
5. Align ORDS and APEX Versions
While APEX 20.2 is technically compatible with ORDS 19.2, newer ORDS versions are better optimized for later APEX releases and handle legacy databases like 11g more gracefully. If disabling RAS via config doesn’t work, consider upgrading ORDS to match your APEX 20.2 version.
内容的提问来源于stack exchange,提问作者Mohamed Shaddad

