小编今天给大家带来Linux系统,Linux命令行下部署 oracle安装部署数据库,因为在Linux命令行来部署,所以在安装部署oracle数据库前,我们得进行检查和设置,有以下步骤:
一、检查硬件需求
1. 查看系统物理内存,以下输出可以看出,有8G的内存,内存最低要求256M。
命令:grep MemTotal /proc/meminfo
2. 查看交换空间大小,以下输出可以看出,有5G的交换空间,交换空间的最优设置与你物理内存大小相关,详细说明请参考安装文档
命令:grep SwapTotal /proc/meminfo
二、本来的交换空间大小为0,所以重新设置,有以下步骤:
关闭swap:
命令:sudo swapoff -a
设置swap的大小:
命令:sudd dd if=/dev/zero of=/swapfile bs=1M count=5120
bs指的是Block Size,就是每一块的大小。这里的例子是1M,意思就是count的数字,是以1M为单位的。
注意:有些公司的权限需要重新输入密码,而我们就是这样,输入后会看见卡在那里没动,请耐心等待,机器不一样,等待时间也不一样。
把增大后的文件变为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
发现是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权限安装,因地而异。
发现找不到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 //检查当前目录下的文件夹
五、接着是创建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 用户名 用户组名
然后就有让你输入两次密码:
附:创建用户组和用户命令来自:
https://www.cnblogs.com/clicli/p/5943788.html
查看创建的用户:
命令:id oraclenewone
为啥要创建三个用户组呢?参考: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 //使更改的内核生效
如图:
八、修改用户的限制:
打开/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
然后你会发现下列情况:
其原因是找不到zip压缩文件
sudo yum install -y unzip zip
然后你就发现坑是永远填不完的,填完一个就会有另外一个坑出现,发现没有这两个安装包,你又得下载:
接着下载这两个包:
命令: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
看到Complete就完成了,然后切换到oraclenewone用户,cd进入解压目录,解压oracle安装包:
十一、接着是关闭防火墙和selinux
为什么要关闭防火墙,是为了其他客户端能够访问到oracle,具体的我也不太懂了:
命令:systemctl status firewalld.service //查看防火墙状态
发现已经防火墙已经关了,如果防火墙没关可以参考这篇文章:https://blog.csdn.net/xjmcsdn/article/details/52075181,这里我就不多说了
接着是关闭selinux,查看selinux状态:
命令:usr/sbin/sestatus -v
已经是关闭状态,如果是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
2、设置响应文件权限
命令:sudo chmod 700 /home/oraclenewone/etc/*.rsp
十三、修改安装Oracle软件的响应文件/oracledata/data/database/etc/db_install.rsp
参考:https://www.cnblogs.com/zydev/p/5827207.html
看到如图上,蓝色的字体已经注释了,白色的字体 就是我们要修改的地方,按照下面修改
命令: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//运行安装
说明以上信息说明安装成功,切换用户root或者其他用户可以用sudo的,我的就是用sudo的,根据提示输入两个脚本:
命令:sudo /home/oraclenewone/oraInventory/orainstRoot.sh
命令:sudo /oracledata/data/oracle/product/11.2.0.1/root.sh
说明可以了,接下来是增加或者修改环境变量:
命令: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
出现上面信息就说明配置成功了
十六、启动监控程序
命令:lsnrctl start
发现监听已经启动好了
十七、静默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
查看输出日记:
/oracledata/data/oracle/cfgtoollogs/dbca/dbsrv2/dbsrv2.log
至此完成数据库实例的创建。
查看监听状态:
命令: lsnrctl status
输入命令:
命令: sqlplus / as sysdba //连接数据库
输入sql命令:
命令:startup //启动数据库
已经启动实例
附:
命令:quit // 或 exit 退出sqlpuls
删除实例:
命令:dbca -silent -deleteDatabase -sourcedb dbsrv2