[TOC]
Centos7下静默安装Oracle 11g(无图形化界面)
说明:
- 因为使用的是静默安装,所以我们不需要安装Linux的图形界面,只需要对Linux进行最小化安装即可
前提准备
1. Centos7 的系统环境
- 系统版本:CentOS Linux release 7.6.1810 (Core)
- 腾讯云系统
- 内核版本:
- 系统配置
- 交换空间
因为腾讯云的原因,默认是不提供swap分区的,这里需要自己手动添加一下。在别的系统上可以视情况而定。如果没有swap的分区的,在安装数据库的时候会出现报错。
1 | dd if=/dev/zero of=/swap bs=1024 count=2048000 |
2.配置hostname
此步骤不是必须滴
1 | hostnamectl set-hostname oracledb |
3.关闭selinux
此步骤可以视情况而定,本次案例安装的时候执行了此命令
1 | sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config |
2. 下载Oracle
官网下载地址
根据自己的服务器,下载相应的软件,我的系统是centos7 64位的,所以下载是Linux x86-64的,下载完成后的两个文件如下:
- linux.x64_11gR2_database_1of2.zip
- linux.x64_11gR2_database_2of2.zip
- 说明:*
Oracle系统下载的时候请下载Linux x86-64位的系统,请不要下载zlinux,zlinux是IBM的操作系统的一bai个版本。zLinux就是在baiIBM大机上装Linux,目前主要有RedHat与SUSE for z
3.检查软件依赖环境
注意:从Oracle 11g 11.2.0.2版本开始,在Linux x86_64上安装时,只需要安装64位的软件包,但是,对于11.2.0.2之前的任何Oracle database 11g,下表中列出的32位和64位的安装包都必须安装
需要安装的依赖包(版本号只能大于规定的版本,不能小于)
1 | binutils-2.23.52.0.1-12.el7.x86_64 |
安装命令
1 | 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 |
安装完成后,检查依赖是否安装成功
1 | 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" |
注:本次安装使用的是腾讯云的centos服务器,腾讯云的yum源已经有了。如果您使用的是其他环境,缺少那个依赖包,就手动下载安装即可。
4. 创建所需的操作系统组和用户
如果要安装Oracle数据库,则需要以下本地操作系统组和用户:
- Oracle inventory组(通常为 oinstall)
- OSDBA组 (通常为 dba)
- OSOPER组 (通常为 oper)
- Oracle软件所有者(通常为 oracle)
添加命令
1 | groupadd oinstall |
添加完成后,查看oracle用户
1 | id oracle |
修改oracle用户密码
1 | passwd oracle |
5. 配置内核参数和资源限制
- 在
/etc/sysctl.conf
添加如下的参数,如果系统中某个参数高于下面的参数的值。保留较大的值,下面的数值之事官方要求的最小值。可以根据系统调整数值。以优化系统性能。具体参数说明请详见[内核参数说明](# 6.内核参数说明)
1
2
3
4
5
6
7
8
9
10
11
12
13
vim /etc/sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
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
使内核参数生效
1
sysctl -p 或者执行:/sbin/sysctl -p
在
/etc/security/limits.conf
中添加如下参数1
2
3
4
5
6
7vim /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240在
/etc/pam.d/login
文件中,添加下面内容1
2session required /lib64/security/pam_limits.so
session required pam_limits.so/etc/profile
文件中添加如下内容1
2
3
4
5
6
7
8if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi使用
/etc/profile
文件生效1
source /etc/profile
禁用使用Transparent HugePages(启用Transparent HugePages,可能会导致造成内存在运行时的延迟分配,Oracle官方建议使用标准的HugePages)
查看是否启用 如果显示 [always]说明启用了
1
cat /sys/kernel/mm/transparent_hugepage/enabled
禁用Transparent HugePages,在/etc/grub.conf添加如下内容
1
echo never > /sys/kernel/mm/transparent_hugepage/enabled
重启系统以使更改成为永久更改:
reboot
6.内核参数说明
fs.aio-max-nr
:同时可以拥有的的异步IO请求数目。1048576 即 1024*1024 也就是 1024K 个fs.file-max
:系统允许打开的文件数。kernel.shmall
:设置共享内存总页数。这个值太小有可能导致数据库启动报错,计算公式为:内存(G)* 1024 1024*1024/4096,4096为getconfPAGE_SIZE得到分页大小kernel.shmmax
:Linux进程可以分配的单独共享内存段的最大值。一般设置为内存总大小的一半。这个值的设置应该大于SGA_MAX_TARGET或MEMORY_MAX_TARGET的值,因此对于安装Oracle数据库的系统,shmmax的值应该比内存的二分之一大一些。kernel.shmmni
:设置系统级最大共享内存段数量。推荐最小值为4096kernel.sem
:从左到右分别为SEMMSL、SEMMNS、SEMOPM和SEMMNI。SEMMSL
:设置每个信号灯组中信号灯最大数量,推荐的最小值是250。对于系统中存在大量并发连接的系统,推荐将这个值设置为PROCESSES初始化参数加10SEMMNS
:设置系统中信号灯的最大数量。操作系统在分配信号灯时不会超过LEAST(SEMMNS,SEMMSLSEMMNI)。事实上,如果SEMMNS的值超过了SEMMSLSEMMNI是非法的,因此推荐SEMMNS的值就设置为SEMMSLSEMMNI。Oracle推荐SEMMNS的设置不小于32000,假如数据库的PROCESSES参数设置为600,则SEMMNS的设置应为:SQL> select (600+10)142 from dual;(600+10)*142/86620SEMOPM
:设置每次系统调用可以同时执行的最大信号灯操作的数量。由于一个信号灯组最多拥有SEMMSL个信号灯,因此有推荐将SEMOPM设置为SEMMSL的值。Oracle验证的10.2和11.1的SEMOPM的配置为100。SEMMNI
:设置系统中信号灯组的最大数量。Oracle10g和11g的推荐值为142
net.ipv4.ip_local_port_range
:ip_local_port_range表示端口的范围,为指定的内容net.core.rmem_default
:表示接收套接字缓冲区大小的缺省值(以字节为单位)。net.core.rmem_max
:表示接收套接字缓冲区大小的最大值(以字节为单位)net.core.wmem_default
:表示发送套接字缓冲区大小的缺省值(以字节为单位)net.core.wmem_max
:表示发送套接字缓冲区大小的最大值(以字节为单位)
7. 创建oracle安装目录
如下目录,可以根据自己的实际情况可做修改。我这里使用的是/u01
作为根目录的,这样在以后的配置的时候感觉会省很多的事情。主要也是为了与公司产品数据库安装的时候配置路径保持一致。
1 | mkdir -p /u01/app/oracle |
部分路径说明
- ./app/oracle/product/11.2.0 :数据库系统安装目录
- ./app/oracle/backup:数据备份目录
- ./app/oracle/oraInventory:清单目录
8. 配置oracle用户环境变量
在文件~/.bash_profile
里添加下面的内容(具体值根据实际情况修改)
切换到oracle用户:su - oracle
1 | TMP=/tmp; export TMP |
9. 重启一下系统
1 | reboot |
10. 解压下载好的两个Oracle数据库
解压的顺序需要注意一下,先解压一,然后在解压二
将上传到系统的oracle安装包解压到上边新建的/u01
路径下
1 | unzip -q linux.x64_11gR2_database_1of2.zip -d /u01 |
创建一个新的文件夹,将解压后的应答文件放到新建的文件夹中,或者是在原路径下copy一份文件,最好是不要在原文件上修改
1 | mkdir -p /data/etc |
复制到/data/etc
目录下的文件作用
- db_install.rsp:安装应答
- dbca.rsp:创建数据库应答
- netca.rsp:建立监听、本地服务名等网络设置应答
- 特别是组件配置事后请用如右语句查询核实(select comp_id, comp_name, version, status from dba_registry)
在/data/etc/db_install.rsp
修改以下变量的值
在配置对应的文件前,请先阅读 11.db_install.rsp
应答文件参数说明
1 | cd /data/etc/ |
11.db_install.rsp
应答文件参数说明
1 | oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0//标注响应文件版本.注解文件版本,这个版本必须和要#安装的数据库版本相同,安装检验无法通过,不能更改 |
12. 开始安装
开始安装的命令:
1 | su - oracle |
安装期间可以使用tail
命令监看oracle的安装日志
1 | #日志文件名称根据自己的实际执行时间变更,这里的日志文件会在界面上打出,直接粘贴复制就OK |
安装完成后有如下的提示,如果有类似的提示,说明安装完成
1 | You can find the log of this install session at: |
日志部分内容说明
13. 使用root
用户执行对应的脚本
1 | su - root |
14. 配置监听程序
1 | su - oracle |
注意:这里使用的命令是:netca /silent /responsefile /data/etc/netca.rsp
而不是使用的netca -silent -responseFile /home/oracle/database/response/netca.rsp
否则会报出如下的错误
1 | ****DISPLAY environment variable not set! |
如果使用的是xmanage的连接工具,可以使用如下的命令进行设置(这个没有进行测试过)
1 | 解决方法:export DISPLAY=192.168.8.146:0.0 |
查看监听端口:
1 | netstat -tnpl | grep 1521 |
15. 静默创建数据库
编辑应答文件
/data/etc/dbca.rsp
,部分参数说明请详见 [16.静默创建数据库部分参数说明](# 16. 静默创建数据库部分参数说明)1
2
3
4
5
6
7
8GDBNAME = "ecology"
SID = "ecology"
SYSPASSWORD = "192612"
SYSTEMPASSWORD = "192612"
CHARACTERSET = "AL32UTF8"
INSTANCENAME = "ecology"
TOTALMEMORY = "800"
DB_UNIQUE_NAME = "ecology"执行静默建库
1
2su - oracle
dbca -silent -responseFile /data/etc/dbca.rsp执行过程如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24[oracle@xiaofeifei database]$ dbca -silent -responseFile /data/etc/dbca.rsp
Copying database files
1% complete
3% complete
11% complete
18% complete
26% complete
37% complete
Creating and starting Oracle instance
40% complete
45% complete
50% complete
55% complete
56% complete
60% complete
62% complete
Completing Database Creation
66% complete
70% complete
73% complete
85% complete
96% complete
100% complete
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/ecology/ecology.log" for further details.查看进程
1
ps -ef | grep ora_ | grep -v grep
查看监听状态
1
lsnrctl status
16. 静默创建数据库部分参数说明
1 | RESPONSEFILE_VERSION = "11.2.0" #不能更改 |
17. 至此数据库就安装成功了,下面我们登陆下数据库
1 | su - oracle |
执行select
时,会出现以下情况
1 | SQL> select status from v$instance; |
解决方式:
输入startup
1 | #startup的输出提示: |
激活scott用户:
1 | alter user scott account unlock; |
18. 设置Oracle开机启动
这个步骤还未进行操作….
19. 结合业务系统配置ecology数据库
创建Ecology数据库用户前的检查工作,首选需要确认监听是否正常
切换到oracle用户下:
su - oracle
启动监听:
lsnrctl start
查看监听状态:
lsnrctl status
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23[oracle@xiaofeifei database]$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 23-AUG-2020 16:49:31
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date 23-AUG-2020 11:02:27
Uptime 0 days 5 hr. 47 min. 4 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/xiaofeifei/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xiaofeifei)(PORT=1521)))
Services Summary...
Service "ecology" has 1 instance(s).
Instance "ecology", status READY, has 1 handler(s) for this service...
Service "ecologyXDB" has 1 instance(s).
Instance "ecology", status READY, has 1 handler(s) for this service...
The command completed successfully使用sysdba登录后,查看数据库状态(READ WRITE 为正常读写状态)
命令:
select open_mode from v$database;
1
2
3SQL> select open_mode from v$database;
OPEN_MODE
READ WRITE查看数据库数据文件存放目录。命令为:
select name from v$datafile;
1
2
3
4
5
6
7
8
9SQL> select name from v$datafile;
NAME
/u01/app/oracle/oradata/ecology/system01.dbf
/u01/app/oracle/oradata/ecology/sysaux01.dbf
/u01/app/oracle/oradata/ecology/undotbs01.dbf
/u01/app/oracle/oradata/ecology/users01.dbf
/u01/app/oracle/oradata/ecology/ecology.dbf
创建OA数据库使用用户和表空间,并赋予用户权限
创建OA 程序使用的表空间,表空间名为ECOLOGY,存储路径为/u01/app/oracle/oradata/ecology/ecology.dbf(此处存储路径是根据上面查询数据库数据文件存放目录确定的)。相关命令
1
2
3create tablespace ecology datafile '/u01/app/oracle/oradata/ecology/ecology.dbf' size 2000M
AutoExtend On Next 10M
segment space management auto;创建用户,并关联用户使用的表空间和临时表空间,相关命令
1
CREATE USER ecology IDENTIFIED BY ecology DEFAULT TABLESPACE ecology TEMPORARY TABLESPACE Temp;
赋予OA 数据库用户权限(金融等行业客户无法给予DBA 权限),相关命令为:
1
2
3
4grant connect,resource to ecology;
alter user ecology quota unlimited on ecology;
grant create view to ecology;
grant DATAPUMP_EXP_FULL_DATABASE ,DATAPUMP_IMP_FULL_DATABASE to ecology;需要使用sysdba 用户执行,避免初始化时出现报错。相关命令为
1
alter system set "_allow_level_without_connect_by" = true;
(对于上述第三步操作说明)需要修改此参数主要是因为我们脚本中有些递归查询和上下级的查询使用了level 关
键字,此语法在Oracle9i 版本中默认兼容支持,在10g 及之后的版本中需要修改上面的参
数之后才能支持。