Is it possible to accidentally use some paid feature in Oracle XE database while in an Enterprise environment?
-
22-02-2021 - |
Question
IT in my org are wary about approving me installing Oracle Express Edition. https://www.oracle.com/database/technologies/xe-downloads.html
Their reasoning is that apparently some DBA once said that devs can trigger some enterprise features accidentally while using it, and rack up hundred thousands of dollars in usage fees. I'm skeptical because I can't find any information online that would suggest that. Though I know Oracle doesn't have a great reputation.
From looking at XE description, it seems to be designed so that devs can install it on their environments to get a prototype working etc. Without having to worry about fees and licenses. Is it true, can using Oracle XE on my dev box in a large company somehow rack up fees without knowing about it?
Solution
Oracle Express Edition is free software that can be used even for commercial purpose.
What the DBA said is true for Enterprise Edition where some features can not be completely disabled (e.g. Advanced Compression), and it was true for Standard Edition in versions below 11g (e.g. Diagnostic Pack).
Express Edition will be fine.
For a personal learning/development environment, you could even use Enterprise Edition, if you will be the only one using it.
OTHER TIPS
Any Oracle licencing questions are ultimately determined by Oracle. It would be hard to incur extra costs but if you could enable these features which are not available by default in 10g/11g Xe you could have an audit issue. The use of
- partitioned objects
- internal Java virtual machine (JVM)
- materialized view query rewrite
- changing character set on 11.2 (only AL32UTF8 is allowed)
However in the 18g express version partioning is enabled and advanced security so that would be a better choice.
Tim Hall has this query which shows what features have been used
SELECT u1.name,
u1.detected_usages,
u1.currently_used,
u1.version
FROM dba_feature_usage_statistics u1
WHERE u1.version = (SELECT MAX(u2.version)
FROM dba_feature_usage_statistics u2
WHERE u2.name = u1.name)
AND u1.detected_usages > 0
AND u1.dbid = (SELECT dbid FROM v$database)
ORDER BY name;