Oracle Apex 5 - First impressions

The new age Oracle Apex is here to download. Till 16th April it was only available as a preview in Starting yesterday it is available for download.

For the first time, first day first show I could download Apex from otn and install in my local Express Edition database. The installation was smooth only 3 steps. The upgradation steps are clearly mentioned in documentation here.

Step 1: Download zip file from otn
Step 2: Unzip in folder of your choice
Step 3: Run the following command in sqlplus which is connected to sys

@apexins.sql tablespace_apex tablespace_files tablespace_temp images

As I had not created any tablespaces, I simply ran the following command:

@apexins.sql SYSAUX SYSAUX TEMP /i/

Step 4: Login back after the previous step and execute following:

@apxldimg.sql APEX_HOME

APEX_HOME is the folder containing the unzipped downloaded files of apex.

For example

@apxldimg.sql c:\

Step 5: Complete upgrade by updating password:


Now you can navigate to

http://localhost:8080/apex/apex_admin  [Change server ip and port if your installation is not your pc]

But I am getting the following error, but I am ignoring for now. I referred the documentation for "Configuring Static File Support" but did not help. Will have to fix this later.

My first impressions of Apex is that it is superfast. The page loading in created applications were almost instant.

Need to test in an environment which has some applications to judge how migration has affected existing applications. Dont have the bandwidth now. But that is my next plan.

For now enjoying the page designer and Pivot option in Interactive report. These are the major additions to Apex as far as I have seen. More updates later.

Get Image attributes from BLOB

Q: How can I obtain image attributes such as height, width, format from BLOB column?
A: Using Oracle Multimedia ORDImage object type it is possible to get such attributes.

Consider the following example:
  lv_blob                  BLOB;
  unused_attributes        CLOB;
  img_mimetype             VARCHAR2(32);
  img_width                INTEGER;
  img_height               INTEGER;
  img_contentlength        INTEGER;
  unused_fileformat        VARCHAR2(32);
  unused_contentformat     VARCHAR2(32);
  unused_compressionformat VARCHAR2(32);
  SELECT blob_content
  INTO lv_blob
  FROM mytable;
  dbms_output.put_line('Width=' || img_width || ' Height=' || img_height);

You may encounter exceptions while calling this procedure if the image format is not proper. So always wrap this procedure call within an EXCEPTION block and determine the error.

For a list of exceptions which you can handle, check out the documentation.

Learning Git

Now-a-days if you search for any source code, this word is always there. "GIT". What is so special about it?

Well check out the Wikipedia page to know about its history. I would like to borrow one sentence from Wikipedia though:
Git was initially designed and developed by Linus Torvalds for Linux kernel development in 2005
The light bulbs glowed for the first time. I always fancied Linux and its kernel development, though I knew nothing about it. But this was the first time something near to the Linux kernel was available to me, and which could help me manage my source code. Although the learning was mandated for official reasons, I now fancy Git in "all and everything" which I code.

Having said that what is the starting point? I implemented Git in my local development first. My aim was to have Git take backup of everything in my development folder. The starting point was this Git book.

I summarize the tasks I was upto:

  1. Create a fresh project folder
  2. Copy all my required and necessary folders and files
  3. Back them up to a shared folder (server)
  4. Work independently of my local machine