In this post, we are going to discuss the Migration Plan for Oracle Database Server. We have tried to briefly explain the process with examples. Have a look and feel free to add points in the comment box if we have missed.
1. On the source database, determine the locations of the data files.
2. On the source, the database creates a trace file that contains a CREATE CONTROLFILE command in it.
3. Copy the trace file from the source server to the destination server.
4. Shut down the source database using immediately.
1. Create directory structures on the destination server.
2. While the source database is shut down, copy the source data files from the source server to the destination server.
3. Copy the source init.ora file to the destination server.
4. Modify the destination init.ora file, change the DB_NAME parameter to reflect the new name of the database,
and also modify any directories to reflect the directory structure of the destination environment.
5. Modify the script to recreate the destination database control file.
6. Set the ORACLE_SID variable to reflect the destination database name.
7. Startup the destination database in nomount mode.
8. Execute the script to recreate the control file.
13. Alter the destination database open with the OPEN RESETLOGS clause.
14. Lastly, add the temporary tablespace temp file.
Current hardware : (Example)
Processor : Intel(R) Xeon(R) Gold 5120 CPU @ 2.20GHz (1 Processors)
Installed Memory : 31 GB
Current operating system : Redhat:enterprise_linux:7.6
Current operating system version : 3.10.0-957.el7.x86_64
Current database edition : Oracle Database 12c Standard Edition Release 22.214.171.124.0 – 64bit Production
Current database version : Release 126.96.36.199.0 – 64bit Production
Current storage : (Example)
[oracle@zemdbp04 etc]$ df -kh
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_root-lv_root 48G 8.1G 40G 17% /
devtmpfs 16G 0 16G 0% /dev
tmpfs 4.0G 1.7G 2.4G 41% /dev/shm
tmpfs 16G 1.3G 15G 9% /run
tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/sda1 485M 326M 160M 68% /boot
/dev/mapper/vg_root-lv_u01 400G 82G 319G 21% /u01
tmpfs 3.2G 0 3.2G 0% /run/user/1004
tmpfs 3.2G 0 3.2G 0% /run/user/0
tmpfs 3.2G 0 3.2G 0% /run/user/54321
tmpfs 3.2G 0 3.2G 0% /run/user/54339
Total disk space 514.5 GB
Proposed disk :
Same or more
Current Oracle Database 12c Standard Edition Release 188.8.131.52.0 – 64bit Production
Plan to upgrade Oracle Database 12c Standard Edition Release 184.108.40.206.0 – 64bit Production or higher
1 Need a fresh new machine with updated Oracle Database 12c Standard Edition Release 220.127.116.11.0 or higher
2 Oracle Database 12c Standard Edition Release 18.104.22.168.0 or higher
3 Migration of all database and other from current Oracle Database server to Newly built Server
4 When both Oracle Database server will become same (copy) after migration, then need to assign current IP to the newly built server or use new Oracle Database Server IP in application
5 Need to check application running status
6 If anything goes wrong, we may roll back to old ORACLE Server
7 Fix the issue & again switch to new Server
8 Downtime & rollback time will be less.
9 Initial installation & migration may take more time
OS Name Redhat:enterprise_linux:7.6
OS Version 3.10.0-957.el7.x86_64
Processor Intel(R) Xeon(R) Gold 5120 CPU @ 2.20GHz (1 Processors)
Installed Memory 31 GB
ORACLE Version Oracle Database 12c Standard Edition Release 22.214.171.124.0 – 64bit Production
ORACLE Instance Edition Standard Edition (64-bit)
Product Version 126.96.36.199.0
Product Level SP1
Machine Name ABCD
Local TCP port 1525
OS Name Redhat:enterprise_linux:7.6 or higher
OS Version 3.10.0-957.el7.x86_64 or higher
OS Manufacturer Red Hat Enterprise Linux
Installed Memory 31 GB or higher
ORACLE Version Oracle Database 12c Standard Edition Release 188.8.131.52.0 – 64bit Production or higher
Oracle Instance Edition Standard Edition (64-bit)
Machine Name ABCD or other
Local TCP port 1525
1. Cron jobs: Modify and test the shell scripts that connect to the database (using sqlplus for Oracle) with new connection details.
2. Batch processes: Modify and test batch processes that run on a scheduled interval so that they perform all CRUD operations on the new database.
3. Database links: Test database links on the new database server.
4. Other databases: If you are using other databases to do some work, modify the processes to point to new database instance.
5. Schedule jobs: Test Oracle scheduled jobs on new database instance.
6. Oracle packages: Test advanced Oracle packages you are using. Eg: utl_mail, utl_file, etc.
7. Oracle directories: Think about Oracle directories you are using.
If you are migrating your database to a different Unix server, the directories will have to be recreated.
Test processes that reference the directories.
8. Performance: The new database will most likely give better performance.
If that’s not the case, notify the DBA about it. Keep an eye on the performance to see if it deteriorates.
9. Profile file: Modify your Unix profile file if you are loading any database related details.
10. Metadata: If you had access to Oracle dictionary tables in old database, make sure you can access those from new database.
11. Notification: Notify all users who are directly connecting to your database.
Ideally, you would want to give them a heads up before the migration to avoid any surprises/shocks :).
12. Back up plan: This is very important. Have a backup plan to roll back your code changes if database migration has some issues.
You don’t want your application to be unavailable (maybe for a few days) until the issue is fixed.
“Please let us know if there are any changes/modifications required. Feel free to comment below – We always appreciate hearing your tips.”