Windows升级到oracle 11g的异机物理升级文档(冷备)

 

说明

1.1 环境说明

整个异机迁移升级文档分为以下几部分:

操作步骤

操作内容

Step 1

搭建目标环境(安装 Oracle 11g Rdbms 软件)

Step 2

生产库预升级检查

Step 3

目标环境确认

Step 4

目标库正式升级

Step 5

目标库升级后检查

 

本文档省略目标环境 Oracle 11g Rdbms 搭建步骤,只说明在目标环境部署之后整个异机迁移升级的实施过程。

 

1.2 目标环境部署

在目标服务器安装 Oracle 11.2.0.4 数据库软件

在软件安装完成之后,手动创建监听


 

生产库预升级检查

2.1 备份(冷备/ 热备

若原地升级,强烈建议对生产库进行全库备份(冷备 / 热备)。若采用异机迁移升级,(即原生产库正常可用),则跳过此步。

 

2.2 归档空间分配

若数据库处于归档模式,则需要预留足够的归档日志空间。若数据库归档未开,则跳过此步。

 

2.3 回收站清理

清空数据库回收站

SQL> PURGE DBA_RECYCLEBIN;

 

2.4 收集数据字典统计信息

SQL> EXEC dbms_stats.gather_dictionary_stats;

 

2.5 检查数据库组件

系统组件状态确认。若组件状态均为 VALID 则表示正常

SQL> col COMP_NAME for a60

SQL> set line 200

SQL> select COMP_ID,COMP_NAME,VERSION,STATUS from dba_registry;

 

系统对象状态确认。若没有返回记录,则表示正常

SQL> select object_name,status from dba_objects where owner='SYS' and status<>'VALID';

 

2.6 统计数据库无效对象

无效对象收集

sqlplus /as sysdba

SQL> spool invalid_obj_col.log

SQL> select owner,object_name,object_type,status from dba_objects where status<>'VALID';

SQL> spool off

SQL> select count(*),status from dba_objects group by status;

SQL> create table invalid_object_20170601 as select * from dba_objects where status<>’VALID’;

 

2.7 无效对象编译

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

 

2.8 Temp 文件检查

SQL> col file_name for a50

SQL> set line 200

SQL> select tablespace_name,file_name,bytes/1024/1024 M,status from dba_temp_files order by 1;

 

2.9 检查文件备份模式

确认是否有文件处于备份模式。若有,则调整;若没有返回记录则正常

SQL> SELECT * FROM v$backup WHERE status != 'NOT ACTIVE'; 

 

2.10 Sys System 重复对象检查 文件检查

确认是否有以下 4 行红色记录返回,若是,则正常

SQL> select object_name, object_type from dba_objects where (object_name,object_type) in

(select object_name,object_type from dba_objects where owner = 'SYS') and owner ='SYSTEM';

OBJECT_NAME                         OBJECT_TYPE

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

AQ$_SCHEDULES                     TABLE

AQ$_SCHEDULES_PRIMARY  INDEX

DBMS_REPCAT_AUTH             PACKAGE

DBMS_REPCAT_AUTH             PACKAGE BODY

 

2.11 执行预升级检查脚本

从目标服务器拷贝 $ORACLE_HOME/rdbms/admin/utlu112i.sql 至生产服务器 C:\upgrade 文件夹下

手动执行预升级脚本 C:\upgrade\utlu112i.sql

sqlplus / as sysdba

SQL> spool upgeade_info.log

SQL> @utlu112i.sql

SQL> spool off

 

注:不同数据库,配置可能不同,输出日志也是各样,根据预升级脚本输出日志进行调整。

 

2.12 创建初始化参数文件

参数文件路径、名称均可自定义

SQL> create pfile='C:\upgrade\initorcl.ora' from spfile;

 

2.13 停生产库

由于需要拷贝数据文件、联机日志文件、控制文件、临时文件至目标服务器,确保数据一致,因此需要停生产库

SQL> shutdown immediate;

 


 

目标环境确认

3.1 Rdbms 软件检查

确认 Oracle 11.2.0.4 数据库软件安装无误

确认监听已经配置并打开

3.2 参数文件拷贝

10g 软件下 C:\upgrade\initorcl.ora 参数文件拷贝至将 11g 软件 $ORACLE_HOME\database

 

3.3 密码文件拷贝

10g 软件 $ORACLE_HOME\database 下密码文件拷贝至将 11g 软件 $ORACLE_HOME\database

 

3.4 数据文件拷贝

10g 环境数据文件拷贝至 11g 目标端指定位置(停机拷贝)

 

3.5 临时文件拷贝

10g 环境临时文件拷贝至 11g 目标端指定位置(停机拷贝)

 

3.6 联机日志文件拷贝

10g 环境联机日志文件拷贝至 11g 目标端指定位置(停机拷贝)

 

3.7 控制文件拷贝

10g 环境控制文件拷贝至 11g 目标端指定位置(停机拷贝)

 

注意:若目标端数据文件、临时文件、联机日志文件、控制文件路径与生产端不一致,则需手动修改 rename

 

3.8 修改参数文件

参数模板

*.audit_file_dest='C:\app\Administrator\admin\xuh\adump'

*.compatible='10.2.0.3.0'

*.control_files='C:\app\Administrator\oradata\xuh\control01.ctl','C:\app\Administrator\oradata\xuh\control02.ctl','C:\app\Administrator\oradata\xuh\control03.ctl'

*.core_dump_dest='C:\app\Administrator\admin\xuh\cdump'

*.db_block_size=8192

*.db_domain=''

*.db_file_multiblock_read_count=16

*.db_name='xuh'

*.db_recovery_file_dest='C:\app\Administrator\recovery'

*.db_recovery_file_dest_size=1073741824

*.dispatchers='(PROTOCOL=TCP) (SERVICE=xuhXDB)'

*.job_queue_processes=10

*.nls_language='SIMPLIFIED CHINESE'

*.nls_territory='CHINA'

*.open_cursors=300

*.pga_aggregate_target=633339904

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.sga_target=1610612736

*.undo_management='AUTO'

*.undo_tablespace='UNDOTBS1'

*.diagnostic_dest='C:\app\Administrator'

 

注意:

*.audit_file_dest

*.control_files

*.db_recovery_file_dest

以上三个参数需要修改成实际路径

 

*.background_dump_dest

*.user_dump_dest

以上两个参数合并成以下参数

*.diagnostic_dest=$ORACLE_BASE 修改成实际路径

 

3.9 修改目标库文件路径

若目标库数据文件、临时文件、联机日志文件、控制文件路径与生产端不一致,则需手动修改。否则, 跳过 3.9

 

目标库启动至 mount 状态

Sqlplus / as sysdba

SQL> startup mount;

 

批量查询修改语句

数据文件

SQL> Set line 200

SQL> Set pagesize 0

SQL> select 'alter database rename file '||''''||name||''''||' to '||''''||' 实际路径 '||substr(name,instr(name,'\',-1)+1)||''';' from v$datafile;

 

联机日志文件

SQL> Set line 200

SQL> Set pagesize 0

SQL> select 'alter database rename file '||''''||member||''''||' to '||''''||' 实际路径 '||substr(member,instr(member,'\',-1)+1)||''';' from v$logfile;

 

临时文件

SQL> Set line 200

SQL> Set pagesize 0

SQL> select 'alter database rename file '||''''||name||''''||' to '||''''||' 实际路径 '||substr(name,instr(name,'\',-1)+1)||''';' from v$tempfile;

 

停目标库

Sqlplus / as sysdba

SQL> shutdown immediate;

 


 

目标库正式升级

4.1 upgrade 模式启动目标库

Oracle 11g 环境下,以升级模式打开目标库

$sqlplus / as sysdba

SQL> startup upgrade;

 

4.2 执行升级脚本

Sqlplus / as sysdba

SQL> spool upgrade20170601.log

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

SQL> spool off

SQL> shutdown immediate;  # 若数据库已经停止,则跳过此步

SQL> startup;

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

该脚本执行时间约为 2 小时

 

 


目标库升级后检查

5.1 检查数据库组件

系统组件状态确认

SQL> col COMP_NAME for a60

SQL> set line 200

SQL> select COMP_ID,COMP_NAME,VERSION,STATUS from dba_registry;

 

5.2 统计数据库无效对象

无效对象收集

sqlplus /as sysdba

SQL> select owner,object_name,object_type,status from dba_objects where status<>'VALID';

SQL> select count(*),status from dba_objects group by status;

 

5.3 无效对象编译

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

 

5.4 数据字典信息收集

SQL> EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;

 


请使用浏览器的分享功能分享到微信等