This blog contains experience gained over the years of implementing (and de-implementing) large scale IT applications/software.

SAP – Oracle on VMware

Whilst researching the whole Oracle on VMware thing recently, I found a great number of articles on the subject.  Here’s a collection of the links I found most helpful whilst getting to know the principles of virtualisation all the way through to publicly available information on the performance of Oracle on the VMware vSphere platform.

Hardware Abstraction Layer definition (https://en.wikipedia.org/wiki/Hardware_abstraction_layer).

Hypervisor:
Wikipedia definition (https://en.wikipedia.org/wiki/Hypervisor),
VMware’s definition (https://blogs.vmware.com/vmtn/2007/03/hypervisor_that.html),
VMware’s definition (https://www.vmware.com/technical-resources/advantages/robust-foundation.html).

Intel VT-x Instruction Sets (https://www.intel.com/technology/itj/2006/v10i3/1-hardware/5-architecture.htm).

VMware ESX and ESXi:
What does ESX stand for (https://vmfaq.com/entry/32/),
Comparing ESX with ESXi (https://www.vmware.com/products/vsphere/esxi-and-esx/compare.html),
ESXi v5.0 released (https://www.vmware.com/company/news/releases/vmw-vsphere-ga-082511.html),
ESXi architecture white paper (https://www.vmware.com/files/pdf/ESXi_architecture.pdf).

VMware vSphere:
Product offerings (https://www.vmware.com/products/vsphere/mid-size-and-enterprise-business/buy.html),
Support (https://www.vmware.com/support/services/options.html),
Kits (https://www.vmware.com/products/datacenter-virtualization/vsphere/small-business/essentials-kits.html),
What’s new in v5 (https://www.vmware.com/files/pdf/techpaper/Whats-New-VMware-vCenter-Server-50-Technical-Whitepaper.pdf),
Supported guest OS (https://www.vmware.com/files/pdf/GuestOS_guide.pdf),
VMware Oracle support policy (https://www.vmware.com/support/policies/oracle-support.html),
VMware HCL (https://www.vmware.com/resources/compatibility),
vSphere Licensing and cost (https://www.vmware.com/files/pdf/vsphere_pricing.pdf),
Forrester Report – Total Economic Impact Of VMware vSphere Virtualizing Mission-Critical Oracle Databases (https://www.vmware.com/files/pdf/solutions/total-economic-impact-of-vmware-vsphere-oracle-database.pdf),
Oracle on VMware vSpehere 4 Essential Deployment Tips (https://www.vmware.com/files/pdf/Oracle_Databases_on_vSphere_Deployment_Tips.pdf),

RedHat Certifies Linux on VMware (https://hardware.redhat.com/show.cgi?id=674998).

Microsoft will support Windows on VMware (https://support.microsoft.com/?kbid=897615), (https://support.microsoft.com/kb/944987).

Oracle:
Support Oracle RDBMS, Linux on VMware (https://blogs.oracle.com/UPGRADE/entry/is_oracle_certified_to_run_on),
Oracle Linux same as RHEL (https://www.oracle.com/us/technologies/linux/025987.htm),
Oracle licensing (https://www.orafaq.com/wiki/Oracle_licensing), (https://www.oracle.com/us/corporate/pricing/specialty-topics/index.html),
Oracle License & Service Agreement (https://www.oracle.com/us/corporate/contracts/license-service-agreement/index.html),
Oracle Processor Core Factor Table (https://www.oracle.com/us/corporate/contracts/processor-core-factor-table-070634.pdf),
Oracle VM Tolly Group report (https://www.oracle.com/us/026997.pdf).
Running Oracle Production Databases on VMware (https://www.it-implementor.co.uk/2012/02/running-oracle-production-database-on.html).

Tolly Group (https://www.tolly.com).

SAP:
Running SAP on VMWare (https://www.vmware.com/solutions/partners/alliances/sap.html),
TCO and ROI of running SAP on VMWare (https://www.vmware.com/files/pdf/partners/sap/SAP_TCOROI_Customers_Final.pdf),
SAP Note: 1122387 – Linux: SAP Support in virtualized environments (https://service.sap.com/sap/support/notes/1122387),
SAP Note: 1122388 – Linux: VMware vSphere Configuration guidelines (https://service.sap.com/sap/support/notes/1122388),
SAP Note: 1492000 – General Support Statement for Virtual Environments (https://service.sap.com/sap/support/notes/1492000),
SAP Insider – 3 common misconceptions (https://www.vmware.com/files/pdf/partners/sap/sap-insider-virtualization-cloud.pdf)

SAP Statistics & DBSTATC

As I’ve blogged about before, SAP recommend that you disable the Oracle stats gathering job in Oracle 10g databases, and use their own job controlled through DB13 (or DB13c).

The reason for this, is that some of the SAP database tables have specific requirements when it comes to statistics gathering.  These tables are registered in the SAP table DBSTATC.
This table controls which tables should have statistics collected (active or not active) and the method used to collect the stats (estimate or full).
All other tables not in DBSTATC, will have their stats collected using the default BRConnect settings.

If you have custom “Z” tables, you can insert your own entry into the DBSTATC table if you know for sure that your table has specific requirements.

You can use transaction DB20 to check the status of statistics on tables.

When BRConnect runs, you will see in the log file how many tables have stats gathered using the default setting, vs those that are in DBSTATC.

Entries in DBSTATC which are disabled (should have not stats gathered) will register in BRConnect’s DBCHECK log as having harmful statistics if those tables are found to have statistics on them.  You can then use BR*Tools to remove the harmful statistics, but you should attempt to work out why you have got statistics on a table that you shouldn’t, otherwise they may re-appear.

You need to be aware that SAP provide a specific SAP note, 403704 that contains updates/revisions for entries in DBSTATC.  It may be worth reviewing this note once a year, as you may find some performance benefit from updated statistics, or removal of statistics on tables.

Take a look at Tom Cenens’ blog for additional information on this subject: https://scn.sap.com/people/tom.cenens3/blog/2011/01/24/improving-oracle-performance-by-maintaining-exception-table-dbstatc

SAP help for BRConnect: https://help.sap.com/saphelp_nw04/helpdata/en/88/fce73a86e99c77e10000000a114084/content.htm

SQLPLUS ORA-01031: insufficient privileges as SYSDBA

This issue is commonly caused by the operating system group you are currently using, not having the correct permissions inside the Oracle binaries.  On UNIX, the Oracle binaries are always re-compiled after installation, with the group name of the “dba” group.  If your current user is not a member of that group, then you can’t use “AS SYSDBA”.  It’s a protection measure to restrict the O/S users that can access the database “AS SYSDBA”.
On Windows, the group is created as a local Windows group into which you need to add your user account (or group).  The local group name is not compiled into the Oracle binaries.

In UNIX, it’s possible when using SQL*Plus to connect to an idle instance AS SYSDBA, you get “ORA-01031: insufficient privileges” even though you have changed the $ORACLE_HOME/rdbms/lib/config.c file database group to match your UNIX group and re-compiled the Oracle binaries.

As specified in Oracle note 400459.1, you should move the old $ORACLE_HOME/rdbms/lib/config.o to config.o.old and then re-link oracle using “relink oracle”.

Check that a new config.o file is generated, before performing the “relink all”.

For some reason, using relink doesn’t always seem to trigger a rebuild of config.o.

Oracle AUD$ TIMESTAMP# from 9i to 10gR2

You select TIMESTAMP# from AUD$ in an Oracle 10gR2 or 11g database, but you seem to be missing the most recent audit information.
Your DB was upgraded at some point from 9i or earlier.

SQL> select min(TIMESTAMP#) from aud$;
MIN(TIMES
---------
04-MAR-04

SQL> select max(TIMESTAMP#) from aud$;
MAX(TIMES
---------
01-JUN-10

When you select from the DBA_AUDIT_TRAIL view, you see all the records:

SQL> select max(timestamp) from dba_audit_trail;
MAX(TIMES
---------
26-APR-12 07.48.13.242725 AM

The reason is that the TIMESTAMP# column in AUD$ was made obsolete in 10.1.0.5, but it still contains the old data.
The old data was migrated into the NTIMESTAMP# column but it will be missing the additional sub-second timings and the timezone:

SQL> select min(NTIMESTAMP#) from aud$;
MIN(NTIMESTAMP#)
---------------------------------------------------------------------------
04-MAR-04 03.43.28.000000 PM

You should use the NTIMESTAMP# column in AUD$ to see the later audit records post 10g upgrade.
See MYOS note 427296.1 for more detail on this.

The DBA_AUDIT_TRAIL view uses the new NTIMESTAMP# column:

SQL> select max(timestamp) from dba_audit_trail ;
MAX(TIMES
---------
26-APR-12 07.48.13.242725 AM

SQL> select min(timestamp) from dba_audit_trail;
MIN(TIMES
---------
04-MAR-04 03.43.28.000000 PM

Oracle 10.2 Data Types (oacdty)

Oracle 10.2 data types (oacdty) for use when you’re (bravely) exploring an Oracle trace:

1     VARCHAR2 or NVARCHAR2
2     NUMBER
8     LONG
9     NCHAR VARYING, VARCHAR
12   DATE
23   RAW
24   LONG RAW
25   LONG UB2
26   LONG SB4
58   ANYDATA
69   ROWID
96   CHAR or NCHAR
100 BINARY FLOAT
101 BINARY DOUBLE
102 REF CURSOR
104 UROWID
105 MLSLABEL
106 MLSLABEL
111 XMLTYPE (TABLE or REF)
112 CLOB or NCLOB
113 BLOB
114 BFILE
121 TYPE (USER-DEFINED)
122 TYPE (TABLE OF RECORD)
123 TYPE (VARRAY)
178 TIME
179 TIME WITH TIME ZONE
180 TIMESTAMP
181 TIMESTAMP WITH TIME ZONE
182 INTERVAL YEAR TO MONTH
183 INTERVAL DAY TO SECOND
208 UROWID
231 TIMESTAMP WITH LOCAL TIME ZONE