Thanks to Joel (https://www.blogger.com/profile/01915290758512999160)
January 2017, I had a meeting with Dr. Sriram Birudavolu from Hyderabad. He got my attention when he said he would love to start a 1000-person APEX Meetup group in Hyderabad (gotta love aggressive goals!). However, he spent much of December and January just trying to figure out how to get APEX installed, configured and running. He won’t profess to be an expert, but he’s exactly the type of person we want to enable. He was correct in saying that if a potential customer struggles to get APEX installed, we’ve already lost.
Recently, Gerald Venzl asked for some assistance in creating a Docker image for APEX. His goal was to create an APEX Docker image on top of the base Oracle Database Docker image. He knows a lot about Docker, but he won’t claim to be an expert in APEX. He wanted something that is scriptable and can result in APEX being installed, configured and up and running, along with ORDS, in as few steps as possible. A “silent install”, if you please. This was the final bit of motivation I needed for this blog post and video.
While the installation documentation is complete and detailed, it’s also lengthy and sometimes confusing – especially for the new person. Thus, I wanted to provide the simplest set of instructions with as few steps as possible to get APEX installed, configured and up and running, along with ORDS configured and up and running. It can be done in two steps. That’s right, two. While I explain the individual steps executed from SQL*Plus in detail below, you can combine all of these SQL commands into a single SQL script. I prefer the name “hookmeup.sql”.
1. Download and unzip APEX http://www.oracle.com/technetwork/developer-tools/apex/downloads/index.html
2. cd to apex directory
3. Start SQL*Plus and ensure you are connecting to your PDB and not to the “root” of the container database (APEX should not be installed at all):
sqlplus sys/your_password@localhost/your_pdb as sysdba @apexins sysaux sysaux temp /i/
4. Unlock the APEX_PUBLIC_USER account and set the password:
alter user apex_public_user identified by oracle account unlock;
5. Create the APEX Instance Administration user and set the password:
apex_util.set_security_group_id( 10 );
p_user_name => ‘ADMIN’,
p_email_address => ‘email@example.com’,
p_web_password => ‘oracle’,
p_developer_privs => ‘ADMIN’ );
apex_util.set_security_group_id( null );
6. Run APEX REST configuration, and set the passwords of APEX_REST_PUBLIC_USER and APEX_LISTENER:
@apex_rest_config_core.sql oracle oracle
7. Create a network ACE for APEX (this is used when consuming Web services or sending outbound mail):
for c1 in (select schema
where comp_id = ‘APEX’) loop
l_apex_schema := c1.schema;
host => ‘*’,
ace => xs$ace_type(privilege_list => xs$name_list(‘connect’),
principal_name => l_apex_schema,
principal_type => xs_acl.ptype_db));
8. Exit SQL*Plus. Download and unzip ORDS http://www.oracle.com/technetwork/developer-tools/rest-data-services/downloads/index.html
9. cd to the directory where you unzipped ORDS (ensure that ords.war is in your current directory)
10. Copy the following into the file params/ords_params.properties and replace the contents with the text below (Note: this is the file ords_params.properties in the “params” subdirectory – a subdirectory of your current working directory):
# CUSTOMIZE db.servicename
# CUSTOMIZE standalone.static.images to point to the directory
# containing the images directory of your APEX distribution
11. Configure and start ORDS in stand-alone mode. You’ll be prompted for the SYS username and SYS password:
java -Dconfig.dir=/your_ords_configuration_directory -jar ords.war install simple –preserveParamFile
That’s it!! You should now be able to go to http://localhost:8080/ords/, and login with:
IMPORTANT, PLEASE READ:
By no means is this a recommended or secure installation. These are minimal instructions to get someone from zero to up and running easily and quickly. In a production instance, I would create different tablespaces for APEX and ORDS, I would use far more complex and distinct passwords, I would use HTTPS and not HTTP, I would deploy ORDS on a physically distinct server, and more.
The above steps were tested with Oracle Application Express 5.1.1.00.08, Oracle REST Data Services 3.0.9, and Oracle Database 188.8.131.52 running on Oracle Linux.