On an existing database, followed the steps to install APEX, and ORDS. However hitting the Apex button gets a 503 error and database connection errors in the log file (which doesnt make sense ).
Database version : 19.24.0.0.0
Apex Version : 24.1 (installed in PDB. all older versions were removed from CDB and PDB)
ORDS version : 24.4.0.345.1601
JDK : Oracle GraalVM 21.0.5+9.1 (tried JDK21 as well, same error)

I can connect to the PDB as ORDS_PUBLIC_USER, and I can also connect as proxy user APEX_PUBLIC_USER (tested with sql developer), so not sure why it says it couldn't proxy.
The hostname, service name is correct.
We can see a connection in the DB under ORDS_PUBLIC_USER, however nothing in the DBA_AUDIT_TRAIL suggests it trying to proxy to APEX_PUBLIC_USER. Have traced the connection as well, no reference to APEX_PUBLIC_USER in the db trace file.
There are no other entries in the DBA_AUDIT_TRAIL for this activity other than LOGON and LOGOFF for ORDS_PUBLIC_USER.

[xyz@xyz scripts]$ ords --config $ORDS_CONFIG install
Picked up _JAVA_OPTIONS: -Xms1126M -Xmx1126M
ORDS: Release 24.4 Production on Fri Dec 27 14:51:10 2024
Copyright (c) 2010, 2024, Oracle.
Configuration:
/u01/ords/config/ords
The configuration folder /u01/ords/config/ords does not contain any configuration files.
Oracle REST Data Services - Interactive Install
Created folder /u01/ords/config/ords
Enter a number to select the database connection type to use
[1] Basic (host name, port, service name)
[2] TNS (TNS alias, TNS directory)
[3] Custom database URL
Choose [1]: 1
Enter the database host name [localhost]: xyz
Enter the database listen port [1521]:
Enter the database service name [orcl]: xyz
Provide database user name with administrator privileges.
Enter the administrator username: sys
Enter the database password for SYS AS SYSDBA:
Retrieving information.
ORDS is not installed in the database. ORDS installation is required.
Enter a number to update the value or select option A to Accept and Continue
[1] Connection Type: Basic
[2] Basic Connection: HOST=xyz PORT=1521 SERVICE_NAME=xyz
Administrator User: SYS AS SYSDBA
[3] Database password for ORDS runtime user (ORDS_PUBLIC_USER): <generate>
[4] ORDS runtime user and schema tablespaces: Default: SYSAUX Temporary TEMP
[5] Additional Feature: Database Actions
[6] Configure and start ORDS in Standalone Mode: Yes
[7] Protocol: HTTP
[8] HTTP Port: 8080
[9] APEX static resources location:
[A] Accept and Continue - Create configuration and Install ORDS in the database
[Q] Quit - Do not proceed. No changes
Choose [A]: 9
Enter the APEX static resources location: /u01/ords/apex/apex/images
Enter a number to update the value or select option A to Accept and Continue
[1] Connection Type: Basic
[2] Basic Connection: HOST=xyz PORT=1521 SERVICE_NAME=xyz
Administrator User: SYS AS SYSDBA
[3] Database password for ORDS runtime user (ORDS_PUBLIC_USER): <generate>
[4] ORDS runtime user and schema tablespaces: Default: SYSAUX Temporary TEMP
[5] Additional Feature: Database Actions
[6] Configure and start ORDS in Standalone Mode: Yes
[7] Protocol: HTTP
[8] HTTP Port: 8080
[9] APEX static resources location: /u01/ords/apex/apex/images
[A] Accept and Continue - Create configuration and Install ORDS in the database
[Q] Quit - Do not proceed. No changes
Choose [A]: A
The setting named: db.connectionType was set to: basic in configuration: default
The setting named: db.hostname was set to: xyz in configuration: default
The setting named: db.port was set to: 1521 in configuration: default
The setting named: db.servicename was set to: xyz in configuration: default
The setting named: plsql.gateway.mode was set to: proxied in configuration: default
The setting named: db.username was set to: ORDS_PUBLIC_USER in configuration: default
The setting named: db.password was set to: ****** in configuration: default
The setting named: feature.sdw was set to: true in configuration: default
The global setting named: database.api.enabled was set to: true
The setting named: restEnabledSql.active was set to: true in configuration: default
The global setting named: standalone.http.port was set to: 8080
The global setting named: standalone.static.path was set to: /u01/ords/apex/apex/images
The global setting named: standalone.doc.root was set to: /u01/ords/config/ords/global/doc_root
The setting named: security.requestValidationFunction was set to: ords_util.authorize_plsql_gateway in configuration: default
2024-12-27T14:54:34.594Z INFO The log file is defaulted to the current working directory located at /u01/ords/scripts/logs/
2024-12-27T14:54:35.770Z INFO Installing Oracle REST Data Services version 24.4.0.r3451601 in xyz
2024-12-27T14:54:38.634Z INFO ... Verified database prerequisites
2024-12-27T14:54:39.422Z INFO ... Created Oracle REST Data Services proxy user
2024-12-27T14:54:40.575Z INFO ... Created Oracle REST Data Services schema
2024-12-27T14:54:41.415Z INFO ... Granted privileges to Oracle REST Data Services
2024-12-27T14:54:46.645Z INFO ... Created Oracle REST Data Services database objects
2024-12-27T14:55:03.555Z INFO Completed installation for Oracle REST Data Services version 24.4.0.r3451601. Elapsed time: 00:00:27.748
2024-12-27T14:55:03.641Z INFO Completed configuring PL/SQL gateway user for Oracle REST Data Services version 24.4.0.r3451601. Elapsed time: 00:00:00.85
2024-12-27T14:55:03.645Z INFO Log file written to /u01/ords/scripts/logs/ords_install_2024-12-27_145434_59651.log
2024-12-27T14:55:04.036Z INFO HTTP and HTTP/2 cleartext listening on host: 0.0.0.0 port: 8080
2024-12-27T14:55:04.084Z INFO Disabling document root because the specified folder does not exist: /u01/ords/config/ords/global/doc_root
2024-12-27T14:55:04.085Z INFO Default forwarding from / to contextRoot configured.
2024-12-27T14:55:09.876Z INFO Configuration properties for: |default|lo|
db.servicename=xyz
db.hostname=xyz
db.password=******
conf.use.wallet=true
security.requestValidationFunction=ords_util.authorize_plsql_gateway
database.api.enabled=true
db.username=ORDS_PUBLIC_USER
standalone.http.port=8080
standalone.static.path=/u01/ords/apex/apex/images
restEnabledSql.active=true
resource.templates.enabled=false
plsql.gateway.mode=proxied
db.port=1521
feature.sdw=true
config.required=true
db.connectionType=basic
standalone.doc.root=/u01/ords/config/ords/global/doc_root
2024-12-27T14:55:09.878Z WARNING *** jdbc.MaxLimit in configuration |default|lo| is using a value of 10, this setting may not be sized adequately for a production environment ***
2024-12-27T14:55:10.979Z INFO
Mapped local pools from /u01/ords/config/ords/databases:
/ords/ => default => VALID
2024-12-27T14:55:11.159Z INFO Oracle REST Data Services initialized
Oracle REST Data Services version : 24.4.0.r3451601
Oracle REST Data Services server info: jetty/12.0.13
Oracle REST Data Services java info: Java HotSpot(TM) 64-Bit Server VM Oracle GraalVM 21.0.5+9.1 (build: 21.0.5+9-LTS-jvmci-23.1-b48 mixed mode, sharing)
2024-12-27T14:57:55.279Z SEVERE <2-9gbWlluTXjwwSZOThFwg> GET troraefsnlt002 /ords/apex 503 The database user for the connection pool named |default|lo|, is not able to proxy to the schema named APEX_PUBLIC_USER. This could be a configured restriction on the maximum number of database sessions or an authorization failure.
ServiceUnavailableException [statusCode=503, logLevel=SEVERE, reasons=[The database user for the connection pool named |default|lo|, is not able to proxy to the schema named APEX_PUBLIC_USER. This could be a configured restriction on the maximum number of database sessions or an authorization failure.]]
at oracle.dbtools.http.errors.ServletResponseExceptionMapper.mapError(ServletResponseExceptionMapper.java:84)
at oracle.dbtools.http.errors.ErrorLogger.log(ErrorLogger.java:27)
at oracle.dbtools.http.errors.ErrorPageFilter.doFilter(ErrorPageFilter.java:111)
at oracle.dbtools.http.filters.HttpFilter.doFilter(HttpFilter.java:47)
at oracle.dbtools.http.filters.FilterChainImpl.doFilter(FilterChainImpl.java:64)
at oracle.dbtools.http.secure.ForceHttpsFilter.doFilter(ForceHttpsFilter.java:74)
at oracle.dbtools.http.filters.HttpFilter.doFilter(HttpFilter.java:47)
at oracle.dbtools.http.filters.FilterChainImpl.doFilter(FilterChainImpl.java:64)
at oracle.dbtools.http.auth.ForceAuthFilter.doFilter(ForceAuthFilter.java:44)
at oracle.dbtools.http.filters.HttpFilter.doFilter(HttpFilter.java:47)
at oracle.dbtools.http.filters.FilterChainImpl.doFilter(FilterChainImpl.java:64)
at oracle.dbtools.http.filters.Filters.filter(Filters.java:67)
at oracle.dbtools.http.entrypoint.EntryPoint.service(EntryPoint.java:70)
at oracle.dbtools.http.entrypoint.EntryPointServlet.service(EntryPointServlet.java:130)
at oracle.dbtools.entrypoint.WebApplicationRequestEntryPoint.service(WebApplicationRequestEntryPoint.java:50)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:584)
at org.eclipse.jetty.ee8.servlet.ServletHolder.handle(ServletHolder.java:640)
at org.eclipse.jetty.ee8.servlet.ServletHandler.doHandle(ServletHandler.java:456)
at org.eclipse.jetty.ee8.nested.ScopedHandler.nextHandle(ScopedHandler.java:181)
at org.eclipse.jetty.ee8.nested.SessionHandler.doHandle(SessionHandler.java:516)
at org.eclipse.jetty.ee8.nested.ScopedHandler.nextHandle(ScopedHandler.java:181)
at org.eclipse.jetty.ee8.nested.ContextHandler.doHandle(ContextHandler.java:879)
at org.eclipse.jetty.ee8.nested.ScopedHandler.nextScope(ScopedHandler.java:152)
at org.eclipse.jetty.ee8.servlet.ServletHandler.doScope(ServletHandler.java:423)
at org.eclipse.jetty.ee8.nested.ScopedHandler.nextScope(ScopedHandler.java:150)
at org.eclipse.jetty.ee8.nested.SessionHandler.doScope(SessionHandler.java:500)
at org.eclipse.jetty.ee8.nested.ScopedHandler.nextScope(ScopedHandler.java:150)
at org.eclipse.jetty.ee8.nested.ContextHandler.doScope(ContextHandler.java:824)
at org.eclipse.jetty.ee8.nested.ScopedHandler.handle(ScopedHandler.java:117)
at org.eclipse.jetty.ee8.nested.ContextHandler.handle(ContextHandler.java:1422)
at org.eclipse.jetty.ee8.nested.HttpChannel$RequestDispatchable.dispatch(HttpChannel.java:1294)
at org.eclipse.jetty.ee8.nested.HttpChannel.dispatch(HttpChannel.java:624)
at org.eclipse.jetty.ee8.nested.HttpChannel.handle(HttpChannel.java:456)
at org.eclipse.jetty.ee8.nested.ContextHandler$CoreContextHandler$CoreToNestedHandler.handle(ContextHandler.java:2375)
at org.eclipse.jetty.server.handler.ContextHandler.handle(ContextHandler.java:1060)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:181)
at org.eclipse.jetty.server.Handler$Sequence.handle(Handler.java:805)
at org.eclipse.jetty.server.Handler$Wrapper.handle(Handler.java:740)
at org.eclipse.jetty.server.handler.EventsHandler.handle(EventsHandler.java:81)
at org.eclipse.jetty.server.Server.handle(Server.java:181)
at org.eclipse.jetty.server.internal.HttpChannelState$HandlerInvoker.run(HttpChannelState.java:661)
at org.eclipse.jetty.server.internal.HttpConnection.onFillable(HttpConnection.java:406)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:322)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:99)
at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53)
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:478)
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:441)
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:293)
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.run(AdaptiveExecutionStrategy.java:201)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:311)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:979)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1209)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1164)
at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: oracle.dbtools.url.mapping.TargetNotAvailableException: The database user for the connection pool named |default|lo|, is not able to proxy to the schema named APEX_PUBLIC_USER. This could be a configured restriction on the maximum number of database sessions or an authorization failure.
at oracle.dbtools.url.mapping.db.PoolInjector.inject(PoolInjector.java:72)
at oracle.dbtools.url.mapping.db.PoolInjector.inject(PoolInjector.java:52)
at oracle.dbtools.url.mapping.db.DatabaseURLMappingBase.injectPLSQLGatewayConnection(DatabaseURLMappingBase.java:1024)
at oracle.dbtools.url.mapping.db.DatabaseURLMappingBase.addServices(DatabaseURLMappingBase.java:375)
at oracle.dbtools.jdbc.pools.JDBCPoolURLMapping.addServices(JDBCPoolURLMapping.java:103)
at oracle.dbtools.url.mapping.URLMappingBase.doFilter(URLMappingBase.java:75)
at oracle.dbtools.url.mapping.db.DatabaseTenantMapping.dispatchSelf(DatabaseTenantMapping.java:216)
at oracle.dbtools.url.mapping.db.DatabaseTenantMappingBase.doFilter(DatabaseTenantMappingBase.java:51)
at oracle.dbtools.url.mapping.tenant.TenantMappingDispatcher.dispatch(TenantMappingDispatcher.java:59)
at oracle.dbtools.jdbc.pools.local.DefaultLocalTenantMapping.dispatchSelf(DefaultLocalTenantMapping.java:153)
at oracle.dbtools.url.mapping.db.DatabaseTenantMappingBase.doFilter(DatabaseTenantMappingBase.java:51)
at oracle.dbtools.jdbc.pools.local.DefaultLocalTenantMapping.doFilter(DefaultLocalTenantMapping.java:109)
at oracle.dbtools.url.mapping.tenant.TenantMappingDispatcher.dispatch(TenantMappingDispatcher.java:59)
at oracle.dbtools.url.mapping.tenant.TenantMappingFilter.doFilter(TenantMappingFilter.java:91)
at oracle.dbtools.http.filters.HttpFilter.doFilter(HttpFilter.java:47)
at oracle.dbtools.http.filters.FilterChainImpl.doFilter(FilterChainImpl.java:64)
at oracle.dbtools.http.forwarding.ForwardingFailedFilter.doFilter(ForwardingFailedFilter.java:41)
at oracle.dbtools.http.filters.HttpFilter.doFilter(HttpFilter.java:47)
at oracle.dbtools.http.filters.FilterChainImpl.doFilter(FilterChainImpl.java:64)
at oracle.dbtools.http.auth.external.ExternalSessionFilter.doFilter(ExternalSessionFilter.java:59)
at oracle.dbtools.http.filters.HttpFilter.doFilter(HttpFilter.java:47)
at oracle.dbtools.http.filters.FilterChainImpl.doFilter(FilterChainImpl.java:64)
at oracle.dbtools.apex.support.auth.ApexSessionQueryRewriteFilter.doFilter(ApexSessionQueryRewriteFilter.java:58)
at oracle.dbtools.http.filters.HttpFilter.doFilter(HttpFilter.java:47)
at oracle.dbtools.http.filters.FilterChainImpl.doFilter(FilterChainImpl.java:64)
at oracle.dbtools.http.cors.CORSResponseFilter.doFilter(CORSResponseFilter.java:90)
at oracle.dbtools.http.filters.HttpResponseFilter.doFilter(HttpResponseFilter.java:45)
at oracle.dbtools.http.filters.FilterChainImpl.doFilter(FilterChainImpl.java:64)
at oracle.dbtools.http.filters.AbsoluteLocationFilter.doFilter(AbsoluteLocationFilter.java:65)
at oracle.dbtools.http.filters.HttpResponseFilter.doFilter(HttpResponseFilter.java:45)
at oracle.dbtools.http.filters.FilterChainImpl.doFilter(FilterChainImpl.java:64)
at oracle.dbtools.http.auth.external.ExternalAccessValidationFilter.doFilter(ExternalAccessValidationFilter.java:59)
at oracle.dbtools.http.filters.HttpFilter.doFilter(HttpFilter.java:47)
at oracle.dbtools.http.filters.FilterChainImpl.doFilter(FilterChainImpl.java:64)
at oracle.dbtools.http.errors.ErrorPageFilter.doFilter(ErrorPageFilter.java:87)
... 51 more
Caused by: oracle.dbtools.common.jdbc.ConnectionPoolConfigurationException: The database user for the connection pool named |default|lo|, is not able to proxy to the schema named APEX_PUBLIC_USER. This could be a configured restriction on the maximum number of database sessions or an authorization failure.
at oracle.dbtools.common.jdbc.ConnectionPoolExceptions.from(ConnectionPoolExceptions.java:63)
at oracle.dbtools.common.jdbc.ConnectionPoolExceptions.from(ConnectionPoolExceptions.java:69)
at oracle.dbtools.common.jdbc.DataSourceConnection.getPooledConnection(DataSourceConnection.java:231)
at oracle.dbtools.common.jdbc.DataSourceConnection.getPooledConnection(DataSourceConnection.java:189)
at oracle.dbtools.common.jdbc.DataSourceConnection.getDefaultConnection(DataSourceConnection.java:144)
at oracle.dbtools.common.jdbc.DataSourceConnection.getConnection(DataSourceConnection.java:58)
at oracle.dbtools.jdbc.pools.JDBCSchemaTarget.getConnection(JDBCSchemaTarget.java:85)
at oracle.dbtools.common.config.db.SchemaConnectionFactoryBase.inject(SchemaConnectionFactoryBase.java:70)
at oracle.dbtools.url.mapping.db.PoolInjector.inject(PoolInjector.java:62)
... 85 more
Caused by: oracle.dbtools.common.ucp.ConnectionLabelingException: Error occurred when attempting to configure url: jdbc:oracle:thin:@//xyz:1521/xyz with labels: {oracle.dbtools.jdbc.label.cleanup=RECYCLE, oracle.dbtools.jdbc.label.schema=APEX_PUBLIC_USER}
at oracle.dbtools.common.ucp.LabelingCallback.handle(LabelingCallback.java:192)
at oracle.dbtools.common.ucp.LabelingCallback.proxyToSchema(LabelingCallback.java:358)
at oracle.dbtools.common.ucp.LabelingCallback.configure(LabelingCallback.java:78)
at oracle.ucp.common.UniversalConnectionPoolImpl.borrowConnectionAndValidate(UniversalConnectionPoolImpl.java:595)
at oracle.ucp.common.UniversalConnectionPoolImpl.borrowConnectionAndValidate(UniversalConnectionPoolImpl.java:277)
at oracle.ucp.common.UniversalConnectionPoolImpl.borrowConnection(UniversalConnectionPoolImpl.java:215)
at oracle.ucp.jdbc.JDBCConnectionPool.borrowConnection(JDBCConnectionPool.java:248)
at oracle.ucp.jdbc.oracle.OracleJDBCConnectionPool.borrowConnection(OracleJDBCConnectionPool.java:629)
at oracle.ucp.jdbc.oracle.OracleConnectionConnectionPool.borrowConnection(OracleConnectionConnectionPool.java:128)
at oracle.ucp.jdbc.PoolDataSourceImpl.getConnection(PoolDataSourceImpl.java:2096)
at oracle.ucp.jdbc.PoolDataSourceImpl.getConnection(PoolDataSourceImpl.java:2075)
at oracle.ucp.jdbc.PoolDataSourceImpl$3.build(PoolDataSourceImpl.java:4462)
at oracle.ucp.jdbc.PoolDataSourceImpl.getConnection(PoolDataSourceImpl.java:1979)
at oracle.dbtools.common.ucp.PoolDataSourceDelegate.getConnection(PoolDataSourceDelegate.java:115)
at oracle.dbtools.common.config.db.RefreshablePoolDataSource.getConnection(RefreshablePoolDataSource.java:109)
at oracle.dbtools.common.ucp.PoolDataSourceDelegate.getConnection(PoolDataSourceDelegate.java:115)
at oracle.dbtools.common.ucp.PoolDataSourceDelegate.getConnection(PoolDataSourceDelegate.java:115)
at oracle.dbtools.common.ucp.PoolDataSourceDelegate.getConnection(PoolDataSourceDelegate.java:100)
at oracle.dbtools.common.jdbc.DataSourceConnection.getPooledConnection(DataSourceConnection.java:213)
... 91 more
Caused by: java.sql.SQLException: ORA-01017: invalid username/password; logon denied
https://docs.oracle.com/error-help/db/ora-01017/
at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:709)
at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:604)
at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:599)
at oracle.jdbc.driver.T4CTTIfun.processError(T4CTTIfun.java:1809)
at oracle.jdbc.driver.T4CTTIoauthenticate.processError(T4CTTIoauthenticate.java:903)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:1100)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:408)
at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:530)
at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:2263)
at oracle.jdbc.driver.T4CConnection.doProxySession(T4CConnection.java:4816)
at oracle.jdbc.driver.PhysicalConnection.openProxySession(PhysicalConnection.java:3618)
at oracle.ucp.jdbc.proxy.oracle$1ucp$1jdbc$1proxy$1oracle$1ConnectionProxy$2oracle$1jdbc$1internal$1OracleConnection$$$Proxy.openProxySession(Unknown Source)
at oracle.dbtools.common.ucp.LabelingCallback$ProxySchemaTask.call(LabelingCallback.java:437)
at oracle.dbtools.common.ucp.LabelingCallback$ProxySchemaTask.call(LabelingCallback.java:425)
at oracle.dbtools.common.concurrent.RetryStrategy.execute(RetryStrategy.java:47)
at oracle.dbtools.common.ucp.LabelingCallback.proxyToSchema(LabelingCallback.java:345)
... 108 more