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

Running Oracle Production Database on VMware

NOTE: For research links, see my later post here.

Are you considering running Oracle production databases on VMware?
Obviously you’ve considered the Oracle support policy on this.
How likely is it that you will get asked to “make it physical”?  or How will Oracle support deal with your call if you tell them you’re on VMware?

Well, there are some harsh responses from Oracle towards VMware customers if you have access to Metalink (sorry, My Oracle Support).
First you should read this doc: 1071005.1 (HOTSPOT ERROR DURING 32-BIT 11GR2 CLIENT INSTALL ON 64-BIT (X86_64) SUSE (VMWARE)).
Then read this document: 1075717.1 (Installing 32-bit RDBMS Client software on x86_64 Linux.)
I don’t think the first problem’s resolution is justified.  Do you?
I have found Oracle notes that state the following:

(1) Make sure you are logged into the Server Console directly, and that you are NOT trying to install the patch over a remote connection (such as Terminal Services, Remote Desktop, Timbuk2, PCAnywhere, VNC, VMWare, etc.) “

As for installing over a remote connection, we do not support this, because Oracle cannot control the way the permissions are setup, over the remote connection.

So VMware console is a remote connection…

Then there is this document:
https://www.oracle.com/us/solutions/sap/wp-o10g-rac-config-win-303805.pdf

This doc is an Oracle whitepaper which details SAP Netweaver / Oracle Databse 10gR2 RAC on Windows 2003.
In the doc it shows an example hosts file which is clearly from a VMware hosted server.  Double standards I feel!

This is just not a nice place to be if you’re trying to convince a company that VMware is a solid, supported tool to run production databases, and that Oracle even support RAC on it now.  Maybe some of the notes are old, before the acceptance by Oracle that VMware is becoming big in many companies.  Or maybe Oracle’s RAC support is an illusion of good will, whilst they quietly (or not so) improve the Oracle VM product.
The best way to tell, would be the acceptance of Oracle that VMware’s vCPU allocation is acceptable as a form of hard partitioning, so that you can bring the Oracle DB license cost down by runnining on VMware, in the same way you can on Oracle VM.

Documenting an SAP ABAP System Technical Configuration

The following are my thoughts for documenting the technical configuration of an existing SAP ABAP stack:

                ENVIRONMENTS                             
                ARCHITECTURE OVERVIEW                         
                OPERATING SYSTEM DETAILS                    
                                PATCHES             
                                PARAMETERS   
                                USERS  
                DATABASE SYSTEM DETAILS                       
                                PATCHES             
                                PARAMETERS   
                                SAP SCHEMAS  
                                DB LINK INTERFACES     
                SAP KERNEL DETAILS                     
                                PARAMETERS   
                SAP COMPONENT DETAILS                         
                ABAP STACK DETAILS                    
                                LICENSES            
                                OPERATION MODES      
                                CLIENTS               
                                TMS      
                                STANDARD SAP JOBS & SCHEDULES        
                                NON-STANDARD JOBS & SCHEDULES     
                                SPOOL SERVERS               
                                OUTPUT DEVICES            
                                SYSTEM USERS 
                                DATABASE CHECKS AND JOBS   
                                CCMS MONITORING     
                CUSTOM DEVELOPMENTS                          
                                TRANSACTIONS               
                                PROGRAMS AND REPORTS         
                                FUNCTION MODULES   
                                BAPIS   
                                INTERFACES      
                                                System Landscape Directory
                                                Central User Administration
                                                Solution Manager Data Collection
                                                Integration Server
                                                RFCs
                                                Web Services
                                                JDBC Connectors
                SNOTES AND REPAIRS                    

Android 2.1 Calendar Sync Force Close

I have an Android 2.1 phone (an Acer Liquid A1) which recently started throwing an error during the calendar sync.  It kept showing a “force close” error.

I got my laptop setup to connect to the phone using the Acer Liquid Tool (USB drivers) and the Malez recovery software, which includes the ADB debugging software.
After connecting the phone via USB and running ADB logcat, I was able to get the following error from the phone when I sync’d the calendar:

W/dalvikvm(  823): threadid=15: thread exiting with uncaught exception (group=0x2aac6160)
E/AndroidRuntime(  823): Uncaught handler: thread SyncThread exiting due to uncaught exception
E/AndroidRuntime(  823): java.lang.NullPointerException
E/AndroidRuntime(  823):        at com.android.providers.calendar.CalendarSyncAdapter.fetchCalendarsFromServer(CalendarSyncAdapter.java:1622)
E/AndroidRuntime(  823):        at com.android.providers.calendar.CalendarSyncAdapter.getServerDiffs(CalendarSyncAdapter.java:1223)
E/AndroidRuntime(  823):        at android.content.TempProviderSyncAdapter$SyncThread.runSyncLoop(TempProviderSyncAdapter.java:367)
E/AndroidRuntime(  823):        at android.content.TempProviderSyncAdapter$SyncThread.sync(TempProviderSyncAdapter.java:287)
E/AndroidRuntime(  823):        at android.content.TempProviderSyncAdapter$SyncThread.run(TempProviderSyncAdapter.java:218)

After an awful lot of Googling, I still had no answer.
It looks like the 2.1 version of Android supplied by Acer, has a flaw that prevents it working properly with some new Google calendar feature.
I don’t know what the problem is.
Instead, to solve the problem, I flashed the ROM back to stock Acer Android 1.6.
The calendar then worked again properly, however, I had lost an awful lot of good functionality (Facebook integration, better Gmail & Android Market app versions etc etc).

So I tried another option.  I used a link on the Modaco forums for a hacked version of the Android 2.2 OS which was for the new Acer LiquidE (same phone hardware, but with 512MB of RAM instead of 256MB).
Someone has posted a version which had been enabled to run on my 256MB Acer Liquid (genius).

I flashed the 2.2 ROM onto the phone and the calendar now works again.

Despite the problem, this highlighted an area of short sightedness.  When/if the online Google apps are no longer supported or work on older Android versions, this will make the phones that use the older Android versions effectively worthless.  Who wants an Android phone with no cloud capability?

Oracle Core: Essential Internals for Troubleshooting

Whilst shopping on Amazon this morning I noticed that Jonathan’s book is up for pre-order.
The price gurantee from Amazon is very reasonable, so I’ve pre-ordered.

Should be a good read and more importantly a good weapon in any DBAs problem analysis methodology (is “weapon” the best way to describe it? Wouldn’t that make Jonathan an arms dealer?).
Of course it doesn’t mean I can possibly absorb everything from the book, but most of the time I find that it’s not that you know how to do it, it’s that you know it can be done.

https://www.amazon.co.uk/gp/product/1430239549

To Delete or Not To Delete (an SAP user account)

Having read around the SDN forum recently, I was surprised that no one had done any particular research into the consequences of deleting SAP user accounts.
This is probably quite a common question when you first get your shiny new SAP system implemented.
Generally, auditors prefer that you delete IT accounts. It’s a nice catch-all and means that they can tick the box that says “done”, knowing that what happened was the most secure option. But it might not be the best option.
Most procedures require locking the account for 1-2 months before eventually deleting it, therefore catching rogue background jobs etc.

After some heavy procrastination I have come up with the following reasons why it might always be better (safer) and actually more audit-friendly to just lock the account and not actually delete it:

– Adding a new user of the same user id as the one just deleted, will attempt to re-use the old address details.
This is really bad and could cause awful confusion. It could also cause a problem with regards to auditing.

– Customer modifications/code in programs and workflows that utilise the user id.
If the user is deleted, then re-created later on for a new employee of the same name, that new user may inherit authority, receive SAP Office emails or any other actions that were previously meant for the old owner of the user id.

– When a user creates a transport, this is recorded in the code version history for the objects transported and the transport co-file and a file in one of the the /usr/sap/trans sub-directories (off-hand I think it’s called sapnames…).
Deleting the user removes the tie between the user id that created the code version, and their real name/details. In a large organisation it can be difficult to find the right “Smith” that made that change.

– When a user is deleted, you can not see what authorisations the account used to have.
Once again, how can you prove that some malicious action happened if the account has been deleted, removing the evidence that the user had access to perform the crime.
Alternatively, someone may have legitamately left the company, but recruiting didn’t find a replacement for 6months. Guess who will need to create a new user id where the request form says “same roles as Joe who left 6 months ago“.

– If you delete a user account after they leave, then re-create a new one for a new employee, what if you’ve missed an account on a system somewhere.  Nobody will know if it should be for the user who currently exists.  This is a major security risk.

This may lead you to thinking about a better user id naming scheme that could provide a unique name for every account created.
That really would be a worthwhile exercise.

Don’t forget, locking the account does not mean that you need to pay a license cost for it, it’s not usable.