Oracle数据库静默安装

2018/05/01 Oracle 阅读次数:

采用静默安装oracle数据库,不用安装桌面,方便很多

首先修改hosts

vi /etc/hosts

img

关闭selinux ,编辑 /etc/selinux/config文件,设置SELINUX= enforcing 为SELINUX=disabled

[root@localhost ~]# vi /etc/selinux/config

img
修改后,如下图:
img

关闭防火墙

查看防火墙状态:systemctl status firewalld

停止防火墙:systemctl stop firewalld

关闭自启动防火墙服务:systemctl disable firewalld

防火墙运行状态,如下图:
img

防火墙关闭后,转台如下图:
img

安装oracle11g依赖包

yum -y install gcc make binutils gcc-c++ compat-libstdc++-33 elfutils-libelf-devel elfutils-libelf-devel-static elfutils-libelf-devel ksh libaio libaio-devel numactl-devel sysstat unixODBC unixODBC-devel pcre-devel

检查依赖包

rpm -q binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc-2.5 glibc-common glibc-devel glibc-headers ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel

添加oracle组和oracle用户

[root@localhost ~]# groupadd oinstall
[root@localhost ~]# groupadd dba
[root@localhost ~]# useradd -m -g oinstall -G dba oracle
[root@localhost ~]# id oracle
uid=1000(oracle) gid=1000(oinstall) 组=1000(oinstall),1001(dba)
[root@localhost ~]# passwd oracle
更改用户 oracle 的密码 。
新的 密码:
无效的密码: 密码包含用户名在某些地方
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

修改内核参数:编辑 /etc/sysctl.conf

[root@localhost ~]# vi /etc/sysctl.conf

fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmall = 2097152
kernel.shmmax = 536870912 
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

img

运行 sysctl -p 生效

[root@localhost ~]# sysctl -p
fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmall = 2097152
kernel.shmmax = 536870912
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
[root@localhost ~]# 

img

修改用户的限制文件,编辑 /etc/security/limits.conf

[root@localhost ~]# vi /etc/security/limits.conf
oracle soft nproc 2047 
oracle hard nproc 16384 
oracle soft nofile 1024 
oracle hard nofile 65536 
oracle soft stack 10240 

img

修改/etc/pam.d/login文件,添加:

[root@localhost ~]# vi /etc/pam.d/login
session  required   /lib64/security/pam_limits.so
session  required   pam_limits.so

img

修改/etc/profile文件

[root@localhost ~]# vi /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

img

让环境变量立即生效

[root@localhost ~]# source /etc/profile

创建安装目录

[root@localhost /]# mkdir -p /data/oracle
[root@localhost /]# mkdir -p /data/oraInventory
[root@localhost /]# mkdir -p /data/database
[root@localhost /]# chown -R oracle:oinstall /data/oracle
[root@localhost /]# chown -R oracle:oinstall /data/oraInventory
[root@localhost /]# chown -R oracle:oinstall /data/database

创建oraInst.loc文件

[root@localhost /]# vi /etc/oraInst.loc
添加如下内容
inventory_loc=/data/oraInventory
inst_group=oinstall
[root@localhost /]# chown oracle:oinstall /etc/oraInst.loc
[root@localhost /]# chmod 664 /etc/oraInst.loc

img

切换到oracle用户,设置oracle用户环境变量

[oracle@localhost ~]$ vi .bash_profile 
添加如下内容,路径根据实际情况配置
ORACLE_BASE=/data/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0
ORACLE_SID=orcl
export ORACLE_OWNER=oracle
PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH
环境变量生效
[oracle@localhost ~]$ source .bash_profile 

img

解压两个压缩包到指定文件夹/data/database

unzip linux.x64_11gR2_database_1of2.zip -d /data/database/
unzip linux.x64_11gR2_database_2of2.zip -d /data/database/

复制响应文件模板

[oracle@localhost ~]$ mkdir etc
[oracle@localhost ~]$ cp /data/database/database/response/* /home/oracle/etc/

设置响应文件权限

需要切换至root用户下
[oracle@localhost ~]$ su
密码:
[root@localhost oracle]# chmod 700 /home/oracle/etc/*.rsp

静默安装Oracle软件

需要切换到oracle用户下
su oralce
修改安装Oracle软件的响应文件/home/oracle/etc/db_install.rsp
[oracle@localhost etc]$ vim db_install.rsp 
修改如下对应内容
oracle.install.option=INSTALL_DB_SWONLY                        //29 行 安装类型 
ORACLE_HOSTNAME=localhost                                     //37 行 主机名称 (可以通过hostname获取主机名)
UNIX_GROUP_NAME=oinstall                                      //42 行 安装组 
INVENTORY_LOCATION=/data/oraInventory                         //47 行 INVENTORY目录 
SELECTED_LANGUAGES=en,zh_CN,zh_TW                             //78 行 选择语言 
ORACLE_HOME=/data01/oracle/app/oracle/product/11.2.0/db_1    //83 行 oracle_home 
ORACLE_BASE=/data/oracle                                    //88 行 oracle_base 
oracle.install.db.InstallEdition=EE                         //99 行 oracle版本 
oracle.install.db.isCustomInstall=true                      //108行 自定义安装 
oracle.install.db.DBA_GROUP=dba                             //142行 dba用户组 
oracle.install.db.OPER_GROUP=oinstall                       //147行 oper用户组 
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE    //160行 数据库类型 
oracle.install.db.config.starterdb.globalDBName=orcl      //165行 globalDBName 
oracle.install.db.config.starterdb.SID=orcl               //170行 SID 
oracle.install.db.config.starterdb.memoryLimit=512        //192行 自动管理内存的最小内存(M) 
oracle.install.db.config.starterdb.password.ALL=oracle    //233行 设定所有数据库用户使用同一个密码 
DECLINE_SECURITY_UPDATES=true                             //385行 设置安全更新 

img

开始静默安装

[oracle@localhost etc]$ cd /data/database/database
[oracle@localhost database]$ ls
doc  install  response  rpm  runInstaller  sshsetup  stage  welcome.html
[oracle@localhost database]$ ./runInstaller -silent -responseFile /home/oracle/etc/db_install.rsp

img

查看安装日志

[oracle@localhost database]$ tail -f /data/oraInventory/logs/installActions2018-07-14_01-13-37PM.log

查看安装日志错误信息

[oracle@localhost logs]$ grep -rn 'Error' installActions2018-07-14_06-46-07PM.log 
下面这些信息都可以忽略安装
804:INFO: Error Message:PRVF-7543 : 操作系统内核参数 "semmni" 在节点 "localhost" 上没有适当的值 [应为 = "128"; 找到 = "0"]。
933:INFO: Error Message:PRVF-7532 : 节点 "localhost" 上缺少程序包 "libaio-0.3.105 (i386)"
954:INFO: Error Message:PRVF-7532 : 节点 "localhost" 上缺少程序包 "glibc-2.3.4-2.41 (i686)"
975:INFO: Error Message:PRVF-7532 : 节点 "localhost" 上缺少程序包 "compat-libstdc++-33-3.2.3 (i386)"
1050:INFO: Error Message:PRVF-7532 : 节点 "localhost" 上缺少程序包 "libaio-devel-0.3.105 (i386)"
1071:INFO: Error Message:PRVF-7532 : 节点 "localhost" 上缺少程序包 "libgcc-3.4.6 (i386)"
1092:INFO: Error Message:PRVF-7532 : 节点 "localhost" 上缺少程序包 "libstdc++-3.4.6 (i386)"
1131:INFO: Error Message:PRVF-7532 : 节点 "localhost" 上缺少程序包 "unixODBC-2.2.11 (i386)"
1152:INFO: Error Message:PRVF-7532 : 节点 "localhost" 上缺少程序包 "unixODBC-devel-2.2.11 (i386)"

红色圈出来的是可以忽略的
img

Error pdksh-5.2.14安装

[root@localhost data]# rpm -ivh pdksh-5.2.14-37.el5_8.1.x86_64.rpm 
警告:pdksh-5.2.14-37.el5_8.1.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID e8562897: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:pdksh-5.2.14-37.el5_8.1          ################################# [100%]
[root@localhost data]# su oracle

安装pdksh的时候有冲突

img 换一个高版本安装 32 位的,问题解决
pdksh-5.2.14-37.el5_8.1.x86_64.rpm
img

忽略错误安装命令

[oracle@localhost database]$ ./runInstaller -silent -ignorePrereq -responseFile /home/oracle/etc/db_install.rsp

安装成功标识

img

从新打开一个终端,切换至root用户

[root@localhost db_1]# /data/oracle/product/11.2.0/db_1/root.sh

img

配置oracle环境变量

[oracle@localhost ~]$ vi .bash_profile 

// 添加如下内容,会和之前添加的环境变量重复冲突,没事保留一个就可以
export ORACLE_BASE=/data/oracle
export ORACLE_SID=orcl
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

//使环境变量立即生效
[oracle@localhost ~]$ source .bash_profile 

静默配置监听程序

[oracle@localhost bin]$ /data/oracle/product/11.2.0/db_1/bin/netca /silent /responsefile /home/oracle/etc/netca.rsp

静默配置监听程序error处理

img

切换至root用户下:su root,修改network,hosts

[root@oracleDb ~]# vi /etc/sysconfig/network
NETWORKING=yes
#修改主机名,原主机名为localhost
HOSTNAME=oracleDb
##网关
GATEWAY=172.16.76.2
[root@oracleDb ~]# vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 localhost.localdomain localhost oracleDb
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.76.129 oracleDb

img

修改后需要重启服务器,才能生效

重启后,切换至oracle用户下
[oracle@localhost bin]$ /data/oracle/product/11.2.0/db_1/bin/netca /silent /responsefile /home/oracle/etc/netca.rsp

成功标志,如下图:
img
会在/data/oracle/product/11.2.0/db_1/network/admin目录下生成listener.ora,sqlnet文件夹
img

静默安装数据库

修改仅安装数据库的响应文件/home/oracle/etc/dbca.rsp

[oracle@oracleDb etc]$ ls
dbca.rsp  db_install.rsp  netca.rsp
[oracle@oracleDb etc]$ vi dbca.rsp  
//修改下面内容
GDBNAME=”orcl.java-linux-test”  //78 行 全局数据库的名字=SID+主机域名 
SID=”orcl”                      //149行 SID 
CHARACTERSET=”AL32UTF8”         //415行 编码 
NATIONALCHARACTERSET=”UTF8”     //425行 编码 

进行静默安装数据库

[oracle@oracleDb ~]$ $ORACLE_HOME/bin/dbca -silent -responseFile /home/oracle/etc/dbca.rsp
提示输入sys,system用户口令:我统一oracle
如果想删除静默sid
[oracle@oracleDb ~]$ $ORACLE_HOME/bin/dbca -silent -deleteDatabase -sourceDB orcl

img

建立库后实例检查

[oracle@oracleDb ~]$ ps -ef | grep ora_ | grep -v grep | wc -l 
21
[oracle@oracleDb ~]$ ps -ef | grep ora_ | grep -v grep
oracle     2846      1  0 02:45 ?        00:00:00 ora_pmon_orcl
oracle     2848      1  0 02:45 ?        00:00:00 ora_vktm_orcl
oracle     2852      1  0 02:45 ?        00:00:00 ora_gen0_orcl
oracle     2854      1  0 02:45 ?        00:00:00 ora_diag_orcl
oracle     2856      1  0 02:45 ?        00:00:00 ora_dbrm_orcl
oracle     2858      1  0 02:45 ?        00:00:00 ora_psp0_orcl
oracle     2860      1  0 02:45 ?        00:00:00 ora_dia0_orcl
oracle     2862      1  0 02:45 ?        00:00:00 ora_mman_orcl
oracle     2864      1  0 02:45 ?        00:00:00 ora_dbw0_orcl
oracle     2866      1  0 02:45 ?        00:00:00 ora_lgwr_orcl
oracle     2868      1  0 02:45 ?        00:00:00 ora_ckpt_orcl
oracle     2870      1  0 02:45 ?        00:00:00 ora_smon_orcl
oracle     2872      1  0 02:45 ?        00:00:00 ora_reco_orcl
oracle     2874      1  0 02:45 ?        00:00:00 ora_mmon_orcl
oracle     2876      1  0 02:45 ?        00:00:00 ora_mmnl_orcl
oracle     2878      1  0 02:45 ?        00:00:00 ora_d000_orcl
oracle     2880      1  0 02:45 ?        00:00:00 ora_s000_orcl
oracle     2969      1  0 02:45 ?        00:00:00 ora_qmnc_orcl
oracle     2984      1  0 02:45 ?        00:00:00 ora_cjq0_orcl
oracle     2986      1  0 02:45 ?        00:00:00 ora_q000_orcl
oracle     2988      1  0 02:45 ?        00:00:00 ora_q001_orcl
[oracle@oracleDb ~]$ ^C

img

建库后监听检查

[oracle@oracleDb ~]$ lsnrctl status
如果出现以下错误,我的没有出现下面错误
lsnrctl: error while loading shared libraries: /u01/app/oracle/product/11.2.0/db_1/lib/libclntsh.so.11.1: cannot restore segment prot after reloc: Permission denied

解决办法:在root用户下执行以下命令
su - root 
setenforce 0

正常结果如下图:
img

修改oracle启动配置

[oracle@oracleDb ~]$ vi /etc/oratab 

修改前,把N改成Y
orcl:/data/oracle/product/11.2.0/db_1:N
修改后
orcl:/data/oracle/product/11.2.0/db_1:Y

这样就可以通过dbstart 启动此实例,监听器。

img

数据库操作

oracle监听服务的启动/关闭:

启动:lsnrctl start

停止:lsnrctl stop

状态:lsnrctl status

// 用一下命令启动和停止,会输出log日志
[oracle@oracleDb ~]$ dbstart $ORACLE_HOME
Processing Database instance "orcl": log file /data/oracle/product/11.2.0/db_1/startup.log
[oracle@oracleDb ~]$ dbshut $ORACLE_HOME
Processing Database instance "orcl": log file /data/oracle/product/11.2.0/db_1/shutdown.log
[oracle@oracleDb ~]$ lsnrctl status 

在启动监听的时候,如果出现:监听程序不支持服务,如下图:
img
处理方法:

[oracle@oracleDb admin]$ cat listener.ora 
// 安装完成只有一个LISTENER,需要配置SID_LIST_LISTENER
# listener.ora Network Configuration File: /data/oracle/product/11.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = /data

// 增加内容
[oracle@oracleDb admin]$ vi listener.ora

SID_LIST_LISTENER =
(SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /data/oracle/product/11.2.0/db_1)
      (PROGRAM = extproc)
    )

    (SID_DESC =
      (GLOBAL DBNAME = ORCL)
      (ORACLE_HOME = /data/oracle/product/11.2.0/db_1) 
      (SID_NAME = ORCL)
    )

  )

img

监听启动成功,如下图:
img

chmod +x /etc/rc.d/rc.local

连接oracle


[oracle@oracleDb data]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on 星期日 7月 15 03:50:50 2018

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

已连接到空闲例程。
//出现以下错误,是因为没有启动就没法关闭所以报错找不到,不用管,使用启动命令
SQL> shutdown immediate
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux-x86_64 Error: 2: No such file or directory

// 启动实例
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area 3273641984 bytes
Fixed Size                  2217792 bytes
Variable Size            1795164352 bytes
Database Buffers         1459617792 bytes
Redo Buffers               16642048 bytes
数据库装载完毕。
SQL> 

检查命令,以下命令执行无误即可

SQL> alter database archivelog; 
SQL>  alter database flashback on; 
SQL> alter database open;
SQL> execute utl_recomp.recomp_serial();

PL/SQL 过程已成功完成。

SQL> alter system archive log current;

系统已更改。

默认安装的数据库用户检查

SQL> set lines 256 pages 500
SQL> select username from dba_users;

USERNAME
------------------------------
SYS
SYSTEM
OUTLN
MGMT_VIEW
FLOWS_FILES
MDSYS
ORDSYS
EXFSYS
DBSNMP
WMSYS
APPQOSSYS
APEX_030200
OWBSYS_AUDIT
ORDDATA
CTXSYS
ANONYMOUS
SYSMAN
XDB
ORDPLUGINS
OWBSYS
SI_INFORMTN_SCHEMA
OLAPSYS
SCOTT
ORACLE_OCM
XS$NULL
MDDATA
DIP
APEX_PUBLIC_USER
SPATIAL_CSW_ADMIN_USR
SPATIAL_WFS_ADMIN_USR

已选择30行。

配置开机自启程序

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

如果重启后,发现命令不能用,需要查看环境变量,尤其是PATH,可能被覆盖了,导致路径变了

[oracle@oracleDb ~]$ vi /etc/rc.local 
su oracle -lc "/data/oracle/product/11.2.0/db_1/bin/lsnrctl start"
su oracle -lc "/data/oracle/product/11.2.0/db_1/bin/dbstart"

img

关闭数据库


正常关闭 shutdown

立即关闭 shutdown immediate

关闭事务 shutdown transactional

强行关闭 shutdown abort

删除oracle

删除oracle的话执行下面的语句,如果要要重装的话,直接执行静默安装的命令

rm -rf /data/oracle/*
rm -rf /usr/local/bin/dbhome
rm -rf /usr/local/bin/oraenv
rm -rf /usr/local/bin/coraenv
rm -rf /etc/oratab

远程连接数据库

将监听文件中的host,改成服务器名
[oracle@oracleDb admin]$ vi listener.ora 
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = oracleDb)(PORT = 1521))
    )
  )
  
[oracle@oracleDb admin]$ vi tnsnames.ora
ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = oracleDb)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl.oracleDb)
    )
  )

img

img

Search

    Table of Contents