因为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
/