本文中源库的ORACLE_HOME目录为/u01/app/oracle/product/11.2.0/db_1,目标环境的ORACLE_HOME目录规划为/u01/app/oracle/product/11.2.0/db_1
源库的数据库版本11.2.0.4,操作系统linux 7,其余linux版本和oracle11g版本,操作基本都类似
一、步骤简述
1、安装操作系统
2、关闭防火墙和selinux安全设置
3、配置yum源
4、安装依赖包(oracle软件安装时必须使用到的)
5、创建用户和组(用于安装oracle数据库软件)
6、配置操作系统参数和内核限制
7、规划和创建Oracle数据库软件和Oracle数据库安装目录
8、Oracle用户环境变量设置(确保ORACLE_BASE,ORACLE_HOME环境变量与源tar数据库一致)
9、源Oracle环境下,,tar一个oracle安装目录,保持权限、用户一致
10、tar包传输到目标服务器上,解压,保持权限、用户一致
11、重新构建Inventory,这一步很重要
12、简单验证
备注:其中1到6步骤,可以参考我的文章《Oracle 11g 单机安装总结_linux7》,这里不再赘述
二、具体步骤
前提:本文从7步开始进行详细描述
7、规划和创建Oracle数据库软件和Oracle数据库安装目录
安装目录
mkdir -p /u01/app/oracle
mkdir -p /u01/soft
mkdir -p /u01/psu
mkdir -p /oradata
mkdir -p /u01/app/oracle/product/11.2.0
chown -R oracle:oinstall /u01
chown -R oracle:oinstall /oradata
备注:
这里需要特别注意,要保持与tar源数据库软件目录一致,例如源数据库安装软件ORACLE_HOME目录为/u01/app/oracle/product/11.2.0/db_1,则新建安装目录也必须一致,否则不能成功!
重要说明:
这里需要创建至ORACLE_HOME目录的上一级目录
例如源环境ORACLE_HOME目录为/u01/app/oracle/product/11.2.0/db_1,则创建如下:
mkdir -p /u01/app/oracle/product/11.2.0
因为tar包时,db_1目录会跟随一起tar,解压时,会自动生产db_1目录
8、Oracle用户环境变量设置(确保ORACLE_BASE,ORACLE_HOME环境变量与源tar数据库一致)
ORACLE_SID可以不一致
ORACLE_BASE和ORACLE_HOME的环境变量必须与源tar数据库一致
9、源Oracle环境下,,tar一个oracle安装目录,保持权限、用户一致
tar命令用root用户,经过验证,文件属性都是保持原有的
tar命令
cd /u01/app/oracle/product/11.2.0/
tar -czvf db_1.tar.zip ./db_1
10、传输到目标服务器上,解压,保持权限、用户一致
源环境上:
root用户执行
cd /u01/app/oracle/product/11.2.0/
scp db_1.tar.zip 192.168.11.19:/u01/app/oracle/product/11.2.0
备注:192.168.11.19为本文实验中的目标环境(需要安装数据库的环境)
目标环境上:
root用户执行
root解压命令
cd /u01/app/oracle/product/11.2.0/
tar -xzvf db_1.tar.zip .
简单验证是否tar包安装成功
su - oracle
sqlplus -v
sqlplus /nolog
11、重新构建Inventory,这一步很重要
在操作系统环境相同的情况下,可能有一些数据库管理员,使用tar的方式复制数据库软件,而忘记了Inventory目录的复制或重构,导致后期打补丁时遇到了麻烦。重构步骤如下:
1)源库环境检查
[root@host01 11.2.0]# cat /etc/oraInst.loc
inventory_loc=/u01/app/oraInventory
inst_group=oinstall
[root@host01 11.2.0]# cd /u01/app/oraInventory/ContentsXML
[root@host01 ContentsXML]# cat inventory.xml
<?xml version="1.0" standalone="yes" ?>
<!-- Copyright (c) 1999, 2013, Oracle and/or its affiliates.
All rights reserved. -->
<!-- Do not modify the contents of this file by hand. -->
<INVENTORY>
<VERSION_INFO>
<SAVED_WITH>11.2.0.4.0</SAVED_WITH>
<MINIMUM_VER>2.1.0.6.0</MINIMUM_VER>
</VERSION_INFO>
<HOME_LIST>
<HOME NAME="OraDb11g_home1" LOC="/u01/app/oracle/product/11.2.0/db_1" TYPE="O" IDX="1"/>
</HOME_LIST>
<COMPOSITEHOME_LIST>
</COMPOSITEHOME_LIST>
</INVENTORY>
其中HOME NAME="OraDb11g_home1" LOC="/u01/app/oracle/product/11.2.0/db_1"这两个键值对是后续需要使用的
2)目标环境中oracle用户执行重建
su - oracle
$ORACLE_HOME/oui/bin/runInstaller -silent -ignoreSysPrereqs -attachHome ORACLE_HOME="/u01/app/oracle/product/11.2.0/db_1" ORACLE_HOME_NAME="OraDb11g_home1"
备注:ORACLE_HOME和ORACLE_HOME_NAME这两个值就是上面步骤查询出来的两个键值对信息
安装输出提示,执行/u01/app/oraInventory/orainstRoot.sh脚本(以root用户执行)
输出如下,表示创建成功:
Starting Oracle Universal Installer...
Checking swap space: must be greater than 500 MB. Actual 2028 MB Passed
The inventory pointer is located at /etc/oraInst.loc
The inventory is located at /u01/app/oraInventory
Please execute the '/u01/app/oraInventory/orainstRoot.sh' script at the end of the session. //这里提示需要root执行脚本
'AttachHome' was successful.
3)检查和验证
a.$ORACLE_HOME/OPatch/opatch lsinv 命令可以正常执行
b.目标服务器上下面目录中文件内容正常(刚tar安装后,目标服务器上根本没有/u01/app/oraInventory目录)
cat /u01/app/oraInventory/ContentsXML/inventory.xml
c.目标服务器上/etc/oraInst.loc文件也正常生成(刚tar安装后,目标服务器上根本没有/etc/oraInst.loc文件)
cat /etc/oraInst.loc
至此完成tar包方式数据库软件安装
三、总结
如果不进行Inventory信息重建,使用opatch是会出现如下类似错误
$ORACLE_HOME/OPatch/opatch lsinv
Oracle Interim Patch Installer version 11.2.0.3.36
Copyright (c) 2026, Oracle Corporation. All rights reserved.
Oracle Home : /u01/app/oracle/product/11.2.0/db_1
Central Inventory : /u01/app/oraInventory
from : /u01/app/oracle/product/11.2.0/db_1/oraInst.loc
OPatch version : 11.2.0.3.36
OUI version : 11.2.0.4.0
Log file location : /u01/app/oracle/product/11.2.0/db_1/cfgtoollogs/opatch/opatch2026-03-11_01-26-43AM_1.log
LsInventorySession failed: OPatch failed to locate Central Inventory.
Possible causes are:
The Central Inventory is corrupted
The oraInst.loc file specified is not valid.
OPatch failed with error code 73