Oracle 11g Mount Points, Oracle Base Filesystem Changes
With the introduction of Oracle 11g Oracle introduced changes to the default directory assignments (mappings) for where the following items are stored: trace files, core dumps, user dumps, alert log, etc.
The location for these types of files are driven by parameters in the spfile and in older Oracle releases the init.ora file. These preferences have always been left to the discretion of the Oracle DBA and I’ve seen many variations and schemas for implementing the directory hiearchy associated with these core Oracle admin related files.
In the Unix world shell environment variables are typically defined in the appropriate shell profile and/or login scripts and at its most minimilist level one would typically see the following environment variables:
$ORACLE_BASE $ORACLE_HOME
Depending on the shell environment used the following represent some common mappings:
export ORACLE_HOME=$ORACLE_BASE/product/<oracle release>/db_1
Where: ORACLE_BASE=/opt/app/oracle, oracle release, for example would be 10.2.0 which represents Oracle 10g R2. Some people prefer to extend the value for the oracle release (this is just my logical name assignment to describe the value in this example) to include the patch set installed, etc. Personally, I prefer to use the generic major release so I don’t have to either rename the directory or clone it because that could lead to Oracle Inventory issues, etc. The last directory “db_1″ is an example of following Oracle’s suggested naming convention as described in their Oracle 10g R2 documentation. If you use a naming standard that follows this convention then you could add additional Oracle Homes at the same level of db_1 and name them db_2, db_3, etc. Instead of using db_1 you call use client_1, client_2, … if the Oracle Home is on an Application or Web Server instead of a Database Server. At our installations we use asm to indicate an Oracle Home for Oracle’s ASM and in this case the ASM Oracle Home was completely independent of the Oracle Home used to service the Application which in this case was PeopleSoft. Along that same line of thought we used crs for the Oracle Home for Cluster Ready Services (CRS) which is required to be independent of any other Oracle Home’s.
This lends itself to patching the various Oracle Home’s independently, instead, of servicing ASM and whatever Applications or Databases out of one Oracle Home. Of course, there are pros and cons for both configurations and what is best for your installation depends on the constraints and requirements for your software installation.
A typical Oracle Base, Product and Admin filesystem structure would look like the following at a high level:
/opt/app/oracle /opt/app/oracle/product/10.2.0/db_1 /opt/app/oracle/product/10.2.0/asm /opt/app/oracle/product/10.2.0/crs /opt/app/oracle/admin /opt/app/oracle/admin/bdump/{$ORACLE_SID} /opt/app/oracle/admin/cdump/{$ORACLE_SID} /opt/app/oracle/admin/udump/{$ORACLE_SID} ….. Some people prefer: /opt/app/oracle/admin/{$ORACLE_SID}/bdump /opt/app/oracle/admin/{$ORACLE_SID}/cdump /opt/app/oracle/admin/{$ORACLE_SID}/udumpI didn’t list all of the directories, just enough to illustrate the concept. The differences between how to break out the administrative directories (bdump,cdump,udump,hpdump,scripts,….) is strictly a personal preference.
Oracle 11g Changes
Oracle 11g has obsoleted the previous Administrative directory hiearchy and replaced it with one that contains many more default directories and they have also make a distinction between the database and client which is enforced and implemented in the new directory structure they have published. The following illustrates this change at a very high level:
/opt/app/oracle /opt/app/oracle/product/11.1.0/db_1 /opt/app/oracle/diag /opt/app/oracle/oraInventory /opt/app/oracle/cfgtoollogs /opt/app/oracle/diag /opt/app/oracle/rdbms /opt/app/oracle/clients /opt/app/oracle/asm /opt/app/oracle/ofm /opt/app/oracle/tnslsnr /opt/app/oracle/crs /opt/app/oracle/lsnrctl /opt/app/oracle/netcman /opt/app/oracle/diagtoolThe impact is evident if you use custom scripts to create your databases from scratch, as opposed to use Oracle’s dbca (Database Configuration Assistant), or you create a database during the initial Oracle Software Installation, etc. The biggest impact to me was on my filesystem layout. We use EMC’s storage solutions and whenever we setup a new server we create an Excel spreadsheet that lays out the filesystem mount points and sizes. Typically, I will create filesystems such as the following:
/opt/app/oracle – used as the mount point/opt/app/oracle/product /opt/app/oracle/admin /opt/app/oracle/admin/backup /opt/app/oracle – is very small and simply serves as the mount point for the other filesystems. With the Oracle 11g changes I was caught off guard (I didn’t read through the installation guide like I should have so that’s on me). If I had been aware of the impact I would have planned a larger size for this path.
In order to continue with my software install and initial environment buildout I made a few changes to my core Oracle Initialization parameters. I moved the the “diag” directory to be located inside the “admin” directory. This still left quite a few directories at the /opt/app/oracle level.
Note: More to come, I’m stopping to get coffee and check on my imports. I’m only publishing this post so I won’t lose it (I know I could keep it unpublished……)