当前位置: 首页 > news >正文

静默升级oracle 11g (从11.2.0.1升级到11.2.0.4)

原文:https://www.cnblogs.com/daizhengyang/p/13353783.html

 一个环境是oracle 11.2.0.1,一个环境是oracle 11.2.0.4,同样的数据,同样的sql,在两个版本数据库表现不一样。于是,干脆都统一为11.2.0.4。 

    但由于环境限制,只能用静默的方法,把oracle 11.2.0.1 升级到 11.2.0.4。 

    不过,还好,根据网上的文档,升级过程还算顺利。

    下面,我记录一下升级过程,供自己以后查看,也供有需要的人参考。

1、11.2.0.1环境(待升级数据库)

SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE11.2.0.4.0Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

[root@localhost ~]# su - oracle
[oracle@localhost ~]$ cat .bash_profile 
export ORACLE_SID=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin
alias sqlplus='rlwrap sqlplus'

2、升级前的准备工作 

2.1、 备份数据库

         升级数据库是一个有风险的过程,需要仔细规划和慎重处理。首先要做数据库的完全备份,备份的内容包括数据文件,控制文件,归档文件,日志文件,参数文件,密码文件等。        

        可以备份一下整个ORACLE_HOME目录,如果升级有问题,还可以还原回来。备份的方法可以使用dump数据泵,tar,rman等。

     如:RMAN全备 

[oracle@localhost ~]$ export ORACLE_SID=orcl
[oracle@localhost ~]$ rman target /
RMAN>run
{allocate channel c1 type disk;
allocate channel c2 type disk;
backup database filesperset 20 format '/onlbak/rman_Data/avcache/full_%d_%T_%s_%p';
sql 'alter system archive log current';
backup archivelog all format '/onlbak/rman_Data/avcache/arch_%d_%T_%s_%p' delete input;
backup current controlfile format '/onlbak/rman_Data/avcache/ctl_%d_%T_%s_%p';
crosscheck backup;
crosscheck archivelog all;
delete noprompt obsolete;
delete noprompt  expired backup;
delete noprompt  expired archivelog all;
}

备份老的ORACLE_HOME和oraInventory 

[oracle@localhost ~]$tar –cvfp product.tar.gz /u01/app/oracle/
[oracle@localhost ~]$tar –cvfp oraInventory.tar.gz /u01/app/oraInventory/

2.2、干净的关闭数据库

SQL> shutdown immediate;

2.3、 关闭数据库的监听

在数据库的升级中,会对数据库的监听文件做重新的配置,建议正常的关闭监听,如下:

[oracle@localhost ~]$ lsnrctl stop
[oracle@localhost ~]$  netstat -tnlp |grep 1521

2.4、 关闭OEM 

在升级中需要关闭EM,没有EM可以省略这一步

[oracle@localhost ~]$emctl stop dbconsole
[oracle@localhost ~]$netstat -an |grep 1158

2.5、不 对数据库的任何原有文件做操作   

本人在升级中,编辑数据库的监听文件,导致配置监听和EM错误,故不对数据库的任何原有文件做操作。

3、安装oracle 11.2.0.4软件包

把oracle 11.2.0.4的安装包上传到/home/oracle目录下,解压后得到database目录。 

[oracle@localhost ~]$ ls
p13390677_112040_Linux-x86-64_1of7.zip   p13390677_112040_Linux-x86-64_2of7.zip
[oracle@localhost ~]$ unzip p13390677_112040_Linux-x86-64_1of7.zip
[oracle@localhost ~]$ unzip p13390677_112040_Linux-x86-64_2of7.zip
[oracle@localhost ~]$ ls
database

开始安装数据库软件11.2.0.4。

[oracle@localhost ~]$ cd database
[oracle@localhost ~]$./runInstaller -silent -debug -force -ignorePrereq \
DECLINE_SECURITY_UPDATES=true \
oracle.install.option=INSTALL_DB_SWONLY \
UNIX_GROUP_NAME=oinstall \
INVENTORY_LOCATION=/u01/app/oraInventory \
ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/dbhome_1 \
ORACLE_BASE=/u01/app/oracle \
oracle.install.db.InstallEdition=EE \
oracle.install.db.DBA_GROUP=dba \
oracle.install.db.OPER_GROUP=oinstall

说明:

1.INVENTORY_LOCATION可以和老版本共用一个目录。

2.ORACLE_BASE和老版本保持一样

3.ORACLE_HOME指向了一个新的目录11.2.0.4/dbhome_1(以前是11.2.0/db_1)。

    

不过,这些目录都是可以随意指定,我上面做是只是为了版本管控方便。 

    安装过程大概需要15分钟左右(根据机型配置时间也不同),安装过程中有警告[WARNING] 时需要安装一些i386 的包。查看log安装即可。

     出现以下字样表示升级成功。

As a root user, execute the following script(s):1. /u01/oracle/app/product/11.2.0.4/dbhome_1/root.sh
Successfully Setup Software.

切换到 root 用户执行脚本。

[root@localhost ~]# /u01/oracle/app/product/11.2.0.4/dbhome_1/root.sh

4、配置新环境变量,拷贝参数文件和监听文件 

4.1、配置新环境变量

[oracle@localhost ~]$ whoami 
oracle
[oracle@localhost ~]$ cat .bash_profile 
export ORACLE_SID=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0.4/dbhome_1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin
alias sqlplus='rlwrap sqlplus'

上面看到,新环境变量和老环境变量相比,我只修改了一个参数:

新参数:ORACLE_HOME=$ORACLE_BASE/product/11.2.0.4/dbhome_1
老参数:ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1

注意: 

        在10g以后,一般情况下环境变量中没有必要设置LD_LIBRARY_PATH,但是一旦将ORACLE_HOME迁移到其他目录,则环境变量中还需要添加这个变量。

    source一下后,环境变量就指向新安装的11.2.0.4位置了。

[oracle@localhost ~]$ source .bash_profile
[oracle@localhost ~]$ env  |grep ORA
ORACLE_SID=orcl
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/dbhome_1

4.2、修改 /etc/oratab 内容为最新位置

[oracle@localhost ~]$ vim /etc/oratab
orcl:/u01/app/oracle/product/11.2.0.4/db_1:N

4.3、 将参数文件copy到新的目录下

[oracle@localhost ~]$ cd /u01/app/oracle/product/11.2.0/db_1/dbs/
[oracle@localhost dbs]$ cp -a * /u01/app/oracle/product/11.2.0.4/dbhome_1/dbs/

4.4、 拷贝监听TNS配置文件到新的目录下

[oracle@localhost admin]$  cd /u01/app/oracle/product/11.2.0/db_1/network/admin/
[oracle@localhost dbs]$ cp -a * /u01/app/oracle/product/11.2.0.4/dbhome_1/network/admin

4.5、启动监听 

    先修改新位置下的listener.ora里面的路径,然后启动监听。

vim listener.ora

[oracle@localhost admin]$ lsnrctl start

5、升级数据库 

    要注意退出oracle用户重新su - oracle下,然后sqlplus能看到11.2.0.4.0字样才行。

[oracle@19_mysql-slave ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Mon Mar 30 12:10:30 2020
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
Connected to an idle instance.
SQL> startup upgrade
ORACLE instance started.
Total System Global Area 1603411968 bytes
Fixed Size        2253664 bytes
Variable Size     1006636192 bytes
Database Buffers    587202560 bytes
Redo Buffers          7319552 bytes
Database mounted.
Database opened.
SQL> @$ORACLE_HOME/rdbms/admin/catupgrd.sql   ---该脚本会运行30分钟左右

以上catupgrd.sql脚本整整运行了30分钟,执行完之后会shutdown immediate数据库。这个时候我们重启数据库即可。

[oracle@localhost admin]$ sqlplus /nolog
SQL> conn / as sysdba
SQL> startup
SQL>  select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
CORE    11.2.0.4.0      Production
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production

6、 运行 utlrp.sql 编译失效对象

SQL> select * from dba_objects where status !='VALID';
SQL> SELECT count(*) FROM dba_objects WHERE status='INVALID';

 运行utlrp.sql编译失效对象。

SQL> @?/rdbms/admin/utlrp

该脚本耗时约为3分钟左右。 至此数据库已经升级完成。

最后,重启数据库没有问题就是升级成功了。

7、更新数据库服务脚本

/u01/app/oracle/product/11.2.0.4/dbhome_1/bin/ 下的 dbstart 和 dbshut ,ORACLE_HOME_LISTNER=$1 改为 $ORACLE_HOME

#ORACLE_HOME_LISTNER=$1
ORACLE_HOME_LISTNER=$ORACLE_HOME

8、 升级后的检查确认

SQL> select status from v$instance;
STATUS------------
OPEN  #注意,成功打开数据库后,这里将是OPEN,而非OPEN MIGRATE
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
CORE   11.2.0.4.0 Production
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production

9、升级成功后需重建EM(没有EM可忽略该步)

手工创建EM资料库: 

####emca -repos drop
[oracle@localhost admin]$ emca -reposdrop
####emca -repos create[oracle@localhost admin]$ emca -reposcreate###emca -config dbcontrol db
[oracle@localhost admin]$ emca-config dbcontrol db

相关文章:

静默升级oracle 11g (从11.2.0.1升级到11.2.0.4)

原文:https://www.cnblogs.com/daizhengyang/p/13353783.html 一个环境是oracle 11.2.0.1,一个环境是oracle 11.2.0.4,同样的数据,同样的sql,在两个版本数据库表现不一样。于是,干脆都统一为11.2.0.4。 但…...

什么是模型训练,如何选择合适的Batch大小

模型训练是指使用数据集对模型进行训练,使其能够从数据中学习到特征和模式,进而完成特定的任务。在深度学习领域,通常使用反向传播算法来训练模型,其中模型会根据数据集中的输入和输出,不断更新其参数,以最…...

【线上绘图网站分享】

好用的线上绘图网站分享 使用场景特点使用例子 Excalidraw 使用场景 流程图绘制、组会分享工具等; 特点 最重要的就是:免费!! 简单,快捷:有时候临时要画一个流程图之类的用来示意、分享知识点&#xff…...

Snipaste截图工具如何控制框线箭头的粗细程度

我们使用Snipaste截图工具的时候,最常用的就是框线和箭头这些功能,有时候感觉很粗有时候感觉太细了,如何解决呢?我们可以在使用框线或者箭头之后,长按1或者2来控制框线箭头的粗细程度。其中1是变细,2是变粗…...

GISSERVER 管理器 1.0(私有化地图离线部署)

一、 简介 QGIS现在在全世界已经成为ARCGIS的最佳代替产品,而且是开源免费的。其用户社区和产品功能都已经可以与arcgis相媲美! GISSERVER管理工具是一个零代码地图网站建站工具(私有化地图离线部署),可以直接将QGIS工程转换为GIS网站(功能类似ARCGISM…...

Eureka服务治理深度解析:服务下线与剔除机制揭秘

Eureka服务治理深度解析:服务下线与剔除机制揭秘 在微服务架构中,服务的动态注册与发现是保证系统高可用性的关键。Netflix开源的Eureka作为服务发现框架,其服务下线与剔除机制是确保服务列表准确性的重要手段。本文将深入探讨Eureka中的服务…...

苹果笔记本双系统怎么安装

想要在mac电脑上装双系统,首先需要确认您的电脑是否支持。苹果电脑自带的boot camp工具可以帮助您在mac上安装windows系统,只需按照步骤进行操作即可。另外,您也可以使用虚拟机软件,如parallels desktop或vmware fusion&#xff0…...

探索网络爬虫技术:原理、实践与挑战

一、引言 在数字化时代,信息如同潮水般汹涌而来。过去,我们可能依赖书籍、报纸或电视来获取信息,但这些渠道的信息量有限,而且筛选过的信息未必能满足我们的需求。如今,互联网为我们提供了海量的信息,但同…...

GitHub国内使用方法

1、登录验证: 在火狐中添加插件“身份验证器”。此款插件对应的主页地址为:https://github.com/Authenticator-Extension/Authenticator 2、加速: 安装工具:https://gitee.com/XingYuan55/FastGithub/releases/tag/2.1.4 工具…...

Java调用第三方HTTP接口的常用方式

【日常业务开发】Java调用第三方http接口的常用方式 概述Java调用第三方http接口的方式 通过JDK网络类Java.net.HttpURLConnection通过apache common封装好的HttpClient通过Apache封装好的CloseableHttpClient通过OkHttp通过Spring的RestTemplate通过hutool的HttpUtil 总结 概述…...

DOPE-PEG2000-FITC荧光特性

DOPE-PEG2000-FITC作为一种荧光标记分子,在生物医学领域应用。其荧光特性为生物成像和药物追踪提供了工具应用 FITC,作为荧光团,在受到特定波长的光激发时,能够吸收光能并转化为荧光发射。这一过程中,FITC分子从基态跃…...

华为Pura70支持5G功能吗?看完你就清楚了

随着 5G 技术的普及,现在智能手机市场中的大部分新品都已经支持 5G 网络。相较于 4G,5G 不仅带来了更快的网速,更为用户带来了全新的使用体验。 然而,华为作为智能手机市场的佼佼者,其产品线中的部分手机在配置上却有…...

android 4大组件用法

在Android开发中,应用程序的主要组件包括Activity、Service、Broadcast Receiver和Content Provider。这些组件共同组成了Android应用的基本构架。以下是每个组件的详细用法: 1. Activity Activity是Android应用的主要组成部分,代表一个用户…...

qt pro工程文件通用宏定义

在 Qt .pro 文件中,有一些预定义的宏(或变量),它们代表了特定的路径或与项目、构建环境相关的信息。 以下是一些常用的 .pro 文件宏: 通用宏 $$PWD: 当前 .pro 文件所在的绝对路径。这是一个非常重要的宏,…...

这次让我们隆重的介绍一下

深思熟虑之后,我诚挚地想要全面的介绍自己。若你的需求与我的专长恰好契合,我将以满心的热枕和真诚与你并肩作战,携手解决难题,一同追求卓越,实现我们的垂直成长。我是一名经验丰富且充满热情的技术人员。我热爱编程&a…...

大语言模型系列-Transformer

DeepSeek Transformer模型是深度学习领域中一种革命性的架构,它在自然语言处理(NLP)任务中取得了巨大的成功。Transformer模型由Vaswani等人在2017年的论文《Attention Is All You Need》中提出,其核心思想是利用自注意力&#x…...

Node.js 语言特定指南

Node.js 语言特定指南 本 Node.js 语言特定指南将教您如何使用 Docker 容器化 Node.js 应用程序。在本指南中,您将学习如何: 容器化并运行一个 Node.js 应用程序设置一个本地环境以使用容器开发 Node.js 应用程序使用容器为 Node.js 应用程序运行测试使…...

科普:什么是 BC-404 ?全方位解读最新通缩型 NFT 标准

区块链技术飞速发展的今天,创新从未停歇。继 ERC-404 标准问世后,一个名为 BC-404 的新标准应运而生,为 NFT 市场带来了全新的可能性。BC-404(Bonding Curve 404)—基于对 ERC-404 的改进,加密货币中第一个…...

软件测试学习笔记丨JUnit5执行顺序

本文转自测试人社区,原文链接: https://ceshiren.com/t/topic/28025 指定顺序使用场景 测试用例有业务逻辑相关集成测试(主流程测试) 排序方式 方法排序类排序Suite官方网站没有明确说明默认排序的具体规则 方法排序的类型 方法排序-Order 注解指定排序 …...

解决GPU 显存未能完全释放

一、 现象 算法同学反馈显存未能完全释放。 二、解决方法 一条命令搞定 注意:执行时注意不要误杀其他的python进程,需要确认好。 我的这条命令是将所有python进程都杀死了 ps -elf | grep python | awk {print $4} | xargs kill -s 9...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 ​ 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...