Parsing
We are running a data conversion. The powers that be decided to use APIs to convert the data as they contain error checking. The problem is that they are generally designed for interactive use updating one row at a time, so they are very slow to update large batches of data.
This was tuned and is getting much faster, however we noticed that there are a lot of waits on cursor: pin: S wait on X. From experience I know that this is caused by excessive hard parsing. However, I couldn’t find any statements with a lot of hard parses. The most was about 40, so nothing like the thousands which were a cause of this problem early in the release cycle of 12c, where cursors weren’t being shared properly (Bug 20476175 fixed by the patch of the same number).
Carlos Sierra has a useful script to help with this. It was linked from discussion on Oracle Support document ID 296377.1 which contains a similar script, but that one installs procedures and views into the database, which makes me reluctant to run it. Carlos comes to the rescue! (Thanks by the way to User3641887 for pointing me at Carlos’ script).
|
|
This is interestng. The processes are running from Process Schedulers (This is what PeopleSoft calls the batch controllers). These are built using automation so should be the same?
On investigation, I found in Unix:
This is set in delivered file $PS_HOME/setup/psdb.sh, which is called from $PS_HOME/psconfig.sh, which gets called from the .bashrc file.
But on Windows (Approach from Oracles NLS LANG FAQ:
|
|
This shows that NLS_LANG is set to ENGLISH_UNITED KINGDOM.WE8MSWIN1252 in the registry. This is presumably done by the installer, which must notice some other United Kingdom localisations in the registry and copy those.
We tried setting NLS_LANG in the Windows process scheduler to AMERICAN_AMERICA.UTF8, by changing the registry as per the NLS LANG FAQ and now we don’t get the high waits on cursor S pin on X.