ITPub博客

首页 > 数据库 > Oracle > 数据库升级-物理刷新数据字典

数据库升级-物理刷新数据字典

原创 Oracle 作者:yingyifeng306 时间:2020-08-11 09:14:48 0 删除 编辑


说明

环境说明

数据库为 10gRAC 环境 (10.2.0.5.4) ,操作系统为 6100-07

目标升级为 11gRAC 环境 (11.2.0.4) ,操作系统为 6100-07

实例名称: crmdb1 crmdb2

新需求:

1.       需要新分配一个 IP (作为 scan IP 用)

2.       需要划三块共享磁盘,每块 1G 大小(用作 ocrvote 磁盘组)

 

IP 规划:

目前 IP 规划:

IP

Alias

备注


crmdb01

一节点 public IP


crmdb02

二节点 public IP


crmdb01-vip

一节点 VIP


crmdb02-vip

二节点 VIP


crmdb01-priv

一节点心跳 IP


crmdb02-priv

二节点心跳 IP

 

11g 后添加 SCAN-IP

IP

Alias

备注


crmdb01

一节点 public IP


crmdb02

二节点 public IP


crmdb01-vip

一节点 VIP


crmdb02-vip

二节点 VIP


crmdb01-priv

一节点心跳 IP


crmdb02-priv

二节点心跳 IP


crmdb-scan

SCAN-IP(IP 待定 )

 

升级流程

整体升级流程 :

11 18 号)

步骤

流程计划

时间估算

1

CRM 10gRAC 环境开始备份,上传安装介质

1 个小时(不停机做)

2

检查 OS 资源 双节点检查 创建 grid 用户

30 分钟 (不停机做)

3

停止 CRM 双节点资源

10 分钟 (业务停止)

4

删除 10g RAC 启动文件

5 分钟 (业务停止)

5

安装 11g R2 Grid

2 小时 (业务停止)

6

添加 10g 软件至 11g 集群中管理

10 分钟 (业务停止)

7

正常业务测试

30 分钟 (业务停止)

 

11 21

步骤

流程计划

时间估算

1

安装 11g rdbms 软件( 11.2.0.4

在线操作 (业务不停止)

2

升级前检查环境 utlu112i.sql 脚本

在线操作 (业务不停止)

3

正式升级(刷数据字典,刷 RAC 组件)

80 分钟   (业务停止)

4

编译无效对象

20 分钟   (业务停止)

5

删除原先 10g rdbms 服务,重新注册 11g 环境的服务

20 分钟   (业务停止)

7

正常业务测试


总结时间:

总计花费 2 天时间

业务停止时间 5 小时(数据库层面)

18 号详细操作流程

前期准备

前期准备包括备份及介质上传等:

备份包括备份10g RAC启动项文件等:

cp /etc/init.cssd /oracle/bak/.

cp /etc/init.crs /oracle/bak/.

cp /etc/init.crsd /oracle/bak/.

cp /etc/init.evmd /oracle/bak/.

cp /etc/inittab.crs /oracle/bak/.

cp /etc/inittab /oracle/bak/.

tar -cvf /oracle/bak/rc2.d.tar /etc/rc.d/rc2.d

tar -cvf /oracle/bak/oracle.tar /etc/oracle

 

$ORACLE_BASE/ 下的 orainventory 也备份并删除

上传 11.2.0.4 grid rdbms 介质

更新检查 OS 环境

no -a|egrep "tcp_recvspace| tcp_sendspace | udp_recvspace | rfc1323| sb_max | ipqmaxlen |udp_sendspace"

通过以上值确认,对于不正确的进行修改:

no -p -o tcp_recvspace=65536
no -p -o tcp_sendspace=65536
no -p -o udp_sendspace=135168
no -p -o udp_recvspace=1351680
no -p -o rfc1323=1
no -p -o sb_max=4194304
no -r -o ipqmaxlen=512

 

创建grid用户并修改oracle用户参数

mkuser -a id=1001 pgrp=oinstall groups=oinstall,dba fsize=-1 cpu=-1 data=-1 core=-1 rss=-1 stack=-1 stack_hard=-1 capabilities=CAP_NUMA_ATTACH,CAP_BYPASS_RAC_VMM,CAP_PROPAGATE grid

 

chuser pgrp=oinstall groups=oinstall,dba fsize=-1 cpu=-1 data=-1 rss=-1 stack=-1 stack_hard=-1 capabilities=CAP_NUMA_ATTACH,CAP_BYPASS_RAC_VMM,CAP_PROPAGATE oracle

ssh 关系设置(设置grid 检查oracle)

#su – grid

     $mkdir .ssh

     $cd .ssh

     $ssh-keygen –t rsa    // 一路回车

     $ssh-keygen –t dsa

     $cat id_dsa.pub>authorized_keys

$cat id_rsa.pub>>authorized_keys

 

去除时间同步:

使用oracle时间同步服务

mv /etc/ntp.conf /etc/ntp.conf.bak

 

检查时区:

$ echo $TZ

$date

确保时区一致,两台主机的时间相差不超过 1 分钟

 

停止 CRM 双节点资源

双节点停止DBRA资源

双节点停止rdbms nodeapps asm crs资源

srvctl stop nodeapps –n crmdb01

srvctl stop nodeapps –n crmdb02

srvctl stop asm –n crmdb01

srvctl stop asm –n crmdb02

srvctl stop database –d crmdb

 

  双节点root用户关闭crs

crsctl stop crs

 

 

删除 10g RAC 启动文件

删除启动配置文件:

rm /etc/init.cssd

rm /etc/init.crs

rm /etc/init.crsd

rm /etc/init.evmd

rm /etc/rc.d/rc2.d/K96init.crs

rm /etc/rc.d/rc2.d/S96init.crs

rm -Rf /etc/oracle/scls_scr

rm -Rf /etc/oracle/oprocd

rm /etc/inittab.crs

cp /etc/inittab.orig /etc/inittab

删除 /var/tmp/.oracle/ 下面文件

删除 /tmp/.oracle/ 下面的文件

rm –rf /var/tmp/.oracle/*

rm –rf /tmp/.oracle/*

 

重启双节点主机:

shutdown –Fr

  重启后检查是否还存在oracle进程

 

安装 11.2.0.4 grid 软件

解压介质: 11.2.0.4 grid

双节点运行 grid 下面的 rootpre .sh

 

双节点环境检查

./runcluvfy.sh stage -pre crsinst -n crmdb01,crmdb02 -verbose

 

开始安装:

su – grid

./runInstaller

安装截图略

 

css

11g grid 用户下 root 用户:

# crsctl pin css -n crmdb01 crmdb02

CRS-4664: Node crmdb01 successfully pinned.

CRS-4664: Node crmdb02 successfully pinned.


 

添加 10g 软件至 11g 集群中管理

1. 修改磁盘的权限,建议保持磁盘属主暂时不修改,确保权限为 660

2. 双节点修改 asm_diskstring 添加所有数据磁盘路径

3. 双节点 mount 磁盘组

由于在11g 的grid软件下管理10g的rdbms

所以我们在添加database 和instace 的时候需要用10g的rdbms 用户环境添加 即oracle用户的10g rdbms环境

srvctl add database -d crmdb -o /oracle/app/product/10.2.0/db_1

srvctl add instance -d crmdb -i crmdb1 -n crmdb01

srvctl add instance -d crmdb -i crmdb2 -n crmdb02

通过10g rdbms srvctl 命令启动数据库

 

检查local _listener 和remot_listener

确保local_listener 和remot_listener 配置正确

 

remote_listener  :crmdb-scan:1521

local_listener : (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=130.36.23.7)(PORT=1521))))

 

回退采用删除 11g grid 安装介质 回退 10g 启动项 重新操作系统

通过 grid 用户 $ORACLE_HOME/deinstall 删除双节点 grid 安装信息

 

还原 10g RAC 启动文件

cp /oracle/bak/inittab /etc/inittab

cp /oracle/bak/inittab.crs /etc/inittab.crs

cp /oracle/bak/init.evmd /etc/init.evmd

cp /oracle/bak/init.crsd /etc/init.crsd

cp /oracle/bak/init.crs /etc/init.crs

cp /oracle/bak/init.cssd /etc/init.cssd

tar –xvf /oracle/bak/rc2.d.tar

tar –xvf /oracle/bak/oracle.tar

 

删除双节点/var/tmp/.oracle/下文件

 

重启操作系统:

Shutdown –Fr

 


 

21 号详细操作流程

软件安装

安装 11.2.0.4 rdbms 软件 可以在晚上 12 点前业务正常运行期间安装,不影响业务正常使用

切换到 oracle 用户

su – oracle

  设置 DISPLAY 环境变量

export DISPLAY=

启动 OUI 开始安装

图形界面略

 

升级前环境检查

运行该脚本,检测升级环境

sqlplus '/as sysdba'

SQL> spool Database_Info.log

SQL> @ utlu112i.sql

。。。。。

Spool off

通过create pfile=’/tmp/upgrade/initzhcj.ora’ from spfile;

remote_listener crmdb-scan:1521

local_listener  (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=172. 16.10.46)(PORT=1521))))

 

开始通过产生的日志信息进行参数文件spfile的修改

 

无效对象表创建

在原生产库创建对象表

sqlplus “/as sysdba”

spool invald.lst

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

 

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

 

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

 

create table old_objects as select * from dba_objects;

创建回退方案

1. 关闭数据库,停监听,停 dbconsole 停容灾

2. 创建闪回区及闪回区大小

3.  startup mount

create restore point upgrade_point  guarantee flashback database;

 

正式升级

拷贝原先生产库下dbs目录中文件至新的11g目录中,修改部分废弃参数,用pfile启动startup upgrade

升级数据库刷数据字典

 

SQL> STARTUP UPGRADE

SQL> SPOOL patch.log

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

SQL> SPOOL OFF

SQL> SHUTDOWN IMMEDIATE

SQL> STARTUP

SQL> EXEC DBMS_STATS.GATHER_DICTIONARY_STATS; (收集系统数据字典统计信息)

 

刷新 RAC 组建

SQL>spool off

SQL>spool catclust.txt

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

SQL>spool off

 

 

无效对象编译

拷贝原 10g 中的密码文件, tnsnames .ora 文件等等 准备无效对象编译:

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

 

在尝试脚本编译不成功的情况可以通过手动编译无效对象

select 'alter '||object_type|| ' ' || owner ||'.'||object_name || ' compile;' from dba_objects where status='INVALID'; 

 

升级失败的回退

1. 重定向到 10g rdbms 目录

$sqlplus / as sysdba

SQL>shutdown  immediate

将profile重新指定到对应的原先10g目录

 

2. 闪回数据库

SQL>startup mount

SQL>select  flashback_on from v$database;

SQL>flashback database to restore point upgrade_point;

SQL>shutdown immediate

 

 


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23732248/viewspace-2710657/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
ITpub论坛高可用版主,擅长研究Oracle 内部原理、新特性、高可用和性能调优等,多年来一直保持着对新事务旺盛的求知欲。热切关注 Oracle 和其它相关技术

注册时间:2011-10-12

  • 博文量
    84
  • 访问量
    1376499