客户的32位oracle数据库系统磁盘出现损坏,庆幸的是oracle数据库完好无损。客户要求将数据库迁移到新购的设备上,新设备内存为64G,系统REDHAT 6.2 64位,直接拷贝数据文件肯定是不行的,因为oracle 的存储过程在32位和64位平台下的wordsize不同,虽然用户的存储过程可以在使用时自行完成重新编译,但oracle的系统存储过程确需要我们来手工转换。

总结,迁移过程如下:

1:备份oracle数据库

2:备份控制文件到trace(以备需要新建控制文件)

SQL> alter database backup controlfile to trace;Database altered.SQL> oradebug setmypid
Statement processed.
SQL> oradebug tracefile_name
/u01/app/admin/easy/udump/easy_ora_18830.trc
SQL> host cat /u01/app/admin/easy/udump/easy_ora_18830.trc
......
--
--     Set #1. NORESETLOGS case
--
-- The following commands will create a new control file and use it
-- to open the database.
-- Data used by Recovery Manager will be lost.
-- Additional logs may be required for media recovery of offline
-- Use this only if the current versions of all online logs are
-- available.
-- After mounting the created controlfile, the following SQL
-- statement will place the database in the appropriate
-- protection mode:
--  ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "EASY" NORESETLOGS  NOARCHIVELOGMAXLOGFILES 16MAXLOGMEMBERS 3MAXDATAFILES 100MAXINSTANCES 8MAXLOGHISTORY 292
LOGFILEGROUP 1 '/oradata/easy/redo01.log'  SIZE 11200K,GROUP 2 '/oradata/easy/redo02.log'  SIZE 11200K
-- STANDBY LOGFILE
DATAFILE'/oradata/easy/system01.dbf','/oradata/easy/undotbs01.dbf','/oradata/easy/sysaux01.dbf','/oradata/easy/users01.dbf'
CHARACTER SET ZHS16GBK
;
-- Commands to re-create incarnation table
-- Below log names MUST be changed to existing filenames on
-- disk. Any one log file from each branch can be used to
-- re-create incarnation records.
-- ALTER DATABASE REGISTER LOGFILE '/u01/app/flash_recovery_area/EASY/archivelog/2014_11_05/o1_mf_1_1_%u_.arc';
-- ALTER DATABASE REGISTER LOGFILE '/u01/app/flash_recovery_area/EASY/archivelog/2014_11_05/o1_mf_1_1_%u_.arc';
-- Recovery is required if any of the datafiles are restored backups,
-- or if the last shutdown was not normal or immediate.
RECOVER DATABASE
-- Database can now be opened normally.
ALTER DATABASE OPEN;
-- Commands to add tempfiles to temporary tablespaces.
-- Online tempfiles have complete space information.
-- Other tempfiles may require adjustment.
ALTER TABLESPACE TEMP ADD TEMPFILE '/oradata/easy/temp01.dbf'SIZE 20971520  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;
-- End of tempfile additions.
--
--     Set #2. RESETLOGS case
--
-- The following commands will create a new control file and use it
-- to open the database.
-- Data used by Recovery Manager will be lost.
-- The contents of online logs will be lost and all backups will
-- be invalidated. Use this only if online logs are damaged.
-- After mounting the created controlfile, the following SQL
-- statement will place the database in the appropriate
-- protection mode:
--  ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "EASY" RESETLOGS  NOARCHIVELOGMAXLOGFILES 16MAXLOGMEMBERS 3MAXDATAFILES 100MAXINSTANCES 8MAXLOGHISTORY 292
LOGFILEGROUP 1 '/oradata/easy/redo01.log'  SIZE 11200K,GROUP 2 '/oradata/easy/redo02.log'  SIZE 11200K
-- STANDBY LOGFILE
DATAFILE'/oradata/easy/system01.dbf','/oradata/easy/undotbs01.dbf','/oradata/easy/sysaux01.dbf','/oradata/easy/users01.dbf'
CHARACTER SET ZHS16GBK
;
-- Commands to re-create incarnation table
-- Below log names MUST be changed to existing filenames on
-- disk. Any one log file from each branch can be used to
-- re-create incarnation records.
-- ALTER DATABASE REGISTER LOGFILE '/u01/app/flash_recovery_area/EASY/archivelog/2014_11_05/o1_mf_1_1_%u_.arc';
-- ALTER DATABASE REGISTER LOGFILE '/u01/app/flash_recovery_area/EASY/archivelog/2014_11_05/o1_mf_1_1_%u_.arc';
-- Recovery is required if any of the datafiles are restored backups,
-- or if the last shutdown was not normal or immediate.
RECOVER DATABASE USING BACKUP CONTROLFILE
-- Database can now be opened zeroing the online logs.
ALTER DATABASE OPEN RESETLOGS;
-- Commands to add tempfiles to temporary tablespaces.
-- Online tempfiles have complete space information.
-- Other tempfiles may require adjustment.
ALTER TABLESPACE TEMP ADD TEMPFILE '/oradata/easy/temp01.dbf'SIZE 20971520  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;
-- End of tempfile additions.
--

3: 查看当前的数据库状态

SQL> select count(*) from dba_objects where status ='INVALID';COUNT(*)
----------0SQL> select comp_name,status from dba_registry;COMP_NAME               STATUS
---------------------------------------- ----------------------
Oracle Database Catalog Views        VALID
Oracle Database Packages and Types   VALID
Oracle Workspace Manager         VALID
JServer JAVA Virtual Machine         VALID
Oracle XDK               VALID
Oracle Database Java Packages        VALID
Oracle Expression Filter         VALID
Oracle Data Mining           VALID
Oracle Text              VALID
Oracle XML Database          VALID
Oracle Rules Manager             VALIDCOMP_NAME              STATUS
---------------------------------------- ----------------------
Oracle interMedia            VALID
OLAP Analytic Workspace          VALID
Oracle OLAP API              VALID
OLAP Catalog                 VALID
Spatial                  VALID
Oracle Enterprise Manager        VALID17 rows selected.

4:拷贝参数文件,控制文件,数据文件,日志文件到64位数据库

5:在64位系统上创建相应目录,如udmp  adump等,要和32位系统一致

6:如果数据库的数据文件目录发生变化,则需要新建控制文件,(最好保持源库和目标库的一致,减少工作量和错误发生率)

7:将数据库中的存储过程等置为失效,UTLIRP脚本会将存储过程等置为失效

<span style="white-space:pre">  </span>--如果迁移的是oracle9i的数据库,执行如下命令:SQL> STARTUP MIGRATE --如果是Oracle10g或11g,执行如下命令:SQL> STARTUP UPGRADE SQL> SPOOL EASY.log;SQL> @$ORACLE_HOME/rdbms/admin/utlirp.sql SQL> SPOOL OFF;   

8: 重新启动数据库,

9: 如果数据库有OLAP组件,则删除OLAP,以sys用户执行如下脚本

SQL> conn / as sysdba----> Remove OLAP Catalog
SQL> @?/olap/admin/catnoamd.sql----> Remove OLAP API
SQL> @?/olap/admin/olapidrp.plb
SQL> @?/olap/admin/catnoxoq.sql----> Deinstall APS - OLAP AW component
SQL> @?/olap/admin/catnoaps.sql
SQL> @?/olap/admin/cwm2drop.sql   ---只需要在11g中执行。在10g中,catnoamd.sql 脚本中已经包含了该脚本,所以不用执行You could getsome invalid objects under SYS and PUBLIC owner, and they are the old duplicate OLAPSYS objects copied under these schemas when Olap has been installedpreviously.
Generally, theOlap objects are named with context like %OLAP%, %AWM%, or other Olap word keys intheir "object_name" field, however, if it needs a help to recognizethem, then please contact Oracle  Support and create a Service Request toget assistance for this question.Note that catnoadm.sql could fail from 10.1.0.5 to 11.1.0.7release. Due to the factthat it refers to three scripts which don't get shipped until 11.2 this scriptwill fail.
Besides that itwill error on 7 non-existing synonyms to drop.Prior 11.2, execute these three dropsynonym statements:SQL> drop public synonym OlapFactView;
SQL> drop public synonym OlapDimView;
SQL> drop public synonym DBMS_ODM;

10:编译失效对象

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

此时会有错误,这是因为olap没有安装,下面安装olap,然后重新编译

11:添加OLAP

SQL> @?/olap/admin/olap.sql SYSAUX TEMP;
<pre name="code" class="sql">SQL> @?/rdbms/admin/utlrp.sql    --这次会非常快

12.  验证无效对象和组件状态

SQL> l1* select count(*) from dba_objects where status<>'VALID'
SQL> col comp_name for a40
SQL> select comp_name,status from dba_registry;COMP_NAME              STATUS
---------------------------------------- ----------------------
Oracle Database Catalog Views        VALID
Oracle Database Packages and Types   VALID
Oracle Workspace Manager         VALID
JServer JAVA Virtual Machine         VALID
Oracle XDK               VALID
Oracle Database Java Packages        VALID
Oracle Expression Filter         VALID
Oracle Data Mining           VALID
Oracle Text              VALID
Oracle XML Database          VALID
Oracle Rules Manager             VALIDCOMP_NAME              STATUS
---------------------------------------- ----------------------
Oracle interMedia            VALID
OLAP Analytic Workspace          VALID
Oracle OLAP API              VALID
OLAP Catalog                 VALID
Spatial                  VALID
Oracle Enterprise Manager        VALID

11:重新编译java对象

<pre name="code" class="sql">beginupdate 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;declarecursor 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;beginprevious_iterations := 10000000;loopselect count(*) into iterations from obj$ where type#=56;exit when iterations=0 or iterations >= previous_iterations;previous_iterations := iterations;loop_count := 0;open C1;loopbeginfetch C1 into ddl_statement;exit when C1%NOTFOUND or loop_count > iterations;exception when others thenmy_err := sqlcode;if my_err = -1555 thenexit;elseraise;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
/

It may be necessary to recompilethe Java objects with ncomp:i.e.   % ncomp-user scott/tiger Hello.class

迁移过程中,最好不要有ddl操作,以免造成死锁

将oracle数据库从32位平台迁移到64位相关推荐

  1. 32位oracle数据迁移到64位oracle,将Oracle数据库从32位平台迁移到64位

    3: 查看当前的数据库状态 SQL> select count(*) from dba_objects where status ='INVALID'; COUNT(*) ---------- ...

  2. 64位mysql 和32位区别_navicat for mysql 64位和32位区别,win7 64位下用32位和64位有区别吗??...

    展开全部 一.win7 32位和64位的区别 先说说硬件配置上的区别.选择64位Windows 7的网友中很有大比例是内存大于或等于4GB.在62616964757a686964616fe58685e ...

  3. 32位win7系统和64位win7系统有什么差异

    Win7系统从另一种角度上来说,包含两类大版本,一个是32位,另一个则是64位.64位系统就一定强过32位吗?你是否需要64位Windows 7?32位系统和64位系统有什么区别? 可能你会感到非常困 ...

  4. 64位jdk连接32位的mysql_在64位客户端使用32位的ODBC配置

    这个场景比较特殊,是一个客户遇到的问题触发我写的这篇文章.数据库服务器通常安装的都是64位的操作系统和64位的数据库软件.客户端使用的操作系统和客户端程序复杂度远比服务器要多很多,安装的客户端操作系统 ...

  5. c语言程序判断32位还是64位,c++ 判断是64位还是32位系统的实例

    1.IsWow64Process 确定指定进程是否运行在64位操作系统的32环境(Wow64)下. 语法 BOOL WINAPI IsWow64Process( __in HANDLE hProces ...

  6. WINDOWS操作系统32位(x86)和64位(x64)的区别

    Windows XP.Windows vista.Windows Server 2008及Windows 7,都有32位(x86)和64位(x64)两种版本. 面对两种版本光盘镜像下载,常常让有些网友 ...

  7. 64位系统下同时使用64位和32位的eclipse

    64位系统下同时使用64位和32位的eclipse eclipse.ini 文件使用说明 The -vm option and its value (the path) must be on sepa ...

  8. 解读apk分包-32位安装包、32位64位兼容包和64位安装包

    目录 1.apk为何要分包(32位安装包.32位64位兼容包和64位安装包)? 2.影响apk适配的cpu架构的因素-原生代码(C/C++代码) 3.如何判断apk支持的cpu架构? 3.1 查看ap ...

  9. 32位dll注入到64位程序_你用的32位还是64位?有什么区别呢?

    (给程序员零距离加星标,了解项目开发.) 粉丝福利:小编会从今天留言中抽选3名小伙伴赠送现金红包,感谢大家一直以来的支持!文末见喽!通过前面两篇文章的学习,外甥对电脑的产生了各种好奇,差点把自己电脑拆 ...

最新文章

  1. 程序员感悟----路该怎么走
  2. 鸿蒙系统合适上线手机端,华为官方:鸿蒙系统2.0上线,手机能否搭载鸿蒙操作系统?...
  3. 读书笔记之:C++ Primer (第4版)及习题(ch12-ch18) [++++]
  4. c语言箭头指针的作用,C语言中,结构体成员变量的点和箭头
  5. 蓝牙耳机音量大解决办法_长时间使用蓝牙耳机的危害这么大?我们到底该选什么蓝牙耳机呢?...
  6. Direct3D中的绘制(3)
  7. c++语言表白超炫图形_让C/C++程序员告诉你什么叫浪漫,表白黑科技,炫酷多彩求爱利器...
  8. 句句真研—每日长难句打卡Day4
  9. mysql 乐观锁和悲观锁,MySQL中的悲观锁与乐观锁
  10. 两个对象值同样(x.equals(y) == true),但却可有不同的hash code,这句话对不正确?
  11. (原)logstash-forwarder + logstash + elasticsearch + kibana
  12. db2 sqlcode常见及不常见
  13. 怎么用dos系统进入服务器,怎么用DOS命令方式启动系统服务
  14. 基于阶梯式Tent混沌和模拟退火的樽海鞘群算法
  15. 概率论与数理统计学习笔记(1)——t检验与P值
  16. SharePoint导出CSV文件中文乱码
  17. C++ string切割,分解字符串,C 库函数 - strtok()
  18. Quartus II各版本支持的器件
  19. 高精地图:激光雷达点云与高精地图融合
  20. S7-200SMART存储卡相关问题解决办法(汇总)

热门文章

  1. 银行本、异地,本、跨行存取款手续费大全
  2. 无胁科技-TVD每日漏洞情报-2022-9-29
  3. 应用生成 rubygem Xing
  4. EXE文件结构及原理
  5. uniapp 动态切换应用图标、名称插件(如新年、国庆等) Ba-ChangeIcon
  6. alipay 网站支付
  7. 电视制式,480p,720p,1080p
  8. c语言结构体错误,C语言结构体用法很多,但是坑也很多
  9. android如何切换主题背景图片,android主题设置与主题切换
  10. spring cloud灰度发布快速上下线问题解决