Since its release in 10gR1, Oracle have consistently added neat functionality to the “new” scheduler with every database release. Yes, I still call it the new scheduler and you would be surprised how many people still insist on using DBMS_JOB rather than switching to DBMS_SCHEDULER.
Oracle Database 12c Release 2 (12.2) is no exception to this pattern, as once again we have some new stuff to play with.
In website housekeeping news, each scheduler article on the site was getting loaded down with links to other scheduler articles, so I’ve collected them all together into a section on one of my links pages, along with a feature list breakdown, so you don’t have to trawl through all the articles to get to the bit you need. You can see that section here.
For many people the simple example in the first article I wrote on the scheduler will be all they ever use, but it’s good to know what it’s capable of doing, especially when you see what some people get up to with CRON. 🙂
Update: For the person that just contacted me about the non-transactional nature of DBMS_SCHEDULER, I wrote about this here and finally raised an SR about it some time ago. That was converted to a bug, which was then altered to an enhancement request.
Bug 21247177 : DBMS_SCHEDULER JOB NOT DELETED WITH ROLLBACK, WHEREAS DBMS_JOB JOB DOES
This issue is still present in 12cR2, with a workaround of using DBMS_JOB. 🙂
A little over a year ago I was at the BGOUG Spring Conference and I watched a session by Maja Veselica about auditing in Oracle Database 12c. At the time I noted that I really needed to take a look at this new functionality, as is was quite different to what had come before. Fast forward a year and I’ve finally got around to doing just that. 🙂
I’ve tried to keep the article quite light and fluffy. The Oracle documentation on this subject is really pretty good, so you should definitely invest some time reading it, but if you need a quick overview to get you started, my article might help. 🙂
I guess the big news is the new “script jobs”, which are pretty cool. This kind-of passed me by until Brynn Llewellyn mentioned them at UKOUG in his Multitenant presentation, at which point I made a note to check them out.
I’ve been having some trouble with the “BACKUP_SCRIPT” jobs up until a few minutes ago. My problem was I couldn’t see what the stdout/stderr text was, so I couldn’t determine why there were not working. The “$ORACLE_HOME/scheduler/log” directory was empty and there were no messages in the trace files or alert log. Then I stumbled upon the new columns added to the ALL_SCHEDULER_JOB_RUN_DETAILS view. The OUTPUT column, not surprisingly, gives you the output from the scripts. Once I could see the error message it took me a few seconds to fix the issue and Bingo! 🙂
The new job types are a nice addition, allowing you to run file-based scripts or incline scripts much more easily that before.
Another one to file under “Not sexy but flippin’ awesome!”
If you are a DBA, you are going to spend a lot of time with Data Pump. All roads seem to lead back to it. 🙂 There are some more headline worthy features, like transportable database, but the two that jumped out at me were actually pretty small, but awesome.
“TRANSFORM=DISABLE_ARCHIVE_LOGGING:Y” – Switches table and/or index imports to NOLOGGING for the lifespan of the import operation.
“LOGTIME=ALL” – Puts a timestamp in the output message so you can see how long individual operations took.
Over the last year I’ve heard a few speakers talk about these enhancements, but I got myself into a right pickle while I was working through this. If you caught the first draft of this article you would see I made a complete mess of it and jumped to all the wrong conclusions. Having worked through it again with fresh eyes, it all became clear. Of course, if you didn’t see the first draft, then ignore what I said. The article has always been perfect. 🙂
I think I will carry on doing some of the simple stuff to build my confidence before I can tackle something big, like pluggable databases. 🙂
Update: Note to self. Searching the 11gR2 docs for “PRAGMA UDF” is unlikely to result in you finding this 12c feature. Who’da thunk it? Thanks to Tom Kyte for pointing me to the correct doc reference. I’ve altered the searches on my homepage to default to the 12c docs, so hopefully I won’t be such a Muppet next time. 🙂
I do think there are some real security issues with some of this stuff if it is used unwisely though. The remote jobs (external and database) just strike me as a disaster waiting to happen in the wrong hands. 🙂