Oakies Blog Aggregator

Oracle C functions annotations

Warning! This is a post about Oracle database internals for internals lovers and researchers. For normal, functional administration, this post serves no function. The post shows a little tool I created which consists of a small database I compiled with Oracle database C function names and a script to query it. The reason that keeping such a database makes sense in the first place, is because the Oracle C functions for the Oracle database are setup in an hierarchy based on the function name. This means you can deduct what part of the execution you are in by looking at the function name; for example ‘kslgetl’ means kernel service lock layer, get latch.

To use this, clone git repository at https://gitlab.com/FritsHoogland/ora_functions.git

Use the ‘sf.sh’ (search function) script to query the functions. The script uses sqlite3, use the sqlite rpm package to add this (on linux), or use the packaging method of your platform.

This is how to use sf.sh :

$ ./sf.sh kglGetMutex
kglGetMutex -- kernel generic lock management
---

This shows the sf.sh script could find the first 3 letters (underlined), which probably mean kernel generic lock management. It couldn’t find ‘GetMutex’ however that is so self-explanatory that it doesn’t need annotation.

This is how a full function annotation looks like:

$ ./sf.sh qercoFetch
qercoFetch -- query execute rowsource count fetch
----------

Here the full function is underlined, which means the entire function is found.

If you found explanations for Oracle database code locations, or found an error in the annotation (I made assumptions here and there), please send them to frits.hoogland@gmail.com, or react to this post, so I can add or update it.

Tagged: C, debug, function, internals, oracle, research

nVision Performance Tuning: 1. nVision Performance Options

This blog post is part of a series that discusses how to get optimal performance from PeopleSoft nVision reporting as used in General Ledger.

At no point when defining a nVision report does the developer directly specify a SQL statement, all the SQL is generated by nVision from the report definition.  That also means that it is not possible to directly intervene and change the SQL statement, for example, to add an optimizer hint.

However, the way that the SQL is generated can be controlled via the nVision performance options. Setting this appropriately can make a significant difference to nVision performance, but the optimal settings will differ from system to system, from tree to tree and sometimes even report to report.

Specification of Performance Options

nVision performance options are specified for named trees.  Since PeopleTools 8, they are defined in the tree definition.

Tree Performance Options in PIA

They are stored in the database in PeopleTools table PSTREEDEFN.

#666666 .5pt; mso-border-themecolor: text1; mso-border-themetint: 153; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-yfti-tbllook: 1184;">
Field Name
Field Value
Description
#666666 .5pt; mso-border-themecolor: text1; mso-border-themetint: 153; mso-border-top-alt: solid #666666 .5pt; mso-border-top-themecolor: text1; mso-border-top-themetint: 153; padding: 0cm 5.4pt;" valign="top">
TREE_ACC_METHOD
#666666 .5pt; mso-border-bottom-themecolor: text1; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #666666 .5pt; mso-border-left-themecolor: text1; mso-border-left-themetint: 153; mso-border-right-themecolor: text1; mso-border-right-themetint: 153; mso-border-themecolor: text1; mso-border-themetint: 153; mso-border-top-alt: solid #666666 .5pt; mso-border-top-themecolor: text1; mso-border-top-themetint: 153; padding: 0cm 5.4pt;" valign="top">
D
#666666 .5pt; mso-border-bottom-themecolor: text1; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #666666 .5pt; mso-border-left-themecolor: text1; mso-border-left-themetint: 153; mso-border-right-themecolor: text1; mso-border-right-themetint: 153; mso-border-themecolor: text1; mso-border-themetint: 153; mso-border-top-alt: solid #666666 .5pt; mso-border-top-themecolor: text1; mso-border-top-themetint: 153; padding: 0cm 5.4pt;" valign="top">
Use Application Defaults
#666666 .5pt; mso-border-bottom-themecolor: text1; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #666666 .5pt; mso-border-left-themecolor: text1; mso-border-left-themetint: 153; mso-border-right-themecolor: text1; mso-border-right-themetint: 153; mso-border-themecolor: text1; mso-border-themetint: 153; mso-border-top-alt: solid #666666 .5pt; mso-border-top-themecolor: text1; mso-border-top-themetint: 153; padding: 0cm 5.4pt;" valign="top">
J
#666666 .5pt; mso-border-bottom-themecolor: text1; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #666666 .5pt; mso-border-left-themecolor: text1; mso-border-left-themetint: 153; mso-border-right-themecolor: text1; mso-border-right-themetint: 153; mso-border-themecolor: text1; mso-border-themetint: 153; mso-border-top-alt: solid #666666 .5pt; mso-border-top-themecolor: text1; mso-border-top-themetint: 153; padding: 0cm 5.4pt;" valign="top">
Join to Tree Selector
#666666 .5pt; mso-border-bottom-themecolor: text1; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #666666 .5pt; mso-border-left-themecolor: text1; mso-border-left-themetint: 153; mso-border-right-themecolor: text1; mso-border-right-themetint: 153; mso-border-themecolor: text1; mso-border-themetint: 153; mso-border-top-alt: solid #666666 .5pt; mso-border-top-themecolor: text1; mso-border-top-themetint: 153; padding: 0cm 5.4pt;" valign="top">
L
#666666 .5pt; mso-border-bottom-themecolor: text1; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #666666 .5pt; mso-border-left-themecolor: text1; mso-border-left-themetint: 153; mso-border-right-themecolor: text1; mso-border-right-themetint: 153; mso-border-themecolor: text1; mso-border-themetint: 153; mso-border-top-alt: solid #666666 .5pt; mso-border-top-themecolor: text1; mso-border-top-themetint: 153; padding: 0cm 5.4pt;" valign="top">
Use Literal Values
#666666 .5pt; mso-border-bottom-themecolor: text1; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #666666 .5pt; mso-border-left-themecolor: text1; mso-border-left-themetint: 153; mso-border-right-themecolor: text1; mso-border-right-themetint: 153; mso-border-themecolor: text1; mso-border-themetint: 153; mso-border-top-alt: solid #666666 .5pt; mso-border-top-themecolor: text1; mso-border-top-themetint: 153; padding: 0cm 5.4pt;" valign="top">
S
#666666 .5pt; mso-border-bottom-themecolor: text1; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #666666 .5pt; mso-border-left-themecolor: text1; mso-border-left-themetint: 153; mso-border-right-themecolor: text1; mso-border-right-themetint: 153; mso-border-themecolor: text1; mso-border-themetint: 153; mso-border-top-alt: solid #666666 .5pt; mso-border-top-themecolor: text1; mso-border-top-themetint: 153; padding: 0cm 5.4pt;" valign="top">
Sub-SELECT Tree Selector
#666666 .5pt; mso-border-themecolor: text1; mso-border-themetint: 153; mso-border-top-alt: solid #666666 .5pt; mso-border-top-themecolor: text1; mso-border-top-themetint: 153; padding: 0cm 5.4pt;" valign="top">
TREE_ACC_SELECTOR
#666666 .5pt; mso-border-bottom-themecolor: text1; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #666666 .5pt; mso-border-left-themecolor: text1; mso-border-left-themetint: 153; mso-border-right-themecolor: text1; mso-border-right-themetint: 153; mso-border-themecolor: text1; mso-border-themetint: 153; mso-border-top-alt: solid #666666 .5pt; mso-border-top-themecolor: text1; mso-border-top-themetint: 153; padding: 0cm 5.4pt;" valign="top">
D
#666666 .5pt; mso-border-bottom-themecolor: text1; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #666666 .5pt; mso-border-left-themecolor: text1; mso-border-left-themetint: 153; mso-border-right-themecolor: text1; mso-border-right-themetint: 153; mso-border-themecolor: text1; mso-border-themetint: 153; mso-border-top-alt: solid #666666 .5pt; mso-border-top-themecolor: text1; mso-border-top-themetint: 153; padding: 0cm 5.4pt;" valign="top">
Dynamic Selectors
#666666 .5pt; mso-border-bottom-themecolor: text1; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #666666 .5pt; mso-border-left-themecolor: text1; mso-border-left-themetint: 153; mso-border-right-themecolor: text1; mso-border-right-themetint: 153; mso-border-themecolor: text1; mso-border-themetint: 153; mso-border-top-alt: solid #666666 .5pt; mso-border-top-themecolor: text1; mso-border-top-themetint: 153; padding: 0cm 5.4pt;" valign="top">
S
#666666 .5pt; mso-border-bottom-themecolor: text1; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #666666 .5pt; mso-border-left-themecolor: text1; mso-border-left-themetint: 153; mso-border-right-themecolor: text1; mso-border-right-themetint: 153; mso-border-themecolor: text1; mso-border-themetint: 153; mso-border-top-alt: solid #666666 .5pt; mso-border-top-themecolor: text1; mso-border-top-themetint: 153; padding: 0cm 5.4pt;" valign="top">
Static Selectors
#666666 .5pt; mso-border-themecolor: text1; mso-border-themetint: 153; mso-border-top-alt: solid #666666 .5pt; mso-border-top-themecolor: text1; mso-border-top-themetint: 153; padding: 0cm 5.4pt;" valign="top">
TREE_ACC_SEL_OPT
#666666 .5pt; mso-border-bottom-themecolor: text1; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #666666 .5pt; mso-border-left-themecolor: text1; mso-border-left-themetint: 153; mso-border-right-themecolor: text1; mso-border-right-themetint: 153; mso-border-themecolor: text1; mso-border-themetint: 153; mso-border-top-alt: solid #666666 .5pt; mso-border-top-themecolor: text1; mso-border-top-themetint: 153; padding: 0cm 5.4pt;" valign="top">
B
#666666 .5pt; mso-border-bottom-themecolor: text1; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #666666 .5pt; mso-border-left-themecolor: text1; mso-border-left-themetint: 153; mso-border-right-themecolor: text1; mso-border-right-themetint: 153; mso-border-themecolor: text1; mso-border-themetint: 153; mso-border-top-alt: solid #666666 .5pt; mso-border-top-themecolor: text1; mso-border-top-themetint: 153; padding: 0cm 5.4pt;" valign="top">
Range of Values (BETWEEN)
#666666 .5pt; mso-border-bottom-themecolor: text1; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #666666 .5pt; mso-border-left-themecolor: text1; mso-border-left-themetint: 153; mso-border-right-themecolor: text1; mso-border-right-themetint: 153; mso-border-themecolor: text1; mso-border-themetint: 153; mso-border-top-alt: solid #666666 .5pt; mso-border-top-themecolor: text1; mso-border-top-themetint: 153; padding: 0cm 5.4pt;" valign="top">
R
#666666 .5pt; mso-border-bottom-themecolor: text1; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #666666 .5pt; mso-border-left-themecolor: text1; mso-border-left-themetint: 153; mso-border-right-themecolor: text1; mso-border-right-themetint: 153; mso-border-themecolor: text1; mso-border-themetint: 153; mso-border-top-alt: solid #666666 .5pt; mso-border-top-themecolor: text1; mso-border-top-themetint: 153; padding: 0cm 5.4pt;" valign="top">
Range of Values (>=…<=)
#666666 .5pt; mso-border-bottom-themecolor: text1; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #666666 .5pt; mso-border-left-themecolor: text1; mso-border-left-themetint: 153; mso-border-right-themecolor: text1; mso-border-right-themetint: 153; mso-border-themecolor: text1; mso-border-themetint: 153; mso-border-top-alt: solid #666666 .5pt; mso-border-top-themecolor: text1; mso-border-top-themetint: 153; padding: 0cm 5.4pt;" valign="top">
S
#666666 .5pt; mso-border-bottom-themecolor: text1; mso-border-bottom-themetint: 153; mso-border-left-alt: solid #666666 .5pt; mso-border-left-themecolor: text1; mso-border-left-themetint: 153; mso-border-right-themecolor: text1; mso-border-right-themetint: 153; mso-border-themecolor: text1; mso-border-themetint: 153; mso-border-top-alt: solid #666666 .5pt; mso-border-top-themecolor: text1; mso-border-top-themetint: 153; padding: 0cm 5.4pt;" valign="top">
Single Values

Performance options can also be specified in individual layouts, and the specific definition in the layout overrides the generic definition in the tree.
Add-Ins- />nVision->Layout Options
You can also see the trees defined in a layout file in the Name Manager in Excel.  The performance options are converted into a string of 5 characters.  Below you can see a tree called OPERATING_UNIT. The easiest way to determine whether performance options are set in a layout is to look in the Name Manager, and the only reliable way to delete a performance option from a layout is to delete them from the Name Manager.

Formulas - /> Name Manager

The string of flags in the NvsTree formula can be decoded with this table.

X
Value
Position
Y
N
S
1
Dynamic Selector
Static Selector
2
Join to tree selector
Supress join; use literal values
Sub-SELECT tree selector
3
Range of values (BETWEEN)
Range of values (>= … <=)
4
Single Value
(overrides position 3)
5
Non-specific node criteria (above 2 billion)

Recommendations

It is rare to need to set different performance options for the same tree in different layouts. Therefore, it is easiest to set performance options at tree level and not at all in layouts unless absolutely necessary.
Tree performance options can even be updated in bulk by SQL script, though it is essential to maintain the versions numbers correctly.  Care should be taken when migrating trees from other environments to ensure that the performance options are still correctly set, as the performance options are part of the tree being migrated
It is now possible to give clear advice to developers and especially business users who create nVision reports:

  • Don't use them.
  • If you have specified them in layouts in the past, then remove them unless you really do need to use a different option in a particular report.

Some customers have written Visual Basic macros to work through all their layouts and remove all tree performance options settings.

In the next post I will start to look at how the performance options control how the SQL generated by nVision.

Linux for the SQL Server DBA- Part I

For the Oracle DBA, Linux is life.  When I was at Oracle, Linux projects were the easy part of my job, unlike the ones on Windows, AIX, HP-UX and at times, even Solaris.  You knew the Linux ones received the most love from development, had the most time towards patching and received attention if there was a bug.

History

Linux was introduced in 1991, thanks to Linus Tovalds and has been in active development, with introduction of different “flavors” of the OS over the years.  As many folks know, Linux was carved out of the GNU open license project, which its original OS, Hurd, just hadn’t become successful over the years since it’s development since 1983 and was a main reason that Linus ended up developing Linux.

Linux development is done on the GNU or Intel C Compiler.  The original goal of the OS was to limit any commercial activity, which seems a bit foreign today as its become so standard for most IT shops- so much so, that Microsoft now is inspired to take it on with SQL Server 2016/2017.  Where Linux has become very commercial in recent years, it’s sibling is OS popularity on the GNU project, Debian, has stayed less in the limelight and is used in many open source projects like one of my favorite, the STEM powerhouse and inexpensive computer, Raspberry Pi, (Raspbian). You’re going to hear other flavors, like SUSE, RedHat, Ubuntu and others, but there are minor differences in each, (even if those religiously loyal to one or an other swears on the details otherwise) at this point, knowing that they exist will help you get past this and move onto the important stuff.

Accessing a Linux System

You use a terminal to log into a Linux system.  Putty is free and a favorite of most DBAs.  If you’re on Mac, then you can just use the Terminal and log straight in.  We’ll get into Graphical UIs later on, but understanding the command line is essential for Linux.

Linux has some basic information that surrounds OS users, logging in and permissions.  You SSH (secure shell) into a Linux host, just as you’ve done from Microsoft Windows.

Also, just as in Windows, you must be able to “reach” the host or ping the host, just as you would with a Windows box:

From putty or your terminal, test this with the DNS for the hostname or directly to the IP Address:

ping 

You log in with the following command:

ssh OSUsername@

If it’s the first time you’ve logged into the host, it will ask you to add the routing address to your list and then you can confirm and you will log in.

The Linux File System

In Linux, everything is configured as a file.  Not just text files, but executables, directories and even device drivers.  Due to this, the way you, as a user view everything is a bit different than the kernel views the system.   Similar to Windows OS, there will be a clear hierarchal layout of all the files that culminate up to root, which is identified by a forward slash, “/”, unlike in Windows, identified by a back slash, (and yes, this will be a common typo you’ll be correcting as you go along… :))

For the kernel, it doesn’t see the hierarchy and in its world, everything is very flat and identified by something called inodes. Each of these inodes have a number of unique identifiers that represent each file, each directory, each permission and so on and so forth.  It allows the kernel to identify, search, locate and perform any process very quickly.

OS Users and Groups

Along with Root, there are users created.  These are the logins and owners of files on the OS and each of these users are assigned to one or more groups that allow them a set of permissions to different file structures.  For the Oracle DBA, it is common to login as their username, (example dsmith) and then switch user, (command su) over to Oracle, (database and oracle installation owner) to perform critical tasks.

Belonging to a group allows you to perform the same tasks and have grants to files in directories.  Each user has, (or should have) a home directory that contains their configuration files and aliases for the user.  You may have someone ask you what is in your profile or bash profile.  These files start with a “.” and aren’t available with a simple list command, which we’ll discuss next.

Beginning Commands

We’ll start with a few simple commands on the system now that you’re logged in

ls = list and is like dir, the directory command on Windows.

The list command is something you’ll use often, even more so when you first start.  I don’t know how often I attempt to use “ls” on Windows and curse, then promptly type in “dir”.

ls -a will give you all the files, including hidden files.

ls -ltr will give you the files ordered from most recent and comes in quite handy for large directories.

pwd = current directory location.  You’ll need to know where you are, as you go down the rabbit hole, there’s rarely Alice to show you… </p />
</p></div></div>

    	  	<div class=

Idle banter

When your car gets a flat tyre, it’s always handy to have a spare.  We do the same with the database Smile


SQL> select
  2    x.ksppinm  name
  3  from
  4    sys.x$ksppi  x,
  5    sys.x$ksppcv2  y
  6  where
  7    x.inst_id = userenv('Instance') and
  8    y.inst_id = userenv('Instance') and
  9    x.indx+1 = y.kspftctxpn and
 10    x.ksppinm like '%spare%parameter%';

NAME
--------------------------------------------------------------------------------
_first_spare_parameter
_second_spare_parameter
_third_spare_parameter
_fourth_spare_parameter
_fifth_spare_parameter
_sixth_spare_parameter
_seventh_spare_parameter
_eighth_spare_parameter
_ninth_spare_parameter
_tenth_spare_parameter
_eleventh_spare_parameter
_twelfth_spare_parameter
_thirteenth_spare_parameter
_fourteenth_spare_parameter
_fifteenth_spare_parameter
_sixteenth_spare_parameter
_seventeenth_spare_parameter
_eighteenth_spare_parameter
_nineteenth_spare_parameter
_twentieth_spare_parameter
_twenty-first_spare_parameter
_twenty-second_spare_parameter
_twenty-third_spare_parameter
_twenty-fourth_spare_parameter
_twenty-fifth_spare_parameter
_twenty-sixth_spare_parameter
_twenty-seventh_spare_parameter
_twenty-eighth_spare_parameter
_twenty-ninth_spare_parameter
_thirtieth_spare_parameter
_thirty-first_spare_parameter
_thirty-second_spare_parameter
_thirty-third_spare_parameter
_thirty-fourth_spare_parameter
_thirty-fifth_spare_parameter
_thirty-sixth_spare_parameter
_thirty-seventh_spare_parameter
_thirty-eighth_spare_parameter
_thirty-ninth_spare_parameter
_fortieth_spare_parameter
_forty-first_spare_parameter
_forty-second_spare_parameter
_forty-third_spare_parameter
_forty-fourth_spare_parameter
_forty-fifth_spare_parameter
_forty-sixth_spare_parameter
_forty-seventh_spare_parameter
_forty-eighth_spare_parameter
_forty-ninth_spare_parameter
_fiftieth_spare_parameter
_fifty-first_spare_parameter
_fifty-second_spare_parameter
_fifty-third_spare_parameter
_fifty-fourth_spare_parameter
_fifty-fifth_spare_parameter
_fifty-sixth_spare_parameter
_fifty-seventh_spare_parameter
_fifty-eighth_spare_parameter
_fifty-ninth_spare_parameter
_sixtieth_spare_parameter
_sixty-first_spare_parameter
_sixty-second_spare_parameter
_sixty-third_spare_parameter
_sixty-fourth_spare_parameter
_sixty-fifth_spare_parameter
_sixty-sixth_spare_parameter
_sixty-seventh_spare_parameter
_sixty-eighth_spare_parameter
_sixty-ninth_spare_parameter
_seventieth_spare_parameter
_seventy-first_spare_parameter
_seventy-second_spare_parameter
_seventy-third_spare_parameter
_seventy-fourth_spare_parameter
_seventy-fifth_spare_parameter
_seventy-sixth_spare_parameter
_seventy-seventh_spare_parameter
_seventy-eighth_spare_parameter
_seventy-ninth_spare_parameter
_eightieth_spare_parameter
_eighty-first_spare_parameter
_eighty-second_spare_parameter
_eighty-third_spare_parameter
_eighty-fourth_spare_parameter
_eighty-fifth_spare_parameter
_eighty-sixth_spare_parameter
_eighty-seventh_spare_parameter
_eighty-eighth_spare_parameter
_eighty-ninth_spare_parameter
_ninetieth_spare_parameter
_ninety-first_spare_parameter
_ninety-second_spare_parameter
_ninety-third_spare_parameter
_ninety-fourth_spare_parameter
_ninety-fifth_spare_parameter
_ninety-sixth_spare_parameter
_ninety-seventh_spare_parameter
_ninety-eighth_spare_parameter
_ninety-ninth_spare_parameter
_one-hundredth_spare_parameter
_one-hundred-and-first_spare_parameter
_one-hundred-and-second_spare_parameter
_one-hundred-and-third_spare_parameter
_one-hundred-and-fourth_spare_parameter
_one-hundred-and-fifth_spare_parameter
_one-hundred-and-sixth_spare_parameter
_one-hundred-and-seventh_spare_parameter
_one-hundred-and-eighth_spare_parameter
_one-hundred-and-ninth_spare_parameter
_one-hundred-and-tenth_spare_parameter
_one-hundred-and-eleventh_spare_parameter
_one-hundred-and-twelfth_spare_parameter
_one-hundred-and-thirteenth_spare_parameter
_one-hundred-and-fourteenth_spare_parameter
_one-hundred-and-fifteenth_spare_parameter
_one-hundred-and-sixteenth_spare_parameter
_one-hundred-and-seventeenth_spare_parameter
_one-hundred-and-eighteenth_spare_parameter
_one-hundred-and-nineteenth_spare_parameter
_one-hundred-and-twentieth_spare_parameter
_one-hundred-and-twenty-first_spare_parameter
_one-hundred-and-twenty-second_spare_parameter
_one-hundred-and-twenty-third_spare_parameter
_one-hundred-and-twenty-fourth_spare_parameter
_one-hundred-and-twenty-fifth_spare_parameter
_one-hundred-and-twenty-sixth_spare_parameter
_one-hundred-and-twenty-seventh_spare_parameter
_one-hundred-and-twenty-eighth_spare_parameter
_one-hundred-and-twenty-ninth_spare_parameter
_one-hundred-and-thirtieth_spare_parameter
_one-hundred-and-thirty-first_spare_parameter
_one-hundred-and-thirty-second_spare_parameter
_one-hundred-and-thirty-third_spare_parameter
_one-hundred-and-thirty-fourth_spare_parameter
_one-hundred-and-thirty-fifth_spare_parameter
_one-hundred-and-thirty-sixth_spare_parameter
_one-hundred-and-thirty-seventh_spare_parameter
_one-hundred-and-thirty-eighth_spare_parameter
_one-hundred-and-thirty-ninth_spare_parameter
_one-hundred-and-fortieth_spare_parameter
_one-hundred-and-forty-first_spare_parameter
_one-hundred-and-forty-second_spare_parameter
_one-hundred-and-forty-third_spare_parameter
_one-hundred-and-forty-fourth_spare_parameter
_one-hundred-and-forty-fifth_spare_parameter
_one-hundred-and-forty-sixth_spare_parameter
_one-hundred-and-forty-seventh_spare_parameter
_one-hundred-and-forty-eighth_spare_parameter
_one-hundred-and-forty-ninth_spare_parameter
_one-hundred-and-fiftieth_spare_parameter
_one-hundred-and-fifty-first_spare_parameter
_one-hundred-and-fifty-second_spare_parameter
_one-hundred-and-fifty-third_spare_parameter
_one-hundred-and-fifty-fourth_spare_parameter
_one-hundred-and-fifty-fifth_spare_parameter
_one-hundred-and-fifty-sixth_spare_parameter
_one-hundred-and-fifty-seventh_spare_parameter
_one-hundred-and-fifty-eighth_spare_parameter
_one-hundred-and-fifty-ninth_spare_parameter
_one-hundred-and-sixtieth_spare_parameter
_one-hundred-and-sixty-first_spare_parameter
_one-hundred-and-sixty-second_spare_parameter
_one-hundred-and-sixty-third_spare_parameter
_one-hundred-and-sixty-fourth_spare_parameter
_one-hundred-and-sixty-fifth_spare_parameter
_one-hundred-and-sixty-sixth_spare_parameter
_one-hundred-and-sixty-seventh_spare_parameter
_one-hundred-and-sixty-eighth_spare_parameter
_one-hundred-and-sixty-ninth_spare_parameter
_one-hundred-and-seventieth_spare_parameter
_one-hundred-and-seventy-first_spare_parameter
_one-hundred-and-seventy-second_spare_parameter
_one-hundred-and-seventy-third_spare_parameter
_one-hundred-and-seventy-fourth_spare_parameter
_one-hundred-and-seventy-fifth_spare_parameter
_one-hundred-and-seventy-sixth_spare_parameter
_one-hundred-and-seventy-seventh_spare_parameter
_one-hundred-and-seventy-eighth_spare_parameter
_one-hundred-and-seventy-ninth_spare_parameter
_one-hundred-and-eightieth_spare_parameter
_one-hundred-and-eighty-first_spare_parameter
_one-hundred-and-eighty-second_spare_parameter
_one-hundred-and-eighty-third_spare_parameter
_one-hundred-and-eighty-fourth_spare_parameter
_one-hundred-and-eighty-fifth_spare_parameter
_one-hundred-and-eighty-sixth_spare_parameter
_one-hundred-and-eighty-seventh_spare_parameter
_one-hundred-and-eighty-eighth_spare_parameter
_one-hundred-and-eighty-ninth_spare_parameter
_one-hundred-and-ninetieth_spare_parameter
_one-hundred-and-ninety-first_spare_parameter
_one-hundred-and-ninety-second_spare_parameter
_one-hundred-and-ninety-third_spare_parameter
_one-hundred-and-ninety-fourth_spare_parameter
_one-hundred-and-ninety-fifth_spare_parameter
_one-hundred-and-ninety-sixth_spare_parameter
_one-hundred-and-ninety-seventh_spare_parameter
_one-hundred-and-ninety-eighth_spare_parameter
_one-hundred-and-ninety-ninth_spare_parameter
_two-hundredth_spare_parameter
_two-hundred-and-first_spare_parameter
_two-hundred-and-second_spare_parameter
_two-hundred-and-third_spare_parameter
_two-hundred-and-fourth_spare_parameter
_two-hundred-and-fifth_spare_parameter
_two-hundred-and-sixth_spare_parameter
_two-hundred-and-seventh_spare_parameter
_two-hundred-and-eighth_spare_parameter
_two-hundred-and-ninth_spare_parameter
_two-hundred-and-tenth_spare_parameter
_two-hundred-and-eleventh_spare_parameter
_two-hundred-and-twelfth_spare_parameter
_two-hundred-and-thirteenth_spare_parameter
_two-hundred-and-fourteenth_spare_parameter
_two-hundred-and-fifteenth_spare_parameter
_two-hundred-and-sixteenth_spare_parameter
_two-hundred-and-seventeenth_spare_parameter
_two-hundred-and-eighteenth_spare_parameter
_two-hundred-and-nineteenth_spare_parameter
_two-hundred-and-twentieth_spare_parameter
_spare_test_parameter

Standard common sense stuff: Please don’t mess with these (or any) underscore parameter without consulting Support.

Buzzword Bingo

Looking for that catchy title for your next presentation ?

I took the first word from the title of 1000 Oracle OpenWorld presentations, and looked for patterns Smile.  I omitted some obvious terms that are either products or definite/indefinite articles:

  • Oracle
  • Peoplesoft 
  • The
  • How 
  • OAUG
  • General
  • MySQL

And here is what we end up with:


SQL> select buzz, count(*)
  2  from buzz
  3  group by buzz
  4  order by 2 desc;

BUZZ                                                                                                   COUNT(*)
---------------------------------------------------------------------------------------------------- ----------
Building                                                                                                     18
Customers                                                                                                    14
Best                                                                                                         13
Digital                                                                                                      11
Migrating                                                                                                    10
Getting                                                                                                      10
Accelerate                                                                                                    8
Modernize                                                                                                     8
Implementing                                                                                                  7
Data                                                                                                          7
Transforming                                                                                                  6
Extend                                                                                                        6
Identifying                                                                                                   6
Managing                                                                                                      6
Achieving                                                                                                     6
Leveraging                                                                                                    5
Making                                                                                                        5
Creating                                                                                                      4

So there you go…All the verbs and adjectives you need for a successful presentation Smile

OpenWorld 2017–grab ALL of the content

Some people use the session catalog to grab just the presentations that they either attended, or could not attend.

Other people want a download of every available presentation so they can peruse the entire catalog offline at a later date.

I am one of the latter people. Smile

So using some node, javascript, awk, sed, grep I managed to data-mine the catalog page to come up with a list of uploaded presentations in the form:


wget --no-check-certificate -O "SessionTitle".extension "https://static.rainfocus.com/full_path_to_presentation.extension"

which of course can then be run as a batch file to grab them all. Woo hoo !!!

You can download the batch file which contains the 932 download commands here

I can’t make any guarantees the list is complete, or that the script will work without error, but it should be a good starting point, and it will be a lot faster than clicking on each presentation !

If it does not work for you, my apologies.  If it does work for you and saves you a lot of time, just don’t forget that I like beer or gin&tonic next time you see me. Smile

Enjoy !

How Much Availability is Enough

  

At Oracle OpenWorld 17, Larry Ellison announced “Oracle Autonomous Database Cloud” and “Oracle Autonomous Data Warehouse Cloud”.     Among other features, Oracle guarantees these databases will have an SLA of 99.995% or less than 30 minutes of “costly planned and unplanned downtime” a year.

For applications that require that level of availability, this sets a very high bar.  However, this sort of availability comes with a cost; and not all applications require this level of availability.   In this blog, I’ll offer some suggestions on how to determine the correct levels of availability for your applications, and suggest some ways you can obtain those levels, at significantly less cost and complexity.

It’s Not Just the Database

When we consider availability for database systems, we really need to consider that while the database may be an integral component of an application that delivers value to end-users; it’s most often not the only component.   Even if we configure the hardware underlying the database, or the entire “technology stack” for high-availability, there will components of the application outside of the data center, and possibly even not IT related.  For example, if the building occupied by users of an application is destroyed by a fire, and the application is not accessible via an external network, the application is unavailable.

Set a Reasonable SLA

The first step in setting realistic SLA, or Service Level Agreement, which defines when an application must be available, is to consider the business use of the application.   For example, an accounting system used by folks who work 8-5, Monday through Friday in a single timezone will have a very different SLA than an on-line order entry system for a company that trades in all timezones. 

Next, you’ll want to consider the overall cost of downtime.  Again, an accounting system with manual backup procedures, or where processes can be postponed probably has a lower cost of downtime than an on-line shopping system where an inaccessible system will probably result in a lost order.

You may want to consider risks other than cost as well.   For example, the risks associated with an accounting system being unavailable is considerably less than the risks associated with the availability of a real-time Electronic Medical Record system.   When evaluating risks, you may want to use one of the many available risk models or frameworks, such as “The Risk IT Framwork” from ISACA, which can be found here.    For very high-value or high-risk systems, risk analysis may involve fairly complex probability calculations, and even gaming theory.

Also consider what alternatives are available to replace, even temporarily, the use of the application.   For example, orders can be taking using handwritten or typed forms; checks can be handwritten, or data entry can be postponed.    For systems that capture data from other automated systems, such as telephone call detail records, perhaps those transactions can be stored in a portion of the system “upstream” of the database.   As you consider the alternatives, don’t forget to include the costs of the alternatives, including opportunity costs and the costs of maintaining the alternatives.

Consider the lifecycle of the data stored in the database.   Some examples of things to consider are the volatility of the data or how often records change.  Availability strategies will be very different for data that changes frequently or needs to be updateable for its entire lifecycle than for data such as records of payment, that are basically written once.   It’s also possible that the data store in the database may also be stored in other locations, either upstream or downstream of the database you’re considering.

Two critical components of an SLA are the Recovery Time Objective (RTO) and the Recovery Point Objective (RPO).  The Recovery Time Objective sets the “allowed” downtime before an application absolutely must be recovered and available after an outage.  The Recovery Point Objective sets expectations for the allowed data loss.  RTOs are almost always expressed as units of time, such as seconds, minutes or hours.  RPOs can be expressed as either units of time or as units of work, such as transactions.   Note that there may be multiple RTOs and RPOs, dependent on the severity of outage.   For example, the RTO/RPO for an outage of a single server in a data center might be less than the RTO/RPO for an area-wide disaster, such as an earthquake or flood.  As you develop your strategy, you will use the RTO and RPO specifications to validate the effectiveness of proposed strategies.

Develop a Strategy

Once you understand your application SLA requirements, and the nature of the data; you can develop a strategy to ensure that the SLA availability requirements can be met. 

For a very simple case, such as an 8-5 accounting system, with large windows of inactivity, a simple nightly backup, with tested restore processes, may be sufficient.   On the other end of the spectrum, for high-value or high-risk applications that require near-zero RTOs and RPOs; even a single instance in the Oracle Autonomous Cloud might not provide sufficient availability.

For applications with RTOs measured in minutes and RPOs in small numbers of transactions, that have some “downtime windows” available, a simple RAC environment may suffice for local high-availability; but, then you’ll need to consider recovery in the event your primary data center becomes unavailable.    Oracle’s Cloud solutions may look attractive for these cases; but, as always, comes with a cost.

Availability for applications “in the middle”, between these extremes, can be solved with a number of solutions, some more complex or costly than others.    For example, you could consider database replication, either for your entire database, or a subset.   Or, perhaps storage block level replication would be sufficient to meet your SLAs and requirements.   EMC and others have “distant” replication options that could potentially be used to for disaster recovery.

 

In memoriam – 3

My father-in-law died a couple of weeks ago, aged 95. This is the story that he wrote for his children and grandchildren a few years ago describing his experiences as a Naval engineer on the aircraft carrier HMS Indefatigable during the second world war.

ROY‘S NAVAL CAREER

When war broke out on 3rd September 1939 I wanted to join the Navy, and a few days later I saw a  new recruiting office near Southend Pier so I went in and asked how I would be able to join. A Petty Officer looked at me and said “Well, sonny, you will have to wait until you are 18”. I was then only 17 so I continued with my plan to become an engineer. In those days parents either had to pay the full cost of university education or rely on their children gaining scholarships. In my case scholarships were essential. So, concentrating on mathematics, I took Higher School Certificate (A-Levels) in July 1938 and July 1939, but did not gain any scholarships. At that time I was Head Boy at Lindisfarne College and in late September the school was evacuated to North Wales from the Southend area because of fears of bombing and invasion but here the buildings were not well equipped and there was no laboratory. However, the Southend High School remained at Southend and arrangements were made to transfer me there.

In December 1939 I was awarded a Scholarship at Queens’ College, Cambridge. Then in May 1940 when the German blitzkrieg started the High School was evacuated to Mansfield in the Midlands, but there I took the HSC again and as a result gained a State Scholarship and a Southend Borough Major Scholarship, which in total was enough to see me through Cambridge. There I made friends with Denis Campbell, Stuart Glass and Edward Higham. In addition to lectures we went regularly to tutorials with a great character called (Professor) Archie Browne. He had additional duties as Steward of the College, and was responsible for obtaining food supplies and coal for heating, which was very difficult in wartime.

The course was completed in two years and, with blackouts, air raid precautions and other restrictions, social life was limited. I joined the Naval Section of the Cadet Corps and the Home Guard which took up one or two afternoons each week. I remember one exercise where we had to make a mock attack by night on an airfield some ten miles north of Cambridge. The defenders somehow knew that we would attack the SE corner and mustered there, but we made a mistake and went for the NE corner which was undefended, so we theoretically captured that bit of airfield! We had to march there and back, and the blisters lasted for weeks. On another exercise Cambridge was attacked by the Welch Fusiliers, I remember being knocked on the head and falling into a ditch half full of water. I was considered a casualty and allowed to return to college for a hot bath.

July – September 1942         I applied to join the Royal Navy as an engineer officer and had interviews at the Admiralty including medical examinations. As a result I was accepted and appointed a Probationary Temporary Acting Sub.Lieutenant (E) RNVR, and the next step was to purchase my uniform at Gieves in London, including the purple stripe denoting engineering.

October 1942         I reported to Portsmouth Barracks for four weeks training. I wore my uniform for the first time at Warminster in Wiltshire where we were living, and traveled to Portsmouth without any knowledge of how to make or receive naval salutes in public! This was soon rectified at Portsmouth where I joined twenty other trainees for the course which included instruction in naval customs and traditions, rules and regulations, security, and the all-embracing Kings Regulations and Admiralty Instructions. We also had training in small arms firing and endless square bashing under the eagle eye of Chief Petty Officer Sims, who was as tough as old boots.

November 1942 – November 1943         I was posted to John Brown’s Engineering Works at Clydebank with Donald Townend and Ian Richardson for practical marine engineering training. John Brown’s was a huge organisation which built engines as well as ships, and just after we arrived Indefatigable was launched. This was an amazing sight, seeing 30,000 tons of ship slide down the slipway into the river Clyde. Before the war the Queen Mary and the Queen Elizabeth were built on the same slipway.

The three of us were billeted with two or three other naval officers in lodgings at Glasgow where we three shared a room and were looked after by a homely landlady and her staff. Every morning we put on civilian clothes and caught a rickety old tram for a 30 minute journey to Clyde bank. There we worked successively in the Pattern-shop (making wood moulds), Foundry, Boiler-shop (being deafened by riveting), Machine-shop, Fitting-shop, Pipe-shop, Drawing Office and Dockyard. We did actually work, scraping bearings, operating lathes, casting metal, always under the supervision of an experienced workman. During lunch hours we used to climb over Indefat, deafened again by riveting, but we got to know the ship. At that time the yard was completing R class destroyers at the rate of about one every fortnight, and we used to take part in their initial sea trials so gaining experience of firing up boilers and operating turbine plant.

During the summer of 1943 we got to know the permanent RN engineer officers appointed to supervise the fitting out of the ship, including Peter Sandison who looked after the flight deck gear. We were seconded to help the checking of the installation and testing of all kinds of machinery, and in November I was chosen to be officially appointed to Indefat, while the other two went off to other ships.

December 1943 – February 1944         The ship was commissioned on 8th December and taken over by the RN from the yard. After dock trials we steamed down the Clyde and carried out various trials including full power of the 148,000 HP engines, the measured mile speed test (32 knots) off the Isle of Arran, and steering and going astern trials from full ahead. I remember on one occasion the steering gear locked solid at hard-a-starboard while doing full speed. We went round in circles flying two black balls showing we were out of control! Several weeks were spent commissioning and training the crew, taking on stores and ammunition, gunnery practice, testing of radar and flight deck equipment, while some time was spent at sea.

March – June 1944         The first aircraft flew in on 23rd March, and thereafter the squadrons began to arrive. We spent days at sea practising aircraft landings and by the end of June we had a complement of some 75 aircraft including Seafires, Fireflies and Hellcats. When at sea engineer officers kept watch for four hours at a time, the middle watch (midnight to 4 am) and the morning watch (4 am to 8 am) being the worst. During a watch we had to visit each engine room and boiler room, and altogether a total of seventeen machinery spaces where each involved climbing up and down three sets of ladders, as the only passage was via the main deck. The best visit was always to a boiler room, where the Chief Stoker would provide a mug of ‘kai’, a chocolate slab heated in hot water and steam.

In addition each officer had responsibility for a department which included the operation and maintenance of all the equipment in it, and the men carrying out this work. Over the years mine included seven steam generators supplying electricity to the ship, three emergency diesel generators, motor boats, steering gear and auxiliary machinery including the big evaporators for making the ship’s fresh water from seawater. Also every six months each officer took it in turn to run the ship’s laundry for 2000 crew!

At Action Stations if not on watch each engineer officer had a Damage Control section of the ship to look after. Mine was the midships section above one of the engine rooms, and my team consisted of about ten stokers and technicians. We might be stationed there all day with only sandwiches and ‘Spotted Dick’ for lunch!

July – October 1944         Indefat joined the Fleet at Scapa Flow surrounded by battleships, cruisers and destroyers, and spent much time at sea on Russian convoy escort duty going beyond the Arctic Circle. In July we made an attack on the largest German battleship Tirpitz, which was moored in a Norwegian fiord and was always a potential menace to Russian convoys. This operation was called MASCOT and with two other carriers the aircraft carrying out the attack included 44 Barracudas, 18 Hellcats and 12 Fireflies, supported by many Seafires as fighter escorts. The weather was not good with cloud and fog around and although the Tirpitz was damaged it was decided to make another attack in mid-August. Prior to that strikes were made against some installations on the Norwegian coast and then on 18th August we sailed for the second Tirpitz attack called operation GOODWOOD. At this time a valuable convoy was en route to Russia and our job was to protect it from the Tirpitz and Uboats. The convoy did arrive safely.

Indefat aircraft included 12 Barracudas, 12 Fireflies, 12 Hellcats and 32 Seafires, and the ship was accompanied by Formidable, Furious and two small escort carriers, together with destroyers. On the first day one escort carrier was torpedoed and badly damaged, and had to return to Scapa escorted by the second small carrier. Some time later a destroyer was torpedoed and sank, with few survivors. The operation lasted for seven days with the ship at Action Stations most of the time. At one point Indefat seemed to be under serious attack by Uboats, with the ship taking evasive action and shaken by exploding depth charges from nearby destroyers, while it was reported that one torpedo passed under Indefat. GOODWOOD was successful as Tirpitz was hit several times and had to be moved to the port of Tromso for repairs, where she was later sunk by the RAF with their 10 ton Tallboy bombs. Had she remained in the narrow fiord in the lee of the mountains protected by smokescreens they might never have hit her.

Above the Arctic Circle the sun at this time only went below the horizon for a short time, which meant that our ships could be continually kept under observation by German aircraft and Uboats. There were however some fascinating panoramas of sea and sky, and I remember that one evening the ship had to steam into the wind straight for the coast and the spectacular black rugged mountains of Norway loomed up ahead. I vowed that one day I would revisit the area, and so I did with Joan during our Norwegian cruise of 1987.

Our base was Scapa Flow where we returned every few days. Occasionally we went ashore and the main treat was a visit to the NAAFI canteen which provided a large dish of bacon and baked beans. Otherwise we spent time in the wardroom eating, drinking and playing shove ha’penny or bar skittles. One day we played hockey against a team of large and ruthless Wrens, who beat us using their sticks with wild abandon.

In July more engineer officers joined the ship and I knew that one of them would occupy the vacant berth in my double cabin. I anxiously watched them come aboard and liked the look of Brian, and was very glad when he was allocated to my cabin. Then began a friendship which has lasted all our lives.

October – November 1944         We returned to Clydebank in October and made preparations for going to the Far East. Then we steamed down to Portsmouth and went into dry dock for maintenance and cleaning the ship’s bottom. After this we were ready for sailing but before doing so on 16th November the King and the Royal Family came aboard to wish us Good Luck. We were all mustered in our divisions on the flight deck, the King inspected us and then asked for a cup of tea. This caused a flap as all the cooks and stewards were mustered, and it took the duty officer nearly half an hour to find some tea and make it!

December 1944         After leaving Portsmouth we sailed to Ceylon, passing through Gibraltar, the Mediterranean, the Suez Canal, and then across the Indian Ocean arriving at Colombo on 10th December. We stopped off Algiers where our Mess Secretary went ashore and triumphantly came back with a large load of Algerian wine, which turned out to be the most awful plonk! We had Admiral Vian, the fighting Admiral, on board and at Colombo he demanded to be ferried ashore immediately in his Admiral’s Barge. This motor boat arrived on board at Portsmouth just before we sailed and was stowed in one of the hangars, where the engine could not be tested. I was in charge of boats and I insisted that the boat should have a trial run before an official trip. The Admiral was furious and came storming down the Hight deck demanding an explanation, so I stood to attention quaking in my shoes and gave one. He looked me up and down and said “Right, I will give you ten minutes”. Luckily all went well. Strange how one remembers these things!

During the remainder of the month we spent time at Colombo or Trincomalee storing ship, or at sea exercising with other ships of the Fleet. Trincomalee was a beautiful harbour, and I remember Brian and I were thrilled to bring back a pineapple (which we hadn’t seen for years) to our cabin, but when with due ceremony we slit it open it was full of insects!

January 1945         On New Year’s Day we sailed in company with three other carriers, the battleship King George V, and several cruisers and destroyers for air strikes against the Japanese oil refineries at Palembang in Sumatra. The first strike took place on 4 January and about 100 aircraft took part plus 40 Seafires which provided fighter cover. The refineries were damaged but after returning to Trincomalee it w as decided that further strikes would be carried out and they took place on 24 and 29 January. These were major strikes carried out by 144 aircraft for the first and 128 for the second, plus the usual fighter cover. This time the Japanese were well prepared and on several occasions the Fleet came under attack by enemy aircraft. These were fought off by our guns and aircraft, two being shot down close to Indefat. There were many air battles and we lost 41 aircraft together with many of the aircrews. This included several aircraft that were damaged by enemy action and then crashed on deck landing. The worst event was the fate of nine aircrew survivors who had to force land in Sumatra, were made prisoners, taken to Singapore and then later beheaded. The strikes were successful as the refineries produced some 50 of Japanese oil requirements and they were reduced to a standstill, only increasing back to one third capacity by the end of March. After this we steamed south for Australia and crossed the line (the Equator) with King Neptune and his cohorts “coming aboard” on 1st February. I was duly ducked and scrubbed m a makeshift swimming pool.

February 1945         We called in at Fremantle and six days later arrived in Sydney and moored at Wooloomooloo near the Harbour Bridge. The Australians were very hospitable and Brian, Colin and I were “adopted” by the Murray-Jones family with two daughters, Judy and Annabel. They would invite us home for a meal or arrange some tennis or swimming, not that there was much time as we were busy with maintenance and storing for the Pacific. Towards the end of the month we steamed north with the British Pacific Fleet under Admiral Rawlings.

March 1945         After 11 days at sea we arrived at the island of Manus and then went on to Ulithi, another island. This had an enormous harbour and was full of American ships, a total of about 1,400 preparing for the invasion of Japan. Our Fleet then became Task Force 57 operating with the American 3rd Fleet under Admiral Spruance, and consisted of three other Fleet carriers, eleven destroyers and a number of support ships including sloops, frigates, minesweepers, oil tankers and hospital ships. Sailing from Ulithi our first strike took place on 26th March against some of the Japanese islands south of Okinawa where it was estimated that the Japanese had 10,000 aircraft, of which about 4,000 were suicide bombers called Kamikazes.

Then began a series of strike days, each being a long day’s activity for the Fleet, particularly for the ships’ companies of the aircraft carriers. We would go to Action Stations at 0600 and return to Defence Stations at 2000, and periodically a “Flash Red” warning would be broadcast when enemy aircraft approached. Several air battles took place and, throughout the day, the Fleet wheeled and turned in and out of the wind for the carriers to land on and fly off strikes and fighter escorts. When the last aircraft landed on at dusk the air engineering department worked all night to repair, re-arm, and refuel aircraft ready for the next day.

April 1945         On the morning of 1 April we were hit by a Kamikaze which exploded into the flight deck and bridge structure. Because the flight deck had 3″ armour plate the damage was not catastrophic but fourteen of the crew, including the ship’s doctor, were killed and there was a lot of damage to the flight deck barrier gear and bridge communications. I was Damage Control Officer for the area and my team had to remove the casualties and start repairing the damage. I remember the whole area was flooded with hot steam, as the steam-to-ships siren pipework was broken, until I managed to telephone Y boiler room to shut off the master valve.

Peter Sandison’s team did a good job to repair arrester wires and barriers, and the ship was flying off aircraft an hour later, much to the amazement of the American ships and Admirals. The American carriers with light steel decks were very vulnerable and many of their carriers were sunk or badly damaged due to Kamikazes. On 6 and 7 April the Japanese made massive attacks on allied ships with most of them concentrated on American ships to the north of our Fleet. These attacks were made by 600 aircraft, including 355 Kamikazes, and some 380 were shot down but six American ships were sunk and twenty-one damaged. At this time the giant Japanese battleship Yamato came out on a suicide mission and was sunk by American torpedo bombers with a loss of 2,100 men.

Operations continued until the last week of April when our Fleet returned to Leyte island for refitting and oiling, having been at sea continuously for 32 days. By this time sixty support ships had arrived to provide repair and maintenance facilities. During the month I was promoted to Temporary Lieutenant (E) RN and wore my second stripe.

May 1945         On 1st May the Fleet including the carriers Indefatigable, Implacable. Indomitable, Formidable and Victorious left Leyte to resume operations against the Japanese shipping and shore installations, with Action Stations every day except for the odd day when we retired for refuelling by waiting tankers. British ships were essentially designed for Atlantic operations, and consequently there was very little air conditioning to deal with the hot climate of the Pacific, Some of the machinery spaces reached temperatures of 1400 F and almost every day one’s boiler suit could be twice soaked with perspiration. After a few weeks one would suffer from prickly heat and would be painted with purple potassium permanganate, so looking like an Ancient Briton! Sleeping at night on the quarter-deck was the most comfortable time. Food was almost all dehydrated or tinned and a staple of the diet of dehydrated potato served in a variety of ways – mashed, cubed, boiled, roast or fried. There were also plenty of tins of egg powder and powdered milk!

On 4 May Formidable was hit by a Kamikaze which caused considerable damage and fires on the flight deck but the ship remained operational. Indomitable was nearly hit by another Kamikaze which was shot down and crashed some thirty feet off the starboard bow. A few days later Formidable was again hit and fires were started in the hangar, and nine aircraft were destroyed. All through this period the enemy pressed home their attacks with great skill and determination, making good use of cloud cover, decoys and variations of height. All five carriers were hit at least once by Kamikazes, but nevertheless our aircraft flew some 2500 sorties, dropped over 500 tons of bombs and destroyed about 60 aircraft, at a loss of 98 aircraft.

June 1945         At the beginning of June we returned to Sydney for vital boiler maintenance, aircraft repairs and other general refitting. This was a welcome relief after 100 days on the ship at sea and again the Murray Jones were very hospitable, so we enjoyed some tennis and swimming off Bondi Beach. Towards the end of June the Fleet sailed north again and resumed operations in co-operation with the American Third Fleet.

July – August 1945         We carried out strikes against the Japanese mainland for the first time, including airfields and installations in the Tokyo area. The routine developed of 4 or 5 days at Action Stations, then a day’s withdrawal for refuelling, and then back again for more strikes. It was a time of Action Stations, watch-keeping, eating and sleeping in a noisy, hot and tiring atmosphere, with some excitement when enemy aircraft appeared. The Flight Deck was again busy from dawn to dusk, sending off bombers and also fighters to protect the Fleet. Unfortunately many did not return, and several had accidents when landing back on. At this stage the whole of the Japanese mainland from north to south was under attack by allied ships, with the Americans concentrating on destroying the remnants of the Japanese navy. The British aircraft bombed industrial targets including shipping, oil storage tanks, railways and factories, and on two occasions the battleship King George V carried out extensive bombardment with her heavy guns.

On 4th August all ships were ordered to withdraw some 300 miles from Japan, and on the 6th the first atomic bomb was dropped on Hiroshima, and then the second on Nagasaki. Further strikes continued until the Japanese finally surrendered on 15th August. The Fleet remained at sea but on the 25th we were hit by a typhoon. The waves were awesome, I remember standing on the flight deck which was 70 ft above normal sea level, and watching waves much higher than this coming towards me. The ship was rolling 35° from one side to the other, but we survived. Three American destroyers capsized, and we saw one American carrier with a large part of its flight deck hanging over its bows, as though it had received a punch on the nose!

September 1945         The Japanese Surrender was signed on the USS Missouri in Tokyo Bay on 2nd September, much to our relief. We remained at sea, and with the American Fleet took part in an enormous “parade” of ships outside Tokyo Bay. Then we spent three days in the Bay, while some of our crew went ashore to find and collect prisoners of war and transport them to hospital ships. The famous Mount Fuji is usually covered in cloud but early one morning the tannoy broadcast that it was visible, and I remember a marvellous view of its snow-capped peak.

After this we steamed back to Sydney arriving towards the end of the month, ready for a respite after 73 days of sea time. It was time to reflect on past events, the worst being during July and August when the Fleet lost over 140 aircraft from all causes, by enemy action or deck landings. Since then there has been a lot of discussion about dropping the atomic bombs and their consequences, but to my mind the following reasons justified the decision.

  1. The Americans estimated that there would be around a half-million Allied casualties if the invasion of Japan had taken place later in the year. This did not happen.
  2. About 40,000 British and Allied prisoners of war were kept by the Japanese in horrendous conditions and most would probably not have survived another winter. They were rescued.
  3. The Japanese had some five thousand aircraft and pilots trained as Kamikazes to be used against an invasion fleet, and we would have been in the forefront of this.

October – December 1945         Indefat remained in Sydney and the crew were allowed a lot of shore leave. The Murray-Jones thoughtfully provided a flat where many of us could stay, including Brian, Colin, Peter Fanghanel and others. One highlight was when all the latter including me made up a party to go ski-ing for a week at Mount Kosciusco. We arrived at the snowline and were then told that the chalet was 12 miles away and could only be reached on skis. Some of us, including me, had not skied before but we were told “Oh, that’s OK, today is Tuesday, and there is a tractor going up on Thursday which could pick you up if you are stuck”!

This was a time of hard work and playas supplies were exhausted, the engines needed refitting, the ship needed cleaning and the typhoon had damaged part of the hull so the ship had to go into dry dock. Some of us were seconded to the dockyard to help out with various jobs and I enjoyed the use of a 500cc motor-bike.

We managed another five days on a sheep farm, again with Brian and Colin. The farm was enormous and the family relied on horses to get around. On the first day we were each provided with a horse, but I viewed this with trepidation. So evidently did the horse, as after 15 minutes he turned round and trotted home, and there was nothing I or anyone else could do to stop him! I decided that I would stick to something with a brake and throttle.

January – March 1946         On 20th January we left Sydney for the journey home. Three days later we arrived at Melbourne where we had a tremendous welcome, with a parade led by the Royal Marines hand marching through the streets to the City Hall where the Governor took the salute accompanied by Admiral Vian. We stayed a week and were well entertained, then steamed across the Australian Bight which was unpleasantly rough to call in at Fremantle for a few hours before setting off for Capetown.

We arrived at Capetown after 17 days at sea. Again we were well looked after with a reception at the Governor’s Residence and an expedition to Table Mountain. This was the highlight of the visit, we took the cable car to the top with marvellous views all round and then came all the way down on foot. On 24th February we left Capetown, arriving at Gibraltar on 11 th March. On the way we passed close to St. Helena and Ascension Island. The Duty Officer went ashore and paid his respects to the Governor, who presented him with a live turtle to make soup! The ship’s butcher did not think much of this so when we left the turtle was returned to the sea, and was last seen swimming happily to the shore.

This part of the trip was pleasant and not too hot, every day there were games of deck hockey on the flight deck using a rope grommet instead of a ball. At Gibraltar we stayed for one day and Peter Fanghanel was the only one of our group who managed to go ashore, he came back with a large case of Tio Pepe sherry.

Finally we arrived at Portsmouth on 16th March and berthed inside the harbour, with crowds lining the Southsea promenade and cheering as we went in. We engineers saw little of this, hut we looked forward to a pint at the St. Enoch’s Hotel and then some leave. I think I had about ten days at Westcliff with Mother and Brenda, it was good to see them again after nearly 2½years.

April – October 1946         The ship sailed again on 25th April with 130 “Bush Brides”, who were brides of Australian servicemen and were going to join their husbands to live in Australia. The voyage again was through the Mediterranean and then a brief stay at Aden. Brian, Colin and I went ashore and we asked some joker the way to the local Club for a drink. “Oh” he said “lt’s that white building up on the hill”. So we trudged up the hill, knocked on the front door which was opened by a smart servant who asked what we wanted. We said we would like a drink, to which he replied that this was the Consul’s Residence. Anyway, the Consul was very decent, gave us more than one drink and we went happily back to the ship.

We arrived back in Sydney on 25th May and left again on the 9th June with over 1,000 service personnel due to be demobilised, including some RAF. We also carried 65 tons of food for Britain and about 18,000 gift parcels of food. From Fremantle the engines worked at full power and lndefat made a record-breaking non-stop trip of 21 days to Portsmouth. Then on 29th July we sailed again to Colombo and repatriated another large number of service personnel. The highlight I remember was a visit to Kandy and the Temple of the Sacred Tooth, where we were guided by Buddhist priests in their saffron yellow robes.

The last major event was a parade by the ship’s company on 19th September through Holborn in London, the borough that had “adopted” us during the war. As one of the officers with the longest-serving time in Indefat I was placed in the front rank, and there is a photo in our album. After the march we were inspected by the Mayor and then had a luncheon in the Town Hall, where our Battle Ensign flown by Indefat during Action Stations was presented to be hung in the Council Chamber. The demobilisation process was slow, but I finally left the ship and the Navy on 1st October 1946, after a wardroom party the night before! I well remember going down the gangway, walking through Portsmouth Dockyard and then out through the Main Gate, ready to face a different kind of life and world.

Grant DBA to yourself - exploit or not?

Yesterday Peter from the Master of Disaster Blog sent me an email to ask if I had seen the issue in his post before and whether it was a new exploit. I looked at the post and immediately recognised that....[Read More]

Posted by Pete On 11/10/17 At 12:06 PM