Monday, May 10, 2010

Application Express 4.0 Early Adopter Phase 3 is now available

The third (and hopefully final phase) of Oracle Application Express 4.0 Early Adopter is now available. A new instance with the latest build of Application Express 4.0 is now available on http://tryapexnow.com.

If you had used the second Application Express 4.0 Early Adopter instance, your workspace and schema have not been migrated to this instance. You will need to sign up for a workspace but you shouldn't have to take the survey again. The original Application Express 4.0 Early Adopter 2 instance is available at http://184.73.244.154/apex, and it will be available for the next couple of weeks.

Thanks to everyone who has participated and provided feedback, as the feedback and suggestions have been invaluable as always.

Tuesday, April 06, 2010

Oracle Learning Library

Marcie Young, from Curriculum Development, has just released the Oracle Learning Library. This is an application which she developed on apex.oracle.com and is a directory listing of free online training from Oracle - Oracle By Examples, Tutorials and Demonstrations. This application lets you search for free training covering numerous product and functional categories. Product categories include Database, Beehive, Enterprise Linux, Enterprise Manager, Fusion Middleware, JDeveloper and Oracle VM.

Tuesday, March 30, 2010

Memorials for Scott Spadafore



There will be two memorials for our dear friend, Scott Spadafore:


Saturday, April 10, 2010 at 2:00P PDT
Clovis Masonic Lodge
375 5th Street (at DeWitt)
Clovis, CA 93612


+1.559.299.4992


and


Saturday, May 1, 2010 at 2:00P PDT
Santa Cruz Masonic Lodge
828 N. Branciforte Avenue
Santa Cruz, CA 95062


+1.831.423.1530



In lieu of flowers, donations may be made to a college fund for Scott’s daughters, Blaire and Keely. Checks should be payable to:


SCOTT SPADAFORE MEMORIAL FUND


and donations can be sent to:


SSMF
PMB#3
1187 N. Willow Avenue, #103
Clovis, CA 93612

Monday, March 22, 2010

Scott Spadafore

I am quite saddened to say that our friend, team mate and long time contributor to Oracle Application Express, Scott Spadafore, died last night of a heart attack.

Scott has made extraordinary contributions to Oracle Application Express since he joined our team in 2001. Scott also worked tirelessly for many years on the Application Express discussion forum on OTN, where he helped (literally) thousands of customers to become successful with Application Express. His patience and precision were to be admired.

I ask that you pray for Scott's wife, Gail, and their two daughters, at this difficult time.

Friday, February 26, 2010

Application Express 4.0 Early Adopter Phase II is available

The second phase of the Application Express 4.0 Early Adopter is now available. A new instance with the latest build of Application Express 4.0 is now available on http://tryapexnow.com.

  1. This database was created with database character set AL32UTF8 (we're still a little confused by the Amazon Machine Images from Oracle aren't already AL32UTF8.
  2. The Websheets feature is now available. The security of Websheet applications still needs to be refined, but the functionality and ease of creation of these types of applications is amazing.
  3. The new tree region makes its debut.
  4. Collections now support NUMBER and DATE
  5. apex_collection.create_collection_from_query_b and apex_collection.create_collection_from_queryb2 support bind variables and row limits
  6. Debugging and logging has been completely rewritten - no longer is debug output emitted within the page, but it's collected and can be viewed later (and also queried via views).
  7. You won't be able to see this, but the tablespaces / data files of provisioned workspaces will now autoextend
  8. There have been many improvements in the Plug-In infrastructure, which Patrick will surely expand upon.
  9. A Migration Assistant has been created, which lets you upgrade all of the elements of your pre APEX 4.0 application in one place.
  10. Native validations and declarative validations have also been rewritten and improved (again, Patrick will expand upon this).
  11. All of the item types have been consolidated (so you no longer see 1,000 different Date Picker types in your item type select list, as well as other item types)
  12. A large number of bugs and usability issues have been corrected, thanks in a large part to the tremendous amount of feedback we received.
This isn't an exhaustive list. The updated list of new features will be available on tryapexnow.com.

If you had used the first Application Express 4.0 Early Adopter instance, your workspace and schema have not been migrated to this instance. You will need to sign up for a workspace but you shouldn't have to take the survey again. The original Application Express 4.0 Early Adopter instance is available at http://184.73.244.154/apex, and it will be available for the next couple of weeks.

Thanks to everyone who has participated and provided feedback, as the feedback and suggestions have been invaluable.

Wednesday, February 24, 2010

FamZoo goes live!


Nine years ago, when Oracle started down the path of turning Application Express (nee HTML DB) into a real, supported product that was shipped with the Oracle database, we had the good fortune of being mentored and led by Bill Dwight. Bill was a hands-on Vice President in the Oracle Tools division and he led the development of JDeveloper, Developer, Forms, Designer, and iLearning. Bill had a lot of experience and success at Oracle, but also he had the right kind of savvy to guide us from a "project" to a product. He imparted a lot of sound advice that still helps us today.

Fast forward to today, and Bill Dwight is the founder and CEO of FamZoo, Inc. In a nutshell, FamZoo is "a family-friendly web site that helps parents teach their children the practical skills they’ll need to thrive in the real world." FamZoo the company, and FamZoo the Web site have been under development and in private beta for a few years, but as of January 21, 2010, FamZoo is now open for business to the public. As you navigate around the FamZoo site, you'll see the tell-tale signature of Application Express in the URL. There is an extensive FamZoo tour also available.

FamZoo has been an interesting case-study for Oracle Application Express, in that:
  1. They made the conscious decision to write the customer-facing portions of FamZoo in lovingly hand-crafted HTML / JavaScript / AJAX. According to Bill, this was important because "our consumer facing UI is very, very custom and particular - a key part of our brand."

  2. The internal administration and dashboard pages of FamZoo were written using the traditional wizards and declarative APEX infrastructure.

  3. Even with the very custom customer-facing UI, they still capitalize on other benefits of the Application Express framework, including security, session state, page templates, etc.

  4. With the exception of one local APEX instance for upgrade testing, the development and deployment of FamZoo has been done on commercial, hosted instances of Application Express from two different hosting providers. Not only was this extraordinarily cost effective, but it let the FamZoo team focus on building their business and their brand, and not have to worry about database and Web site administration, backups, power, etc.

The user interface of FamZoo is really superb and the overall flow and navigation of the site is elegant. To develop this kind of site takes a lot of time and effort and careful planning, regardless of the development framework that is chosen. I'm just happy they chose to go the Application Express route.

Monday, February 08, 2010

Making apex.oracle.com fast (again)

For the latter part of 2009, the performance on apex.oracle.com was lacking at times, to put it kindly. As evidenced by this long-running thread on the APEX discussion forum on OTN, performance issues started cropping up in August and things only got worse as the year went on. Ben Burrell, a very frequent contributor on the APEX discussion forum said it best with:


"The dedication and patience shown by the contributors to this forum is nothing short of incredible. Oracle should be magnificently proud of the APEX community - and reward it with a decent service."


I wholeheartedly agree! The least Oracle can do for the army of APEX experts who graciously give of their time to help others with Application Express is provide them a usable service. Additionally, for those users of Application Express who sign up for a test account on apex.oracle.com, a first impression is everything. Even if the cause of the issue is not "an APEX problem", per se, it will always have the perception that APEX is slow and cannot scale.

This has been a learning experience for me, and I'm simply here to report a number of the issues uncovered and the steps we took to remedy them.




1) KeepAlive - In November 2009, I was monitoring the database listener log files. There were a very large number of incoming connection requests to the database listener - in some instances, on the order of 30 connection requests per second. One of the most expensive actions you can take is to establish a new database session, hence, why session pooling is so commonly used. As it turns out, an administrator had turned off the KeepAlive setting in Oracle HTTP Server. Every new APEX page view request had to establish a new database session. For a site that gets millions of page views a day, this is not good. I had them turn KeepAlive back to On and with a KeepAliveTimeout of 6 seconds. As busy as apex.oracle.com is today, we now only average about one new database session request every 10 to 15 seconds.




2) robots.txt - The robots.txt file is supposed to be used by Web crawlers and search engines, although not all of them seem to observe it. This file enables a Web site administrator to control when Web crawlers are allowed to crawl a site and how frequently. The "window" of time that we permitted Web crawlers was too great - that's the last thing we want is to have some new user of Application Express competing for the same resources with some Web crawler which is hurling requests at our site. So I reduced the open window for Web crawlers: http://apex.oracle.com/robots.txt.




3) Number of Database Access Descriptors - Since the days of the original 'marvel.oracle.com', the Database Access Descriptor used for the site was named 'otn'. Earlier this year, I wanted to have apex.oracle.com support the documented and standard Database Access Descriptor named 'apex', so we added that one to our configuration. Then, with the migration of AskTom to the apex.oracle.com instance, we created a third Database Access Descriptor named 'asktom' (otherwise, we would have broken any bookmarks to Tom's questions and answers).

The Web server software used by Oracle Global IT on this instance is Oracle Application Server 10.1.2. Unfortunately, Oracle HTTP Server and mod_plsql do not support true connection pooling in this version (see the documentation for the explanation). Each HTTP Server process would establish and maintain a database connection per DAD - that's three database connections times the number of HTTP Server processes. There are two Web servers that front-end apex.oracle.com - so 2 Web servers * 3 connections per Oracle HTTP Server process * 200 - 250 HTTP Server processes - and we easily had more than 1,000 database sessions during peak times. Even if only a handful of these sessions were active at any given time, the memory consumed by all of these sessions was too large. So large, that the system log was recording messages like "Out of Memory: Killed process 31088 (oracle)" every few minutes. Not good.

With the help of Kris Rice, we were able to remove the 'asktom' Database Access Descriptor and replace it with the following rewrite directives in httpd.conf:

RewriteEngine On
RewriteCond %{THE_REQUEST} ^.*/pls/asktom.* [NC]
RewriteRule ^.*/pls/asktom(.*)$ /pls/apex$1 [NC,QSA,PT]

With this one change, the database server wasn't swapping memory and the OS was not randomly killing processes because it was out of memory. The next day, Tom even commented how snappy it was.




4) File System Caching - The system administrators reviewed the network performance and I/O systems. They changed the "noac" and "actimeo" parameters so that the system would cache file system parameters, thus reducing the I/O on the system. Remember that this was a database with over 15,000 tablespaces and datafiles - that's a lot of potential I/O savings. Don't ask me for any more detail on this one, though - it's beyond my domain of expertise.




5) Purge of Stale Workspaces - There is no built-in workspace purging process in Application Express. The way the process has worked over the past 3 or 4 year is I personally would run a hand-crafted collection of custom PL/SQL programs which identified the workspaces that have not been touched in the last 45 days, notify the administrators of these workspaces via e-mail that their workspace was going to be purged, let them retain the workspace if they wished, and then after a two-week period - go through and purge the ones which hadn't been retained.

The problem with this solution is that apex.oracle.com would go through these peaks and valleys - dropping to 7,000 workspaces and then over time, creep up to 17,000 workspaces. I would manually run the purge process a year later, bring it back down to 8,000 workspaces, and then the process starts all over again. The system would be fastest after the purge and then slowly degrade over time.

I rewrote the purge process from scratch, but this time, I designed it to run perpetually (I have to give credit to my manager, Mike Hichwa, for this idea). The parameters are roughly the same - every night, it wakes up, computes who hasn't used their workspace in the past N days and isn't already on "the list", sends the administrators an e-mail, gives them the chance to retain their workspace, sends a reminder 3 days in advance of the purge, and and then after a total of 10 days, purges the workspace. Purging the workspace involves dropping the tablespace & data file, dropping the database user corresponding to the workspace schema, and deleting the workspace and all associated meta data. The great thing is this runs every day - I don't have to kick it off and monitor it, I just get daily e-mails about the status and statistics.

Since the first workspace was purged by this process on January 18, 2010, this perpetual purge process has been used to remove 5,998 workspaces and 5,860 tablespaces, reclaiming 64,531,415,040 bytes from the file system. And now apex.oracle.com is on auto-pilot.

My manager, Mike Hichwa, also suggested I simply fold this feature into Application Express 4.0 - so Application Express can become a self-maintaining system. I'm not convinced this feature would be used by that many customers outside of apex.oracle.com. I tend to believe DBA's and our customers would rarely want to automatically drop data.




6) Memory - This past Saturday, February 6, 2010, the memory on apex.oracle.com was upgraded from 16 GB to 32 GB. Since then, the machine is really very, very fast. I've monitored the system load and it is consistently running at about 50% of maximum capacity, even during peak times.




Going forward, I am going to request that we upgrade the database to version 11.2.0.1. Additionally, I am going to request an upgrade to Oracle HTTP Server which supports true connection pooling and which should dramatically reduce the number of overall database sessions to the database server, itself. If the upgrade to Oracle HTTP Server can't be done in a reasonable time frame, then I'm going to try to setup server-side pooling via Database Resident Connection Pooling. Even though I always advise against multiplexing multiplexed connections, I can't really describe the connection pooling on our version of Oracle HTTP Server today as "multiplexed."

If I were in charge of this site, I would have done these upgrades yesterday. But probably like the company you're at, our IT organization that actually runs this site has their software levels and it takes time to uptake new versions and roll it out. I'm not complaining, as I understand and appreciate this when you have to manage hundreds of databases and Web applications, as they do.


Contrary to some assertions, the performance of apex.oracle.com was of great concern to us and to me personally. However, you cannot fix a problem until you have diagnosed the actual cause of the issue. And unfortunately, that takes time. Additionally, some of these steps took a great deal of time to actually implement and test before rolling out on apex.oracle.com. As much as I would have liked to flip the "fast=true" bit, that wasn't reality. This has been a learning process and one which will ultimately benefit the users of apex.oracle.com going forward as well as the product, Oracle Application Express. I am grateful to those customers and members of the APEX community for their patience during this time. To paraphrase Frank Costanza, "We're back, baby!"

Wednesday, January 27, 2010

The Perils of Modifying the Application Express Metadata

Last week, Oracle Support contacted me about an escalated Service Request they received from a customer. This customer, who was running Application Express 3.2, was unable to take an application export file from their production environment and import it into their development environment. During import, it would fail with:


ORA-20001: GET_BLOCK Error. ORA-20001: Execution of the statement was unsuccessful. ORA-00001: unique constraint (APEX_030200.WWV_FLOW_WORKSHEET_RPTS_UK) violated


I received a copy of this application export file, uploaded it to apex.oracle.com, and immediately ran into the same error when I attempted to install it into my workspace. Unfortunately, the customer was in a situation where they could no longer import this application into any other workspace or instance. It appeared that the generated export file and metadata on their production instance was corrupted.

How did they possibly get into this state? Well, it was a sequence of:

  1. The customer was first directed to David's blog posting at http://dpeake.blogspot.com/2009/01/preserving-user-saved-interactive.html.
  2. That was unsatisfactory, so they followed a link to Martin's blog posting at: http://apex-smb.blogspot.com/2009/10/saving-saved-interactive-reports-when.html
  3. Then, not based on any information in either of these blog postings, the customer dropped a unique index and disabled two foreign key constraints from the APEX_030200 schema.
  4. Finally, via some manual DML, it appears that the customer was able to modify the metadata of saved Interactive Reports such that they now violated the conditions of this unique constraint.

While I completely understand why the customer went down the path that they did (to restore their end user's Interactive Reports), they should have never resorted to manually modifying the metadata and database objects in the Application Express schema. Fortunately, I was able to easily reproduce the customer's problem and was able to craft a custom patch script for their environment to restore what had been done to it.

Did the customer perform an action which was unsupported by Oracle Support which resulted in the corruption of their environment? Yes. Did the customer have any recourse? No, not really. Was Oracle Support obligated to help this customer recover? Maybe not. But even though they knowingly did this, I didn't want to have one unhappy Oracle and APEX customer when we were done.

In general, Oracle Support will make every effort to help a customer with their Oracle Application Express product issues. But in cases like this one, where the customer performed actions directly against the undocumented, internal Application Express schema, there really aren't any guarantees that Oracle Support nor Application Express product development will be able to help a customer recover from this type of corruption.

Typical unsupported actions which can lead to corruption include dropping users, revoking privileges, dropping/modifying constraints, inserting/updating/deleting data, etc.. This situation is really no different than if a customer dropped SYS.STANDARD from their database or dropped internal packages or views from their eBusiness Suite environment.

Moral of the story: When you're considering to directly modify any objects in the Application Express schema, it's in your best interest to abstain.

Monday, January 25, 2010

Application Express 4.0 Early Adopter Refresh is coming

The Application Express 4.0 Early Adopter's program at http://tryapexnow.com has been a smashing success, so far. 2,440 workspaces have been requested and created on this instance, and a plethora of feedback has been received. Our customers have reported both bugs and made numerous feature suggestions, some of which you will see implemented in Application Express 4.0 production. So thank you for this tremendous amount of participation - this is further proof that Application Express has such a vibrant community.

In the coming weeks, we will be refreshing the Application Express 4.0 Early Adopter's Instance with an updated build of Application Express 4.0. One of the significant features to be enabled in this build will be Oracle Application Express Websheets.

Although it has been our intention to preserve the existing workspaces when we install the new Application Express 4.0 environment, the odds are about 97% that you will need to sign up for an entirely new workspace and schema - that is, nothing from the current Early Adopter's will be preserved. An application export *may* work in the updated instance, but that is not guaranteed either. Certainly, though, all of the submitted feedback from our customers will be preserved and available. We'll provide advance notice of at least a couple weeks before this refresh (really, "rebuild") of the environment will take place. And this new environment will happen in a database with an AL32UTF8 character set.

Thank you for your many contributions to the success of Application Express 4.0.

Wednesday, January 06, 2010

OTN Developer Day in the Big Apple

For those of you in or near New York City, next week Wednesday, January 13, 2010, at the New York Marriot Marquis, there is an Oracle-sponsored OTN Developer Day- Hands-on Oracle Database 11g Applications Development. There are four different tracks, and one of the tracks is dedicated to Oracle Application Express. The other three tracks are for Database Development, Java and .NET.

This event is free. Also, you should bring your own laptop for the labs throughout the day. You'll walk away with a virtual machine containing Oracle Database 11gR2 with Oracle Application Express 3.2.1 installed. Lastly, this will be a good time to meet with several members of the Oracle Application Express development team, including Mike Hichwa (our VP), Marc Sewtz, David Peake and Christina Cho.

Sunday, December 20, 2009

A few notes about the Application Express 4.0 Early Adopter

  1. The database character set is WE8MSWIN1252. When we create the Early Adopter 2 instance of APEX 4.0 (hopefully in January, 2010), the database character set will be AL32UTF8. Unfortunately, today you may experience some character conversion errors if you attempt to use characters outside of the character set (e.g., Chinese, Japanese, Hebrew, Arabic, etc.).
  2. We will notify people in advance, at least a week, when we will install APEX 4.0 Early Adopter 2.
  3. When APEX 4.0 Early Adopter 2 is installed, it is our intention to preserve the workspace definitions, your workspace credentials, and also your schema (objects and data). However, any APEX applications will be purged. You may be able to export the applications beforehand and import them into APEX 4.0 EA2, but that's not guaranteed.
  4. APEX 4.0 Early Adopter 2 will add Websheets in addition to better support for Internet Explorer, among other things.

Thursday, December 10, 2009

Moving table data from SQL Developer into Application Express using XML

Gary, an Application Express customer for many years, recently sent me a message with a problem he was having getting table data, exported from Oracle SQL Developer in XML format, into Oracle Application Express. He pointed me to his post on the Oracle Application Express discussion forum on OTN.

Using the EMP table as an example, he showed me that the data he exported from SQL Developer looked something like:


























He originally thought that Application Express was choking on the CDATA values. It isn't that Application Express didn't like the CDATA elements, it's just that they are two completely different XML formats. Underneath the hood, Application Express uses DBMS_XMLSAVE.INSERTXML for the XML loading, and it uses the default ROWSET and ROW tags. SQL Developer, for whatever reason, uses a different format. Maybe there's a way to control this in SQL Developer, but I'm not aware of it.

So how do we transform the XML from SQL Developer into something compatible with the standard ROWSET format used by Application Express? Well...this is exactly what XSLT was designed for. I'm no XSLT expert, but I learned enough from Carl's examples to accomplish this type of simple transformation. You can use any XSLT engine to do this type of transformation, but I chose to use Microsoft's command-line utility, msxsl, to do this.

1) Before I did anything else, I had to re-generate the XML from SQL Developer so the DATA type data values would be in the canonical date format used by Application Express XML data loading. To do this, from the SQL Worksheet in SQL Developer, I issued the statement:

alter session set nls_date_format = 'rrrr-MM-dd"T"HH24:mi:ss."000"'



And then exported the data from SQL Developer to XML again, which now gave me:



























2) mxsxl did not like the encoding the SQL Developer included in my XML file (it will give an error like "System does not support the specified encoding.") So I edited the XML file from SQL Developer and changed:

encoding='Cp1252'

to

encoding='utf-8'

In my case, this didn't present a problem, as I have all ASCII characters in my XML file.


3) Then, I created a text file named 'emp.xslt' with the following contents:




















4) Finally, using the command-line in Windows, I simply issued:


msxsl emp.xml emp.xslt




And voilà! I was able to take:




























And turn it into:




7839
KING
PRESIDENT

1981-11-17T00:00:00.000
5000

10


7934
MILLER
CLERK
7782
1982-01-23T00:00:00.000
1300

10



ready for loading into Application Express, and all with just a little bit of XSLT.

I haven't tested what is output from SQL Developer for CLOBs and BLOBs, so I can't speak for this solution for those types. But for the most common data types, this simple transformation can work quite easily.

Thursday, November 12, 2009

(ā'pěks)

At the ODTUG APEXposed conference in Atlanta this week, a customer asked me to blog about how to abbreviate and pronounce the abbreviation for Oracle Application Express. I've seen numerous abbreviations (Apex, ApEx, APPEx, AppEx, APEX), and I think the lack of a formal abbreviation lends to the confusion in pronunciation. So here goes:

  1. Whenever an abbreviation is used in informal writing, it's abbreviated in all uppercase: APEX
  2. It's pronounced (ā'pěks). It's a long 'A' as in 'acorn'.
  3. In formal written materials from Oracle, it is always written as 'Oracle Application Express' and never abbreviated.

In conversation and in some presentation materials, you will see the Oracle Application Express team use the above spelling and pronunciation.

----

Update on March 29, 2020:  In formal, written materials, you can also use Oracle APEX.

Monday, November 02, 2009

Who uses asktom.oracle.com?

I have dedicated a couple posts to describe who is using apex.oracle.com. I have focused on the scalability of the Application Express environment on relatively cheap hardware. And towards the end of September, we moved asktom.oracle.com to apex.oracle.com. So why not combine the best of these topics and post about who is using asktom.oracle.com?

AskTom officially moved to apex.oracle.com on 18-SEP-2009. I turned on Google Analytics a day or two later. So my snapshot of asktom.oracle.com covers the period from September 20, 2009 through November 2, 2009 - not quite a month and a half.

Some interesting statistics:

  1. There were 517,599 "visits" and 1,005,189 page views.
  2. 78% of the page views were from hits from search engine results pages (thanks for the clarification, John Scott).
  3. 53% of the browsers are Internet Explorer - a number that I suspect gradually declines over time
  4. People found the site searching for 'ORA-00604' more than they found it by searching for 'tom kyte'. As a shareholder of Oracle, this statistic concerns me.
  5. The lion's share of visits comes from the United States, followed by India, United Kingdom, Germany and Canada.
All in all, though, I'm quite happy with these numbers, and how it shows that the existing hardware on apex.oracle.com and this large database (with over 10,000 workspaces/users/tablespaces) was able to absorb the additional load with no problem.


asktom.oracle.com Google Analytics - 20091102

Wednesday, October 21, 2009

Certification Exam for Oracle Application Express

Oracle is in the process of preparing a certification exam for Oracle Application Express. Passing this exam will qualify someone as an "Oracle Application Express Developer Certified Expert." This certification is intended for intermediate to advanced APEX Developers who have at least 6 months experience using Oracle Application Express.

Participants for the very first pilot exam are being recruited now. Keep in mind - the feedback and recommendations from the participants of this exam will help shape this course, so some feedback will be expected. More information can be found at:

http://www.oracle.com/goto/apexpilot

Friday, October 09, 2009

Going to Oracle OpenWorld 2009?

Are you going to Oracle OpenWorld 2009? If so, I encourage you to look us up. The primary Application Express location will be in the DemoGrounds in Moscone West, stations W1, W2 and W3. As you walk into the DemoGrounds, this will be in the front on the left side. David has a map here.

A large majority of the Application Express product development team will be there, including Mike, Christina, David, Marc, Scott, Jason, Patrick, Hilary and Anthony. This is always a very rewarding event for us, as we get to learn directly from our users how they're using Application Express and what they want in the future. We'll also give you a demonstration of what is coming in the future.

Please stop by - we would love to meet you.

Friday, September 18, 2009

AnyChart AnyMap updated in Application Express 3.2.1

As John Allen pointed out in the APEX discussion forum on OTN, when using the recently bundled and licensed AnyMap files with Application Express 3.2.1, a license message of "Your license does not include the AnyMap extension" was displayed on the rendered map.

This problem is now corrected in Application Express 3.2.1. The full download from OTN has been updated with this new file as well as the Application Express 3.2.1 patch set on Oracle MetaLink (Patch Number 8548651). The file that has been updated is /images/flashchart/swf/AnyChart.swf, and this would need to be replaced in your current images directory for Application Express 3.2.1. This has also been corrected on http://apex.oracle.com.

If you have already installed/upgraded to Application Express 3.2.1 and you want to get this new file:

  1. Download the Application Express 3.2.1 patch set from MetaLink and apply it to your Application Express 3.2.1 instance. If you're running the XDB HTTP Protocol Server/embedded PL/SQL Gateway, all you'll really need to do is run the SQL script apxldimg.sql to restage all of the files in the /images/ directory in XDB. If you're using Oracle HTTP Server, then you can just simply copy the updated /images/flaschart/swf/AnyChart.swf file to your existing /images/ directory.

  2. If you don't have access to MetaLink, then you'll need to download the full Application Express 3.2.1 distribution and put this new AnyChart.swf file in place - either in XDB or in your existing /images/ directory.

Unfortunately, Oracle Database 11gR2 11.2.0.1 will continue to ship with this previous AnyChart.swf file, and if you wish to use the maps or Gantt charts, you'll need to download the Application Express 3.2.1 patch set from Oracle MetaLink and apply it.

There is no declarative interface in Application Express 3.2.1 to create maps or Gantt charts. You'll need to understand their respective APIs to be able to use these components in your Application Express application. But the maps and Gantt charts are included in the license for Application Express 3.2.1. The declarative interface to maps and Gantt charts is coming in Application Express 4.0, and you'll be able to see this in action at Oracle Open World 2009.

Who uses apex.oracle.com (an update)

In February 2008, I posted "Who uses apex.oracle.com?". I thought it was time for a quick update.

I have left the same Google Analytics code in place. And keep in mind - this has only been tracking users who hit the login page on apex.oracle.com and nowhere else - not within Application Express after logging in, not those users who go directly to Carl Backstrom's or Denes Kubicek's or Mark Lancaster's sample applications, nor those users who go directly to ProMED Mail. It only tracks those who go to the login page.


apex.oracle.com Google Analytics - 20090918


So what can we conclude?

  1. United States still holds the top spot - not surprisingly since we tend to talk about APEX a little more (as a lot of us live and work in the U.S.)
  2. India has surpassed the United Kingdom
  3. Colombia shot up from 22 to 9.
  4. Romania moved from 8th to 4th - a strong showing.
  5. There were previously 122 distinct countries that touched apex.oracle.com. Now it's up to 152 distinct countries.
  6. Some dude in New Caledonia checked out Application Express and never came back.


In hindsight, I should have left this Analytics JavaScript code in place in the System Message itself, so I could track who actually logs in and uses Application Express - I'll add it back now. But this explains why you see a difference with statistics from February 2008 with the Pages/Visit and Average Time on Site - I've only been tracking the login page.

Oracle Multimedia DICOM demonstration application available

I won't pretend to be an expert in DICOM - Digital Imaging and Communications in Medicine. But I do know that the Oracle Multimedia team are experts in this field, and they recently released a new packaged application which demonstrates the use of DICOM Medical Image Support in the Oracle Database 11g, all from within an Application Express application. This just further illustrates my point that Oracle Application Express, instead of insulating you from the database via multiple layers and stacks and tiers, enables you to readily exploit the native functionality of the Oracle Database, like Oracle Multimedia and the DICOM features.

From Melli, the Oracle Multimedia Product Manager:

The DICOM sample application shows how the database can be used to store and manage DICOM medical images and illustrates how quickly Oracle technology (DICOM functionality and Application Express) can be used to build an archive to manage medical images. With this archive application, clinicians can easily browse the images, share images with other clinicians, and search images.

The DICOM sample application is demonstrated in a browser. Because a DICOM viewer is not available, full-size JPEG images and JPEG thumbnail images are created using Oracle Multimedia DICOM features. These images are stored in a main archive table, along with the original DICOM images. Additionally, all the meta data from the DICOM images is extracted from the DICOM images to enable searching based on DICOM meta data.


The DICOM Image Archive Demonstration application can be downloaded from the Oracle Application Express Packaged Applications. You can also preview the DICOM Image Archive Demonstration as well as the DICOM Image Archive Administration applications, all running on (you guessed it) apex.oracle.com.

Ask Tom moved to apex.oracle.com

For those who are familiar with Tom Kyte and his site Ask Tom, this is now running on apex.oracle.com. Don't believe me? Then compare http://asktom.oracle.com and http://apex.oracle.com/pls/otn/f?p=100:1.

This turned out to be a fairly painless exercise. I actually moved the application about 4 months ago, created the workspace, created the ASKTOM database user, did an initial database import of his database objects and data, imported his application, changed all of the references to images and CSS's in a custom /i/asktom_i directory to be Shared Components of the application, and then worked with Global IT to setup the proper definition of this new Virtual Host and other Web Server configuration. Then it was just a simple matter of timing, to coordinate the DNS switch (which Global IT handled) and the Data Pump export and import (which Tom handled - I tried to think of someone more qualified and could not).

The switch from the old server to the new application on apex.oracle.com happened yesterday at 16:48P EDT (GMT - 04:00). Since then, roughly 16 hours ago, we've had 24,701 page views on the AskTom application. And Tom went so far as to describe the performance as "snappy".

I warned Tom that there is an ongoing issue with some users and the network performance to apex.oracle.com, and that the new AskTom would be inheriting this issue, but so far, no issues have been reported. And for the person who will undoubtedly call me out and say "apex.oracle.com is not intended for production applications", that is a correct statement - if you're not ProMED or AskTom and you don't work in my group, consider it only your playground and demonstration instance.