Centos7静默安装Oracle11g

本文描述没有图形化界面,直接采用命令行方式进行静默安装Oracle11g的过程。

前面的基础准备,可以参考图形化的安装操作:https://blog.csdn.net/sunny05296/article/details/56840775

别忘了系统内核参数优化。

本文从创建用户和组开始介绍。

创建用户和组
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba -m oracle
passwd oracle

创建Oracle数据库的安装目录(for静默安装)
mkdir -p /opt/oracle
mkdir -p /opt/oraInventory
mkdir -p /opt/database
mkdir -p /opt/oracle/product/11.2.0
mkdir -p /opt/oracle/oradata
mkdir -p /opt/oracle/flash_recovery_area

chown -R oracle:oinstall /opt/oracle
chown -R oracle:oinstall /opt/oracle/oradata
chown -R oracle:oinstall /opt/oraInventory
chown -R oracle:oinstall /opt/database

chmod -R 775 /opt/oracle

su - oracle
vim .bash_profile  添加如下内容:
# 注意:
# 1. ORACLE_SID 必须与创建的数据库实例名称一致,否则数据库启动后无法访问
# 2. ORACLE_HOME 根据实际情况填写,安装完毕以后,再检查一下,如果有误,需要调整,确保正确

ORACLE_BASE=/opt/oracle
#ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
ORACLE_HOME=$ORACLE_BASE/product/11.2.0
ORACLE_SID=orcl
PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH

执行生效:
source .bash_profile 
检查是否生效
echo $ORACLE_HOME

解压
cd /opt
unzip linux.x64_11gR2_database_1of2.zip -d /opt/database
unzip linux.x64_11gR2_database_2of2.zip -d /opt/database

用root账号创建/etc/oraInst.loc文件,否则安装时会报错:
SEVERE: [FATAL] [INS-32038] The operating system group specified for central inventory (oraInventory) ownership is invalid.

vi /etc/oraInst.loc 
inventory_loc=/opt/oraInventory
inst_group=oinstall


安装未安装的package

yum install -y binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers glibc-static kernel-headers ksh libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel libstdc++-static make numactl-devel sysstat unixODBC unixODBC-devel compat-libcap1 libXi libXtst 

 

rpm -qa        binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers glibc-static kernel-headers ksh libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel libstdc++-static make numactl-devel sysstat unixODBC unixODBC-devel compat-libcap1 libXi libXtst 

 

rpm -qa        binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers glibc-static kernel-headers ksh libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel libstdc++-static make numactl-devel sysstat unixODBC unixODBC-devel compat-libcap1 libXi libXtst |wc -l 

总计29个依赖包
其中:compat-libcap1 libXi libXtst 是安装Oracle Grid and RAC必须的依赖,但如果只安装Oracle Database则不依赖,也可以不安装
有些依赖包如果CentOS7 yum里面没有,可以去 Red Hat Enterprise Linux的yum下载,或者晚上直接wget下载后 rpm -ivh xxx.rpm 安装

注意:
1.Linux不同版本、x86-32、x86-64不同,需要安装Oracle的软件不同,所需要的依赖包也不同
2.官方的Oracle Grid安装说明:https://docs.oracle.com/cd/E11882_01/install.112/e41961/toc.htm
  中有关于必须的依赖包的说明:https://docs.oracle.com/cd/E11882_01/install.112/e41961/prelinux.htm#CWLIN225
  Table 2-9 Linux x86-64 Oracle Grid Infrastructure and Oracle RAC Package Requirements
  Table 2-10 Linux x86-64 Oracle Database Features Package Requirements
3.pdksh只有在Linux 4上需要,Linux 5/6/7都已经被ksh取代
 

编辑静默安装响应文件
su oracle
cp -R /opt/database/database/response/  /home/oracle/

[oracle@localhost ~]$ ls -l /home/oracle/response/
total 76
-rw-r--r-- 1 oracle dba 44969 May 18 16:16 dbca.rsp
-rw-r--r-- 1 oracle dba 22665 May 18 16:20 db_install.rsp
-rwxr-xr-x 1 oracle dba  5740 May 18 16:16 netca.rsp
[oracle@localhost ~]$ 
可见在response目录下有三个模板文件。
其中dbca.rsp是用来创建数据库的。
db_install.rsp是用来安装Oracle软件的。
netca.rsp是用来创建监听器的。
当然也可在db_install.rsp中直接创建数据库。

修改安装Oracle软件的模板文件:
cd /home/oracle/response/
vim db_install.rsp

db_install.rsp需要设置的选项如下:
oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=localhost
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/opt/oraInventory
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOME=/opt/oracle/product/11.2.0
ORACLE_BASE=/opt/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=dba
DECLINE_SECURITY_UPDATES=true

注意:
如果服务器设置了hostname,则ORACLE_HOSTNAME需要设置一致。需要进行下面hostname相关的修改。

如果没有设置hostname,默认localhost,则可以跳过下面步骤,直接进入静默安装操作。

注意如果后期修改hostname,也需要参考下面的修改(“myhost”根据你自己设置的实际hostname进行替换):

1. vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
16.54.136.81 myhost

2. vi /etc/sysconfig/network 添加如下
NETWORKING=yes
HOSTNAME=myhost

3. vi $ORACLE_HOME/network/admin/listener.ora 
修改HOST由HOST=localhost改为HOST=myhost
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = /opt/oracle

4. $ORACLE_HOME/network/admin/tnsnames.ora 文件可改,也可不修改
ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

 

静默安装
根据响应文件静默安装Oracle11g
su oracle
cd /opt/database/database
./runInstaller -silent -responseFile /home/oracle/response/db_install.rsp -ignorePrereq 

如果执行以上命令出错,会提示有参数格式,按照提示参数格式修改修改即可,一般是由于word中的字体、符号格式复制到客户端命令行后不一致引起,修改即可

开始Oracle在后台静默安装。安装过程中,如果提示[WARNING]不必理会,此时安装程序仍在后台进行,如果出现[FATAL],则安装程序已经停止了。

可以在以下位置找到本次安装会话的日志:  /tmp/OraInstall2018-05-18_04-35-03PM

可以切换终端执行top命令查看后台进程一直是在安装的,du -sh /opt 目录也在不断增大
=====>>>>>>>>
当出现以下提示时,代表安装成功:
[oracle@localhost database]$ The following configuration scripts need to be executed as the "root" user. 
 #!/bin/sh 
 #Root scripts to run

/opt/oracle/product/11.2.0/root.sh
To execute the configuration scripts:
         1. Open a terminal window 
         2. Log in as "root" 
         3. Run the scripts 
         4. Return to this window and hit "Enter" key to continue 


Successfully Setup Software.

按照要求打开终端,以root身份,执行脚本
exit 退出oracle,回到root的shell界面执行:
sh /opt/oracle/product/11.2.0/root.sh
执行结果如下:
[root@localhost opt]# sh /opt/oracle/product/11.2.0/root.sh
Check /opt/oracle/product/11.2.0/install/root_localhost.localdomain_2018-05-18_16-42-48.log for the output of root script
[root@localhost opt]# 
[root@localhost opt]# cat /opt/oracle/product/11.2.0/install/root_localhost.localdomain_2018-05-18_16-42-48.log
Running Oracle 11g root.sh script...

The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /opt/oracle/product/11.2.0

Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.
Finished product-specific root actions.
[root@localhost opt]# 

以静默方式配置监听
重新使用oracle用户登录
su - oracle
cd /home/oracle/response/
netca /silent /responseFile /home/oracle/response/netca.rsp 
注意此处,必须使用/silent /responseFile格式,而不是-silent -responseFile,因为是静默安装

执行结果:
[oracle@localhost ~]$ netca /silent /responseFile /opt/database/database/response/netca.rsp 

Parsing command line arguments:
    Parameter "silent" = true
    Parameter "responsefile" = /opt/database/database/response/netca.rsp
Done parsing command line arguments.
Oracle Net Services Configuration:
Profile configuration complete.
Oracle Net Listener Startup:
    Running Listener Control: 
      /opt/oracle/product/11.2.0/bin/lsnrctl start LISTENER
    Listener Control complete.
    Listener started successfully.
Listener configuration complete.
Oracle Net Services configuration successful. The exit code is 0
[oracle@localhost ~]$ 

查看端口是否开启:
netstat -an | grep 1521

[oracle@localhost ~]$ netstat -an | grep 1521
tcp6       0      0 :::1521                 :::*                    LISTEN     
unix  2      [ ACC ]     STREAM     LISTENING     21798    /var/tmp/.oracle/sEXTPROC1521
[oracle@localhost ~]$ 

如果netstat目录没有安装,需要以root身份安装:yum install -y net-tools

如果执行 netca 失败,提示netca command not found
检查环境变量设置是否正确:
netca /silent /responseFile /opt/database/database/response/netca.rsp 
vim /home/oracle/.bash_profile
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0  #设置是否正确

修改以后,source /home/oracle/.bash_profile

如果遇到错误:/opt/oracle/product/11.2.0/lib/libnjni11.so: libclntsh.so.11.1: cannot open shared object file: No such file or directory
解决办法:
1. cp /opt/oracle/product/11.2.0/inventory/Scripts/ext/lib/libclntsh.so.11.1  /opt/oracle/product/11.2.0/lib/
再重新执行netca
2.或者执行:$ORACLE_HOME/bin/relink all
3.vim /home/oracle/.bash_profile
  EXPORT LD_LIBRARY_PATH = $ORACLE_HOME/lib:/usr/lib:/usr/local/lib;
  source /home/oracle/.bash_profile
4.ls -l /opt/oracle/product/11.2.0/lib/libclntsh*
  缺少软连接
  cp /opt/oracle/product/11.2.0/inventory/Scripts/ext/lib/libclntsh.so.11.1  /opt/oracle/product/11.2.0/lib/
  ln -s /opt/oracle/product/11.2.0/lib/libclntsh.so.11.1  /opt/oracle/product/11.2.0/lib/libclntsh.so
  ln -s /opt/oracle/product/11.2.0/lib/libclntsh.so  /opt/oracle/product/11.2.0/lib/libclntsh.so.10.1
  
ll /opt/oracle/product/11.2.0/network/admin/
成功运行后,在 /opt/oracle/product/11.2.0/network/admin/ 中生成listener.ora和sqlnet.ora
通过netstat命令可以查看1521端口正在监听。
Yum安装netstat软件,软件包是在net-tools中。

# yum install net-tools
# netstat -tnulp | grep 1521

查看监听状态:
lsnrctl status

[oracle@localhost ~]$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 19-MAY-2018 18:45:03
Copyright (c) 1991, 2009, Oracle.  All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                19-MAY-2018 18:25:40
Uptime                    0 days 0 hr. 19 min. 23 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /opt/oracle/product/11.2.0/network/admin/listener.ora
Listener Log File         /opt/oracle/diag/tnslsnr/localhost/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))
The listener supports no services
The command completed successfully
[oracle@localhost ~]$ 

[oracle@localhost ~]$ 

 

接下来建库
以静默方式建立新库,同时也建立一个对应的实例。
vim /home/oracle/response/dbca.rsp

设置以下参数:
GDBNAME= "orcl"
SID ="orcl"
SYSPASSWORD= "1q2w3e"
SYSTEMPASSWORD= "1q2w3e"
SYSMANPASSWORD= "1q2w3e"
DBSNMPPASSWORD= "1q2w3e"
#DATAFILEDESTINATION=$ORACLE_BASE/oradata  #该参数配置注释掉,不修改,使用默认的,否则建库会报错。
RECOVERYAREADESTINATION=$ORACLE_BASE/flash_recovery_area
CHARACTERSET= "AL32UTF8"
TOTALMEMORY= "6553"
#其中TOTALMEMORY ="6553" 为6553MB,物理内存8G*80%

进行静默建库:
$ dbca -silent -responseFile /home/oracle/response/dbca.rsp
如果出错1:
sh:/bin/ksh:No such file or directory
先安装ksh:yum install ksh

如果提示查看日志,内容:The file path $ORACLE_BASE/oradata/orcl/system01.dbf is invalid. Please check the permissions.
原因:$ORACLE_BASE/oradata/orcl 路径不存在。
创建数据库实例时默认的log路径datafile/oradata是根路径未知的路径,可将路径修改为{ORACLE_BASE}/oradata,sysaux01.dbf的路径为{ORACLE_BASE}/oradata/sysaux01.dbf,异常消除!

如果出错2:提示你查看日志信息,日志信息显示db文件 invalid:
cat /opt/oracle/cfgtoollogs/dbca/orcl.log
The file path $ORACLE_BASE/oradata/orcl/system01.dbf is invalid. Please check the permissions.
[oracle@localhost response]$ 
尝试了多种解决办法,最终通过取消配置,保持默认。用#号注释掉。
#DATAFILEDESTINATION = $ORACLE_BASE/oradata

如果我显式的配置成DATAFILEDESTINATION = $ORACLE_BASE/oradata,创建库的时候,就会出错。默认则不会出错。原因没有找到。注销即可。

建库后进行实例进程检查:
ps -ef | grep ora_ | grep -v grep

登录查看实例状态:
sqlplus / as sysdba

select status from v$instance

接下来需要创用户、表空间和授权远程访问等操作。参考图形化安装的创建用户、表空间、授权等操作即可:

https://blog.csdn.net/sunny05296/article/details/56840775

 

你可能感兴趣的:(数据库)