时至而生 – 唯变长存

CentOS7系统静默安装和配置Oracle 11gR2

2019-04-28
44次浏览

环境说明

系统安装准备

1、更新系统yum源和安装Oracle依赖包:

[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost ~]# mv CentOS-Base.repo CentOS-Base.repo.bak
[root@localhost ~]# wget http://mirrors.aliyun.com/repo/Centos-7.repo -O /etc/yum.repos.d/CentOS-Base.repo
[root@localhost ~]# yum clean all
[root@localhost ~]# yum makecache

# 安装依赖包
yum install -y \
binutils \
compat-libstdc++-33 \
elfutils-libelf \
elfutils-libelf-devel \
expat \
gcc \
gcc-c++ \
glibc \
glibc-common \
glibc-devel \
glibc-headers \
libaio \
libaio-devel \
libgcc \
libstdc++ \
libstdc++-devel \
make \
pdksh \
sysstat \
unixODBC \
unixODBC-devel

2、更改主机名

[root@localhost ~]# hostnamectl set-hostname oracle-db
[root@localhost ~]# vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 oracle-db
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6 oracle-db

3、创建oracle数据库安装目录并解压数据包

创建oracle数据库安装目录:

[root@oracle-db ~]# mkdir -p /data/ora
[root@oracle-db ~]# mkdir /data/ora/inventory
[root@oracle-db ~]# mkdir /data/ora/oracle

解压oracle数据库软件包:

[root@oracle-db ~]# unzip linux.x64_11gR2_database_1of2.zip -d /data
[root@oracle-db ~]# unzip linux.x64_11gR2_database_2of2.zip -d /data
[root@oracle-db ~]# chown -R oracle:oinstall /data/ora

4、修改os系统标识

[root@oracle-db ~]# vim /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
redhat-7

5、关闭防火墙和SELinux

[root@oracle-db ~]# systemctl disable firewalld.service
[root@oracle-db ~]# systemctl stop firewalld.service
[root@oracle-db ~]# sed -i 's/^SELINUX=.*$/SELINUX=disabled/g' /etc/selinux/config

6、修改内核参数

编辑/etc/sysctl.conf文件,追加:

net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.rp_filter = 1
fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmall = 2097152
kernel.shmmax = 2147483648
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生效。

7、对oracle用户设置限制,提高软件运行性能

编辑/etc/security/limits.conf,追加:

#use for oracle
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 10240

8、修改系统登陆配置文件

echo 'session    required     /lib64/security/pam_limits.so' >> /etc/pam.d/login
echo 'session    required     pam_limits.so' >> /etc/pam.d/login

编辑/etc/csh.login,追加:

if ( $USER == "oracle" ) then
    limit maxproc 16384
    limit descriptors 65536
    umask 022
endif

编辑/etc/profile,追加:

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

执行source /etc/profile生效。

9、配置oracle用户环境变量

编辑/home/oracle/.bash_profile,追加:

export ORACLE_BASE=/data/ora/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0
export ORACLE_SID=SKDB       # 和 dbca.rsp 配置文件里要一致
export LANG=en_US.UTF-8
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
export PATH=$ORACLE_HOME/bin:$PATH

执行source /home/oracle/.bash_profile生效。

以上操作完毕后,重启系统:init 6

安装Oracle

切换到Oracle用户su - oracle,编辑/data/ora/database/response/db_install.rsp文件:

# 标注响应文件版本,这个版本必须和要安装的数据库版本相同,安装检验无法通过,不能更改
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0

# 选择安装类型
# 1. INSTALL_DB_SWONLY        只装数据库软件
# 2. INSTALL_DB_AND_CONFIG    安装数据库软件并建库
# 3. UPGRADE_DB               升级数据库
oracle.install.option=INSTALL_DB_SWONLY

# 指定操作系统主机名,通过 hostname 命令获得
ORACLE_HOSTNAME=oracle-db

# 指定oracle inventory目录的所有者,通常会是 oinstall 或者 dba
UNIX_GROUP_NAME=oinstall

# 指定产品清单 oracle inventory 目录的路径
INVENTORY_LOCATION=/data/ora/oracle/inventory

# 指定数据库语言,可以选择多个 , 用逗号隔开。选择en, zh_CN(英文和简体中文)
SELECTED_LANGUAGES=en,zh_CN

# 设置 ORALCE_HOME 的路径
ORACLE_HOME=/data/ora/oracle/product/11.2.0

# 设置 ORALCE_BASE 的路径
ORACLE_BASE=/data/ora/oracle

# 选择Oracle安装数据库软件的版本(企业版,标准版,标准版1),不同的版本功能不同
oracle.install.db.InstallEdition=EE

# 是否自定义Oracle的组件,如果选择false,则会使用默认的组件,如果选择true否则需要自己在下面一条参数将要安装的组件一一列出。
# 安装相应版权后会安装所有的组件,后期如果缺乏某个组件,再次安装会非常的麻烦。
oracle.install.db.isCustomInstall=true

# 手工选择需要安装组件
oracle.install.db.customComponents=oracle.server:11.2.0.1.0,oracle.sysman.ccr:10.2.7.0.0,oracle.xdk:11.2.0.1.0,oracle.rdbms.oci:11.2.0.1.0,oracle.network:11.2.0.1.0,oracle.network.listener:11.2.0.1.0,oracle.rdbms:11.2.0.1.0,oracle.options:11.2.0.1.0,oracle.rdbms.partitioning:11.2.0.1.0,oracle.oraolap:11.2.0.1.0,oracle.rdbms.dm:11.2.0.1.0,oracle.rdbms.dv:11.2.0.1.0,orcle.rdbms.lbac:11.2.0.1.0,oracle.rdbms.rat:11.2.0.1.0

# 指定拥有 OSDBA、OSOPER 权限的用户组,通常会是 dba 组
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=dba

# 如果是RAC的安装,在这里指定所有的节点
oracle.install.db.CLUSTER_NODES=

# 选择数据库的用途,一般用途/事物处理,数据仓库
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE

# 指定GlobalName
oracle.install.db.config.starterdb.globalDBName=orcl

# 指定SID,和 ORACLE_SID 一致
oracle.install.db.config.starterdb.SID=SKDB

# 选择字符集。不正确的字符集会给数据显示和存储带来麻烦无数。
# 通常中文选择的有 ZHS16GBK 简体中文库,建议选择 unicode 的 AL32UTF8 国际字符集
oracle.install.db.config.starterdb.characterSet=AL32UTF8

# 11g的新特性自动内存管理,也就是 SGA_TARGET 和 PAG_AGGREGATE_TARGET 都不用设置了,Oracle会自动调配两部分大小。
oracle.install.db.config.starterdb.memoryOption=true

# 指定Oracle自动管理内存的大小,最小是256MB
oracle.install.db.config.starterdb.memoryLimit=1024

# 是否载入模板示例
oracle.install.db.config.starterdb.installExampleSchemas=false

# 是否启用安全设置
oracle.install.db.config.starterdb.enableSecuritySettings=true

# 设置数据库用户密码,设定所有数据库用户使用同一个密码,其它数据库用户就不用单独设置了。
oracle.install.db.config.starterdb.password.ALL=oracle
oracle.install.db.config.starterdb.password.SYS=
oracle.install.db.config.starterdb.password.SYSTEM=
oracle.install.db.config.starterdb.password.SYSMAN=
oracle.install.db.config.starterdb.password.DBSNMP=

# 数据库本地管理工具 DB_CONTROL,远程集中管理工具 GRID_CONTROL
oracle.install.db.config.starterdb.control=DB_CONTROL

# GRID_CONTROL 需要设定 grid control 的远程路径 URL
oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL=

# 是否启用Email通知, 启用后会将告警等信息发送到指定邮箱
oracle.install.db.config.starterdb.dbcontrol.enableEmailNotification=false

# 设置通知EMAIL地址
oracle.install.db.config.starterdb.dbcontrol.emailAddress=

# 设置EMAIL邮件服务器
oracle.install.db.config.starterdb.dbcontrol.SMTPServer=

# 设置自动备份,和OUI里的自动备份一样
oracle.install.db.config.starterdb.automatedBackup.enable=false

# 自动备份会启动一个job,指定启动JOB的系统用户ID
oracle.install.db.config.starterdb.automatedBackup.osuid=

# 自动备份会开启一个job,需要指定OSUser的密码
oracle.install.db.config.starterdb.automatedBackup.ospwd=

# 自动备份,要求指定使用的文件系统存放数据库文件还是ASM
oracle.install.db.config.starterdb.storageType=

# 使用文件系统存放数据库文件才需要指定数据文件、控制文件、Redo log的存放目录
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=

# 使用文件系统存放数据库文件才需要指定备份恢复目录
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=

# 使用ASM存放数据库文件才需要指定存放的磁盘组
oracle.install.db.config.asm.diskGroup=

# 使用ASM存放数据库文件才需要指定ASM实例密码
oracle.install.db.config.asm.ASMSNMPPassword=

# 指定metalink账户用户名
MYORACLESUPPORT_USERNAME=

# 指定metalink账户密码
MYORACLESUPPORT_PASSWORD=

# 用户是否可以设置metalink密码
SECURITY_UPDATES_VIA_MYORACLESUPPORT=

# 表示不需要设置安全更新,Response File中必须指定为true,否则会提示错误
DECLINE_SECURITY_UPDATES=true

# 代理服务器名
PROXY_HOST=

# 代理服务器端口
PROXY_PORT=

# 代理服务器用户名
PROXY_USER=

# 代理服务器密码
PROXY_PWD=

执行安装:

[oracle@oracle-db ~]$ /data/ora/database/runInstaller -silent -ignorePrereq -responseFile /data/ora/database/response/db_install.rsp

查看安装过程:

[oracle@oracle-db ~]$ tailf /data/ora/oracle/inventory/logs/installActions2019-04-26_02-51-59AM.log
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 

Successfully Setup Software.

提示以上信息表示安装完成!

切换到 root 用户,执行:

[root@oracle-db ~]# /data/ora/oracle/inventory/orainstRoot.sh    # 这个文件不一定会存在,目前不知原因
[root@oracle-db ~]# /data/ora/oracle/product/11.2.0/root.sh

安装网络监听器

切换到 Oracle 用户后操作:

[root@oracle-db ~]#  su - oracle
[oracle@oracle-db ~]$ /data/ora/oracle/product/11.2.0/bin/netca /silent /responsefile /data/ora/database/response/netca.rsp
Parsing command line arguments:
     Parameter "silent" = true
     Parameter "responsefile" = /data/ora/database/response/netca.rsp
 Done parsing command line arguments.
 Oracle Net Services Configuration:
 Profile configuration complete.
 Oracle Net Listener Startup:
     Running Listener Control: 
       /data/ora/oracle/product/11.2.0/bin/lsnrctl start LISTENER
     Listener Control complete.
     Listener started successfully.
 Listener configuration complete.
 Oracle Net Services configuration successful. The exit code is 0

启动监听器查看状态:

[oracle@oracle-db ~]$ lsnrctl start
[oracle@oracle-db ~]$ lsnrctl status

以静默方式建立新库

[oracle@oracle-db ~]$ cat /data/ora/database/response/dbca.rsp | grep -v "^#" | grep -v "^$" 
[GENERAL]

# 数据库版本,不可更改
RESPONSEFILE_VERSION = "11.2.0"

# 操作类型:创建数据库
# 可选还有创建模版从数据库,创建克隆模版,删除数据库,配置数据库,添加实例(只限RAC),删除实例(只限RAC)
OPERATION_TYPE = "createDatabase"

# 当操作类型选择 createDatabase 会使用下面的选项
[CREATEDATABASE]

# 数据库的全局数据库名称
GDBNAME = "orcl"

# 数据库的系统标识符
SID = "SKDB"

# 模板文件的名字
TEMPLATENAME = "General_Purpose.dbc"

# 系统超级用户密码
SYSPASSWORD = "password123"
SYSTEMPASSWORD = "password123"

# 数据库的字符集
CHARACTERSET = "AL32UTF8"

# 国家字符集
NATIONALCHARACTERSET= "UTF8"

# Oracle占用物理内存的百分比
MEMORYPERCENTAGE = "40"

# 当操作类型是创建模版createTemplateFromDB的时候会启用这个选项
[createTemplateFromDB]

# 给源数据库创建模版
SOURCEDB = "myhost:1521:orcl"

# 使用的数据库角色是system
SYSDBAUSERNAME = "system"

# 新模版的名字
TEMPLATENAME = "My Copy TEMPLATE"

# 当操作类型是创建克隆模版createCloneTemplate会使用下面的选项
[createCloneTemplate]

# 源数据库的SID
SOURCEDB = "orcl"

# 新模版的名字
TEMPLATENAME = "My Clone TEMPLATE"

# 当操作类型是删除数据库DELETEDATABASE会启动下面的选项
[DELETEDATABASE]

# 源数据库的SID
SOURCEDB = "orcl"

# 生成脚本的选项
[generateScripts]

# 模版的名字
TEMPLATENAME = "New Database"

# 全局数据库的名字
GDBNAME = "orcl11.us.oracle.com"

# 当操作类型是配置数据库CONFIGUREDATABASE会启用下面的选项
[CONFIGUREDATABASE]
EMCONFIGURATION = "LOCAL"
SYSMANPASSWORD = "password123"
DBSNMPPASSWORD = "password123"

# 当操作类型选择的是添加实例ADDINSTANCE会启动下面的选项
[ADDINSTANCE]

# RAC数据库的唯一的名称
DB_UNIQUE_NAME = "orcl11g.us.oracle.com"

# 添加新实例的节点
NODELIST=

# 使用的角色是sys
SYSDBAUSERNAME = "sys"

# 当选择的操作类型是删除实例DELETEINSTANCE会启动下面选项
[DELETEINSTANCE]

# RAC数据库的唯一名字
DB_UNIQUE_NAME = "orcl11g.us.oracle.com"

# 要删除的RAC实例名
INSTANCENAME = "orcl11g"

# 使用的数据库角色
SYSDBAUSERNAME = "sys"

执行安装:

[oracle@oracle-db ~]$ /data/ora/oracle/product/11.2.0/bin/dbca -silent -responseFile /data/ora/database/response/dbca.rsp
sh: /bin/ksh: No such file or directory
sh: /bin/ksh: No such file or directory
Cleaning up failed steps
5% complete
Copying database files
7% complete
9% complete
16% complete
23% complete
30% complete
41% complete
Creating and starting Oracle instance
43% complete
48% complete
53% complete
58% complete
59% complete
62% complete
64% complete
Completing Database Creation
68% complete
71% complete
75% complete
85% complete
96% complete
100% complete
Look at the log file "/data/ora/oracle/cfgtoollogs/dbca/orcl/orcl3.log" for further details.

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

删除实例命令:

[oracle@oracle-db ~]$ /data/ora/oracle/product/11.2.0/bin/dbca -silent -deleteDatabase -sourcedb SKDB

修改 dbstart 文件:

sed -i 's/^ORACLE_HOME_LISTNER=.*$/ORACLE_HOME_LISTNER=$ORACLE_HOME/g' $ORACLE_HOME/bin/dbstart

编辑/etc/oratab文件,修改如下:

SKDB:/data/ora/oracle/product/11.2.0:Y

启动数据库:

[oracle@oracle-db ~]$ $ORACLE_HOME/bin/dbstart
Processing Database instance "SKDB": log file /data/ora/oracle/product/11.2.0/startup.log
[oracle@oracle-db ~]$ ps -ef | grep oracle
oracle    23199      1  0 03:08 ?        00:00:00 /data/ora/oracle/product/11.2.0/bin/tnslsnr LISTENER -inherit
root      24569  19670  0 03:59 pts/0    00:00:00 su - oracle
oracle    24570  24569  0 03:59 pts/0    00:00:00 -bash
oracle    25557      1  0 04:14 ?        00:00:00 ora_pmon_SKDB
oracle    25559      1  0 04:14 ?        00:00:00 ora_vktm_SKDB
oracle    25563      1  0 04:14 ?        00:00:00 ora_gen0_SKDB
oracle    25565      1  0 04:14 ?        00:00:00 ora_diag_SKDB
oracle    25567      1  0 04:14 ?        00:00:00 ora_dbrm_SKDB
oracle    25569      1  0 04:14 ?        00:00:00 ora_psp0_SKDB
oracle    25571      1  0 04:14 ?        00:00:00 ora_dia0_SKDB
oracle    25573      1  6 04:14 ?        00:00:00 ora_mman_SKDB
oracle    25575      1  0 04:14 ?        00:00:00 ora_dbw0_SKDB
oracle    25577      1  0 04:14 ?        00:00:00 ora_lgwr_SKDB
oracle    25579      1  0 04:14 ?        00:00:00 ora_ckpt_SKDB
oracle    25581      1  0 04:14 ?        00:00:00 ora_smon_SKDB
oracle    25583      1  0 04:14 ?        00:00:00 ora_reco_SKDB
oracle    25585      1  2 04:14 ?        00:00:00 ora_mmon_SKDB
oracle    25587      1  0 04:14 ?        00:00:00 ora_mmnl_SKDB
oracle    25589      1  0 04:14 ?        00:00:00 ora_d000_SKDB
oracle    25591      1  0 04:14 ?        00:00:00 ora_s000_SKDB
oracle    25678      1  0 04:14 ?        00:00:00 ora_p000_SKDB
oracle    25680      1  0 04:14 ?        00:00:00 ora_p001_SKDB
oracle    25682      1  0 04:14 ?        00:00:00 ora_p002_SKDB
oracle    25686      1  0 04:14 ?        00:00:00 ora_qmnc_SKDB
oracle    25764      1  1 04:14 ?        00:00:00 ora_cjq0_SKDB
oracle    25767  24570  0 04:14 pts/0    00:00:00 ps -ef
oracle    25768  24570  0 04:14 pts/0    00:00:00 grep --color=auto oracle

设置开机启动:

使用root用户权限在/etc/rc.d/rc.local文件中添加如下内容:

su - oracle -c "/data/ora/oracle/product/11.2.0/bin/lsnrctl start"
su - oracle -c "/data/ora/oracle/product/11.2.0/bin/dbstart start"

登录数据库:

[oracle@oracle-db ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Sat Apr 27 22:07:54 2019
Copyright (c) 1982, 2009, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options

新建用户:

[oracle@oracle-db ~]$ sqlplus / as sysdba
SQL> create user sk identified by pass123;
SQL> alter user sk account unlock; 
SQL> grant create session to sk;
SQL> GRANT CREATE USER, DROP USER, ALTER USER, CREATE ANY VIEW, DROP ANY VIEW, EXP_FULL_DATABASE, IMP_FULL_DATABASE, DBA, CONNECT, RESOURCE, CREATE SESSION TO sk;

--修改用户密码:
SQL> alter user sk identified by pass123;

SQL> alter user SYS identified by "mVM4zFJQHTl";
SQL> alter user SYSTEM identified by "mVM4zFJQHTl";
SQL> alter user SYSMAN identified by "mVM4zFJQHTl";
SQL> alter user DBSNMP identified by "mVM4zFJQHTl";

修改连接数

查看processes和sessions参数:

SQL> show parameter processes;
NAME                                 TYPE        VALUE
-------------------------            --------    -------------
aq_tm_processes                      integer     0
db_writer_processes                  integer     1
gcs_server_processes                 integer     0
global_txn_processes                 integer     1
job_queue_processes                  integer     1000
log_archive_max_processes            integer     4
processes                            integer     150
SQL> select count(*) from v$process;     --当前的连接数
SQL> select count(*) from v$session;     --当前的连接数
SQL> select value from v$parameter where name = 'processes'     --数据库允许的最大连接数
SQL> alter system set processes=2500 scope = spfile;
SQL> alter system set sessions=2755 scope=spfile;

修改游标

SQL> show parameter open_cursors
SQL> alter system set open_cursors=2000 scope=both;    --数值修改为2000

创建备份目录

SQL> select * from dba_directories;
SQL> create or replace directory DIR_DP  as '/backup/';

修改内存分配

SQL> show parameter sga;        --显示内存分配情况
SQL> alter system set sga_max_size=12288m scope=spfile;    --修改占用内存的大小,建议物理内存一半
SQL> alter system set sga_target=12288m scope=spfile;    --修改占用内存的大小,建议物理内存一半
SQL> show parameter pga;    --显示内存分配情况
SQL> alter system set pga_aggregate_target=8192m scope=spfile;   --修改内存分配

查看表空间情况,USERS 低于30%就要增加数据文件

SQL> SELECT tablespace_name, sum_m, round(max_m,0) sum_m, count_blocks free_blk_cnt,round(sum_free_m,0) sum_free_m,to_char(100*sum_free_m/sum_m, '99.99') || '%' AS pct_free FROM ( SELECT tablespace_name,sum(bytes)/1024/1024 AS sum_m FROM dba_data_files GROUP BY tablespace_name) , ( SELECT tablespace_name AS fs_ts_name, max(bytes)/1024/1024 AS max_m, count(blocks) AS count_blocks, sum(bytes/1024/1024) AS sum_free_m FROM dba_free_space GROUP BY tablespace_name )  WHERE tablespace_name = fs_ts_name order by tablespace_name;
--查看数据文件
SQL> select * from dba_data_files order by tablespace_name,file_name;

--增加数据文件
SQL> alter tablespace USERS add datafile '/data/ora/oracle/oradata/orcl/users01.dbf' size 16G;
SQL> alter tablespace USERS add datafile '/data/ora/oracle/oradata/orcl/users02.dbf' size 16G;

1条评论

想说点什么?