设为首页 加入收藏

TOP

Oracle 单实例 从32位 迁移到 64位 方法(三)
2014-11-24 18:52:39 】 浏览:4489
Tags:Oracle 实例 32位 迁移 64位 方法
:08 2012


Copyright (c) 1982, 2011, Oracle. All rights reserved.


Connected to an idle instance.



SQL> startup nomount pfile='/u02/app/oracle/product/11.2.0/db_1/dbs/initanqing.ora';


ORACLE instance started.



Total System Global Area 1402982400 bytes


Fixed Size 2228304 bytes


Variable Size 822087600 bytes


Database Buffers 570425344 bytes


Redo Buffers 8241152 bytes


SQL>



--重建控制文件:


SQL> CREATE CONTROLFILE REUSE DATABASE"ANQING" NORESETLOGS ARCHIVELOG


MAXLOGFILES 16


2 3 MAXLOGMEMBERS 3


4 MAXDATAFILES 100


5 MAXINSTANCES 8


6 MAXLOGHISTORY 292


7 LOGFILE


8 GROUP 1'/u02/app/oracle/oradata/anqing/redo01.log' SIZE 50M BLOCKSIZE 512,


9 GROUP 2'/u02/app/oracle/oradata/anqing/redo02.log' SIZE 50M BLOCKSIZE 512,


10 GROUP 3 '/u02/app/oracle/oradata/anqing/redo03.log' SIZE 50M BLOCKSIZE 512


11 --STANDBY LOGFILE


12 DATAFILE


13 '/u02/app/oracle/oradata/anqing/system01.dbf',


14 '/u02/app/oracle/oradata/anqing/sysaux01.dbf',


15 '/u02/app/oracle/oradata/anqing/undotbs01.dbf',


16 '/u02/app/oracle/oradata/anqing/users01.dbf'


17 CHARACTER SET ZHS16GBK


18 ;



Control file created.



--打开DB:


SQL> alter database open;


Database altered.



--尝试重建TEMP表空间,报错:


SQL> ALTER TABLESPACE TEMP ADD TEMPFILE'/u02/app/oracle/oradata/anqing/temp01.dbf' SIZE 30408704 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;


ALTER TABLESPACE TEMP ADD TEMPFILE'/u02/app/oracle/oradata/anqing/temp01.dbf' SIZE 30408704 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M


*


ERROR at line 1:


ORA-00604: error occurred at recursive SQLlevel 1


ORA-06553: PLS-801: internal error [56327]


--这里出错,是因为我们从32迁移到64位,还没有进行PL/SQL 模块的重建,等我们重建完成,在重建TEMP就没有问题了。



9. 在Target 端重新编译64位的PL/SQL模块



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


……


--脚本大概执行2分钟


DOC>###############################################################


DOC> utlirp.sql completed successfully. All PL/SQL objects in the


DOC> database have been invalidated.


DOC>


DOC> Shut down and restart the database in normal mode and run utlrp.sql to


DOC> recompile invalid objects.


DOC>###############################################################


SQL>


SQL> SPOOL OFF;



--这里说的很清楚,所有的PL/SQL 对象都变成了无效,需要shut down 后,用normal 默认启动,并执行utlrp.sql脚本,验证无效对象个数:


SQL> select count(*) from all_objectswhere status='INVALID';


COUNT(*)


----------


9768



--编译无效对象:


SQL> shutdown immediate


Database closed.


Database dismounted.


ORACLE instance shut down.



SQL> startup


ORACLE instance started.


Total System Global Area 1402982400 bytes


Fixed Size 2228304 bytes


Variable Size 822087600 bytes


Database Buffers 570425344 bytes


Redo Buffers 8241152 bytes


Database mounted.


Database opened.


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


--脚本执行半个小时



SQL> select count(*) from all_objectswhere status='INVALID';


COUNT(*)


----------


8054



--还是有很多无效对象,先放着,处理完Java在编译一次



10. 重建 javashared data objects (SRO)


用SYS 用户执行如下脚本:




begin
update obj$ set status=5 where obj#=(select obj# fromobj$,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 a

首页 上一页 1 2 3 4 5 6 下一页 尾页 3/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Oracle Convert a 32-bit Databas.. 下一篇64位 Linux平台下Oracle安装文档

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目