10.2.0.1 单机升级至10.2.0.4
Table of Contents
1 安装Oracle软件
1.1 安装文件
Oracle 10G 安装,目标是10.2.0.4 ,这里是先安装10.2.0.1,然后再升级到 10.2.0.4 . 需要提前下载 以下几个文件:
- p6810189_10204_Linux-x86-64.zip
- 10201_database_linux_x86_64.cpio.gz
解压到Oracle 的$HOME路径,执行下面命令,进行解压:
gunzip 10201_database_linux_x86_64.cpio.gz cpio -idmv < 10201_database_linux_x86_64.cpio unzip p6810189_10204_Linux-x86-64.zip
解压后的结果如下:
[oracle@boss1 ~]$ ls 10201_database_linux_x86_64.cpio database Disk1 p6810189_10204_Linux-x86-64.zip README.html
其中database 是10.2.0.1的安装包。 Disk1 是 升级包。
1.2 安装依赖包
rpm -q binutils compat-libstdc++-33 compat-libstdc++-33.i686 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc.i686 glibc-common glibc-devel glibc-devel.i686 glibc-headers ksh libaio libaio.i686 libaio-devel libaio-devel libgcc libgcc libstdc++ libstdc++ libstdc++-devel make sysstat libXp.i686
- 数据库参数文件如果手动配置,compatible 参数需要与原库一致。否则恢复控制文件时,会出现ORA-201错误。
ln -s /u01/app/oracle/product/10.2.0/db_1/lib32/stubs/libXt.so.6 /lib/libXt.so.6 ln -s /u01/app/oracle/product/10.2.0/db_1/lib32/stubs/libXtst.so.6 /usr/lib/libXtst.so.6
1.3 修改内核参数
以root用户执行。
cat >> /etc/sysctl.conf <<EOF kernel.shmall = 2097152 kernel.shmmax = 2147483648 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 1024 65000 net.core.rmem_default = 4194304 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 262144 EOF sysctl -p cat >> /etc/security/limits.conf <<EOF oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 EOF # 下面可以不执行,主要是限制其他用户权限。 cat >> /etc/profile <<EOF if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi EOF
1.4 添加用户和组
root 用户执行。
groupadd -g 501 oinstall groupadd -g 502 dba useradd -g oinstall -G dba oracle passwd oracle
1.5 修改Oracle用户环境变量
以Oracle 用户执行。
cat >> .bash_profile <<EOF ORACLE_BASE=/u01/app/oracle ORACLE_HOME=$ORACLE_BASE/product/10.2.0/dbhome1 ORACLE_SID=boss1 PATH=$PATH:$ORACLE_HOME/bin LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH LD_LIBRARY_PATH EOF . .bash_profile
1.6 创建相关路径
root用户执行。
chown -R oracle:oinstall /u01/ chmod -R 775 /u01/app/oracle/
以Oracle 用户执行:
mkdir -p $ORACLE_HOME
1.7 修改oracle系统兼容列表
Oracle 兼容哪些系统, 是在配置文件中配置的。我们可以修改这些配置文件,达到正常安装的目的。但是这并不是万能的。版本差距过大,同样安装不了。
cd ~/database/install vi oraparam.ini #找到下面两行; [Certified Versions] Linux=redhat-3,SuSE-9,redhat-4,UnitedLinux-1.0,asianux-1,asianux-2 # 第二行,是oracle10G支持的系统列表。我们把el5,el6 也加进去。如下: Linux=redhat-3,SuSE-9,redhat-4,UnitedLinux-1.0,asianux-1,asianux-2,redhat-5,redhat-6 # 这样配置后,RHEL/CentOS 5、6两个版本都可以正常安装Oracle 10G。 vi oraparamsilent.ini # 相同的方式,调整 oraparamsilent.ini 中的默认配置。
1.8 修改响应文件
oracle 用户执行。
RESPONSEFILE_VERSION=2.2.1.0.0 UNIX_GROUP_NAME=oinstall # 配置oracle 用户的组,一般为oinstall FROM_LOCATION="../stage/products.xml" NEXT_SESSION_RESPONSE=<Value Unspecified> ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1 # 配置ORACLE_HOME 变量值。 ORACLE_HOME_NAME="OraDBHome1" # 配置ORACLE_HOME 别名,记住此名。 TOPLEVEL_COMPONENT={"oracle.server","10.2.0.1.0"} DEINSTALL_LIST={"oracle.server","10.2.0.1.0"} SHOW_SPLASH_SCREEN=false SHOW_WELCOME_PAGE=false SHOW_NODE_SELECTION_PAGE=false SHOW_SUMMARY_PAGE=false SHOW_INSTALL_PROGRESS_PAGE=false SHOW_CONFIG_TOOL_PAGE=false SHOW_XML_PREREQ_PAGE=false SHOW_ROOTSH_CONFIRMATION=true SHOW_END_SESSION_PAGE=false SHOW_EXIT_CONFIRMATION=false NEXT_SESSION=false NEXT_SESSION_ON_FAIL=false SHOW_DEINSTALL_CONFIRMATION=false SHOW_DEINSTALL_PROGRESS=false RESTART_SYSTEM=<Value Unspecified> RESTART_REMOTE_SYSTEM=<Value Unspecified> REMOVE_HOMES=<Value Unspecified> ORACLE_HOSTNAME=<Value Unspecified> SHOW_END_OF_INSTALL_MSGS=false CLUSTER_NODES=<Value Unspecified> COMPONENT_LANGUAGES={"en"} INSTALL_TYPE="EE" s_nameForDBAGrp=<Value Required> s_nameForOPERGrp=<Value Required> n_configurationOption=<Value Required> s_ASMSYSPassword="" s_ASMSYSPasswordAgain="" n_dbType=<Value Required> oracle.assistants.server:s_responseFileName=<Value Unspecified> s_globalDBName=<Value Required> s_dbSid=<Value Required> s_dbRetChar="WE8ISO8859P1" b_loadExampleSchemas=false b_useDBControl=true b_receiveEmailNotification=false s_dlgEMSMTPServer=<Value Unspecified> s_dlgEMEmailAddress=<Value Unspecified> s_dlgEMCentralAgentSelected=<Value Unspecified> n_dbStorageType=<Value Unspecified> s_mountPoint=<Value Unspecified> s_rawDeviceMapFileLocation=<Value Unspecified> b_enableAutoBackup=false b_useFileSystemForRecovery=true s_dlgRBORecoveryLocation=<Value Unspecified> s_dlgRBOUsername=<Value Unspecified> s_dlgRBOPassword=<Value Unspecified> s_dlgASMCfgDiskGroupName="DATA" s_dlgASMCfgDiskDiscoveryString=<Value Unspecified> n_dlgASMCfgRedundancySelected=<Value Unspecified> sl_dlgASMCfgSelectableDisks=<Value Unspecified> sl_dlgASMCfgDiskSelections=<Value Unspecified> sl_dlgASMDskGrpSelectedGroup={" "," "," "," "} b_centrallyManageASMInstance=true b_useSamePassword=true s_superAdminSamePasswd=<Value Unspecified> s_superAdminSamePasswdAgain=<Value Unspecified> sl_superAdminPasswds=<Value Unspecified> sl_superAdminPasswdsAgain=<Value Unspecified> n_performUpgrade=0 n_upgradeDB=0 s_dbOHSelectedForUpgrade="" s_dbSIDSelectedForUpgrade="" n_upgradeASM=0 s_dbSelectedUsesASM="no" sl_upgradableSIDBInstances={} sl_upgradableRACDBInstances={} n_dbSelection=0 b_stateOfUpgradeASMCheckbox=false b_stateOfUpgradeDBCheckbox=false b_oneClick=false s_dlgASMCfgRedundancyValue="" s_dlgASMCfgExistingFreeSpace="0" s_dlgASMCfgNewDisksSize="" s_dlgASMCfgAdditionalSpaceNeeded="0 MB"
除标记内容外,其他配置不需要修改。
1.9 静默安装
安装Oracle RDBMS软件的响应文件,基本配置如下:
cd ~/database ./runInstaller -silent -responseFile /home/oracle/database/response/enterprise.rsp
最后根据提示执行以下两个命令:
sh /u01/app/oracle/oraInventory/orainstRoot.sh sh /u01/app/oracle/product/10.2.0/db_1/root.sh
1.10 升级
在解压文件后,生成一个Disk1 的路径。这个路径里是升级用的各种文件。这一节的操作基本都围绕这个路径展开。
1.10.1 配置系统兼容列表
修改 Disk1/install/oraparam.ini,找到下面一行,
Linux=redhat-3,SuSE-9,SuSE-10,redhat-4,redhat-5,UnitedLinux-1.0,asianux-1,asianux-2,asianux-3
在该后面添加需要支持的操作系统及版本,最终如下:
Linux=redhat-3,SuSE-9,SuSE-10,redhat-4,redhat-5,UnitedLinux-1.0,asianux-1,asianux-2,asianux-3,redhat-4,redhat-5,redhat-6
1.10.2 配置升级响应文件
Disk1/response/patchset.rsp 是数据库升级所使用的配置文件。内容如下:
RESPONSEFILE_VERSION=2.2.1.0.0 UNIX_GROUP_NAME=oinstall =======> 配置执行升级的用户属组 FROM_LOCATION=<Value Required> NEXT_SESSION_RESPONSE=<Value Unspecified> ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1 =======> 配置ORACLE_HOME 变量的值 ORACLE_HOME_NAME="OraDBHome1" =======> 配置ORACLE_HOME_NAME 与安装Oracle软件的名称保持一致 TOPLEVEL_COMPONENT={"oracle.patchset.db","10.2.0.4.0"} SHOW_SPLASH_SCREEN=false SHOW_WELCOME_PAGE=false SHOW_COMPONENT_LOCATIONS_PAGE=false SHOW_CUSTOM_TREE_PAGE=false SHOW_SUMMARY_PAGE=false SHOW_INSTALL_PROGRESS_PAGE=true SHOW_REQUIRED_CONFIG_TOOL_PAGE=false SHOW_OPTIONAL_CONFIG_TOOL_PAGE=false SHOW_CONFIG_TOOL_PAGE=false SHOW_XML_PREREQ_PAGE=false SHOW_RELEASE_NOTES=false SHOW_END_OF_INSTALL_MSGS=true SHOW_ROOTSH_CONFIRMATION=true SHOW_END_SESSION_PAGE=false SHOW_EXIT_CONFIRMATION=false NEXT_SESSION=false NEXT_SESSION_ON_FAIL=false SHOW_DEINSTALL_CONFIRMATION=false SHOW_DEINSTALL_PROGRESS=false ACCEPT_LICENSE_AGREEMENT=true RESTART_SYSTEM=<Value Unspecified> CLUSTER_NODES=<Value Unspecified> OUI_HOSTNAME=<Value Unspecified> REMOVE_HOMES=<Value Unspecified> COMPONENT_LANGUAGES={"en"} sl_userNodeList=<Value Unspecified> b_acceptLicense=<Value Unspecified> b_useRegistration=<Value Unspecified> s_csiNumber=<Value Unspecified> s_metaLink=<Value Unspecified> s_countryName=<Value Unspecified> b_proxyused=<Value Unspecified> s_serverName=<Value Unspecified> s_portNumber=<Value Unspecified> s_userName=<Value Unspecified> s_proxyPassword=<Value Unspecified> b_authenticationused=<Value Unspecified>
只需要修改有提示的三个参数。其他不需要修改。
特别说明的是,如果不记得ORACLE_HOME_NAME,可以在 oraInventory/ContentsXML/inventory.xml中找到,如下:
<INVENTORY> <VERSION_INFO> <SAVED_WITH>10.2.0.1.0</SAVED_WITH> <MINIMUM_VER>2.1.0.6.0</MINIMUM_VER> </VERSION_INFO> <HOME_LIST> <HOME NAME="OraDBHome1" LOC="/u01/app/oracle/product/10.2.0/db_1" TYPE="O" IDX="1"/> </HOME_LIST> </INVENTORY>
HOME NAME="OraDBHome1" 就是ORACLE_HOME_NAME 对应的值。
另外,如果想变更 ORACLE_HOME_NAME 的值,请参考变更ORACLE_HOME_NAME.
1.10.3 安装补丁
./runInstaller -silent -responseFile <path>/Disk1/response/patchset.rsp
注意,响应文件要使用绝对路径。
执行部分结果如下:
正在启动 Oracle Universal Installer... 正在检查安装程序要求... 检查操作系统版本: 必须是redhat-3, SuSE-9, SuSE-10, redhat-4, redhat-5, UnitedLinux-1.0, asianux-1, asianux-2, asianux-3, redhat-4, redhat-5 or redhat-6 通过 所有安装程序要求均已满足。 准备从以下地址启动 Oracle Universal Installer /tmp/OraInstall2020-05-09_11-53-53PM. 请稍候...[oracle@boss1 Disk1]$ Oracle Universal Installer, 版本 10.2.0.4.0 正式版 版权所有 (c) 1999, 2008, Oracle。保留所有权利。 本次安装会话的日志可见于: /u01/app/oracle/oraInventory/logs/installActions2020-05-09_11-53-53PM.log .................................................................................................... 100% 已完成。 正在加载产品信息 .......................................................................................................... 100% 已完成。 开始执行先决条件... Total No of checks: 2 Performing check for checkToInstallCCR 检查 Oracle 主目录中已安装的组件 检查完成。此次检查的总体结果为: 通过 Check complete: 通过 ======================================================================= Performing check for CompatibilityChecks 正在检查 Oracle 主目录的不兼容性... 检查完成。此次检查的总体结果为: 通过 Check complete: 通过 ======================================================================= PrereqChecks complete 分析相关性 ............................................................................................................. 100% 已完成。 ----------------------------------------------------------------------------- 概要 全局设置 来源: /home/oracle/Disk1/stage/products.xml Oracle 主目录: /u01/app/oracle/product/10.2.0/db_1 (OraDBHome1) 产品语言 英语 空间要求 / 要求空间 1.42GB (包括 55MB 临时空间) : 可用空间 39.73GB 新安装组件 (81 个产品) Oracle Notification Service Patch 10.2.0.4.0 Database Configuration and Upgrade Assistants Patch 10.2.0.4.0 ........... 省略 ............... 正在进行卸装 (2020年5月9日 星期六 下午11时54分04秒 CST) ............................................................... 0% 已完成。 ............................................................... 14% 已完成。 ............................................................... 29% 已完成。 ............................................................... 44% 已完成。 ............................................................... 59% 已完成。 ............................................................... 74% 已完成。 .............................................. 100% 已完成。 卸装成功 正在安装 (2020年5月9日 星期六 下午11时54分04秒 CST) ............................................................... 14% 已完成。 ............................................................... 29% 已完成。 ............................................................... 44% 已完成。 ............................................................... 59% 已完成。 ............................................................... 74% 已完成。 ...................................................... 87% 已完成。 安装成功 正在进行链接 (2020年5月9日 星期六 下午11时54分33秒 CST) ... 87% 已完成。 链接成功 正在进行设置 (2020年5月9日 星期六 下午11时57分15秒 CST) ......... 100% 已完成。 设置成功 安装阶段结束。(2020年5月9日 星期六 下午11时57分16秒 CST) WARNING: 以下配置脚本需要以 "root" 用户的身份执行。 #!/bin/sh #Root script to run /u01/app/oracle/product/10.2.0/db_1/root.sh 要执行配置脚本, 请执行以下操作: 1. 打开终端窗口 2. 以 "root" 身份登录 3. 运行脚本 Oracle Database 10g Release 2 Patch Set 3 的 安装 已成功。 请查看 ‘/u01/app/oracle/oraInventory/logs/silentInstall2020-05-09_11-53-53PM.log‘ 以获取详细资料。
根据提示,再次执行root.sh,注意,以root用户执行。
sh /u01/app/oracle/product/10.2.0/db_1/root.sh
没有异常的话,至此,已升级完 RDBMS软件。 如果还没有数据库,只是升级软件,至此已完成。如果本身是有数据 库的,还需要执行下面两个步骤。
1.10.4 升级数据字典
sqlplus 环境操作,sysdba身份。
startup upgrade spool patch.log @?/rdbms/admin/catupgrd.sql spool off
1.10.5 重新编译无效对象
sqlplus 环境操作,sysdba身份。
startup force @?/rdbms/admin/utlrp.sql
1.10.6 升级catalog
如果使用catalog 库作为记录rman备份信息,那么还需要升级catalog。
rman catalog / RMAN> UPGRADE CATALOG;
1.10.7 回退
SQL> STARTUP DOWNGRADE SQL> SPOOL downgrade.log SQL> @catdwgrd.sql SQL> spool off
注意,如果你的版本里没有catdwgrd.sql,可以依据10.1中的文件全名规则, 降级使用的是d92000.sql,即d<old_release>.sql 。