Blog update!

Hi everyone!

This blog hasn’t seen any updates since over a year now and I do apologize for that. However, the reason for that is simple. Last year I’ve decided to take on a new project. But before I was going to tell everybody about it I wanted to make sure that I also really got the time to do so. In the meantime I got the confidence that the project will succeed and that I have enough time to take it forward. So, how to say it… it’s almost like breaking up with a girlfriend. Well, here it is: I got a new one! Blog I mean of course. Last year in August I started a new blog: https://blogs.oracle.com/developer/
The intention of that blog is to show how write the right code for using Oracle technologies. Over the years I’ve seen a lot of badly written code that would never ever perform on top of technologies such as the Oracle Database. Unfortunately, I’ve also not seen too many folks that did understand Database performance and were good programmers. There seems to be a gap between the database world and the programming world, well I’m sure that that doesn’t come as a surprise to you. So, with this new blog I want to bridge the gap as good as I can.

Let’s stay friends!

However, this blog is not dead yet! The other blog is for a very specific goal. But there is more in my IT life than just that. And everything that doesn’t fit into the above one will sooner or later end up here. That being said, the above one will definitely get more attention from me going forward so you may want to add that one to your RSS Reader as well!

Last but not least: I’ve also finally managed to go live on Twitter. If you prefer that way of communication you can follow me @GeraldVenzl

Oracle 12c R1 background processes

Here is yet another Oracle 12c post to add to all those out there and this one starts with a question: How many background processes exist in an Oracle DB 12.1 environment to date? Just take a moment and take a guess, if you haven’t already seen the bold number coming up. The answer is: 108! That is with all the available bells and whistles turned on but it gives you an idea of how much engineering has gone into the Oracle Database over all those 30+ years. In Oracle 12c there is a total of 19 new background processes meaning that if you are running in an 11gR2 environment you will only have 92. Wait, 92? 108 – 19 = 89 and not 92. Those numbers don’t add up so what happened? It is one of those questions I get these days when talking about 12c. Although you can’t change it anyway people want to know what has changed between the versions and I guess: Fair enough. So there you have it, the reason for this post: To share my little research and perhaps answer the same question from one or two people out there before it reaches me via other channels. Or worst case, a link that I can copy/paste rather than having to type this all over again. Continue reading “Oracle 12c R1 background processes”

Best hidden features in Oracle

I seem to get into a lot of conversations around Oracle Database Options lately. Of course the Database Options are great, no doubt about it. But people sometimes seem to forget what the word “option” means. There is a reason why Oracle doesn’t put everything into one big product but gives you editions and options and the reason is simple: Not everybody will probably need the full feature set of the Oracle RDBMS. There are over 380 features within the Oracle Database which make it to the best relational database out there and I haven’t seen a single occurrence yet where all of those 380+ features are exploited within one installation. Most of the time people aren’t even aware of the feature richness of the Oracle Database.
Well, as you can imagine not all of those features ended up in Database Options but a lot of them are part of the core product and available in Standard Edition One, Standard Edition and Enterprise Edition. You got them as soon as you purchased a license for any of those three editions. A lot of you will probably still not need all the features that come as part of the editions but here is a list of what I consider the “Best hidden features in Oracle”:

  1. XML DB (this is probably the best hidden gem ever! Since 11g XML DB became really powerful and is a lot more than just a XMLTYPE BLOB data type)
  2. Text (full text search functionality)
  3. SQL Developer (check out early adopter version 4)
  4. SQL Pattern Matching (new in 12c)
  5. Temporal Database (new in 12c, no more start and end timestamps in every table)
  6. Recovery Manager (aka RMAN, no more full export, shutdown and data files copy every night)
  7. Application Express (also known as APEX, build sophisticated web-based applications directly on top of the database. Another feature that got really powerful lately!)
  8. Locator (ever come across geospatial requirements like which of my customers live closest to which branch of my store?)
  9. Enterprise Manager Express (although Enterprise Manager Cloud Control is free itself, Oracle Database 12c comes with a bundled Express version for its own instance management. This is great when you have just a single installation sitting somewhere which you either can’t deploy to your EM Cloud Control installation or you don’t have an EM Cloud Control installation)
  10. Fail Safe (High availability for Windows)

Java class finding tool: ClassFinder

I got into more coding again lately and that is a good thing I think. I’m a believer of the German saying “Wer rastet, der rostet” or in English: A rolling stone gathers no moss! Java seems to be my main programming language since quite a while now. But believe it or not I’m still coding some PL/SQL as well now and then. Anyway, sometimes when you get some ClassNotFound exceptions in Java it can be quite handy to have a little tool that can scan .jar and .zip files for the class that you’re missing. Yes, there are tons of those little programs out there on the web but as you might have guessed by the title I’ve decided to write yet another class finding tool. Damn, I really should have called it YACFT! But instead I did go for ClassFinder. Why did I write yet another class finding tool then? Well, although there are some good ones out there, non of them fulfilled all of my requirements – at least none of those that I have found. First I was a big fan of Xigole’s classfinder tool. A really slick, fast and easy to use command-line class finding tool which is really great for Unix systems where you ssh in. However, I soon got fed up with it when I did have a proper graphical interface available, whether it was Windows or X11 or simply my MacBook Pro. So I started searching for other tools and soon found that they were either just GUI based or just GUI based and on Windows only (Why? I don’t get it!) or GUI based on ugly AWT. But all that I wanted was a slick tool like Xigole’s that was clever enough to spawn a GUI when there was X11 available but still provide a nice CLI when there wasn’t. Well, as I said I couldn’t find one, so I wrote my own and here it is, ClassFinder:

ClassFinder Window-mode

It’s really easy to use:

  1. Give it either a file or a folder to search – files currently supported are .jar, .war, .ear, .zip, .rar, .class, .java
  2. Give it the class name that you’re looking for
  3. Shall the class name be case sensitive?
  4. Shall the folder be searched recursively?
  5. Hit Search!

Continue reading “Java class finding tool: ClassFinder”

Oracle 12c R1 enqueue waits

Just as with the new Oracle 12c R1 lock types it’s time to take a quick look at the new enqueue waits in 12c. Oracle 11.2.0.3 had a total of 304 enqueue waits. 12.1 has a total of 418. A lot of work seems also to have happened on ASM in this release. The amount of new enqueues per group looks as follows:

Group Amount
ASM Enqueue 16
Enqueue-Cross SCN 12
Backup/Restore 11
Queue Ptning global enq 8
Being Written Redo Log 8
SGA Log-Bkt Flush 6
AM Container 5
Media Recovery 5
OLS groups 4
Instance Recovery 3
AVM RTA Access 3
AM Contained File Identification 3
Privilege Capture API 2
Queue table enqueue 2
Label Security Profile 2
RFS Logminer FLC 2
Data Guard Broker 2
IOServer File 2
Queue Partitioning local enqueue 2
Column Key 1
Flush Stat 1
Pluggable Database 1
SGA Log Operation 1
AM Group Rebuild/Validate 1
Real-Time ADDM Flood Control 1
AM Contained File Resize 1
PDB DDL Operations 1
non durable sub bmap alloc 1
CBAC Master Lock 1
IOServer Client 1
PDB Instance State 1
Oracle File System Operation 1
KJCI Serialization Enqueue 1
Spillover Audit files 1
Application Continuity 1
File Set / Dictionary Check 1

Continue reading “Oracle 12c R1 enqueue waits”