How to move Oracle DB to New Oracle Home on Same Windows Server
I have been thinking about writing a Pythian blog for long time, and today I finally took the opportunity. In the DBA life, it's common to get a request to move the database across servers due to a RDBMS upgrade plan or receiving new hardware. It's not common, however, to receive a request to move RDBMS Oracle home within the same server.
This request may arrive due to improper planning of creating the Oracle home into the root mount point on Unix platforms, and C:\ drive on Windows platforms(system mountpoint/drive). The cloning feature introduced by Oracle from the 10gR2 version become handy to work with on this request. The use of clone.pl script on Unix platform is quite straightforward, as we have full control over Unix processes. The thread architecture on Windows platform makes this a bit different, but not complex.
Let's assume the current Oracle home is located at "C:\oracle\product\11.1.0" directory, and the new directory planning to move is "D:\oracle\product\11.1.0" for example. As usual, keep the database name as TEST. The steps below describe the activities required.
Preparing the new Oracle home location
Step 1. Copy Oracle home contents
Log into Windows server as local server user, which is part of local administrator and ora_dba groups. Let the existing Oracle database run and start to copy the entire contents from "C:\oracle\product\11.1.0" directory to "D:\oracle\product\11.1.0" directory. Ensure the copy process is completed without any issues.
Step 2. Verify existing inventory
Take existing Oracle home inventory details for reference. Open a command prompt window (Window I) and execute these commands.
C:\>set ORACLE_HOME=C:\oracle\product\11.1.0
C:\>set PATH=C:\oracle\product\11.1.0\OPatch;C:\oracle\product\11.1.0\bin;%PATH%
C:\>opatch version
C:\>opatch lsinventory
Executing the cloning process
Step 3. Set environment variables for cloning
Open a new command prompt (Window II) and set the environment variables appropriately.
C:\>set PERL5LIB=D:\oracle\product\11.1.0\perl\5.8.3\lib
This depends on Perl version exists under oracle home, may differ from version to version.
C:\>set PATH=D:\oracle\product\11.1.0\perl\5.8.3\bin\MSWin32-x86-multi-thread;%PATH%
Step 4. Run the clone.pl script
Run the clone.pl script from Window II.
C:\>perl clone.pl ORACLE_HOME="D:\oracle\product\11.1.0" ORACLE_HOME_NAME="OraDB11gR1_home" ORACLE_BASE="D:\oracle"
Execution of this command should complete without any issues. Review the log file C:\Program Files\Oracle\Inventory\logs\cloneActions<DATE>.log for the verification.
Excerpts from the log file: ------------------------------------ INFO: ca page to be shown: false INFO: exitonly tools to be excuted passed: 0 INFO: *** End of Installation Page*** The cloning of OraDB11gR1_home was successful. ==> Should get this message.
Step 5. Verify the cloned home configuration
Execute the following commands from window II for the newly cloned home configuration verification.
C:\>set ORACLE_HOME=D:\oracle\product\11.1.0 C:\>set PATH=D:\oracle\product\11.1.0\OPatch;D:\oracle\product\11.1.0\bin;%PATH% C:\>opatch version
Output should match with the output obtained on step 2.
C:\>opatch lsinventory
Output should match with the output obtained on step 2.
Switching database services to the new home
Step 6. Stop existing database and listener services
Get maximum 15 minutes downtime for the database and bring down the TEST database. Open the services utility and stop "OracleOraDB11g_homeTNSListener" service and "OracleServiceTEST" service.
Step 7. Delete old listener service
On Window I, execute this command to delete the existing listener service from the server.
C:\>C:\oracle\product\11.1.0\bin\netca.bat
Step 8. Delete old database services
Execute this command from Window I to delete the existing database services from the server.
C:\>ORADIM -DELETE -SID TEST
Step 9. Confirm service deletion
Open the services utility and confirmed all the services belongs to old oracle home including "Oracle TEST VSS Writer Service" and "OracleJobSchedulerTEST" are deleted.
Finalizing the new configuration
Step 10. Configure new listener service
Invoke Oracle Net Configuration Assistant from Window II to configure new listener service.
C:\>D:\oracle\product\11.1.0\bin\netca.bat
Step 11. Create new database service
Create new database service from new oracle home from Window II.
C:\>ORADIM -NEW -SID TEST -SYSPWD *** -STARTMODE auto -SPFILE
Note: This command would start the database instance too.
Step 12. Verify new services and startup types
Open services utility and confirmed the following services got created from new oracle home. Modify the "Startup Type" for these services accordingly.
- OracleOraDB11gR1_homeTNSListener
- OracleServiceTEST
- Oracle TEST VSS Writer Service
- OracleJobSchedulerTEST
Now work with your application administrator, and confirm that everything works fine :)
Oracle Database Consulting Services
Ready to optimize your Oracle Database for the future?
Share this
Share this
More resources
Learn more about Pythian by reading the following blogs and articles.

Installing Oracle Database 23ai Free for ARM - Solution to DBCA ORA-00600
Cloning Oracle Home from RAC to Stand-Alone

Oracle PDB Default Service Limiting SQL Parallelism
Ready to unlock value from your data?
With Pythian, you can accomplish your data transformation goals and more.