How to Convert a 32bit Database to 64bit Database on Linux

来源:互联网 发布:马士兵java教程下载 编辑:程序博客网 时间:2024/05/22 05:22

APPLIES TO:

Oracle Database - Enterprise Edition - Version 9.2.0.1 to 11.2.0.2 [Release 9.2 to 11.2]
Oracle Database - Standard Edition - Version 10.2.0.1 to 10.2.0.1 [Release 10.2]
Linux x86-64
Linux x86
***Checked for relevance on 29-Jun-2015***



GOAL

Steps to change the wordsize of an Oracle9i Release 2 (9.2), Oracle10g or Oracle11g single instance database from Linux x86 to Linux x86-64

This document provides details for changing word size from 32bit to 64bit in same release .For example, if you have the 32-bit version of Oracle release 9.2.0.4 and you want to switch to the 64-bit version of Oracle release 9.2.0.4, then you must complete this below procedure. This document is a "cut/paste" of applicable sections from the Oracle9i Release Notes Release 2 (9.2.0.4) for Linux x86-64 (B13848-02), to quickly provide the needed details and steps to change the word-size.

This note is applicable to Oracle9i(9.2.0.4 and onwards * ) , Oracle10g R1, Oracle 10g R2 and Oracle 11gR1

* For Redhat Red Hat Enterprise Linux AS/ES 3 . Other please check Metalink>Certify section to know certified version. 

Note:
If you are changing wordsize for Oracle release10.1.x/10.2.x/11.1/11.2 32-Bit to 64-bit with OLAP enabled for DB

Please refer the documents:
Note 352306.1   Upgrading OLAP from 32 to 64 bits 
Note 332351.1   How To Remove or To Reinstall the OLAP Option

Otherwise there could be some issues of ORA-07445 as mentioned in the later part of this document

SOLUTION

Use the following procedure to change wordsize of an Oracle9i Release 2 (9.2) or Oracle10g (10.1 & 10.2) or 11g single instance database from Linux x86 to Linux x86-64 in same release: 

1. Perform cold backups of the existing Oracle9i or Oracle10g (10.1.x & 10.2.x) or 11g database on the Linux x86 system to protect against any failures during the wordsize change. 

2. NOTE:This steps is required if the target system has different directory structure for database files. Otherwise this step can be skipped. 

To help with creating the control file after the wordsize change, enter the following SQL command: 

SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE; 

This command saves the control file information to a trace file in the UDUMP directory (Type show parameter USER_DUMP_DEST in SQLPLUS as sys/system user). The control file information is similar to the following: 

CREATE CONTROLFILE REUSE DATABASE "SAMPLE" NORESETLOGS 
NOARCHIVELOG 
MAXLOGFILES 32 
MAXLOGMEMBERS 2 
MAXDATAFILES 32 
MAXINSTANCES 1 
MAXLOGHISTORY 112 
LOGFILE 
GROUP1 '/ia32lnx_path/oracle/dbs/t_log1.f' SIZE 25M, 
GROUP2 '/ia32lnx_path/oracle/dbs/t_log2.f' SIZE 25M 
DATAFILE '/ia32lnx_path/oracle/dbs/t_DB1.F' 
CHARACTER SET WE8DEC; 

3. In a new Oracle home, install the 64-Bit release of Oracle9i Release 2 (9.2.x) , Oracle10.1.x, Oracle 10.2.x, Oracle 11.1.x, 11.2.x  software for Linux x86-64. It is recommended to use the same version on as on the 32-Bit box. 

4. Perform a clean database shutdown for Oracle-32 Bit database 

5. Copy the database files from Linux-x86 to the Linux x86-64 system. 

6. Copy your existing Oracle initialization parameter file (initsid.ora) to the new Oracle home. 

7. Edit the parameter file to point to the controlfiles if the location has change from the source machine. 

8. Change any Oracle home path references to use the new Oracle home path on the Linux x86-64 system. Like user_dump_dest , background_dump_dest , core_dump_dest etc 

9. NOTE:This steps is required if the target system has different directory structure for database files which causes controlfile recreation Otherwise this step can be skipped. 

Start up the database using SQL commands similar to the following 

Example: 
SQL> STARTUP NOMOUNT; 
CREATE CONTROLFILE REUSE DATABASE "SAMPLE" NORESETLOGS 
MAXLOGFILES 32 
MAXLOGMEMBERS 2 
MAXDATAFILES 32 
MAXINSTANCES 1 
MAXLOGHISTORY 112 
LOGFILE 
GROUP 1 '/lnx_x86-64_path/oracle/dbs/t_log1.f' size 25M,
GROUP 2 '/lnx_x86-64_path/oracle/dbs/t_log2.f' size 25M 
DATAFILE '/lnx_x86-64_path/oracle/dbs/t_db1.f' 
CHARACTER SET WE8DEC 
ALTER DATABASE OPEN 

Note: In the previous example, the path values will vary depending on your system. 

10.To change the word size of your release, enter the following command: 

If you are migrating an Oracle9i 9.2.0.x database, run STARTUP MIGRATE: 
SQL> STARTUP MIGRATE 

If you are migrating an Oracle10g or 11g database, run STARTUP UPGRADE: 
SQL> STARTUP UPGRADE

In 11g onwards

To complete the conversion, you must manually perform the following post-upgrade tasks:

    *      Increase initialization parameters affecting the system global area, such as SGA_TARGET and SHARED_POOL_SIZE, to support 64-bit operations.
    *      Reconnect after starting up the database so that a new session is created with the appropriate 64-bit initialization. For example:

      CONNECT  AS SYSDBA
      STARTUP UPGRADE
      CONNECT  AS SYSDBA
      SPOOL UPGRADE.LOG
      @catupgrd.sql

Refer: http://docs.oracle.com/cd/E11882_01/server.112/e10819/intro.htm#i1008703

11.Recompile existing PL/SQL modules in the format required by the 64-bit Oracle Database:

SQL> SPOOL mig32-64.log;
SQL> @$ORACLE_HOME/rdbms/admin/utlirp.sql 
SQL> SPOOL OFF;

Check the spool file and verify that the packages and procedures compiled successfully. Correct any problems you find in this file.

 

Handling instructions for JVM during upgrade
When migrating a database from 32 to 64bit (or vice versa) additional actionsare required for java.  In theory the format of java shared data objects (SRO)is not compatible between 32 and 64 bit and so these objects need to be droppedand regenerated.  In practice it may be the case prior to release 11 suchobjects could interoperate but if so this would only be by chance and shouldnot be relied on.The steps to do the regeneration are as follows.  They may take several minutes to complete.  They must be done connected as SYS.begin update obj$ set status=5 where obj#=(select obj# from obj$,javasnm$    where owner#=0 and type#=29 and short(+)=name and    nvl(longdbcs,name)='oracle/aurora/rdbms/Compiler'); commit; declare   cursor C1 is select      'DROP JAVA DATA "' || u.name || '"."' || o.name || '"'      from obj$ o,user$ u where o.type#=56 and u.user#=o.owner#;    ddl_statement varchar2(200);   iterations number;   previous_iterations number;   loop_count number;   my_err     number; begin   previous_iterations := 10000000;   loop     -- To make sure we eventually stop, pick a max number of iterations     select count(*) into iterations from obj$ where type#=56;     exit when iterations=0 or iterations >= previous_iterations;     previous_iterations := iterations;     loop_count := 0;     open C1;     loop       begin         fetch C1 into ddl_statement;         exit when C1%NOTFOUND or loop_count > iterations;       exception when others then          my_err := sqlcode;          if my_err = -1555 then -- snapshot too old, re-execute fetch query            exit;          else            raise;          end if;       end;       initjvmaux.exec(ddl_statement);       loop_count := loop_count + 1;     end loop;     close C1;   end loop; end; commit; initjvmaux.drp('delete from java$policy$shared$table'); update obj$ set status=1 where obj#=(select obj# from obj$,javasnm$    where owner#=0 and type#=29 and short(+)=name and    nvl(longdbcs,name)='oracle/aurora/rdbms/Compiler'); commit;end;/create or replace java system/


Oracle recommends that you run the utlrp.sql script after running the utlirp.sql script. The utlrp.sql script recompiles all PL/SQL modules that might be in an invalid state, including packages, procedures, and types. This is optional but Oracle recommends that you do it during installation and not at a later date. To run the utlrp.sql script, enter the following command: 

SQL> shutdown immediate; 
SQL> startup (use appropriate command; outlined above, depending on your version)
SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql 

Note:If you are changing wordsize for Oracle release10.1.x/10.2.x/11.1/11.2 32-Bit to 64-bit with OLAP enabled for DB then you may likely to see the error 

On Console: 
<>ORA-06544: PL/SQL: internal error, arguments: [56319], [], [], [], [], [], [], []<> 
On alert.log: 
ORA-07445: exception encountered: core dump [_intel_fast_memcpy.A()+10] [SIGSEGV] <>

Or

ORA-07445: exception encountered: core dump [__intel_new_memcpy()+2132] [SIGSEGV]

(on 11g)

Or

ORA-07445: exception encountered: core dump [_intel_fast_memcpy.A()+10] [SIGSEGV] < style="font-family: arial unicode ms;"> ( Run the Following query to check OLAP component installed 

SELECT COMP_NAME, STATUS FROM DBA_REGISTRY WHERE COMP_NAME LIKE ‘%OLAP%’) 

Please refer the document to solve this issue 

Note: 352306.1 Upgrading OLAP from 32 to 64 bits 
Note: 332351.1 How To Remove or To Reinstall the OLAP Option

Note: At this point, the natively compiled Java objects in the new[wordsize changed] database are invalid. Refer to the section "Steps to Update Natively Compiled Java Objects in the Database" for the procedure to revalidate these objects. 

12.Perform a clean shutdown of the database. 

13.Perform a complete backup of the new 64-bit Oracle9i Release 2 (9.2) or Oracle10gr1 /10gr2/11gR1 database 

Steps to Update Natively Compiled Java Objects in the Database 

To use natively compiled Java objects for Linux x86-64, use the following procedure to update compiled Java objects in the database: 

i. Connect to the database as user SYS or SYSTEM as SYSDBA [ You may get error ORA-1031 while running following command if you are not connected as SYSDBA]

ii. Enter the following command: 

iii. SQL> CREATE OR REPLACE JAVA SYSTEM;

   /

iiii. It may be necessary to recompile the Java objects with ncomp:

          i.e.   % ncomp -user scott/tiger Hello.class

Reference: 
Oracle9i Java Developer's Guide
Release 2 (9.2)

Part Number A96656-01

http://docs.oracle.com/cd/B10501_01/java.920/a96656/perf.htm
0 0