Deepin Server静默安装Oracle 11.2.0.4

最近整理博客,很多内容虽然已经很过时了,但是能让我想起当年做运维工作时候的日子,还是重新整理下格式发出来吧。

Deepin Server静默安装Oracle 11.2.0.4

1. 安装依赖

需要安装的依赖包(版本号只能大于规定的版本,不能小于)

binutils-2.23.52.0.1-12.el7.x86_64 
compat-libcap1-1.10-3.el7.x86_64 
compat-libstdc++-33-3.2.3-71.el7.i686
compat-libstdc++-33-3.2.3-71.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
unixODBC-2.3.1-6.el7.i686
unixODBC-2.3.1-6.el7.x86_64
unixODBC-devel-2.3.1-6.el7.i686
unixODBC-devel-2.3.1-6.el7.x86_64

安装命令:

yum -y install 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

安装完成后,检查依赖是否安装成功:

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 | grep "not installed"

2. 安装oracle

2.1. 修改内核参数

vim /etc/sysctl.conf

修改内容如下:

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

然后运行以下命令使配置生效:

sysctl -p

2.2. 修改用户限制文件

运行以下命令修改用户限制文件

vim /etc/security/limits.conf

修改内容如下:

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

2.3. 修改login文件

运行以下命令修改login文件

vim /etc/pam.d/login

修改内容如下:

session required /lib64/security/pam_limits.so

session required pam_limits.so

2.4. 创建用户及组

创建用户及组

groupadd oinstall 
groupadd dba
useradd -g oinstall -G dba -d /data oracle
passwd oracle

依次创建以下目录

创建安装目录

mkdir -p /data/app/oracle/product/11.2.0/dbhome_1

数据文件存放目录

mkdir -p /data/app/oracle/oradata

数据恢复目录

mkdir -p /data/app/oracle/recovery_area

数据库创建及使用过程中的日志目录

mkdir -p /data/app/oracle/oraInventory

修改安装目录权限

chown -R oracle:oinstall /data/app/oracle
chmod 775 /data/app/oracle

2.5. 修改bash文件

使用oracle用户修改bash文件

su – oracle
vim .bash_profile

修改内容如下:

export ORACLE_BASE=/data/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export PATH=$PATH:$ORACLE_HOME/bin
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/usr/lib
export ORACLE_SID=orcl
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

执行以下命令让修改生效。

source .bash_profile

2.6. 导入oracle安装包

使用工具或命令将oracle安装包上传到/data文件夹下,可上传后解压,也可以解压后上传。

安装包中有三个配置文件作用如下:

db_install.rsp 安装应答配置文件
dbca.rsp 创建数据库应答
netca.rsp 建立监听、本地服务名等网络设置应答

后续会用到,我们继续安装:

2.7. 修改db_install文件安装数据库软件

执行以下命令修改db_install文件

vim /data/database/response/db_install.rsp

修改内容如下:

oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=localhost
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/data/app/oracle/oraInventory
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOME=/data/app/oracle/product/11.2.0/dbhome_1
ORACLE_BASE=/data/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=oinstall
oracle.install.db.config.starterdb.characterSet=AL32UTF8
oracle.install.db.config.starterdb.storageType=FILE_SYSTEM_STORAGE
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=/data/app/oracle/oradata
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=/data/app/oracle/recovery_area
DECLINE_SECURITY_UPDATES=true //一定要设为true

2.8. 安装数据库软件

使用oracle用户进行登录,并执行安装语句安装数据库软件:

su – oracle
cd /data/database
./runInstaller -silent -responseFile /data/database/response/db_install.rsp

如果提示-bash: ./runInstaller: Permission denied,证明我们当前的oracle账户要运行的程序没有对应的权限,执行:

su - root
chmod 777 /data/database/runInstaller
chmod 777 /data/database/install/.oui
chmod 777 /data/database/install/unzip

再次执行安装脚本,如果报错[INS-30131],则证明oracle在tmp生成的临时文件没有执行权限,检测脚本无法执行,那么我们执行:

chmod 755 /tmp/CVU_*_oracle/ -R

再次执行安装脚本。

注意:

  1. 安装过程中,如果提示[WARNING]不必理会,此时安装程序仍在进行,如果出现[FATAL],则安装程序已经停止了。

  2. 打开另一个终端,执行命令可以实时跟踪查看安装日志,了解安装的进度。

    tail -f /data/app/oracle/oraInventory/logs/installActions* 
    

当出现以 root 用户的身份执行以下脚本:

/data/app/oracle/oraInventory/orainstRoot.sh
/data/app/oracle/product/11.2.0/dbhome_1/root.sh

当出现Successfully Setup Software.说明已安装成功,则需要按提示操作,操作完返回Enter成功

2.9. 配置监听

监听配置文件不需要修改,直接运行下面的命令:

netca /silent /responsefile /data/database/response/netca.rsp

注:

  1. 成功运行后,/data/app/oracle/product/11.2.0/dbhome_1/network/admin目录下生成sqlnet.ora和listener.ora两个文件。

  2. 完成后通过下面的命令可以查看监听状态

netstat -tlnp
lsnrctl status查看监听状态
lsnrctl start开启监听
lsnrctl stop关闭监听
  1. 如果防火墙是开启状态,且没有开放1521端口,那么会导致其他机器无法访问1521端口,监听器无法正常工作,如果遇到此情况,切换到root用户下执行下列语句,执行完成后请使用其他主机访问本服务器,验证1521端口是否可用:

开启防火墙

service iptables status

查看已经开放的端口:

firewall-cmd --list-ports

开放1521端口:

firewall-cmd --zone=public --add-port=1521/tcp --permanent 

重新启动防火墙:

firewall-cmd --reload 

2.10. 修改数据库静默安装应答文件

修改dbca文件,切换到root用户下:

vim /data/database/response/dbca.rsp

修改内容如下:

OPERATION_TYPE = "createDatabase"
GDBNAME = "orcl"         //全局数据库的名字=SID+主机域名
SID = "orcl"            //对应的实例名字
TEMPLATENAME = "General_Purpose.dbc"      //建库用的模板文件
SYSPASSWORD = "Okw123"
SYSTEMPASSWORD = "Okw123"
DATAFILEDESTINATION = /data/app/oracle/oradata      //数据文件存放目录
RECOVERYAREADESTINATION=/data/app/oracle/recovery_area    //恢复数据存放目录
CHARACTERSET = "AL32UTF8"       //字符集,重要!!!
TOTALMEMORY = "5120"       //oracle内存5120MB

2.11. 静默安装数据库实例

dbca -silent -responseFile /data/database/response/dbca.rsp

执行上述语句之后,终端窗口会显示安装百分比,安装好之后,可运行以下语句验证安装后的oracle及实例是否可用:

sqlplus / as sysdba
select name from v$database;

3. 设置开机启动

数据库及实例安装好后,我们需要设置开机自启动

3.1. 修改dbstart和dbshut

vim /data/app/oracle/product/11.2.0/dbhome_1/bin/dbstart
vim /data/app/oracle/product/11.2.0/dbhome_1/bin/dbshut

将ORACLE_HOME_LISTNER=$1修改为ORACLE_HOME_LISTNER=$ORACLE_HOME,修改后保存退出,可以手动在oracle用户下执行dbstart和dbshut验证这两个命令是否可以正常使用,能正常使用这两条语句是开机自启的前提。

3.2. 修改文件,开机启动实例

vim /etc/oratab

修改内容如下:

orcl:/data/app/oracle/product/11.2.0/dbhome_1:Y

把lsnrctl start和dbstart添加到rc.local文件中

su – root
vim /etc/rc.d/rc.local

添加内容如下:

//启动监听和数据库

su - oracle -lc "/data/app/oracle/product/11.2.0/dbhome_1/bin/lsnrctl start" 
su - oracle -lc "/data/app/oracle/product/11.2.0/dbhome_1/bin/dbstart" 

注意:CentOs7中/etc/rc.d/rc.local不会开机执行,需添加执行权限。

ll /etc/rc.d/rc.local  //查看文件权限
chmod +x /etc/rc.d/rc.local  //为文件赋予运行权限

重启查看监听、数据库是否运行正常,远程主机能否通过数据库连接工具连接数据库,如果重启后查看监听器,报如下内容,说明监听器没有匹配的实例。

The listener supports no services

The command completed successfully

解决方式如下:

vim /data/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora

添加如下内容:

SID_LIST_LISTENER =

(SID_LIST =

      (SID_DESC =

         (GLOBAL_DBNAME = orcl)

         (SID_NAME = orcl)

      )

)

4. Oracle卸载

Oracle本身带有deinstall功能,执行下列语句

cd /data/u01/app/oracle/product/11.2.0.4/db_1/deinstall
//记得替换成oracle实际安装的目录
./deinstall

//卸载过程应该是自动的,包括扫描到的实例名、监听器名以及安装路径等,没问题就回车或y,直到最后显示”Oracle Universal Installer cleanup was successful.”,程序执行完成,需要我们根据提示手动执行命令,我的提示如下:

Run 'rm -rf /etc/oraInst.loc' as root on node(s) 'localhost' at the end of the session.
Run 'rm -rf /opt/ORCLfmap' as root on node(s) 'localhost' at the end of the session.
Run 'rm -rf /etc/oratab' as root on node(s) 'localhost' at the end of the session.

切换到root账号下根据提示的要求执行命令即可。