欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux centOS 7.2 命令行下 静默安装部署oracle11g数据库

程序员文章站 2024-01-27 14:13:22
...
Linux  centOS命令行下 安装部署oracle11g数据库

       小编今天给大家带来Linux系统,Linux命令行下部署 oracle安装部署数据库,因为在Linux命令行来部署,所以在安装部署oracle数据库前,我们得进行检查和设置,有以下步骤:

一、检查硬件需求


1. 查看系统物理内存,以下输出可以看出,有8G的内存,内存最低要求256M。

 命令:grep MemTotal /proc/meminfo

Linux centOS 7.2 命令行下 静默安装部署oracle11g数据库

2. 查看交换空间大小,以下输出可以看出,有5G的交换空间,交换空间的最优设置与你物理内存大小相关,详细说明请参考安装文档

命令:grep SwapTotal /proc/meminfo

Linux centOS 7.2 命令行下 静默安装部署oracle11g数据库

二、本来的交换空间大小为0,所以重新设置,有以下步骤:

关闭swap:

命令:sudo swapoff -a

设置swap的大小:

命令:sudd dd if=/dev/zero of=/swapfile bs=1M count=5120
bs指的是Block Size,就是每一块的大小。这里的例子是1M,意思就是count的数字,是以1M为单位的。
count是告诉程序,新的swapfile要多少个block。这里是1024,就是说,新的swap文件是5G大小。

注意:有些公司的权限需要重新输入密码,而我们就是这样,输入后会看见卡在那里没动,请耐心等待,机器不一样,等待时间也不一样。

把增大后的文件变为swap文件:

sudo mkswap /swapfile

重新打开swap:

命令:sudo swapon  /swapfile

让swap在启动的时候,自动生效。打开/etc/fstab文件,加上以下命令。然后保存。

命令:cd /etc
命令:sudo vi fstab

因为我的权限不是root权限,所以输入命令前必须加sudo才可以修改资料

附Linux编辑文件命令:

vi打开一个文件时,进入的是阅读模式,只有输入相关命令才会进入编辑模式:
i :在当前位置插入
a:在当前位置后追加
o:在当前位置的后面插入一行
I :在行头插入
A:在行尾追加
O:在当前位置的前面插入一行
'ESC'键从编辑模式转换到阅读模式
阅读模式(或叫命令模式)下:
:w 保存文件
:w filename 保存成filename文件
:q 退出
:q! 强行退出
:w! 强行写
:wq 保存退出
:x 同wq

在fstab文件加入这行命令:

/swapfile swap swap default 0 0

保存退出,再次查swap大小,就发现变成5g了

三、查当前发行版本检查并安装依赖包:

命令:cat /etc/redhat-release

Linux centOS 7.2 命令行下 静默安装部署oracle11g数据库

发现是7.2的,需要安装包如下:

binutils-2.23.52.0.1-12.el7.x86_64 
compat-libcap1-1.10-3.el7.x86_64 
gcc-4.8.2-3.el7.x86_64 
gcc-c++-4.8.2-3.el7.x86_64 
glibc-2.17-36.el7.i686 
glibc-2.17-36.el7.x86_64 
glibc-devel-2.17-36.el7.i686 
glibc-devel-2.17-36.el7.x86_64 
ksh
libaio-0.3.109-9.el7.i686 
libaio-0.3.109-9.el7.x86_64 
libaio-devel-0.3.109-9.el7.i686 
libaio-devel-0.3.109-9.el7.x86_64 
libgcc-4.8.2-3.el7.i686 
libgcc-4.8.2-3.el7.x86_64 
libstdc++-4.8.2-3.el7.i686 
libstdc++-4.8.2-3.el7.x86_64 
libstdc++-devel-4.8.2-3.el7.i686 
libstdc++-devel-4.8.2-3.el7.x86_64 
libXi-1.7.2-1.el7.i686 
libXi-1.7.2-1.el7.x86_64 
libXtst-1.2.2-1.el7.i686 
libXtst-1.2.2-1.el7.x86_64 
make-3.82-19.el7.x86_64 

sysstat-10.1.5-1.el7.x86_64

我安装的版本是有安装包的,所以版本不一样

检查安装oracle11g所需要的安装包:

命令:rpm -q install binutils compat-libcap1  gcc gcc-c++ glibc glibc glibc-devel glibc-devel ksh libaio libaio libaio-devel libaio-devel libgcc libstdc++ libstdc++ libstdc++-devel libstdc++-devel libXi libXi libXtst libXtst sysstat

或:命令:rpm -q binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst  make sysstat  unixODBC unixODBC-devel

参考来至:https://www.cnblogs.com/zydev/p/5827207.html



单独检查:

命令:rpm -q 包名

单独安装: yum install 包名

注意:安装 elfutils-libelf-devel 时候,因为存在互相依存关系,需要2个同时安装(这个我也是参考别人的,我也没试过怎么 搞,所以我也直接用下面的几条安装命令,安装比较多的包,再安装剩下单独)。

多包安装:

命令:
sudo yum install binutils  compat-libcap1  gcc gcc-c++ glibc glibc glibc-devel glibc-devel ksh libaio libaio libaio-devel libaio-devel libgcc libstdc++ libstdc++ libstdc++-devel libstdc++-devel libXi libXi libXtst libXtst sysstat

或:

命令:rpm -q binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst  make sysstat  unixODBC unixODBC-devel

发现下图最后ksh没安装就可以使用单独安装命令,以上命令没有权限时加 sudo 或者登录root权限安装,因地而异。

Linux centOS 7.2 命令行下 静默安装部署oracle11g数据库

发现找不到ksh这个包,报以下错误:

Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile No package ksh available.

只好查百度了,找了很久有很多方法,我这边用的是下载的方法:

命令:wget http://mirror.centos.org/centos/7/os/x86_64/Packages/ksh-20120801-137.el7.x86_64.rpm

附上下载jar包地址的:

https://altlinux.pkgs.org/sisyphus/classic-x86_64/pdksh-5.2.14-alt5.x86_64.rpm.html

接着是安装这个包,进入这个有这个包的目录,wget命令默认下载的文件放在当前目录,附上Linux命令大全地址:

http://man.linuxde.net/wget

接着安装这个包:

 sudo yum install ksh-20120801-137.el7.x86_64.rpm    

四、安装完检查后,有这些包后接着是创建安装oracle和放解压包的文件夹:

命令:sudo mkdir -p /oracledata/data/oracle      //oracle数据库安装目录
命令:sudo mkdir -p /oracledata/data/oraInventory //oracle数据库配置文件目录
命令:sudo mkdir -p /oracledata/data/database     //oracle数据库软件包解压目录

检查文件夹是否创建,进入data目录:

命令:ls    //检查当前目录下的文件夹

Linux centOS 7.2 命令行下 静默安装部署oracle11g数据库

五、接着是创建oracle用户组和用户:

命令:sudo groupadd oraclesysdba  //创建用户组 oraclesysdba
命令:sudo groupadd oraclesysoinstall //创建用户组 oraclesysoinstall 
命令:sudo groupadd oraclesysoper  //创建用户组 oraclesysoper
命令:sudo useradd -g oraclesysdba -g oraclesysoinstall -g oraclesysoper -m oraclenewone //创建用户 oraclenewone并指定到
用户组oraclesysdba和oraclesysoinstall和oraclesysoper 
命令:sudo passwd oraclenewone  //设置用户oraclenewone 的登陆密码

已经存在用户指定到用户组:

gpasswd  -a  用户名  用户组名 

然后就有让你输入两次密码:

Linux centOS 7.2 命令行下 静默安装部署oracle11g数据库

附:创建用户组和用户命令来自:

https://www.cnblogs.com/clicli/p/5943788.html

查看创建的用户:

命令:id oraclenewone

Linux centOS 7.2 命令行下 静默安装部署oracle11g数据库

为啥要创建三个用户组呢?参考:http://www.oracle.com/technetwork/cn/articles/hunter-rac11gr2-iscsi-2-092412-zhs.html#13

a.oracle 清单组(一般为oinstall):
 OINSTALL 组的成员被视为 Oracle 软件的“所有者”,拥有对 Oracle *清单 (oraInventory) 的写入权限。在一个 Linux 系统上首次安装 Oracle 软件时,OUI 会创建 /etc/oraInst.loc 文件。该文件指定 Oracle 清单组的名称(默认为 oinstall)以及 Oracle *清单目录的路径。
b.数据库管理员(OSDBA,一般为 dba):
 OSDBA 组的成员可通过操作系统身份验证使用 SQL 以 SYSDBA 身份连接到一个 Oracle 实例。该组的成员可执行关键的数据库管理任务,如创建数据库、启动和关闭实例。该组的默认名称为dba。SYSDBA 系统权限甚至在数据库未打开时也允许访问数据库实例。对此权限的控制完全超出了数据库本身的范围。不要混淆 SYSDBA 系统权限与数据库角色 DBA。DBA 角色不包括 SYSDBA 或 SYSOPER 系统权限。
c.数据库操作员组(OSOPER,一般为 oper):
 OSOPER 组的成员可通过操作系统身份验证使用 SQL 以 SYSOPER 身份连接到一个 Oracle 实例。这个可选组的成员拥有一组有限的数据库管理权限,如管理和运行备份。该组的默认名称为oper。SYSOPER 系统权限甚至在数据库未打开时也允许访问数据库实例。对此权限的控制完全超出了数据库本身的范围。


六、设置目录所有者为oraclesysoinstall 用户组的oraclenewone 用户

进入到data的目录,敲以下命令

命令:sudo chown -R oraclenewone:oraclesysoinstall /oracledata/data/oracle 
命令:sudo chown -R oraclenewone:oraclesysoinstall /oracledata/data/oraInventory
命令:sudo chown -R oraclenewone:oraclesysoinstall /oracledata/data/database

七,修改内核参数,以便支持oracle

进入/etc/sysctl.conf:

命令:cd /etc
命令:sudo vi sysctl.conf
命令:o //从阅读模式进入修改模式,并在光标所在的位置插入

在/etc/sysctl.conf 文件中, 使用vim进行编辑,在最后增加上以下参数:

kernel.shmall = 2097152

kernel.shmmax = 2147483648

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

fs.file-max = 65536

net.ipv4.ip_local_port_range = 1024 65000

net.core.rmem_default=262144

net.core.rmem_max=262144

net.core.wmem_default=262144

net.core.wmem_max=262144

按esc回到阅读状态,输入命令:

命令: :wq //保存退出
命令: sudo /sbin/sysctl  -p  //使更改的内核生效

如图:

Linux centOS 7.2 命令行下 静默安装部署oracle11g数据库

八、修改用户的限制:

打开/etc/security/limits.conf:

命令:cd security
命令:sudo vi limits.conf
命令:o //从阅读模式进入修改模式,并在光标所在的位置插入
在limits.conf文件中, 使用vim进行编辑,在最后增加上以下参数:
oracle soft nproc 2047  
oracle hard nproc 16384  
oracle soft nofile 1024  
oracle hard nofile 65536  
oracle soft stack 10240

按esc回到阅读状态,输入命令:

命令: :wq //保存退出
接着在文件/etc/pam.d/login中修改,在最后添加以下内容:
session required /lib/security/pam_limits.so
session required pam_limits.so

一样的命令,我就不多说了

最后在etc/profile添加:

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

生效命令:

source /etc/profile

九、设置环境变量:

切记,一定要切换到oraclenewone用户(切换用户一定要是 su-)

命令:vi ~/.bash_profile

增加以下内容:

export ORACLE_BASE=/oracledata/data/oracle  //oracle数据库安装目录
export ORACLE_SID=dbsrv2

然后使之生效:

命令:source ~/.bash_profile

十、接着是解压安装包

命令:unzip 压缩文件 -c 指定目录
命令:unzip p13390677_112040_Linux-x86-64_1of7.zip  -d  /oracledata/data/oraInventory
命令:unzip p13390677_112040_Linux-x86-64_2of7.zip  -d  /oracledata/data/oraInventory

然后你会发现下列情况:

Linux centOS 7.2 命令行下 静默安装部署oracle11g数据库

其原因是找不到zip压缩文件

sudo yum install -y unzip zip

然后你就发现坑是永远填不完的,填完一个就会有另外一个坑出现,发现没有这两个安装包,你又得下载:

Linux centOS 7.2 命令行下 静默安装部署oracle11g数据库

接着下载这两个包:

命令:wget http://mirror.centos.org/centos/7/os/x86_64/Packages/zip-3.0-11.el7.x86_64.rpm  //zip
命令:wget http://downloads.naulinux.ru/pub/SLCE/7x/x86_64/CyrEd/RPMS//unzip-6.0-15.1.el7.x86_64.rpm //unzip 

安装这两个包:

命令:sudo yum install zip-3.0-11.el7.x86_64.rpm
命令:sudo yum install unzip-6.0-15.1.el7.x86_64.rpm
Linux centOS 7.2 命令行下 静默安装部署oracle11g数据库

看到Complete就完成了,然后切换到oraclenewone用户,cd进入解压目录,解压oracle安装包:

Linux centOS 7.2 命令行下 静默安装部署oracle11g数据库

十一、接着是关闭防火墙和selinux

为什么要关闭防火墙,是为了其他客户端能够访问到oracle,具体的我也不太懂了:

命令:systemctl status firewalld.service //查看防火墙状态
Linux centOS 7.2 命令行下 静默安装部署oracle11g数据库

发现已经防火墙已经关了,如果防火墙没关可以参考这篇文章:https://blog.csdn.net/xjmcsdn/article/details/52075181,这里我就不多说了

接着是关闭selinux,查看selinux状态:

命令:usr/sbin/sestatus -v
Linux centOS 7.2 命令行下 静默安装部署oracle11g数据库

已经是关闭状态,如果是enforcing ,输入以下命令:

命令:vi /etc/selinux/config

然后进行修改:

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled  //将SELINUX=enforcing 此处修改为SELINUX=disabled 
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

需重启系统生效

十二、修改响应文件模板

1、复制响应文件模板

命令:cd  /oracledata/data/database
命令:mkdir etc
命令:cp /oracledata/data/oraInventory/database/response/* /home/oraclenewone/etc
命令:ls etc

Linux centOS 7.2 命令行下 静默安装部署oracle11g数据库

2、设置响应文件权限

命令:sudo chmod 700 /home/oraclenewone/etc/*.rsp

十三、修改安装Oracle软件的响应文件/oracledata/data/database/etc/db_install.rsp

参考:https://www.cnblogs.com/zydev/p/5827207.html

Linux centOS 7.2 命令行下 静默安装部署oracle11g数据库

看到如图上,蓝色的字体已经注释了,白色的字体 就是我们要修改的地方,按照下面修改

命令:vi /home/oraclenewone/etc/db_install.rsp
oracle.install.option=INSTALL_DB_SWONLY     // 安装类型
ORACLE_HOSTNAME=docker        // 主机名称(hostname查询)
UNIX_GROUP_NAME=oraclesysoinstall // 安装组
INVENTORY_LOCATION=/home/oraclenewone/oraInventory   //INVENTORY*库存目录(不填就是默认值)
SELECTED_LANGUAGES=en,zh_CN,zh_TW // 选择语言
ORACLE_HOME=/oracledata/data/oracle/product/11.2.0.1     //oracle_home
ORACLE_BASE=/oracledata/data/oracle     //oracle_base
oracle.install.db.InstallEdition=EE     // oracle版本
oracle.install.db.isCustomInstall=false   //自定义安装,否,使用默认组件
oracle.install.db.DBA_GROUP= oraclesysdba/  / dba用户组
oracle.install.db.OPER_GROUP=oraclesysoper   // oper用户组
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE //数据库类型
oracle.install.db.config.starterdb.globalDBName=orcl //globalDBName
oracle.install.db.config.starterdb.SID=dbsrv2      //SID
oracle.install.db.config.starterdb.memoryLimit=81920 //自动管理内存的内存(M)
oracle.install.db.config.starterdb.password.ALL=oraclenew //设定所有数据库用户使用同一个密码
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false         //(手动写了false)
DECLINE_SECURITY_UPDATES=true   //设置安全更新(貌似是有bug,这个一定要选true,否则会无限提醒邮件地址有问题,终止安装。PS:不管地址对不对)



十四、开始安装

命令:sudo reboot //重启系统,保证所有配置完成

接着登录到oraclenewone用户,进入解压后的data目录

命令: cd /oracledata/data/oraInventory/database
命令:./runInstaller -silent -force -responseFile /home/oraclenewone/etc/db_install.rsp//运行安装

Linux centOS 7.2 命令行下 静默安装部署oracle11g数据库

说明以上信息说明安装成功,切换用户root或者其他用户可以用sudo的,我的就是用sudo的,根据提示输入两个脚本:

命令:sudo /home/oraclenewone/oraInventory/orainstRoot.sh
命令:sudo /oracledata/data/oracle/product/11.2.0.1/root.sh

Linux centOS 7.2 命令行下 静默安装部署oracle11g数据库

Linux centOS 7.2 命令行下 静默安装部署oracle11g数据库

说明可以了,接下来是增加或者修改环境变量:

命令:vi ~/.bash_profile
export ORACLE_BASE=/oracledata/data/oracle   //oracle数据库安装目录
export ORACLE_HOME=/oracledata/data/oracle/product/11.2.0.1   //oracle数据库路径
export ORACLE_SID=dbsrv2//oracle启动数据库实例名
export ROACLE_PID=ora11g
export PATH=$PATH:$ORACLE_HOME/bin   //添加系统环境变量
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib    //添加系统环境变量
export LANG=C      //防止安装过程出现乱码
export NLS_LANG= "AL32UTF8"  //设置Oracle客户端字符集,必须与Oracle安装时设置的字符集保持一致
export NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'

:wq保存退出,使其生效

命令:source ~/.bash_profile

十五、配置监听程序

命令:netca /silent /responsefile /home/oraclenewone/etc/netca.rsp

Linux centOS 7.2 命令行下 静默安装部署oracle11g数据库

出现上面信息就说明配置成功了

十六、启动监控程序

命令:lsnrctl start
Linux centOS 7.2 命令行下 静默安装部署oracle11g数据库

发现监听已经启动好了

十七、静默dbca建库

编辑应答文件:

命令: vi /home/oraclenewone/etc/dbca.rsp
RESPONSEFILE_VERSION = "11.2.0"
OPERATION_TYPE = "createDatabase"
GDBNAME = "dbsrv2"
SID = "dbsrv2"
TEMPLATENAME = "General_Purpose.dbc" 

建库:

命令:dbca -silent -responseFile /home/oraclenewone/etc/dbca.rsp
Linux centOS 7.2 命令行下 静默安装部署oracle11g数据库

查看输出日记:

/oracledata/data/oracle/cfgtoollogs/dbca/dbsrv2/dbsrv2.log
Linux centOS 7.2 命令行下 静默安装部署oracle11g数据库

 至此完成数据库实例的创建。

查看监听状态:

命令: lsnrctl status

Linux centOS 7.2 命令行下 静默安装部署oracle11g数据库

输入命令:

命令: sqlplus / as sysdba //连接数据库
Linux centOS 7.2 命令行下 静默安装部署oracle11g数据库

输入sql命令:

命令:startup //启动数据库

Linux centOS 7.2 命令行下 静默安装部署oracle11g数据库

已经启动实例

附:

命令:quit // 或 exit  退出sqlpuls

删除实例:

命令:dbca -silent -deleteDatabase -sourcedb dbsrv2