How to ensure you only use Oracle features you paid for.
Oracle is well-known for its license audits. In these audits, they come in and check if you are using any of the features of the Oracle database that you didn’t pay. For some of these features, it is quite common that you use them without actually knowing you do. This scares a lot of IT managers. What if I get an audit and without us knowing, we use a lot of features. In this blog post we’re going to tell you how you can use Puppet in combination with our
ora_config
module to be in control of the situation.
How does it work?
Most of the licensed features are a regular part of the database functionality. But you don’t have to pay for them when you are not using them. Sometimes, however, developers or DBA’s use these paid features without being aware of it. Oracle registers all of the activations in the database. When there is an Oracle License audit, one of the steps Oracle takes, is fetching this information from the database and checking the usage against actual licenses.
Seeing the current feature usage
The Puppet type ora_feature_usage
allows you manage and get a view of all licensed features and their usage on a current node. To get an overview of the current usage, log into the system and use the command:
$ puppet resource ora_feature_usage
This command will log into your database and fetch all features and look into the database how many times they where used. The output looks something like this:
ora_feature_usage { 'active_data_guard@MYDB':
max_usage => '0',
}
ora_feature_usage { 'advanced_analytics@MYDB':
max_usage => '0',
}
ora_feature_usage { 'advanced_compression@MYDB':
max_usage => '0',
}
...
lines removed
...
ora_feature_usage { 'real_application_clusters@MYDB':
max_usage => '14',
}
ora_feature_usage { 'spatial_and_graph@MYDB':
max_usage => '0',
}
ora_feature_usage { 'tuning_pack@MYDB':
max_usage => '45',
}
As you can see, Puppet reports both features that are not (yet been) used (max_usage => 0
) as well as features that already have been used (where max_usage
is not 0). When you look at this overview, you can instantly see the features that have been used somewhere in time between now and when the database was created. You should have a license for all features that have a non-zero number in the max_usage
property.
Managing feature usage
If only you could disable the features that you didn’t purchase. That would make life much simpler. Unfortunately, you can’t. So we have to do something different. And using Puppet, we can. Since Puppet already runs periodically on our system, it is well suited to report when features are used that we didn’t want to be used.
To do this, you can add the current feature usage to your manifest. Lets say the tuning_pack
features is something we didn’t license and want to make sure it isn’t used. Then we’d have to add this code to our manifest:
ora_feature_usage { 'tuning_pack@MYDB':
max_usage => '0',
}
Every time the Puppet agent runs, it will check the current usage against the specified value. If it is different, it will report this. Default, this is a warning:
Oracle database feature tuning_pack used more than specified max_usage(0)
But sometimes organizations ignore warnings. If you want to make sure this kind of noncompliance is noticed, you can also instruct Puppet to signal an error:
ora_feature_usage { 'tuning_pack@MYDB':
max_usage => '0',
when_used => 'error',
}
In this case, Puppet will report the noncompliance and fail.
Reporting
When you are using ora_feature_usage
in combination with Puppet Enterprise, the reporting features of Puppet Enterprise help you to provide the license auditors with a track record of feature usage. When a feature is used by accident, but you have taken counter measures and can show the auditors that after the initial usage, the usage_count
didn’t increase, you are likely in a better position for negotiations then when you don’t have this information.
Do you want to be in control?
If you would like to have control of your licensing too, contact us so we can discuss the possibilities.