oracle 升级 32升级64 utlirp,oracle11g 32bit 升级至64bit

因为32bit数据库内存的限制,导致其很难突破4G内存,迫使需要对数据库进行升级到64bit。

升级步骤:

1、关闭数据库,并对数据库进行冷备(copy数据文件、控制文件、spfile等)、可直接备份ORACLE_BASE目录。

2、卸载原有32bit数据库软件(删除/etc/oraInst.loc、/etc/oratab即可)。

3、安装64bit同版本数据库,并建库,关闭数据库。

4、将32bit版本的数据文件、控制文件、spfile、、listener.ora、tnsnames.ora考备到64bit下对应的目录。

5、启动数据库(startup upgrade)。

6、重新编译64位的PL/SQL模块。

@$ORACLE_HOME/rdbms/admin/utlirp.sql

这里执行完以后,会多出很多无效的对象,需要重新编译,同时如果安装了OLAP组件的话,需要重新安装OLAP组件,否者跳过下面这一步。

7、重新安装OLAP组件

7.1、删除OLAP组件

cd $ORACLE_HOME/rdbms/lib

make -f ins_rdbms.mk olap_off

make -f ins_rdbms.mk ioracle

7.2、安装OLAP

sqlplus /as sysdba

SQL> spool add_olap.log

SQL> @?/olap/admin/olap.sql SYSAUX TEMP;

SQL> spool off

8、编译无效对象

sqlplus /as sysdba

SQL> spool utlrp.log

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

SQL> spool off

9、重建 javashared data objects (SRO)

10、重复第8步,编译无效对象

11、验证是否存在无效的对象和组件。

SQL> select OWNER,OBJECT_NAME,OBJECT_TYPE from all_objects where status='INVALID';

SQL> select comp_id,comp_name,version,status from dba_registry;

附:重建 javashared data objects  sql语句

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 amaxnumber 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

/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值