Linux 下静默安装/无网络安装/ Oracle 11g 11.2.0 步骤(CentOS 7)

Linux 下静默安装 Oracle 11g 11.2.0 步骤(CentOS 7)

写在前面

本文引用了“进步中的程序猿”的大佬文章–Linux 下静默安装 Oracle 11g 11.2.0 步骤(CentOS 7),同时根据自己安装的实际情况,添加了一些情况,如有侵权可以私信我或者发送到QQ邮箱[email protected]联系我,进行删除,谢谢

1. 更换依赖源
yum源进行切换(这里采用的阿里云的yum源)(切换之前建议先备份 /etc/yum.repos.d 中的文件)

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

2. 下载并安装依赖

# 有网络依赖下载
yum install compat-libstdc++-33 elfutils-libelf-devel gcc* glibc-* ksh libaio libaio-devel libstdc++-devel unixODBC unixODBC-devel sysstat -y
# 无网络依赖下载(需要现在一台有网络的服务器上运行该命令)
yum install --downloadonly --downloaddir=/tmp/ compat-libstdc++-33 elfutils-libelf-devel gcc* glibc-* ksh libaio libaio-devel libstdc++-devel unixODBC unixODBC-devel sysstat -y

# 然后把在/tmp/文件夹下的依赖包上传到服务器中,执行该命令
rpm -Uvh --force --nodeps *.rpm

3. 创建需要的用户和用户组

groupadd oinstall
groupadd dba
groupadd asmadmin
groupadd asmdba
useradd -g oinstall -G dba,asmdba oracle -d /home/oracle
passwd oracle

4.修改linux内核参数

编辑sysctl.conf

vim /etc/sysctl.conf

把下列内容放到sysctl.conf文件中

fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 8388608
kernel.shmmax = 34359738368
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576

5. 关闭selinux、防火墙
关闭selinux

vim /etc/selinux/config
设置SELINUX=disabled

关闭防火墙

systemctl stop firewalld

6.修改配置文件

修改limits.conf文件

vim /etc/security/limits.conf

将以下内容加到limits.conf文件中

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240

修改/etc/pam.d/login文件

vim /etc/pam.d/login 

将以下内容加到login文件中

session  required   /lib64/security/pam_limits.so
session  required   pam_limits.so

修改/etc/profile文件

 vim /etc/profile

将以下内容加到profile文件中

if [ $USER = "oracle" ]; then
  if [ $SHELL = "/bin/ksh" ]; then
   ulimit -p 16384
   ulimit -n 65536
  else
   ulimit -u 16384 -n 65536
  fi
fi

使profile文件生效

source /etc/profile

7. 创建数据库相关目录并授权、修改/etc/oraInst.loc文件

mkdir -p /u01/app/
chown -R oracle:oinstall /home/oracle  
chmod -R 775 /home/oracle  
chown -R oracle:oinstall /u01/app/ 
chmod -R 775 /u01/app/

添加/etc/oraInst.loc文件

vim /etc/oraInst.loc

将以下内容放到oraInst.loc文件中

inventory_loc=/u01/app/oracle/oraInventory
inst_group=oinstall

授权

chown oracle:oinstall /etc/oraInst.loc
chmod 664 /etc/oraInst.loc

8.切换的oracle用户,并设置用户环境变量

切换oracle用户

su - oracle

设置环境变量

vim ~/.bash_profile

将以下内容放到.bash_profile文件中

export ORACLE_BASE=/u01/app/oracle
export ORACLE_SID=orcl

重新加载环境变量,使其生效

source ~/.bash_profile

9.上传已经下载好的数据库安装包到linux任意目录并解压,我这里解压到的是/home/oracle/目录
提供linux的oracle11g安装包

链接:https://pan.baidu.com/s/183ItZoi77JGUWnQyOQImOg?pwd=uikp 
提取码:uikp

解压zip包(unzip安装命令‘yum install unzip’)

unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip

10.切换到root用户并授权相关文件

su - root
cd /home/oracle/ 
mkdir etc
cp /home/oracle/database/response/* /home/oracle/etc/
chmod 777 /home/oracle/etc/*.rsp

11.切换到oracle用户,配置数据库安装文件

su - oracle
vim /home/oracle/etc/db_install.rsp

#将下列内容添加到db_install.rsp文件末尾即可

oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=主机名
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oracle/oraInventory
SELECTED_LANGUAGES=en,zh_CN,zh_TW
ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.isCustomInstall=false
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=oinstall
#这里必须填ture
DECLINE_SECURITY_UPDATES=true

12. 执行安装
进入 /home/oracle/database文件夹下执行以下命令

./runInstaller -silent -force -responseFile /home/oracle/etc/db_install.rsp -ignorePrereq

此处会卡住,安装完成会出现以下情况则安装成功,若未出现可查看日志文件

可以重新开一个窗口查看日志文件命令 文件名需要自己更改

tail -f  /u01/app/oracle/oraInventory/logs/installActions2022-09-20_11-39-48PM.log

13. 安装完成后切换到root用户

su root
执行
sh /u01/app/oracle/product/11.2.0/db_1/root.sh

14. 切换成oracle用户配置环境变量

su - oracle
vim ~/.bash_profile

将以下内容添加到.bash_profile文件中

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/JRE
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/JRE/lib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export LIBPATH=${CLASSPATH}:$ORACLE_HOME/lib:$ORACLE_HOME/ctx/lib
export ORACLE_OWNER=oracle
export SPFILE_PATH=$ORACLE_HOME/dbs
export ORA_NLS10=$ORACLE_HOME/nls/data

刷新环境变量,使其生效

source ~/.bash_profile 

15. 安装数据库实例,配置dbca.rsp文件

vim /home/oracle/etc/dbca.rsp

将以下内容添加到dbca.rsp文件中

GDBNAME = "orcl"
SID = "orcl"
SYSPASSWORD = "oracle"
SYSTEMPASSWORD = "oracle"
SYSMANPASSWORD = "oracle"
DBSNMPPASSWORD = "oracle"
DATAFILEDESTINATION =/u01/app/oracle/oradata
RECOVERYAREADESTINATION=/u01/app/oracle/fast_recovery_area
CHARACTERSET = "ZHS16GBK"
TOTALMEMORY = "1638"

# 其中TOTALMEMORY = "1638" 为1638MB,物理内存2G*80%

16. 安装数据库实例

dbca -silent -responseFile /home/oracle/etc/dbca.rsp

执行命令之后,会提示输入Sys和System用户的密码,输入后会出现下列文字

出现以下文字则安装成功
Linux 下静默安装/无网络安装/ Oracle 11g 11.2.0 步骤(CentOS 7)_第1张图片

实例进程检查

ps -ef | grep ora_ | grep -v grep


17. 监听配置,切换到oracle用户

su - oracle
配置监听
netca /silent /responsefile /home/oracle/database/response/netca.rsp

Linux 下静默安装/无网络安装/ Oracle 11g 11.2.0 步骤(CentOS 7)_第2张图片

查看监听状态

netstat -tnulp | grep 1521

Linux 下静默安装/无网络安装/ Oracle 11g 11.2.0 步骤(CentOS 7)_第3张图片

如果出现以下情况
在这里插入图片描述切换到root用户执行以下操作即可

chmod +s /bin/netstat

18. 安装完成,使用sqlplus连接测试

sqlplus /nolog

conn /as sysdba

出现以下情况即可
Linux 下静默安装/无网络安装/ Oracle 11g 11.2.0 步骤(CentOS 7)_第4张图片

19. 启动监听
按照我的这个安装过程,需要先停止监听,再启动监听

# 监听停止
lsnrctl stop

# 监听启动
lsnrctl start

# 执行启动监听的命令时 估计会出现The listener supports no services,如果出现以下情况
# 去/u01/app/oracle/product/11.2.0/db_1/network/admin 文件夹下,修改 listener.ora 文件 增加以下内容

SID_LIST_LISTENER =  
(SID_LIST =  
  (SID_DESC =  
  (GLOBAL_DBNAME = orcl)
  (SID_NAME = orcl)
  )
)

# 同时把LISTENER中host=loaclhost改成host=本机ip地址
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
  )
改成
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.134.129)(PORT = 1521))
    )
  )

20. 启动数据库

#执行以下命令启动数据库
sqlplus /nolog

conn /as sysdab

startup

如果启动数据库出现以下情况Linux 下静默安装/无网络安装/ Oracle 11g 11.2.0 步骤(CentOS 7)_第5张图片执行以下命令 将/u01/app/oracle/admin/orcl11g/pfile/init.ora.8202022213917 复制到’/u01/app/oracle/product/11.2.0/db_1/dbs文件夹下并更名为initorcl.ora

在oracle用户下执行

cp /u01/app/oracle/admin/orcl11g/pfile/init.ora.8202022213917 /u01/app/oracle/product/11.2.0/db_1/dbs/initorcl.ora

如果启动数据库出行以下情况
Linux 下静默安装/无网络安装/ Oracle 11g 11.2.0 步骤(CentOS 7)_第6张图片
执行以下命令,然后重启系统
在root用户下执行以下命令

mount -o remount,size=2G /dev/shm/

重启系统之后,切换用户用 su - oracle 不要用 su oracle 不然会导致oracle的环境变量找不到

19. 安装过程中遇到的问题解决方案

监听操作命令

#监听启动
lsnrctl start 
#监听停止
lsnrctl stop
#查看监听状态
lsnrctl status

防火墙操作命令

#防火墙启动
systemctl start firewalld.servicel
#防火墙停止
systemctl stop firewalld.service
#查看防火墙状态
systemctl status firewalld.service

使用PLSQL远程登录服务器的oracle(出现权限不足提示)
Linux 下静默安装/无网络安装/ Oracle 11g 11.2.0 步骤(CentOS 7)_第7张图片

#使用下列命令赋予权限
# 用户名需要替换成自己的用户
grant sysdba to 用户名

赋予权限执行grant命令式 出现以下情况
Linux 下静默安装/无网络安装/ Oracle 11g 11.2.0 步骤(CentOS 7)_第8张图片

# 查看sid 
select instance_name from V$instance;
#出现 password file missing or disabled 这个错误是因为密码文件是否存在不存在,查看方式是
ho ls $ORACLE_HOME/dbs/orapw*
创建密码文件示例格式是 (ho orapwd file=oracle安装目录+'/product/11.2.0/db_1/dbs/orawpw'+'sid'# 例如我的解决方案是执行以下命令
ho orapwd file=/u01/app/oracle/product/11.2.0/db_1/dbs/orapworcl password=oracle entries=10

执行lsnrctl start 监听启动命令 出现The listener supports no services( 侦听器不支持任何服务)提示

# 在listener.ora里面添加了一行
# 里面的orcl根据你安装的数据库实例名确定,我用此法解决了这个报错。
SID_LIST_LISTENER =  
(SID_LIST =  
  (SID_DESC =  
  (GLOBAL_DBNAME = orcl)
  (SID_NAME = orcl)
  )
)

使用PLSQL远程登录服务器的oracle出现用户被锁住的提示

# 用户名需要替换成被锁住的用户
alter user 用户名 account unlock

出现管理员用户密码忘记的情况,比如sys和system密码忘记

# 需在 conn /as sysdba 这个界面进行强制修改密码
alter user 用户名 identified by 密码

出现invalid username/password;logon denied 这是密码错误,如下图所示,需要修改密码
在这里插入图片描述`

#在sql界面执行
alter user 用户名 identified by 密码

20. linux下设置oracle开机自启

切换到root用户执行以下操作,

su root

(1)修改dbstart文件

vim /u01/app/oracle/product/11.2.0/db_1/bin/dbstart

修改内容

将    ORACLE_HOME_LISTNER=$1 
修改为 ORACLE_HOME_LISTNER=$ORACLE_HOME

(2)修改dbshut文件

vim /u01/app/oracle/product/11.2.0/db_1/bin/dbshut

修改内容

将    ORACLE_HOME_LISTNER=$1 
修改为 ORACLE_HOME_LISTNER=$ORACLE_HOME 

(3)修改oratab文件

vim /etc/oratab

修改内容

将 orcl:/u01/app/oracle/product/11.2.0/db_1:N 中最后的 N 改为 Y

切换用户到oracle执行 dbshut 和 dbstart 测试,如下则成功
Linux 下静默安装/无网络安装/ Oracle 11g 11.2.0 步骤(CentOS 7)_第9张图片
Linux 下静默安装/无网络安装/ Oracle 11g 11.2.0 步骤(CentOS 7)_第10张图片
19. 添加开启启动脚本

vim /etc/rc.d/init.d/oracle

将下列内容编辑到脚本文件中

#!/bin/bash  
  
# oracle: Start/Stop Oracle Database 11g R2  
# chkconfig: 345 90 10  
# description: The Oracle Database is an Object-Relational Database Management System.  
#   
. /etc/rc.d/init.d/functions  
LOCKFILE=/var/lock/subsys/oracle  
ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
ORACLE_USER=oracle  
case "$1" in  
'start')  
    if [ -f $LOCKFILE ]; then  
      echo $0 already running.  
      exit 1  
   fi   
   echo -n $"Starting Oracle Database:"  
   su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl start"  
   su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"  
   su - $ORACLE_USER -c "$ORACLE_HOME/bin/emctl start dbconsole"  
   touch $LOCKFILE  
   ;;  
'stop')  
   if [ ! -f $LOCKFILE ]; then  
      echo $0 already stopping.  
      exit 1  
   fi   
   echo -n $"Stopping Oracle Database:"  
   su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl stop"  
   su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbshut"   
   su - $ORACLE_USER -c "$ORACLE_HOME/bin/emctl stop dbconsole"  
   rm -f $LOCKFILE  
   ;;   
'restart')  
   $0 stop  
   $0 start  
   ;;   
'status')  
   if [ -f $LOCKFILE ]; then  
      echo $0 started.  
      else   
      echo $0 stopped.  
   fi   
   ;;  
*)   
   echo "Usage: $0 [start|stop|status]"  
   exit 1  
esac  
exit 0

修改文件权限

chmod 755 /etc/init.d/oracle

设置开机启动执行

chkconfig oracle on

查看

chkconfig --list oracle

Linux 下静默安装/无网络安装/ Oracle 11g 11.2.0 步骤(CentOS 7)_第11张图片
执行操作以下命令进行测试

service oracle start/stop/restart 

出现如下结果即可
Linux 下静默安装/无网络安装/ Oracle 11g 11.2.0 步骤(CentOS 7)_第12张图片
20. 如果以上11步出现以下错误,可使用命令行方式安装

静默安装报错:

Starting Oracle Universal Installer...

Checking Temp space: must be greater than 120 MB.   Actual 7328 MB    Passed
Checking swap space: must be greater than 150 MB.   Actual 8191 MB    Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2011-02-16_10-55-12PM. Please wait ...[oracle@Oracle111 database]$ [FATAL] [INS-10105] The given response file /data1/database/response/myinstall.rsp is not valid.
   CAUSE: Syntactically incorrect response file. Either unexpected variables are specified or expected variables are not specified in the response file.
   ACTION: Refer the latest product specific response file template
   SUMMARY:
       - cvc-complex-type.2.4.b: The content of element 'properties' is not complete. One of '{"":oracle.install.db.CLUSTER_NODES, "":oracle.install.db.isRACOneInstall, "":oracle.install.db.racOneServiceName, "":oracle.install.db.OPER_GROUP, "":oracle.install.db.config.starterdb.type, "":oracle.install.db.config.starterdb.SID, "":oracle.install.db.config.starterdb.globalDBName, "":oracle.install.db.config.starterdb.characterSet, "":oracle.install.db.config.starterdb.memoryLimit, "":oracle.install.db.config.starterdb.enableSecuritySettings, "":oracle.install.db.config.starterdb.installExampleSchemas, "":oracle.install.db.config.starterdb.memoryOption, "":oracle.install.db.config.starterdb.storageType, "":oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation, "":oracle.install.db.config.starterdb.fileSystemStorage.dataLocation, "":oracle.install.db.config.starterdb.password.ALL, "":oracle.install.db.config.starterdb.password.SYS, "":oracle.install.db.config.starterdb.password.DBSNMP, "":oracle.install.db.config.starterdb.password.SYSMAN, "":oracle.install.db.config.starterdb.password.SYSTEM, "":oracle.install.db.config.starterdb.control, "":oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL, "":oracle.install.db.config.starterdb.automatedBackup.enable, "":oracle.install.db.config.starterdb.automatedBackup.osuid, "":oracle.install.db.config.starterdb.automatedBackup.ospwd, "":oracle.install.db.config.asm.diskGroup, "":oracle.install.db.config.asm.ASMSNMPPassword, "":SECURITY_UPDATES_VIA_MYORACLESUPPORT, "":DECLINE_SECURITY_UPDATES, "":MYORACLESUPPORT_USERNAME, "":MYORACLESUPPORT_PASSWORD, "":PROXY_PORT, "":PROXY_HOST, "":PROXY_USER, "":PROXY_PWD, "":COLLECTOR_SUPPORTHUB_URL, "":AUTOUPDATES_MYORACLESUPPORT_USERNAME, "":AUTOUPDATES_MYORACLESUPPORT_PASSWORD, "":oracle.installer.autoupdates.option, "":oracle.installer.autoupdates.downloadUpdatesLoc}' is expected.

A log of this session is currently saved as: /tmp/OraInstall2011-02-16_10-55-12PM/installActions2011-02-16_10-55-12PM.log. Oracle recommends that if you want to keep this log, you should move it from the temporary location to a more permanent location.

命令行安装方式

./runInstaller -silent -ignorePrereq -debug -force \
FROM_LOCATION=/data/database/stage/products.xml \
oracle.install.option=INSTALL_DB_SWONLY \
UNIX_GROUP_NAME=oinstall \
NVENTORY_LOCATION=/u01/app/oracle/oraInventory \
ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1 \
ORACLE_BASE=/u01/app/oracle oracle.install.db.InstallEdition=EE \
oracle.install.db.isCustomInstall=false \
oracle.install.db.DBA_GROUP=dba \
oracle.install.db.OPER_GROUP=oinstall \
oracle.install.db.config.starterdb.characterSet=ZHS16GBK \
oracle.install.db.config.starterdb.memoryLimit=512 \
oracle.install.db.config.starterdb.password.ALL=password \
DECLINE_SECURITY_UPDATES=true

你可能感兴趣的:(linux,linux,centos,网络,oracle)