Oracle Apps Notes

A collection of my random notes, primarily on Oracle Apps

Upgrade APEX 3.2.1 to 4.1.1 on Oracle Database 11gR2

My previous post listed the steps I had followed while configuring APEX 3.2.1 in Oracle Database 11gR2. Later, I checked the Oracle APEX website and found that the current version was 4.1.1 and it had quite a few interesting new features. The features seemed exting enough to warrant an upgrade. So, here are the steps for upgrading APEX 3.2.1 to 4.1.1 on Oracle Database 11gR2. The installation guide provides the steps in details.

1. Download APEX and unzip it in your server, preserving the directory names. Here, I have kept the zip file under the base directory /home/oracle.


[oracle@db11gr2 ~]$ pwd
/home/oracle
[oracle@db11gr2 ~]$ ls
apex_4.1.1_en.zip bin data
[oracle@db11gr2 ~]$ unzip apex_4.1.1_en.zip

When you unzip it, a directory called apex will be created under the base directory.


[oracle@db11gr2 ~]$ ls
apex apex_4.1.1_en.zip bin data
[oracle@db11gr2 ~]$

2. Change your working directory to apex. For installing a full development environment, connect as sysdba and run apexins.sql passing the following four arguments:

@apexins tablespace_apex tablespace_files tablespace_temp images

tablespace_apex is the name of the tablespace for the Oracle Application Express application user
tablespace_files is the name of the tablespace for the Oracle Application Express files user
tablespace_temp is the name of the temporary tablespace
images is the virtual directory for Oracle Application Express images. To support future Oracle Application Express upgrades, define the virtual image directory as /i/

I ran the script using the following parameters:


@apexins SYSAUX SYSAUX TEMP /i/

It took around 20 minutes for the script to complete execution in my environment and it ended with the following messages.


...Begin key object existence check 01:13:31
...Completed key object existence check 01:13:31
...Setting DBMS Registry 01:13:31
...Setting DBMS Registry Complete 01:13:31
...Exiting validate 01:13:31
timing for: Validate Installation
Elapsed: 00:02:04.78
timing for: Development Installation
Elapsed: 00:14:06.07
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@db11gr2 apex]$

3. Connect as sysdba and run the apxldimg.sql script to update the images directory. Include, as a parameter, the path to the base directory where the APEX installation file was unzipped in step#1.


SQL> connect sys as sysdba
Enter password:
Connected.
SQL> @apxldimg.sql /home/oracle

PL/SQL procedure successfully completed.

old 1: create directory APEX_IMAGES as '&1/apex/images'
new 1: create directory APEX_IMAGES as '/home/oracle/apex/images'

Directory created.
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
Commit complete.

timing for: Load Images
Elapsed: 00:01:21.55

Directory dropped.

SQL>

4. Enable network services for APEX. This is not a mandatory step but is required in case you want to access network services from APEX. Please check the installation document for additional details. To allow access to network services, grant connect privileges to any host for the APEX_040100 database user. This can be done by using the following script. Please check the installation guide on how to allow more fine grained access.


DECLARE
 ACL_PATH VARCHAR2(4000);
 ACL_ID RAW(16);
BEGIN
 -- Look for the ACL currently assigned to '*' and give APEX_040100
 -- the "connect" privilege if APEX_040100 does not have the privilege yet.

SELECT ACL INTO ACL_PATH FROM DBA_NETWORK_ACLS
 WHERE HOST = '*' AND LOWER_PORT IS NULL AND UPPER_PORT IS NULL;

-- Before checking the privilege, ensure that the ACL is valid
 -- (for example, does not contain stale references to dropped users).
 -- If it does, the following exception will be raised:
 --
 -- ORA-44416: Invalid ACL: Unresolved principal 'APEX_040100'
 -- ORA-06512: at "XDB.DBMS_XDBZ", line ...
 --
 SELECT SYS_OP_R2O(extractValue(P.RES, '/Resource/XMLRef')) INTO ACL_ID
 FROM XDB.XDB$ACL A, PATH_VIEW P
 WHERE extractValue(P.RES, '/Resource/XMLRef') = REF(A) AND
 EQUALS_PATH(P.RES, ACL_PATH) = 1;

DBMS_XDBZ.ValidateACL(ACL_ID);
 IF DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE(ACL_PATH, 'APEX_040100',
 'connect') IS NULL THEN
 DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(ACL_PATH,
 'APEX_040100', TRUE, 'connect');
 END IF;

EXCEPTION
 -- When no ACL has been assigned to '*'.
 WHEN NO_DATA_FOUND THEN
 DBMS_NETWORK_ACL_ADMIN.CREATE_ACL('power_users.xml',
 'ACL that lets power users to connect to everywhere',
 'APEX_040100', TRUE, 'connect');
 DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL('power_users.xml','*');
END;
/
COMMIT;

This completes the upgrade leaving you with a new, shiny and feature-filled Oracle APEX 4.1.1 installation.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: