Oracle Database 32-bit Funny Migration to 64-bit


Migrating one 32-bit database that resides on an old Windows 2008 (32-bit) (4GB memory) to Windows 2008 64-bit (no upgrade) on a brand new server with 64GB memory.

{At 2017 and still there is database ==> yes there is!}


Introduction and Background

I have a client with the following very old environment:

O.S.:                      Windows 2008 32-bit

Oracle:         32-bit

This environment was initially installed at 2002 (with Oracle 901) and then it went with a couple of upgrades until they reached, then they stopped upgrade, why?

This was actually because of the application vendor closed completely and disappeared !!

Since that date, client decided to stop any further database upgrades to avoid any issues with the application (as there is no application support going forward).

In parallel, he started to develop a new application with a new vendor with the latest technologies, but they didn’t finish yet.

Until the new application is completed, he wants to keep the old system running as it is!.

But, given the increased workload and data volumes and the 32-bit memory limitations ( < 4GB), he started to suffer heavily from the memory shortage.

So, to work around the memory issue, he decided to move the database from 32-bit platform to 64-bit platform without upgrade to minimize any impact on the old application.

So, it looks like a simple migration, let us see!


Which Windows Version?:

Ok, as we are going to move to another new powerful server, so, let us move to the latest Windows version available. Let us go with Windows 2012 R2. This is fine, but wait, as Oracle is not certified with Windows 2012, actually there was no Windows 2012 at that time!.

Ok, no problem so let us go with Windows 2008 R2 64-bit.

  • Unfortunately, Oracle is not certified with this version, it is certified only with Windows 2008 64-bit (without R2)!.

Ok, go ahead and install Windows 2008 (without R2) on the new server and start the migration.

No, wait please, the new hardware is not compatible with the Windows 2008 , it is only compatible with Windows 2012 !!!!

Ok, no problem, let us install Windows 2012 R2 Enterprise Edition (64-bit) on the new server and then create a Virtual Machine on top of it with Windows 2008 64-bit , as a workaround.

So, I used the Windows Hyper-V virtualization technology to implement this and created a new Windows 2008 64-bit virtual machine.

So far so good, let us move on.!

Where is the Database Software?

Client has only (+ patchset) 32-bit, he doesn’t have the 64-bit version.

Ok, no problem, go ahead and download it from OTN or edelivery ==>  unfortunately, Oracle already removed these old versions from its sites!.

The only way to get them, is to send Oracle a request and they will send you a physical DVD with the required software. The other option is to ask one of your Oracle friends to download it for you (on friendly basis) from Oracle Internal sites {ok thanks for my friend!]

For Windows 2008 64-bit, we are lucky, as we have full version that can be installed directly. For any other Windows 64-bit platform, you have to install first and then patch it to

Install Hyper-V



Create new virtual Machine


Disable Firewall.

Assign  static IP

Oracle 64-bit Installation



Database Migration


  • Same data file directory structure
  • Same characterset
  • Physical – as it is – migration from 32-bit (Windows 2003 32-bit) to 64-bit (Windows 2008 Enterprise Edition 64-bit).

Note that the new server version OS version is Windows 2008 Enterprise Edition 64-bit, not Windows 2008 Enterprise Edition 64-bit R2 ( as Oracle is not certified with R2)

Migration Procedure:

  • Shutdown the source PIS database (take it offline in case of Fail Safe environment)
  • Take Full database offline backup (Database size is small , about 20 GB)
  • Copy the production database full backup to the new server  ( it takes about 5 minutes over network).
  • Copy initXXX.ora & Password file
  • Optionally, copy the tnsnames.ora, listener.ora & sqlnet.ora
  • Edit initXXX.ora file:

Remove all _ parameters

Create all the referenced directories

Enlarge the SGA  and configure ASMM


  • Copy the datafiles, redo files, control files to the same directories as that on the production


  • Configure default listener using the “Net Configuration Assistant”
  • Create the Oracle service on the 64bit system, using the ORADIM command

        oradim -new -sid XXX -startmode auto -SRVCSTART SYSTEM -intpwd ****** –   pfile M:\app\Administrator\product\11.1.0\db_1\database\initXXX.ora

You may need to write the above command manually, not copy/paste!                                                Instance created and started


Set environment

      set ORACLE_HOME=M:\app\Administrator\product\11.1.0\db_1         

      set PATH=%ORACLE_HOME%\bin;%PATH%                          

      set ORACLE_SID=XXX


If the service started the database in the “READ WRITE” mode then:

Leave the Windows service running

From command window:

                                sqlplus / as sysdba

shutdown immediate

startup mount



To avoid the issue of FRA being 100% utilized:

                                 rman target /

crosscheck archivelog all;

crosscheck backupset;

delete expired backupset;

shutdown immediate



If you have OLAP installed, then you may encounter many errors [ORA-07445/ORA-03113] later on. So, to avoid these errors, we will remove the OLAP and then add it again:

{Please refer to:

DB CONVERSION: 32 bit –>64 Bit Broke OLAP OPTION [ID 386990.1]


                                sqlplus / as sysdba

startup upgrade


Remove OLAP






Add OLAP  ( if it is required) or add it later after migration using :                                                            @?/olap/admin/olap.sql SYSAUX TEMP;


{{If the utlrp script hang, this is mainly due to OLAP being installed}}




@?\rdbms\admin\utlrp.sql                         ==> 5 minutes


All of the above 70 invalid objects are related to the OLAP, so , don’t worry!

     select count(*) from dba_objects where status=’INVALID’;

shutdown immediate


select name,platform_name,open_mode from v$database;

Congratulation ,  Migration completed !


If you want to add the OLAP option:

@?/olap/admin/olap.sql SYSAUX TEMP;                               ==> 3 minutes

@?\rdbms\admin\utlrp.sql                                         è zero invalid object

{But note that adding OLAP will produce many core dumps and trace files, it is better to keep OLAP deleted unless you really need it}


Post Migration


Configure EM DB Control on the New Server


Ensure that the listener is up and running

emca -deconfig dbcontrol db -repos drop


emca -config dbcontrol db -repos create


Emctl status dbconsole




Windows Services: