Just another Oracle blog

Oracle Database 18c – Read-Only Oracle Homes

Posted by Balazs Papp on 2019-10-06

Starting with Oracle Database 18c, an Oracle home can be configured in read only mode. In such homes, configuration and log files are located outside the Oracle home.

Perform a software-only installation of the Oracle home as usual:

$ mkdir -p /u01/app/oracle/product/18.0.0/dbhome_1
$ unzip -oq /install/Oracle/Database/18/db/V978967-01.zip -d /u01/app/oracle/product/18.0.0/dbhome_1
$ grep "=" /install/Oracle/Database/18/db/db_install_single_EE.rsp | grep -Ev "(=$|#)"
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v18.0.0
oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
ORACLE_HOME=/u01/app/oracle/product/18.0.0/dbhome_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=dba
oracle.install.db.OSBACKUPDBA_GROUP=dba
oracle.install.db.OSDGDBA_GROUP=dba
oracle.install.db.OSKMDBA_GROUP=dba
oracle.install.db.OSRACDBA_GROUP=dba
$ /u01/app/oracle/product/18.0.0/dbhome_1/runInstaller -silent -responsefile /install/Oracle/Database/18/db/db_install_single_EE.rsp

And execute root.sh as usual:

# /u01/app/oracle/product/18.0.0/dbhome_1/root.sh

Next, before creating any database, configure the Oracle home in read only mode with roohctl:

$ /u01/app/oracle/product/18.0.0/dbhome_1/bin/roohctl -enable
Enabling Read-Only Oracle home.
Update orabasetab file to enable Read-Only Oracle home.
Orabasetab file has been updated successfully.
Create bootstrap directories for Read-Only Oracle home.
Bootstrap directories have been created successfully.
Bootstrap files have been processed successfully.
Read-Only Oracle home has been enabled successfully.
Check the log file /u01/app/oracle/cfgtoollogs/roohctl/roohctl-191006PM060547.log.

$ cat /u01/app/oracle/cfgtoollogs/roohctl/roohctl-191006PM060547.log
[main] [ 2019-10-06 18:05:47.417 CEST ] [RoohCtl.execute:459]  Oracle Home value read from System Properties: /u01/app/oracle/product/18.0.0/dbhome_1
[main] [ 2019-10-06 18:05:47.418 CEST ] [RoohCtl.execute:477]  Operation enable
[main] [ 2019-10-06 18:05:47.419 CEST ] [RoohCtl.execute:482]  nodeList value read from CLI: null
[main] [ 2019-10-06 18:05:47.642 CEST ] [InventoryUtil.getOUIInvSession:349]  setting OUI READ level to ACCESSLEVEL_READ_LOCKLESS
[main] [ 2019-10-06 18:05:47.651 CEST ] [HAUtils.<init>:338]  oui location /u01/app/oraInventory/ContentsXML
[main] [ 2019-10-06 18:05:47.664 CEST ] [InventoryUtil.getOUIInvSession:349]  setting OUI READ level to ACCESSLEVEL_READ_LOCKLESS
[main] [ 2019-10-06 18:05:47.665 CEST ] [OracleHome.isClientHome:1801]  Homeinfo /u01/app/oracle/product/18.0.0/dbhome_1,1
[Finalizer] [ 2019-10-06 18:05:47.728 CEST ] [Util.finalize:134]  Util: finalized called for oracle.ops.mgmt.has.Util@25062e72
[main] [ 2019-10-06 18:05:47.996 CEST ] [HAUtils.<init>:371]  isClientHome: false
[main] [ 2019-10-06 18:05:47.996 CEST ] [Version.isPre:711]  version to be checked 18.0.0.0.0 major version to check against 10
[main] [ 2019-10-06 18:05:47.996 CEST ] [Version.isPre:722]  isPre.java: Returning FALSE
[main] [ 2019-10-06 18:05:47.996 CEST ] [Version.isPre:711]  version to be checked 18.0.0.0.0 major version to check against 10
[main] [ 2019-10-06 18:05:47.997 CEST ] [Version.isPre:722]  isPre.java: Returning FALSE
[main] [ 2019-10-06 18:05:47.997 CEST ] [Version.isPre:711]  version to be checked 18.0.0.0.0 major version to check against 11
[main] [ 2019-10-06 18:05:47.997 CEST ] [Version.isPre:722]  isPre.java: Returning FALSE
[main] [ 2019-10-06 18:05:47.997 CEST ] [Version.isPre:743]  version to be checked 18.0.0.0.0 major version to check against 11 minor version to check against 2
[main] [ 2019-10-06 18:05:47.997 CEST ] [Version.isPre:752]  isPre: Returning FALSE for major version check
[main] [ 2019-10-06 18:05:47.997 CEST ] [UnixSystem.isHAConfigured:3592]  olrFileName = /etc/oracle/olr.loc
[main] [ 2019-10-06 18:05:47.998 CEST ] [RoohCtl.checkOracleHomeForConfiguration:590]  Oracle restart configured: false
[main] [ 2019-10-06 18:05:47.998 CEST ] [RoohCtl.checkOracleHomeForConfiguration:599]  Oracle Grid Infrastructure configured: false
[main] [ 2019-10-06 18:05:47.998 CEST ] [RoohCtl.checkOracleHomeForConfiguration:651]  Enumerating oratab file
[main] [ 2019-10-06 18:05:48.000 CEST ] [OsUtilsUnix.enumerateSIDs:392]  checking sid: EX19
[main] [ 2019-10-06 18:05:48.000 CEST ] [OsUtilsUnix.enumerateSIDs:392]  checking sid: EX122
[main] [ 2019-10-06 18:05:48.001 CEST ] [RoohCtl.checkOracleHomeForConfiguration:656]  DB EX19, OH /u01/app/oracle/product/18.0.0/dbhome_1
[main] [ 2019-10-06 18:05:48.001 CEST ] [RoohCtl.checkOracleHomeForConfiguration:656]  DB EX122, OH /u01/app/oracle/product/18.0.0/dbhome_1
[main] [ 2019-10-06 18:05:48.023 CEST ] [RoohCtl.checkOracleHomeForConfiguration:680]  Created oracle.net.config.Config for Oracle Home: /u01/app/oracle/product/18.0.0/dbhome_1
[main] [ 2019-10-06 18:05:48.028 CEST ] [RoohCtl.processOperation:768]  Orabasetab Location: /u01/app/oracle/product/18.0.0/dbhome_1/install/orabasetab
[main] [ 2019-10-06 18:05:48.039 CEST ] [RoohCtl.createModifiedOrabasetab:161]  Oracle Home read from orabasetab: /u01/app/oracle/product/18.0.0/dbhome_1
[main] [ 2019-10-06 18:05:48.039 CEST ] [RoohCtl.createModifiedOrabasetab:162]  Oracle Base read from orabasetab: /u01/app/oracle
[main] [ 2019-10-06 18:05:48.039 CEST ] [RoohCtl.createModifiedOrabasetab:163]  Oracle Home Name read from orabasetab: OraDB18Home1
[main] [ 2019-10-06 18:05:48.040 CEST ] [RoohCtl.processOrabasetab:253]  Copying file /u01/app/oracle/product/18.0.0/dbhome_1/install/orabasetab.temp to /u01/app/oracle/product/18.0.0/dbhome_1/install/orabasetab
[main] [ 2019-10-06 18:05:48.041 CEST ] [RoohCtl.processOrabasetab:261]  Deleting temp file: /u01/app/oracle/product/18.0.0/dbhome_1/install/orabasetab.temp
[main] [ 2019-10-06 18:05:48.045 CEST ] [InstallUtils.getOracleBase:489]  OracleBase from orabase /u01/app/oracle
[main] [ 2019-10-06 18:05:48.064 CEST ] [InstallUtils.getOraBaseConfigLocation:592]  orabaseconfig location from orabaseconfig util /u01/app/oracle
[main] [ 2019-10-06 18:05:48.080 CEST ] [InstallUtils.getOraBaseHomeLocation:551]  orabasehome from orabasehome /u01/app/oracle/homes/OraDB18Home1
[main] [ 2019-10-06 18:05:48.080 CEST ] [RoohCtl.processBootstrapFile:285]  Line from the file %ORACLEBASE%/
[main] [ 2019-10-06 18:05:48.081 CEST ] [RoohCtl.processBootstrapFile:285]  Line from the file %ORACLEBASE%/homes
[main] [ 2019-10-06 18:05:48.081 CEST ] [RoohCtl.processBootstrapFile:285]  Line from the file %ORABASECONFIG%/
[main] [ 2019-10-06 18:05:48.081 CEST ] [RoohCtl.processBootstrapFile:285]  Line from the file %ORABASECONFIG%/%DBS%
[main] [ 2019-10-06 18:05:48.081 CEST ] [RoohCtl.processBootstrapFile:285]  Line from the file %ORABASEHOME%/
[main] [ 2019-10-06 18:05:48.081 CEST ] [RoohCtl.processBootstrapFile:285]  Line from the file %ORABASEHOME%/rdbms
[main] [ 2019-10-06 18:05:48.082 CEST ] [RoohCtl.processBootstrapFile:285]  Line from the file %ORABASEHOME%/rdbms/log
[main] [ 2019-10-06 18:05:48.082 CEST ] [RoohCtl.processBootstrapFile:285]  Line from the file %ORABASEHOME%/rdbms/audit
[main] [ 2019-10-06 18:05:48.082 CEST ] [RoohCtl.processBootstrapFile:285]  Line from the file %ORABASEHOME%/%DBS%
[main] [ 2019-10-06 18:05:48.082 CEST ] [RoohCtl.processBootstrapFile:285]  Line from the file %ORABASEHOME%/network
[main] [ 2019-10-06 18:05:48.082 CEST ] [RoohCtl.processBootstrapFile:285]  Line from the file %ORABASEHOME%/network/admin
[main] [ 2019-10-06 18:05:48.083 CEST ] [RoohCtl.processBootstrapFile:285]  Line from the file %ORABASEHOME%/network/trace
[main] [ 2019-10-06 18:05:48.083 CEST ] [RoohCtl.processBootstrapFile:285]  Line from the file %ORABASEHOME%/network/log
[main] [ 2019-10-06 18:05:48.083 CEST ] [RoohCtl.processBootstrapFile:285]  Line from the file %ORABASEHOME%/assistants
[main] [ 2019-10-06 18:05:48.083 CEST ] [RoohCtl.processBootstrapFile:285]  Line from the file %ORABASEHOME%/assistants/dbca
[main] [ 2019-10-06 18:05:48.083 CEST ] [RoohCtl.processBootstrapFile:285]  Line from the file %ORABASEHOME%/assistants/dbca/templates
[main] [ 2019-10-06 18:05:48.084 CEST ] [RoohCtl.processBootstrapFile:285]  Line from the file %ORABASEHOME%/install
[main] [ 2019-10-06 18:05:48.084 CEST ] [RoohCtl.processBootstrapFile:285]  Line from the file FILEPROCESS|%ORACLEHOME%/network/admin/sqlnet.ora|%ORABASEHOME%/network/admin/sqlnet.ora|WIN
[main] [ 2019-10-06 18:05:48.084 CEST ] [RoohCtl.createBootstrapDirs:402]  Creating directory /u01/app/oracle/
[main] [ 2019-10-06 18:05:48.084 CEST ] [RoohCtl.createBootstrapDirs:404]  Directory /u01/app/oracle/ exists
[main] [ 2019-10-06 18:05:48.085 CEST ] [RoohCtl.createBootstrapDirs:402]  Creating directory /u01/app/oracle/homes
[main] [ 2019-10-06 18:05:48.085 CEST ] [RoohCtl.createBootstrapDirs:404]  Directory /u01/app/oracle/homes exists
[main] [ 2019-10-06 18:05:48.085 CEST ] [RoohCtl.createBootstrapDirs:402]  Creating directory /u01/app/oracle/
[main] [ 2019-10-06 18:05:48.085 CEST ] [RoohCtl.createBootstrapDirs:404]  Directory /u01/app/oracle/ exists
[main] [ 2019-10-06 18:05:48.085 CEST ] [RoohCtl.createBootstrapDirs:402]  Creating directory /u01/app/oracle/dbs
[main] [ 2019-10-06 18:05:48.085 CEST ] [RoohCtl.createBootstrapDirs:404]  Directory /u01/app/oracle/dbs exists
[main] [ 2019-10-06 18:05:48.085 CEST ] [RoohCtl.createBootstrapDirs:402]  Creating directory /u01/app/oracle/homes/OraDB18Home1/
[main] [ 2019-10-06 18:05:48.086 CEST ] [RoohCtl.createBootstrapDirs:413]  Created directory /u01/app/oracle/homes/OraDB18Home1/
[main] [ 2019-10-06 18:05:48.086 CEST ] [RoohCtl.createBootstrapDirs:402]  Creating directory /u01/app/oracle/homes/OraDB18Home1/rdbms
[main] [ 2019-10-06 18:05:48.086 CEST ] [RoohCtl.createBootstrapDirs:413]  Created directory /u01/app/oracle/homes/OraDB18Home1/rdbms
[main] [ 2019-10-06 18:05:48.086 CEST ] [RoohCtl.createBootstrapDirs:402]  Creating directory /u01/app/oracle/homes/OraDB18Home1/rdbms/log
[main] [ 2019-10-06 18:05:48.086 CEST ] [RoohCtl.createBootstrapDirs:413]  Created directory /u01/app/oracle/homes/OraDB18Home1/rdbms/log
[main] [ 2019-10-06 18:05:48.087 CEST ] [RoohCtl.createBootstrapDirs:402]  Creating directory /u01/app/oracle/homes/OraDB18Home1/rdbms/audit
[main] [ 2019-10-06 18:05:48.087 CEST ] [RoohCtl.createBootstrapDirs:413]  Created directory /u01/app/oracle/homes/OraDB18Home1/rdbms/audit
[main] [ 2019-10-06 18:05:48.087 CEST ] [RoohCtl.createBootstrapDirs:402]  Creating directory /u01/app/oracle/homes/OraDB18Home1/dbs
[main] [ 2019-10-06 18:05:48.087 CEST ] [RoohCtl.createBootstrapDirs:413]  Created directory /u01/app/oracle/homes/OraDB18Home1/dbs
[main] [ 2019-10-06 18:05:48.087 CEST ] [RoohCtl.createBootstrapDirs:402]  Creating directory /u01/app/oracle/homes/OraDB18Home1/network
[main] [ 2019-10-06 18:05:48.088 CEST ] [RoohCtl.createBootstrapDirs:413]  Created directory /u01/app/oracle/homes/OraDB18Home1/network
[main] [ 2019-10-06 18:05:48.088 CEST ] [RoohCtl.createBootstrapDirs:402]  Creating directory /u01/app/oracle/homes/OraDB18Home1/network/admin
[main] [ 2019-10-06 18:05:48.088 CEST ] [RoohCtl.createBootstrapDirs:413]  Created directory /u01/app/oracle/homes/OraDB18Home1/network/admin
[main] [ 2019-10-06 18:05:48.088 CEST ] [RoohCtl.createBootstrapDirs:402]  Creating directory /u01/app/oracle/homes/OraDB18Home1/network/trace
[main] [ 2019-10-06 18:05:48.089 CEST ] [RoohCtl.createBootstrapDirs:413]  Created directory /u01/app/oracle/homes/OraDB18Home1/network/trace
[main] [ 2019-10-06 18:05:48.089 CEST ] [RoohCtl.createBootstrapDirs:402]  Creating directory /u01/app/oracle/homes/OraDB18Home1/network/log
[main] [ 2019-10-06 18:05:48.089 CEST ] [RoohCtl.createBootstrapDirs:413]  Created directory /u01/app/oracle/homes/OraDB18Home1/network/log
[main] [ 2019-10-06 18:05:48.089 CEST ] [RoohCtl.createBootstrapDirs:402]  Creating directory /u01/app/oracle/homes/OraDB18Home1/assistants
[main] [ 2019-10-06 18:05:48.089 CEST ] [RoohCtl.createBootstrapDirs:413]  Created directory /u01/app/oracle/homes/OraDB18Home1/assistants
[main] [ 2019-10-06 18:05:48.090 CEST ] [RoohCtl.createBootstrapDirs:402]  Creating directory /u01/app/oracle/homes/OraDB18Home1/assistants/dbca
[main] [ 2019-10-06 18:05:48.090 CEST ] [RoohCtl.createBootstrapDirs:413]  Created directory /u01/app/oracle/homes/OraDB18Home1/assistants/dbca
[main] [ 2019-10-06 18:05:48.090 CEST ] [RoohCtl.createBootstrapDirs:402]  Creating directory /u01/app/oracle/homes/OraDB18Home1/assistants/dbca/templates
[main] [ 2019-10-06 18:05:48.090 CEST ] [RoohCtl.createBootstrapDirs:413]  Created directory /u01/app/oracle/homes/OraDB18Home1/assistants/dbca/templates
[main] [ 2019-10-06 18:05:48.090 CEST ] [RoohCtl.createBootstrapDirs:402]  Creating directory /u01/app/oracle/homes/OraDB18Home1/install
[main] [ 2019-10-06 18:05:48.090 CEST ] [RoohCtl.createBootstrapDirs:413]  Created directory /u01/app/oracle/homes/OraDB18Home1/install
[main] [ 2019-10-06 18:05:48.091 CEST ] [RoohCtl.processFilesDirectives:959]  Processing entry /u01/app/oracle/product/18.0.0/dbhome_1/network/admin/sqlnet.ora|/u01/app/oracle/homes/OraDB18Home1/network/admin/sqlnet.ora|WIN
[main] [ 2019-10-06 18:05:48.091 CEST ] [RoohCtl.processFilesDirectives:980]  OS specific construct WIN
[main] [ 2019-10-06 18:05:48.091 CEST ] [RoohCtl.processFilesDirectives:986]  Process entry false
$

The logfile lists the directories that were created under $ORACLE_BASE.

Next, quickly create a database with DBCA:

$ /u01/app/oracle/product/18.0.0/dbhome_1/bin/dbca -silent -createDatabase -templateName General_Purpose.dbc -gdbname ORCL -sid ORCL -sysPassword Oracle123 -systemPassword Oracle123 -createAsContainerDatabase false -totalMemory 1024 -storageType FS -datafileDestination /oradata -emConfiguration NONE -ignorePreReqs
Prepare for db operation
10% complete
Copying database files
40% complete
Creating and starting Oracle instance
42% complete
46% complete
50% complete
54% complete
60% complete
Completing Database Creation
66% complete
69% complete
70% complete
Executing Post Configuration Actions
100% complete
Database creation complete. For details check the logfiles at:
 /u01/app/oracle/cfgtoollogs/dbca/ORCL.
Database Information:
Global Database Name:ORCL
System Identifier(SID):ORCL
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/ORCL/ORCL.log" for further details.
$

With the read only configuration in place, DBCA created the necessary files under $ORACLE_BASE/dbs instead of $ORACLE_HOME/dbs:

$ . oraenv
ORACLE_SID = [oracle] ? ORCL
The Oracle base has been set to /u01/app/oracle
$ ls -l $ORACLE_BASE/dbs/*
-rw-rw----. 1 oracle oinstall 1544 Oct  6 18:19 /u01/app/oracle/dbs/hc_ORCL.dat
-rw-r-----. 1 oracle oinstall   44 Oct  6 18:19 /u01/app/oracle/dbs/initORCL.ora
-rw-r-----. 1 oracle oinstall   24 Oct  6 18:10 /u01/app/oracle/dbs/lkORCL
-rw-r-----. 1 oracle oinstall 3584 Oct  6 18:17 /u01/app/oracle/dbs/orapwORCL
-rw-r-----. 1 oracle oinstall 2560 Oct  6 18:19 /u01/app/oracle/dbs/spfileORCL.ora
$ ls -l $ORACLE_HOME/dbs/*
-rw-r--r--. 1 oracle oinstall 3079 May 14  2015 /u01/app/oracle/product/18.0.0/dbhome_1/dbs/init.ora
$

The below commands also reflect the configuration change:

$ orabasehome
/u01/app/oracle/homes/OraDB18Home1
$ orabaseconfig
/u01/app/oracle
$ cat $ORACLE_HOME/install/orabasetab
#orabasetab file is used to track Oracle Home associated with Oracle Base
/u01/app/oracle/product/18.0.0/dbhome_1:/u01/app/oracle:OraDB18Home1:Y:
$

Disabling the read only configuration (even though the -disable option is not listed):

$ /u01/app/oracle/product/18.0.0/dbhome_1/bin/roohctl
Usage:  roohctl [<flag>] [<command> <option>]
Following are the possible flags:
        -help

Following are the possible commands:
        -enable Enable Read-only Oracle Home
                [-nodeList List of nodes in a cluster environment]



$ /u01/app/oracle/product/18.0.0/dbhome_1/bin/roohctl -disable
Disabling Read-Only Oracle home.
Update orabasetab file to disable Read-Only Oracle home.
Orabasetab file has been updated successfully.
Read-Only Oracle home has been disabled successfully.
Check the log file /u01/app/oracle/cfgtoollogs/roohctl/roohctl-191006PM063121.log.
$ cat /u01/app/oracle/cfgtoollogs/roohctl/roohctl-191006PM063121.log
[main] [ 2019-10-06 18:31:21.846 CEST ] [RoohCtl.execute:459]  Oracle Home value read from System Properties: /u01/app/oracle/product/18.0.0/dbhome_1
[main] [ 2019-10-06 18:31:21.847 CEST ] [RoohCtl.execute:477]  Operation disable
[main] [ 2019-10-06 18:31:21.847 CEST ] [RoohCtl.execute:482]  nodeList value read from CLI: null
[main] [ 2019-10-06 18:31:21.848 CEST ] [RoohCtl.processOperation:768]  Orabasetab Location: /u01/app/oracle/product/18.0.0/dbhome_1/install/orabasetab
[main] [ 2019-10-06 18:31:21.861 CEST ] [RoohCtl.createModifiedOrabasetab:161]  Oracle Home read from orabasetab: /u01/app/oracle/product/18.0.0/dbhome_1
[main] [ 2019-10-06 18:31:21.861 CEST ] [RoohCtl.createModifiedOrabasetab:162]  Oracle Base read from orabasetab: /u01/app/oracle
[main] [ 2019-10-06 18:31:21.861 CEST ] [RoohCtl.createModifiedOrabasetab:163]  Oracle Home Name read from orabasetab: OraDB18Home1
[main] [ 2019-10-06 18:31:21.862 CEST ] [RoohCtl.processOrabasetab:253]  Copying file /u01/app/oracle/product/18.0.0/dbhome_1/install/orabasetab.temp to /u01/app/oracle/product/18.0.0/dbhome_1/install/orabasetab
[main] [ 2019-10-06 18:31:21.863 CEST ] [RoohCtl.processOrabasetab:261]  Deleting temp file: /u01/app/oracle/product/18.0.0/dbhome_1/install/orabasetab.temp
$ orabasehome
/u01/app/oracle/product/18.0.0/dbhome_1
$ orabaseconfig
/u01/app/oracle/product/18.0.0/dbhome_1
$ cat $ORACLE_HOME/install/orabasetab
#orabasetab file is used to track Oracle Home associated with Oracle Base
/u01/app/oracle/product/18.0.0/dbhome_1:/u01/app/oracle:OraDB18Home1:N:
$

But:

$ . oraenv
ORACLE_SID = [ORCL] ? ORCL
The Oracle base remains unchanged with value /u01/app/oracle
$ sqlplus / as sysdba

SQL*Plus: Release 18.0.0.0.0 - Production on Sun Oct 6 18:36:52 2019
Version 18.3.0.0.0

Copyright (c) 1982, 2018, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/u01/app/oracle/product/18.0.0/dbhome_1/dbs/initORCL.ora'
SQL>

That is because the configuration files need to be copied/moved back to their original location manually:

$ echo $ORACLE_BASE/dbs
/u01/app/oracle/dbs
$ ls -l $ORACLE_BASE/dbs/*
-rw-rw----. 1 oracle oinstall 1544 Oct  6 18:19 /u01/app/oracle/dbs/hc_ORCL.dat
-rw-r-----. 1 oracle oinstall   44 Oct  6 18:19 /u01/app/oracle/dbs/initORCL.ora
-rw-r-----. 1 oracle oinstall   24 Oct  6 18:10 /u01/app/oracle/dbs/lkORCL
-rw-r-----. 1 oracle oinstall 3584 Oct  6 18:17 /u01/app/oracle/dbs/orapwORCL
-rw-r-----. 1 oracle oinstall 2560 Oct  6 18:19 /u01/app/oracle/dbs/spfileORCL.ora
$ ls -l $ORACLE_HOME/dbs/*
-rw-r--r--. 1 oracle oinstall 3079 May 14  2015 /u01/app/oracle/product/18.0.0/dbhome_1/dbs/init.ora
$ mv $ORACLE_BASE/dbs/* $ORACLE_HOME/dbs/
$ ls -l $ORACLE_HOME/dbs/*
-rw-rw----. 1 oracle oinstall 1544 Oct  6 18:36 /u01/app/oracle/product/18.0.0/dbhome_1/dbs/hc_ORCL.dat
-rw-r--r--. 1 oracle oinstall 3079 May 14  2015 /u01/app/oracle/product/18.0.0/dbhome_1/dbs/init.ora
-rw-r-----. 1 oracle oinstall   44 Oct  6 18:19 /u01/app/oracle/product/18.0.0/dbhome_1/dbs/initORCL.ora
-rw-r-----. 1 oracle oinstall   24 Oct  6 18:10 /u01/app/oracle/product/18.0.0/dbhome_1/dbs/lkORCL
-rw-r-----. 1 oracle oinstall 3584 Oct  6 18:17 /u01/app/oracle/product/18.0.0/dbhome_1/dbs/orapwORCL
-rw-r-----. 1 oracle oinstall 2560 Oct  6 18:19 /u01/app/oracle/product/18.0.0/dbhome_1/dbs/spfileORCL.ora
$ ls -l $ORACLE_BASE/dbs
total 0
$ sqlplus / as sysdba

SQL*Plus: Release 18.0.0.0.0 - Production on Sun Oct 6 18:38:45 2019
Version 18.3.0.0.0

Copyright (c) 1982, 2018, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area  805306176 bytes
Fixed Size                  8662848 bytes
Variable Size             440401920 bytes
Database Buffers          348127232 bytes
Redo Buffers                8114176 bytes
Database mounted.
Database opened.
SQL>

More information about this feature in the documentation:
Configuring Read-Only Oracle Homes

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.