Bootstrap

静默安装oracle11g

1 oracle安装环境说明

 1.1 环境说明

  1.1.1 操作系统版本

      宿主机: window7 企业版
      vmware版本: VMware® Workstation 14 Pro
      虚拟机镜像: centos7

  1.1.2 数据库版本

      oracle 11.2.0.1.0 企业版

  1.1.3 安装文件清单

      linux.x64_11gR2_database_1of2.zip
      linux.x64_11gR2_database_2of2.zip

  1.1.4 文件安装路径说明

目录名称所属用户所属用户组文件描述
/u01/app/oracleoracleoinstallORACLE_BASE
/u01/app/oracle/oraInventoryoracleoinstallORACLE_BASE
$ORACLE_BASE/admin/ORCL/adumporacleoinstalloracle相关日志的存放位置
$ORACLE_BASE/oradata/orcloracleoinstall数据文件,控制文件、在线重做日志文件的存放目录
$ORACLE_BASE/flash_recovery_area/db_1oracleoinstall闪回日志的存放目录

 1.2 硬件要求

  1.2.1 内存

    oracle安装,内存至少为1G。建议的值为:大于2G

    ◆ 查看系统内存的大小

	grep MemTotal /proc/meminfo

交换空间(swap)的大小取决于物理内存的大小,参照如下:

物理内存大小交换内存的大小
1G~2G1.5倍的物理内存
2G~16G和物理内存相等
>16G16G

    ◆ 查看交换内存的大小

	[root@bogon ~]# grep SwapTotal /proc/meminfo

  1.2.2 磁盘空间

    ◆ /tmp目录空间至少大于1G

    ◆ oracle安装目录建议大于10G

 1.3 软件要求

    ◆ 操作系统

https://docs.oracle.com/cd/E11882_01/install.112/e47689/pre_install.htm#LADBI1106

    ◆ 内核

https://docs.oracle.com/cd/E11882_01/install.112/e47689/pre_install.htm#LADBI1110

    ◆ 软件依赖包

https://docs.oracle.com/cd/E11882_01/install.112/e47689/pre_install.htm#LADBI1111

2 静默方式安装oracle

 2.1 安装前准备

  2.1.1 oracle软件依赖包的安装

    ◆ 校验安装包是否安装,根据输出的结果,判断是否需要安装

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

  2.1.2 创建操作系统所需的用户和用户组

    ◆ 创建oinstall用户组

		/usr/sbin/groupadd oinstall

    ◆ 创建dba用户组

		/usr/sbin/groupadd -g 502 dba

    ◆ 创建oracle用户

		/usr/sbin/useradd -u 502 -g oinstall -G dba oracle

  2.1.3 修改操作系统的内核参数

    ◆ 修改/etc/sysctl.conf,如果值存在,修改,不存在,则添加

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

    ◆ 使立即生效

sbin/sysctl -p

  2.1.4 修改用户资源限制

    ◆ 推荐的配置如下:

      修改/etc/security/limits.conf在末尾加上如下配置:

oracle   soft   nofile    65536
oracle   hard   nofile    65536
oracle   soft   nproc    16384
oracle   hard   nproc    16384
oracle   soft   stack    10240
oracle   hard   stack    32768
oracle   hard   memlock    134217728
oracle   soft   memlock    134217728

  2.1.5 使用oracle提供的oracle-rdbms-server来简化数据库的安装

    使用oracle-rdbms-server-11gR2-preinstall来简化oracle的安装
这个包是oracle官方提供给安装oracle用户的,用来简化oracle软件的安装。执行这个步骤,可以省略上述带有删除线的步骤。

    ◆ 根据操作系统的版本,选择合适的yum源:

        注:根据linux的版本,选择合适的yum源。笔者在搭建环境的过程中,操作系统的版本为:Red Hat Enterprise Linux Server release 6.8,一不小心,yum源选择了linux7的yum源,安装之后,安装失败了,又选择安装了linux6的yum源,导致系统的bash被删除掉了,导致系统不能启动。选择yum源的过程,http://yum.oracle.com/getting-started.html

	wget http://yum.oracle.com/public-yum-ol7.repo -O /etc/yum.repos.d/public-yum-ol7.repo

    ◆ 选择合适的GPG KEY,进行验证安装:

	wget https://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6 -O /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle

    ◆ 安装oracle-rdbms-server-11gR2-preinstall:

	yum install oracle-rdbms-server-11gR2-preinstall
	rpm -q binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc-2.5 glibc-common glibc-devel glibc-headers pdksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel 
	yum install elfutils-libelf-devel 
	yum install glibc-2.5 
	yum install  pdksh 
	yum install unixODBC 
	yum install unixODBC-devel

    ◆ 设置oracle的用户的密码:

	passwd oracle

    ◆ 创建oracle安装目录:

	mkdir -p /u01/app/oracle
	mkdir /u01/app/oracle/oraInventory
	chown -R oracle:oinstall /u01/app/oracle
	chmod -R 755 /u01/app/oracle/

    ◆ 设置环境变量:

	vi /home/oracle/.bash_profile

ORACLE_BASE=/u01/app/oracle
export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_HOME
ORACLE_SID=orcl 
export ORACLE_SID
PATH=$PATH:$ORACLE_HOME/bin 

	source  /home/oracle/.bash_profile

    ◆ 设置操作系统的hostname:

	vi /etc/hosts
realip hostname.domain.com hostname
192.168.233.133 oracledb.localdomain.com oracledb
	hostname oracledb

    ◆ 重启服务器:

	reboot

 2.2 安装oracle实例

  2.2.1 解压缩oracle的安装文件

	unzip linux.x64_11gR2_database_1of2.zip -d /upload/
	unzip linux.x64_11gR2_database_2of2.zip -d /upload/
	chown -R  oracle:oinstall /upload/database/

  2.2.2 准备应答文件

    oracle解压缩之后,在database/response中存放着一些应答文件的模板,可以使用这些应答模板进行修改,来执行非交互式的数据库软件和数据库的安装。

    ◆ dbca.rsp:创建数据库的应答文件模板

    ◆ db_install.rsp:安装数据库软件的应答文件模板:

    ◆ netca.rsp:配置oracle中的网络使用的应答文件的模板

	cd /u01/app/oracle
	
	mkdir responseFiles
	
	cp /upload/database/response/* responseFiles/
	
	cp responseFiles/db_install.rsp responseFiles/enterprise.rsp
	
	chown -R oracle:oinstall responseFiles
	
	chmod -R 755 responseFiles/

enterprise.rsp中改动的内容如下:

oracle.install.option=INSTALL_DB_SWONLY // 安装类型
ORACLE_HOSTNAME=oracledb // 主机名称(hostname查询)
UNIX_GROUP_NAME=oinstall // 安装组
INVENTORY_LOCATION=/u01/app/oracle/oraInventory
SELECTED_LANGUAGES=en,zh_CN,zh_TW // 选择语言
ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE // oracle版本
oracle.install.db.isCustomInstall=false //自定义安装,否,使用默认组件
oracle.install.db.DBA_GROUP=dba // dba用户组
oracle.install.db.OPER_GROUP=oinstall // oper用户组
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE //数据库类型
oracle.install.db.config.starterdb.globalDBName=orcl //globalDBName
oracle.install.db.config.starterdb.SID=orcl //SID
oracle.install.db.config.starterdb.memoryLimit=512//自动管理内存的内存(M)
oracle.install.db.config.starterdb.password.ALL=oracle //设定所有数据库用户使用同一个密码
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false(手动写了false)
DECLINE_SECURITY_UPDATES=true(如果不设置成true,安装失败,会提示输入邮件地址)

  2.2.3 执行命令完成安装

	 cd database/
	 su - oracle
	 cd /upload/database/
	 ./runInstaller -silent -force -ignoreSysPrereqs -ignorePrereq -responseFile /u01/app/oracle/responseFiles/enterprise.rsp
	
	
	-silent:z指定安装的类型
	
	-ignoreSysPrereqs:忽略系统先决条件的检查
	
	-ignorePrereq:忽略系统运行条件的检查
	
	-ignorePrereq:执行应答文件的位置

    当日志出现如下时,以root用户登录,执行以下脚本:

	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
	
	
	
	/u01/app/oracle/oraInventory/orainstRoot.sh
	
	/u01/app/oracle/product/11.2.0/dbhome_1/root.sh 
	要执行配置脚本, 请执行以下操作:
	
	     1. 打开一个终端窗口
	
	     2. 以 "root" 身份登录
	
	     3. 运行脚本
	
	     4. 返回此窗口并按 "Enter" 键继续




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

  2.2.4 验证安装结果

	sqlplus / as sysdba

	出现如下时,说明oracle实例安装完成
	
	SQL*Plus: Release 11.2.0.1.0 Production on Sat Mar 17 12:16:29 2018
	
	Copyright (c) 1982, 2009, Oracle. All rights reserved.
	
	Connected to an idle instance.

 2.3 创建数据库

  2.3.1 创建数据文件相关目录

	mkdir -p /u01/app/oracle/admin/ORCL/adump #oracle相关日志的存放位置
	mkdir -p /u01/app/oracle/oradata/orcl   #oracle数据文件的存放位置
	mkdir -p /u01/app/oracle/flash_recovery_area/db_1 #oracle闪存恢复的工作空间

  2.3.2 准备参数文件

vi /u01/app/oracle/product/11.2.0/dbhome_1/dbs/initorcl.ora


ORCL.__db_cache_size=486539264
ORCL.__java_pool_size=16777216
ORCL.__large_pool_size=16777216
ORCL.__oracle_base='/u01/app/oracle'
ORCL.__pga_aggregate_target=620756992
ORCL.__sga_target=973078528
ORCL.__shared_io_pool_size=0
ORCL.__shared_pool_size=402653184
ORCL.__streams_pool_size=33554432
*.aq_tm_processes=0
*.audit_file_dest='/u01/app/oracle/admin/ORCL/adump'
*.audit_trail='db'
*.compatible='11.2.0.1.0'
*.control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/oradata/orcl/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='db1'
*.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=4070572032
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=ORCLXDB)'
*.job_queue_processes=0
*.memory_target=400M
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'

  2.3.3 准备和执行create database语句

    ◆ 启动数据库到mount状态
	SQL> startup nomount pfile=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/initorcl.ora;
	出现如下信息,则说明数据库切换到nomount状态成功
	
	ORACLE instance started.
	
	Total System Global Area  417546240 bytes
	Fixed Size          2213936 bytes
	Variable Size         268437456 bytes
	Database Buffers      142606336 bytes
	Redo Buffers            4288512 bytes
	SQL> 

    ◆ 执行语句

CREATE DATABASE db1
   USER SYS IDENTIFIED BY oracle
   USER SYSTEM IDENTIFIED BY oracle
   MAXLOGMEMBERS 5
   MAXLOGFILES 5
   MAXLOGHISTORY 1
   MAXDATAFILES 100
   CHARACTER SET AL32UTF8
   NATIONAL CHARACTER SET AL16UTF16
   EXTENT MANAGEMENT LOCAL
   LOGFILE 
       GROUP 1 ('/u01/app/oracle/oradata/orcl/redo01.log') SIZE 100M,
           GROUP 2 ('/u01/app/oracle/oradata/orcl/redo02.log') SIZE 100M,
           GROUP 3 ('/u01/app/oracle/oradata/orcl/redo03.log') SIZE 100M
   DATAFILE 
      '/u01/app/oracle/oradata/orcl/system01.dbf' SIZE 325M REUSE
   SYSAUX DATAFILE
      '/u01/app/oracle/oradata/orcl/sysaux01.dbf' SIZE 325M REUSE
   DEFAULT TABLESPACE users
      DATAFILE '/u01/app/oracle/oradata/orcl/users01.dbf'
      SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
   DEFAULT TEMPORARY TABLESPACE tempts1
      TEMPFILE '/u01/app/oracle/oradata/orcl/temp01.dbf'
      SIZE 20M REUSE
   UNDO TABLESPACE UNDOTBS1
      DATAFILE '/u01/app/oracle/oradata/orcl/undotbs01.dbf'
      SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;

    ◆ 执行create database语句出错, 删除相关目录,重新执行create语句

		rm -rf /u01/app/oracle/admin/orcl/adump/*
		rm -rf /u01/app/oracle/oradata/orcl/*

  2.3.4 运行sql脚本生成数据字典

	SQL> @?/rdbms/admin/catalog.sql
	SQL> @?/rdbms/admin/catproc.sql
	SQL> @?/sqlplus/admin/pupbld.sql#[以system用户运行]
	#==================create statpack=================
	SQL> @?/rdbms/admin/spcreate;   
	#==========下面三个脚本是重建重建WMSYS用户的WMSYS.WM_CONCAT===========
	SQL> @?/rdbms/admin/owmctab.plb;
	SQL> @?/rdbms/admin/owmaggrs.plb;
	SQL> @?/rdbms/admin/owmaggrb.plb;

注:如果不执行 spcreate脚本,生成ASH时,可能会报如下错误:
Ora-20200: No Ash Samples Exist For Database/Instance

 2.4 安装完成后的配置

  2.4.1 配置服务端监听

    在$ORACLE_HOME/network/admin/下,新建listener.ora 文件,内容如下:
LISTENER=
  (DESCRIPTION=
    (ADDRESS_LIST=
      (ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521))
      (ADDRESS=(PROTOCOL=ipc)(KEY=extproc))))
SID_LIST_LISTENER=
  (SID_LIST=
    (SID_DESC=
      (GLOBAL_DBNAME=orcl)
      (ORACLE_HOME=/soft/app/oracle/product/11.2.0/dbhome_1)
      (SID_NAME=orcl))
    (SID_DESC=
      (SID_NAME=plsextproc)
      (ORACLE_HOME=/soft/app/oracle/product/11.2.0/dbhome_1)
      (PROGRAM=extproc)))

  2.4.2 配置客户端tnsnames.ora

    在$ORACLE_HOME/network/admin/下,新建tnsnames.ora 文件,内容如下:
orcl =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.233.133)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORCL)
    )
  )
;