"There is a problem with your environment because the Application Express files are not up-to-date!" Error After Upgrading APEX

Tom LieberTom Lieber
2 min read

On my Autonomouse Database i got this error..

Oracle Support.. : "There is a problem with your environment because the Application Express files are not up-to-date!" Error After Upgrading APEX in the Database (Doc ID 2932174.1)”

And Solutions for Autonomouse

https://blogs.oracle.com/apex/post/running-customer-managed-ords-on-autonomous-database-heres-how-to-get-ready-for-apex-211-upgrade

So i decided to create an scheduler job:

But not within an Procedure is it allowed.

CREATE OR REPLACE PROCEDURE update_apex_image_prefix AS
    v_current_prefix VARCHAR2(255);
    v_new_version    VARCHAR2(20);
    v_new_prefix     VARCHAR2(255);
BEGIN
    -- Get the latest APEX version
    SELECT version_no
    INTO v_new_version
    FROM APEX_RELEASE
    ORDER BY version_no DESC
    FETCH FIRST 1 ROWS ONLY;

    -- Construct the new IMAGE_PREFIX value
    v_new_prefix := 'https://static.oracle.com/cdn/apex/' || v_new_version || '/';

    -- Get the current IMAGE_PREFIX
    SELECT APEX_INSTANCE_ADMIN.get_parameter(p_parameter => 'IMAGE_PREFIX')
    INTO v_current_prefix
    FROM dual;

    -- Check if the IMAGE_PREFIX needs to be updated
    IF v_current_prefix != v_new_prefix THEN
        -- Update the IMAGE_PREFIX if it's different
        APEX_INSTANCE_ADMIN.set_parameter(
            p_parameter => 'IMAGE_PREFIX',
            p_value     => v_new_prefix
        );
        COMMIT;
    END IF;
END;
/

I got this error if i create a procedure..

LINE/COL  ERROR
--------- -------------------------------------------------------------
17/5      PL/SQL: SQL Statement ignored
17/12     PL/SQL: ORA-01031: Keine ausreichenden Berechtigungen
24/9      PL/SQL: Statement ignored
24/9      PLS-00904: Ihre Berechtigungen reichen nicht aus, um auf Objekt PUBLIC.APEX_INSTANCE_ADMIN zuzugreifen

trying it in dbms_scheduler as plsql block it works:
HAAPY IMAGE S



-- Step 2: Create the Scheduler job to run the procedure regularly
BEGIN
    DBMS_SCHEDULER.create_job (
        job_name        => 'update_apex_image_prefix_job',
        job_type        => 'PLSQL_BLOCK',
        job_action      => q'#declare
    v_current_prefix VARCHAR2(255);
    v_new_version    VARCHAR2(20);
    v_new_prefix     VARCHAR2(255);
BEGIN
    -- Get the latest APEX version
    SELECT version_no
    INTO v_new_version
    FROM APEX_RELEASE
    ORDER BY version_no DESC
    FETCH FIRST 1 ROWS ONLY;

    -- Construct the new IMAGE_PREFIX value
    v_new_prefix := 'https://static.oracle.com/cdn/apex/' || v_new_version || '/';

    -- Get the current IMAGE_PREFIX
    SELECT APEX_INSTANCE_ADMIN.get_parameter(p_parameter => 'IMAGE_PREFIX')
    INTO v_current_prefix
    FROM dual;

    -- Check if the IMAGE_PREFIX needs to be updated
   -- IF v_current_prefix != v_new_prefix THEN
        -- Update the IMAGE_PREFIX if it's different
        APEX_INSTANCE_ADMIN.set_parameter(
            p_parameter => 'IMAGE_PREFIX',
            p_value     => v_new_prefix
        );
        COMMIT;
  --  END IF;
  dbms_output.put_line('YES');
END;#',
        start_date      => SYSTIMESTAMP,
        repeat_interval => 'FREQ=DAILY; BYHOUR=2',  -- Runs daily at 2 AM; adjust as needed
        enabled         => TRUE
    );
END;
/
0
Subscribe to my newsletter

Read articles from Tom Lieber directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Tom Lieber
Tom Lieber

Databaseguy, Oracle Apex Lover