oracle 10g 10.2.0.4 32位升级到64位

测试一下准备将以前安装的所有32位的oracle服务器都升级到64位。

1.当前环境:

[root@qht115 ~]# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 5.6 (Tikanga)
[oracle@qht115 Disk1]$ uname -a
Linux qht115 2.6.18-238.el5 #1 SMP Sun Dec 19 14:22:44 EST 2010 x86_64 x86_64 x86_64 GNU/Linux
[oracle@qht115 ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on Fri Jul 6 12:22:20 2018

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

操作是redhat 5.6 64位的,数据库是10.2.0.4 32位的,目标是只升级数据库到64位,oracle版本号暂不改变。

2. 获取数据库完整的文件,方法可以是冷备份的一致性copy,或者rman完整恢复。

我是通过rman恢复的一个全备份。

[oracle@qht115 orcl]$ pwd
/u01/oradata/orcl
[oracle@qht115 orcl]$ ls
clt_stats01.dbf   CSPSPACE_003.dbf  redo01.log  sysaux01.dbf
control01.ctl     l5mspace01.dbf    redo02.log  system01.dbf
control02.ctl     magspace01.dbf    redo03.log  temp01.dbf
control03.ctl     mtrxspace01.dbf   redo04.log  undotbs01.dbf
CSPSPACE_001.dbf  mtrxspace02.dbf   redo05.log  users01.dbf
CSPSPACE_002.dbf  qhtdata01.dbf     redo06.log

先备份一下,防止升级出现 问题:

[oracle@qht115 orcl]$ cp /u01/oradata/orcl/* /u01/oradata/orcl_bak

将32位的oracle软件改名,接着安装64位的oracle:

[oracle@qht115 u01]$ mv /u01/app /u01/app_32bit
[oracle@qht115 u01]$ echo $ORACLE_HOME
/u01/app/oracle/product/10201
[oracle@qht115 u01]$ mkdir -p /u01/app/oracle/product/10201

3.下载64位的oracle 软件,包括 10.2.0.1的基本包以及10.2.0.4的升级包。

https://pan.baidu.com/disk/home?#/all?vmode=list&path=%2F%E6%B5%B7%E9%87%8FIT%E8%B5%84%E6%96%99%20%2B%20%E5%90%84%E7%A7%8D%E5%B9%B3%E5%8F%B0%E4%B8%8B%E7%9A%84Oracle%E5%AE%89%E8%A3%85%E6%96%87%E4%BB%B6%20%2B%20%E5%85%AC%E5%BC%80%E8%AF%BE%E5%BD%95%E5%83%8F%20%2B%20%E5%90%84%E7%A7%8D%E8%A7%86%E9%A2%91%E6%95%99%E7%A8%8B%E8%B5%84%E6%96%99%2FLinux%20Oracle%20%E5%AE%89%E8%A3%85%E5%8C%85%2Foracle%2010.2.0.1%20-%2010.2.0.5%20for%20linux%20x86-64

4.安装及打10.2.0.4的patch,这里过程就忽略了。ORACLE_HOME不改变,继续是/u01/app/oracle/product/10201,安装好后:

[oracle@qht115 u01]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on Fri Jul 6 05:15:02 2018

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

Connected to an idle instance.

5.准备spfile,先建立spfile中需要的目录

[oracle@qht115 oracle]$ mkdir -p /u01/app/oracle/admin/orcl/adump
[oracle@qht115 oracle]$ mkdir -p /u01/app/oracle/admin/orcl/bdump
[oracle@qht115 oracle]$ mkdir -p /u01/app/oracle/admin/orcl/cdump
[oracle@qht115 oracle]$ mkdir -p /u01/app/oracle/admin/orcl/udump
[oracle@qht115 oracle]$ mkdir -p /u01/app/oracle/admin/orcl/dpdump
[oracle@qht115 oracle]$ mkdir -p /u01/app/oracle/admin/orcl/archive
[oracle@qht115 dbs]$ mkdir -p /u01/app/oracle/admin/orcl/flash_recovery_area

从其它库中找一个pfile复制到新库

SQL>  create pfile='$ORACLE_HOME/dbs/initorcl.ora' from spfile;

File created.
[oracle@qht106 dbs]$ scp initorcl.ora 172.17.61.115:/u01/app/oracle/product/10201/dbs

注销掉pfile.ora的#*.use_indirect_data_buffers=TRUE,这个参数是32位能需要用到的,扩展SGA到超过1.7G的。

并新增加参数 _SYSTEM_TRIG_ENABLED = false,关闭DDL审核触发器。

SQL> startup nomount pfile='/u01/app/oracle/product/10201/dbs/initorcl.ora';
ORACLE instance started.

6.建立spfile,通过spfile启动来升级数据库。

SQL> create spfile from pfile;
SQL> shutdown immediate;
SQL> startup upgrade;

7.编译对象

SQL> @?/rdbms/admin/utlirp.sql

@$ORACLE_HOME/rdbms/admin/catupgrd.sql  --这个脚本跨版本必须使用,由于我没有跨版本就可以不执行。

@?/rdbms/admin/utlrp.sql  --这个脚本用来编译失败的对象,需要执行一下

执行这个脚本的时候出错了,网上查了一下居然 是bug,日志文件如下:

ORA-07445: exception encountered: core dump [_intel_fast_memcpy.A()+10] [SIGSEGV] [Address not mapped to object] [0x2AC8B2A4F34F] [] []

还好暂时不影响使用,最好的办法是升级到10.2.0.5以上的版本。

8.验证升级结果:

SQL> select comp_name,version,status from sys.dba_registry;  --检查升级组件,看一是否都是valid的
SQL> select * from utl_recomp_errors;  --由于在执行utlrp.sql的时间出现异常,有几个对象编译不成功,所以这里会查出一些错误的对象

      OBJ#
----------
ERROR_AT
---------------------------------------------------------------------------
COMPILE_ERR
--------------------------------------------------------------------------------
     53499
06-JUL-18 06.19.49.802055 AM
ORA-04045: errors during recompilation/revalidation of PUBLIC.TRAVEL_EXPENSE_AME
ND
ORA-00980: synonym translation is no longer valid

     53496

      OBJ#
----------
ERROR_AT
---------------------------------------------------------------------------
COMPILE_ERR
--------------------------------------------------------------------------------
06-JUL-18 06.19.49.803397 AM
ORA-04045: errors during recompilation/revalidation of PUBLIC.OFFICE_EXPENSE
ORA-00980: synonym translation is no longer valid

     53498
06-JUL-18 06.19.49.804550 AM
ORA-04045: errors during recompilation/revalidation of PUBLIC.TRAVEL_EXPENSE

      OBJ#
----------
ERROR_AT
---------------------------------------------------------------------------
COMPILE_ERR
--------------------------------------------------------------------------------
ORA-00980: synonym translation is no longer valid

     53497
06-JUL-18 06.19.49.805777 AM
ORA-04045: errors during recompilation/revalidation of PUBLIC.EQUIPMENT
ORA-00980: synonym translation is no longer valid

准备将数据库继续升级到10.2.0.5以后的版本来解决这个问题。


[oracle@qht115 dbs]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on Fri Jul 6 06:25:52 2018

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select count(*) from l5m.TM_HEADER
  2  ;

  COUNT(*)
----------
       444

最后不要忘记生成密码文件,取消_SYSTEM_TRIG_ENABLED = false后重启一下数据库,因为这时还在upgrade模式中。

此至,数据库及软件都升级到了64bit。


猜你喜欢

转载自blog.csdn.net/jolly10/article/details/80939104
今日推荐