APEX : Keeping up to date is so easy…

Over the years I’ve extolled the virtues of Oracle Application Express (APEX) because of the ease of development. I think low code tools are a massive boon to productivity. Of course there are some tasks that need alternative tools, but for many scenarios low code tools are awesome.

Something else I find really appealing about APEX is the ease of upgrades. I’m not talking about how easy it is to apply the upgrade itself, because updating Java and Tomcat versions on a server is really easy too. I mean how simple it is from a wider perspective.

I was the first person in my company to use APEX. I used it to write some utility type applications, when it was still “forbidden”. Some of these applications were written over a decade ago, and they are still working fine. In that time we’ve had regular APEX upgrades, and they’ve just kept going. No refactoring. No drama.

Of course, they aren’t using all of the new features that were added in subsequent releases, but the important thing is all that development investment was not impacted by staying on the latest APEX release and patch set. In comparison, updating some of our other platforms and frameworks is a nightmare, requiring substantial development effort and testing.

So it’s not just about improving productivity during the development phase. It’s also about the reduction in the total cost of ownership (from a development perspective) over the lifespan of the application.

Just thought I would share that thought, as I upgrade & patch some production systems… πŸ™‚

Cheers

Tim…

APEX 22.2 : Vagrant and Docker Updates

I know it’s hard to believe that anything happened last week other than the implosion of Twitter, but APEX 22.2 was also released.

As normal, this resulted in a bunch of updates to my builds.

Vagrant

All relevant Vagrant builds were updated to include APEX 22.2. Many had been updated recently to bring them in line with the latest Oracle security patches. You can find the build here.

https://github.com/oraclebase/vagrant

Docker/Container

As with Vagrant, all the relevant Docker/Container builds have been updated to 22.2. You can find the build here.

https://github.com/oraclebase/dockerfiles

Real World

If the release had been a couple of weeks earlier I would have been able to push it out during this quarters patching cycle. Unfortunately this release will now how to wait until the January 2023 patching cycle for me to push it out at work.

Our APEX upgrades/patches are automated (as mentioned here), so I could push this release out at the press of a button, but all the relevant teams would have to do their testing, and that probably isn’t going to happen until the next patching cycle, so it’s just going to wait until then. πŸ™

My Suggestion

Even if your work environment moves forward at a slower pace than you would like, it still makes sense to keep a test/play environment at the latest and greatest versions, so you can learn the new stuff and see what issues are coming round the corner for your applications.

All my home builds are now on APEX 22.2, running on the beta release of the Oracle Games Console (#OGC). πŸ˜‰

Cheers

Tim…

ORDS and APEX 22.1 : Vagrant and Docker Builds

I was on top of the recent ORDS 22.1 release, but somehow I managed to miss the APEX 22.1 release. Here’s an update on what’s been going on with my builds…

Vagrant Builds

A number of my Vagrant database builds include APEX. Those that do have been updated to use APEX 22.1. You can find them here.

They had already been updated to use the latest versions of Java, Tomcat, ORDS and SQLcl where appropriate, so the APEX upgrade was a small change. The ORDS update was done 11 days ago. It was a bigger update, as the installation process for ORDS 22.1 has changed quite a bit. I wrote about that here.

You can read my beginner’s guide to Vagrant here.

Docker/Container Builds

I have some ORDS containers that include the APEX images, so those image builds have been updated to use ORDS 22.1 and APEX 22.1 images now.

APEX is also included in the database builds. You can find them here.

I was a little slow to add the updates to the Docker builds. The Tomcat and SQLcl changes were done a couple of weeks ago, but I’ve only added the Java, ORDS and APEX changes today. I held back a little on the ORDS 22.1 changes, as I was rewriting a bunch of articles that were affected by the installation and configuration changes.

You can read my Docker/Container articles here.

Real Life

We probably won’t be putting APEX 22.1 live until the next patching cycle, which will be July. In the past I could be quite aggressive about the upgrades, but as APEX is becoming more important in the organisation, the rollout of updates has to be a bit more considered. πŸ™‚

The same will probably be true for the ORDS 22.1 rollout. We run ORDS in containers, so it’s really quick and easy to replace all the infrastructure, but I wanted to be a bit cautious because of all the changes in the new version. Having played with it a bit now, I’m feeling a lot more confident, but at the time we were starting our patching cycle I was too nervous to include it.

As far as home systems are concerned, I only use the latest and greatest, unless there is a compelling reason not to. πŸ˜‰

Cheers

Tim…

APEX 21.2 : Vagrant and Docker Builds

Unless you live under a rock, you’ll have seen APEX 21.2 was released yesterday. Being the worlds worst APEX developer, I’m not going to speak about the new release, as I’ll just embarrass myself, but I did want to give a heads-up of what I’ve been doing since the release.

Vagrant Builds

A number of my Vagrant database builds include APEX. Those that do have been updated to use APEX 21.2. You can find them here.

They had already been updated to use the latest versions of Java, Tomcat, ORDS and SQLcl where appropriate, so the APEX upgrade was a small change.

You can read my beginner’s guide to Vagrant here.

Docker/Container Builds

I have some ORDS containers that include the APEX images, so those image builds have been updated to use the APEX 21.2 images now. You can find them here.

As with the Vagrant builds, these had already been updated to use the latest versions of Java, Tomcat, ORDS and SQLcl where appropriate.

You can read my Docker/Container articles here.

Thoughts

It’s taken a long time for us to roll out APEX 21.1 at work. Most of that delay is because of competing priorities. We’ve been pushing the Oracle 19c database upgrades hard, and it’s not left much space to focus on APEX. The last of our production systems will be upgraded to APEX 21.1 next week, so I’m not sure how eager people will be when I start pushing 21.2. πŸ™‚ I’ll try, but it might have to wait until next quarter’s security patching. We’ll see.

Despite that, APEX 21.1 is now dead to me. Long live APEX 21.2. πŸ™‚

Cheers

Tim…

My APEX History #JoelKallmanDay

For my entry in the Joel Kallman Day (#JoelKallmanDay) I thought I would run through my history of using Oracle Application Express (APEX).

I was aware of Web DB, but I never used it. I have this vague memory of taking a look at it, but that was all.

I remember Tom Kyte mentioning Flows and later Project Marvel, and being a Tom Kyte fanboy it sparked my interest. At that point the tool felt kind-of awkward to use, and since I had no pressing need for it, it got relegated to an idle curiosity for me. I would have a play, then ignore it for months. I kept my eye on it during the HTML DB and early APEX days, but it was still not something I used regularly. Typically what would happen is I would need to do something, I would “re-learn” APEX to do it, finish that task, then forget about it for months. The next time I needed APEX, it would often be a new version, so I would “re-learn” it again…

In 2009 I went to ODTUG in Monterey, and there was an APEX symposium as part of the conference, so I made it my mission to pick APEX sessions as much as possible. It was good to connect with some of the folks in the APEX community. Even back then it was one of the most dynamic Oracle communities. I knew a few of the folks already through meeting at other conferences, but it was fun to immerse myself in APEX for a while.

After that conference I slipped back into the habit of re-learn it, forget it, relearn it. I was constantly aware of it, and able to do relatively simple developments, but I never focused on it long enough to get good. Remember, my job didn’t involve that type of development, so it was hard to spend too much time on it.

Since joining my current company in 2012 I’ve used APEX a lot more. It started off with me writing little PL/SQL utilities for people and giving them a front end using APEX. Things like reports on interface staging tables, screens to manage database users and some simple CRUD apps. At that point APEX was kind-of underground in the company. There was only really me using it. As time went on I kept pushing it and gradually it started to pick up some momentum. We now have a few people that do APEX development as part of their role. At this point I’m relegated to managing the infrastructure behind it, and problem solving when people hit an issue. I’ve seen and heard so much over the years that it’s often easier for me to solve certain problems. Also, I know a lot of good people who can help. πŸ™‚

I have this joke that I’ve got more than 15 years “experience” of APEX, but I’m the worlds worst APEX developer. Despite that, I know enough to know APEX is probably the most productive way to develop applications against an Oracle database. The “Low Code” nature of it is great for people with less experience of database development, but it’s also a great way to make skilled developers super productive!

I’ve written a small number of articles about APEX over the years, as well as some surrounding technologues.

So there you have it. My life as the worlds worst APEX developer on the planet. πŸ™‚

Cheers

Tim…

Don’t be a moron. Install APEX in all your Oracle databases!

If you come from an Oracle background you know what Application Express (APEX) is. You know it’s an awesome low-code development environment, and you know it can turn DBAs and PL/SQL developers into productive members of society in no time at all. πŸ™‚

Even if you don’t want to use APEX, you should install APEX anyway, because it comes with some really handy PL/SQL packages. These come to mind.

APEX_WEB_SERVICE : I’ve written my own APIs in the past, but I never use them anymore. I recommend people make web service callouts from the database using the APEX_WEB_SERVICE package. You can use it for REST and SOAP calls, and it works equally well for JSON and XML web services.

APEX_JSON : Oracle included some JSON functionality in Oracle 12.1, but they only completed the implementation in Oracle 12.2. If you are working with a database version older than Oracle 12.2 and you care about JSON, you need the APEX_JSON package.

APEX_DATA_PARSER : This package allows you to convert CSV, JSON, XML and XLSX data into rows and columns. It’s really simple to use!

APEX_ZIP : You can do some simple gzip/gunzip stuff with the UTL_COMPRESS package, but the APEX_ZIP package allows you to zip up multiple files into an archive, or extract files from an existing archive.

APEX_MAIL : This package gives you an API over the APEX mail functionality. It’s more flexible than the UTL_MAIL package, and is much simpler than writing your own APIs using the UTL_SMTP package.

APEX_STRING : I always used to use the STRING_TO_TABLE and TABLE_TO_STRING functions in the APEX_UTIL package. Those have now been moved to the APEX_STRING package. You might prefer to use the SPLIT and JOIN functions instead. There is also a bunch of other string handling stuff worth checking out.

Every release brings more goodies for PL/SQL programmers, regardless of whether you want to use APEX or not!

So do yourself a favour. Install APEX into all your Oracle databases and make your PL/SQL developers happy.

Cheers

Tim…

PS. I don’t actually think you are a moron if you don’t install APEX. If you take the title of blog posts seriously, when they are clearly clickbait, maybe you are a moron…

Update: There seems to be a little confusion on some social media comments. Installing APEX into a database doesn’t mean APEX is available for people to develop applications. You can only use APEX proper if you have a gateway (ORDS, EPG, mod_plsql) fronting it. Without a gateway, APEX doesn’t work. Someone can’t take it upon themselves to run a gateway somewhere else if they don’t know all the passwords, so installing APEX and using it are not the same thing. Installing it does make the built-in packages available for normal PL/SQL development, which is really handy. Hence this post.

Video : APEX_MAIL : Send Emails from PL/SQL

In today’s video we’ll demonstrate how to use the APEX_MAIL package to send emails from PL/SQL.

The video is based on this article.

You may also want to check out these articles.

The star of today’s video is Paul Vallee, who knocked it out of the park with his recent post on hybrid working.

Cheers

Tim…

Video : APEX_ZIP : Manage Zip Files From PL/SQL

In today’s video we demonstrate the APEX_ZIP package, which allows us to manage zip files from PL/SQL.

The video is based on this article.

I must admit I hadn’t even noticed this package until Morten Braten mentioned it on Twitter.

The star of today’s video is Patrick Jolliffe, who is now a resident of Portugal.

Cheers

Tim…

APEX Application Development Service on Oracle Cloud

A few days ago Oracle announced the APEX Application Development Service on Oracle Cloud.

I had a sneak peak of this service last October. I’ve used APEX since it was know as Project Marvel, but despite this I’m renowned as the worst APEX developer on the planet. I think I was invited as a control subject… πŸ™‚

The main thing I’m expecting from any platform is it must be as “administration free” as possible. APEX is a low-code development tool. Some APEX developers will have a lot of database administration skills, but some will not. I wanted to see a service that got people up and developing safely, with as little administration fuss as possible. I think that’s what Oracle have delivered, which makes me really happy.

These new APEX instances are built on Autonomous Transaction Processing (ATP) instances, with some of the functionality disabled. There is a simpler route to create them using the “APEX Application Development > APEX Instances” menu, but you can create them through the normal Autonomous Database creation screens also.

Existing ATP instances can be accessed through the simplified interface, which is a nice touch.

I did my own run through of setting up an APEX instance here. I’m not going to talk much about the service, because there are lots of great APEX bloggers that are a better source of information than me. Make sure you check them out!

Happy APEXing!

Cheers

Tim…

Vagrant & Docker Builds : APEX 20.2 and other updates

The recent release of APEX 20.2 has triggered a build frenzy.

Vagrant

All my GitHub Vagrant builds that include APEX have been updated to APEX 20.2. The builds themselves are unchanged. This was literally an update to the environment files, so it took longer to test the builds than it did to make the changes.

While I was at it, I did a couple of extra updates. I updated Tomcat to version 9.0.39 on all relevant builds, and updated the optional patch script for the single instance database 19c on OL8 build to use the October 2020 bundle patch. The GI bundle isn’t available yet, so I’ve not altered the OL8 19c RAC build. That will happen soon.

Update: I’ve got the GI bundle patch now, and the OL8 19c RAC build has been updated to use it.

There will of course be more updates to the builds once we get the new versions of AdoptOpenJDK, ORDS and SQLcl, that are probably coming soon.

Packer

I mentioned in my VirtualBox 6.1.16 post I would be updating the oraclebase/oracle-7 and oraclebase/oracle-8 vagrant boxes to include the VirtualBox 6.1.16 guest additions. Those are done now.

Docker

This is pretty much the same as the Vagrant story.

The relevant GitHub Docker builds for Oracle database and ORDS containers have been updated to include APEX 20.2.

I’ve also added Tomcat 9.0.39 to the ORDS builds, and updated the optional patch script for the database 19c on OL8 build to use the October 2020 bundle patch.

Once again, more changes will appear as the new versions of AdoptOpenJDK, ORDS and SQLcl appear.

Conclusion

Automation is awesome! A few minutes and we are bang up to date!

Cheers

Tim…