oracle32位迁移64位,Windows下Oracle10g32位遷移到11g64位

news/2024/11/22 18:06:18/

客戶需要,將windows下10g(10.2.0.3)32位數據庫遷移到11g64位。不過主要目的是為10g32位windows打補丁,怕出問題做的遷移。這里自己先做下測試。

參考文章:

測試環境:

Win server 2003 32位,先安裝oracle10.2.0.1,然后升級到10.2.0.5(因為10.2.0.1不能升到11g,所以得升級到10.2.0.2以上),最后遷移到11.2.0.1(Win server 2008 64位)。

安裝就不詳述了。

1、升級數據庫10.2.0.1到10.2.0.5

㈠升級前准備

打開命令行關閉EM:d:\> emctl stop dbconsole

關閉監聽:d:\> lsnrctl stop

進入sql提示符關閉數據庫:d:\> sqlplus / as sysdba

SQL> shutdown immediate

關閉服務:開始菜單》管理工具》服務,停止所有ORACLE開始的服務

備份:可直接復制或者壓縮,包括Oracle Inventory、Oracle HOME和數據庫

升級前檢查:sql提示符下

SQL> spool d:\logs\utlu102i.log       --保留日志信息,以便查看

SQL> @?/rdbms/admin/utlu102i.sql  ---@?默認的ORACLE HOME目錄

㈡升級

與安裝基本一致,指定ORACLE HOME目錄時,覆蓋原來HOME即可,我的是:E:\oracle\product\10.2.0\db_1

開戶OracleserviceSID服務

開啟監聽:d:\> lsnrctl start

升級數據字典:

SQL> startup upgrade

SQL> spool d:\logs\catupgrd.log

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

SQL> shutdown immediate

SQL> startup

SQL> spool d:\logs\utlrp.log

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

㈢升級后檢查

SQL> SELECT COMP_NAME, VERSION, STATUS FROM SYS.DBA_REGISTRY;

status輸出都為VALID說明升級成功

設置compatible參數,不是必須的,重啟后生效

SQL> alter system set compatible='10.2.0.5.0' scope=spfile;

使用catalog備份的可升級一下:

d:\> rman catalog username/passwd@alias

RMAN> upgrade catalog;

升級完成。

2、10.2.0.5(源庫)的數據遷移到11.2.0.1(目標庫)

因為是32位到64位,所以可分為四步:

㈠備份

備份前在源庫執行一個腳本,否則在目標庫recover后升級數據字典時報錯

SQL> spool e:\logs\utlu112i.log

SQL> @?/rdbms/admin/utlu112i.sql   ---此文件從目標庫復制過來的,避免出問題也可以在完成升級后先進行備份

備份:

RMAN> run{

backup as compressed backupset database format 'e:\backup\%d_%s_%T.db';

sql 'alter system switch logfile';

backup archivelog all format 'e:\backup\%d_%s_%T.arch';

backup spfile format 'e:\backup\%d_%s_%T.sp';

backup current controlfile format 'e:\backup\%d_%s_%T.ctl';

}

SQL> create pfile='d:\backup\inittest.ora' from spfile; ---目標庫上實例名為test,所以使用pfile並修改相關參數和目錄(不使用restore spfile)

然后把備份文件上傳到目標庫服務器上。

查看源庫DBID

SQL> select dbid from v$database;

DBID

---------------

274060241

㈡恢復

修改后的pfile文件

*.compatible='10.2.0.5.0'

*.control_files='d:\controlfile\control01.ctl'

*.db_block_size=8192

*.db_name='prod'

*.db_unique_name='test'

SQL> startup nomount pfile='d:\share\inittest.ora';

D:\>rman target /

連接到目標數據庫: PROD (未裝載)   --因為沒有Mount,不識別庫,需要設置dbid

RMAN> set dbid=274060241

RMAN> restore controlfile from 'd:\share\prod_20_20141030.ctl'; --恢復控制文件

RMAN> mount database;

SQL> create spfile from pfile='d:\share\inittest.ora';--生成spfile,然后重啟到mount狀態

SQL> startup mount force;

RMAN> catalog start with 'd:\share';     ---源庫的備份目錄為d:\backup,restore時不識別此目錄,可以catalog下,當然也可以使目錄一致。

恢復,因為不完全恢復,可以設置恢復到某個日志號(從源庫查看備份完成后的當前日志序列):

RMAN> run{

set newname for datafile 1 to 'd:\ORADATA\SYSTEM01.DBF';    --數據文件目錄一致可以不用newname

set newname for datafile 2 to 'd:\ORADATA\UNDOTBS01.DBF';

set newname for datafile 3 to 'd:\ORADATA\SYSAUX01.DBF';

set newname for datafile 4 to 'd:\ORADATA\USERS01.DBF';

set newname for datafile 5 to 'd:\ORADATA\EXAMPLE01.DBF';

set until sequence 60;

restore database;

switch datafile all;

recover database;

}

目錄一致可以不用如下操作,不一致需要rename下:

SQL> alter database rename file 'e:\onlinelog\prod\redo01.log' to 'd:\onlinelog\redo01.log';

SQL> alter database rename file 'e:\onlinelog\prod\redo02.log' to 'd:\onlinelog\redo02.log';

SQL> alter database rename file 'e:\onlinelog\prod\redo03.log' to 'd:\onlinelog\redo03.log';

以升級模式打開:

SQL> alter database open resetlogs upgrade;

添加臨時表空間文件:

SQL> alter tablespace temp add tempfile 'd:\oradata\temp01.dbf' size 500m autoextend on next 50m;

SQL> select name from v$tempfile;

NAME

----------------------------------------------------------------------

E:\ORADATA\PROD\TEMP01.DBF

D:\ORADATA\TEMP01.DBF

目錄不一致的要刪除,因數據文件目錄不一致所致,否則之后執行腳本會報錯:

SQL> alter tablespace temp drop tempfile 'e:\oradata\prod\temp01.dbf';

㈢升級

下面腳本執行時間很長,一個小時:

SQL> spool d:\share\catupgrd.log

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

跑完庫關閉了,要重新打開

修改一下compatible參數

SQL> alter system set compatible='11.2.0.1.0' scope=spfile;

如下腳本可選擇執行:

SQL> spool d:\share\utlu112s.log

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

因需位數轉換,可到最后再編譯無效對象。

㈣64位的轉換

SQL> shutdown immediate

SQL> startup migrate

SQL> spool d:\logs\utlirp.log

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

最后重啟數據庫,重新編譯無效對象

SQL> shutdown immediate

SQL> startup

SQL> spool d:\logs\utlrp.logSQL> @?/rdbms/admin/utlrp.sql

重啟下,總體檢查一下,主要查看是否還有無效對象。

select count(*) from dba_invalid_objects;


http://www.ppmy.cn/news/653690.html

相关文章

Oracle11g32位客户端安装+Framwork3.5(Windows版)

1:右键管理员身份运行 等待 2:勾选第二个 3:直接点击下一步 4:直接点击下一步 5:直接点击完成 6:直接等待 6:还需要安装3.5 安装到这个位置,提示需要安装Framework3.5 7&#xff1a…

区分G32_4和G32_12、G32_13和G32_14、G32_30和G32_31的群不变量C1、Nk(不涉及特征标表或子群ID的计算)

N3、C2不变量暂无作用(N3与N0、C2与C1似乎重复了)。 C1(GAP[32,4])[[0,28],[1,4]] C2(GAP[32,4])[[0,0,28],[0,1,3],[1,1,1]] Nk(GAP[32,4])[[1,1,1],[2,1,3],[4,1,4],[4,2,8],[8,2,16]] C1(GAP[32,12])[[0,24],[1,8]] C2(GAP[32,12])[[0,0,24],[0,1,7],…

值得一看的G32加工端面螺纹编程方法,很实用!

值得一看的G32加工端面螺纹编程方法,很实用! ① G32加工端面螺纹介绍: 概述:端面螺纹大多以矩形螺纹为主,车床的自定心卡盘(盘丝)使用的就是这种结构。这类螺纹没有具体的代号标注,一般是文字…

解密动态规划:从子问题到最优解的奇妙算法

目录 引言: 一. 动态规划的基本思想 二. 问题分析与状态定义 三. 状态转移方程的建立 四. 自底向上的求解过程 五. 优化与进阶技巧 六. 实际应用案例 结论: 引言: 动态规划(Dynamic Programming)是一种常用的算…

使用Edge Impulse 和机器学习基于ESP32 实现异常检测系统

我们将检测二氧化碳浓度和挥发性有机化合物何时出现异常。因此,我们将实现一个机器学习模型,能够识别是否存在一些超出正常范围的值。 什么是异常检测? 为了定义异常检测,我们可以使用: 在数据分析中, 异常检测 (也称为 异常值检测)是指识别因与大多数数据显着不同而…

DCompute链下计算外包:只EVM就足够了么?

1. 引言 当前的以太坊L2扩容方案主要有: Optimistic RollupzkRollup:如Polygon zkEVM、Scroll等 这些L2方案仍是基于EVM的。 但游戏、链上订单簿、Web3社交、机器学习、基因组建模等高性能应用是compute-heavy的,对于L2 EVM来说仍是昂贵的…

75、基于51单片机交通灯+人行道+左转系统设计(程序+原理图+Proteus仿真+参考论文+开题报告+任务书+元器件清单等)

摘 要 近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具…

zoom下载官网android最新,Zoom下载安卓最新版_手机app官方版免费安装下载_豌豆荚...

程序需要调用以下重要权限: 添加或修改日历活动,并在所有者不知情的情况下向邀请对象发送电子邮件 - 写入日程,但不可读取 读取日历活动和机密信息 - 允许程序读取用户的日程信息 直接拨打电话号码 - 允许程序从非系统拨号器里输入电话号码 读取您的通讯…