记录CentOS 7.6 命令行安装 Oracle 11g过程

这几日,公司接到一个新的项目,甲方在系统运行环境要求中使用linux系统与oracle数据库
经过一整天的摧残,终于成功安装完成。

由于安装过程,系统环境不支持可视化GUI,导致过程艰辛与曲折,记录下来,也用于之后在甲方处安装时的参考。

环境信息

系统版本:CentOS 7.6
oracle版本: 11g
硬件信息:cpu 2核,内存 4G,硬盘:50G

安装准备

关闭安全措施

以下命令 复制粘贴即可

1
2
3
4
5
6
7
# service iptables stop    // 暂时关闭防火墙,重启系统后会自动打开
# chkconfig iptables off // 永久关闭防火墙 (7.3 不用iptables,用firewalld)
# sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config // 关闭Selinux
# systemctl status firewalld.service //查看防火墙状态
# systemctl stop firewalld.service //关闭防火墙
# systemctl disable firewalld.service  //禁止使用防火墙(重启也是禁止的)
重启生效

安装oracle依赖包

以下命令 复制粘贴即可

1
2
3
4
# yum install binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh
# yum install libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat
# yum install kernel-headers numactl-devel glibc-headers glibc-common unixODBC-devel elfutils-libelf elfutils-libelf-devel
# yum install glibc-static elfutils-libelf-devel-static libstdc++-static unixODBC libgomp

创建 安装、运行 oracle数据库所需的系统用户及用户组

以下命令 复制粘贴即可

1
2
3
4
5
6
# su -
# groupadd oinstall
# groupadd dba
# useradd -g oinstall -G dba oracle
# passwd oracle
# id oracle

创建oracle数据库安装目录

本次安装 将 oracle 数据安装在/data/db/目录下,可以视情况自己修改以下命令

1
2
3
4
5
6
7
8
# su -
# mkdir -p /data/db/oracle   /oracle数据库安装目录
# mkdir -p /data/db/oraInventory   /oracle数据库配置文件目录
# mkdir -p /data/db/database   /oracle数据库软件包解压目录
# cd /data/db
# chown -R oracle:oinstall /data/db/oracle   /设置目录所有者为oinstall用户组的oracle用户
# chown -R oracle:oinstall /data/db/oraInventory
# chown -R oracle:oinstall /data/db/database

修改系统标识

网上很多资料说 因为oracle默认不支持 CentOS系统,需要将系统改为 redhat,也有说不需要改,未防意外,本次安装中修改了系统标识

1
2
3
4
5
6
# su -
# cat /proc/version
# cat /etc/redhat-release
# mv /etc/redhat-release /etc/redhat-release.bak
# vi /etc/redhat-release /打开后为 空白文件,添加字符串 'redhat-7'
# cat /etc/redhat-release

修改内核参数

修改参数,提升oracle性能,资料来源于网上

1
2
# su -
# vi /etc/sysctl.conf

在文件末尾添加如下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#设置最大打开文件数
fs.file-max = 6815744
fs.aio-max-nr = 1048576
#共享内存的总量,8G内存设置:2097152 8GB/4KB=2097152 本机为4G 设置为1048576
kernel.shmall = 1048576
#最大共享内存,官方建议的是内存的1/2
#shmmax 建议值为物理内存的一半 4G内存设置为 2147483648
kernel.shmmax = 2147483648
#整个系统共享内存段的最大数量
kernel.shmmni = 4096
# semaphores: semmsl, semmns, semopm, semmni
kernel.sem = 250 32000 100 128
#可使用的IPv4端口范围
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
# /sbin/sysctl -p

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

修改以下文件

1
2
# su -
# vi /etc/security/limits.conf

文件底部添加

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# for Grid/Oracle 11g R2
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
grid soft stack 10240
grid hard stack 32768
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
oracle soft memlock -1
oracle hard memlock -1

修改以下文件

1
# vi /etc/pam.d/login

内容为

1
session required        pam_limits.so

设置交换分区

1
2
3
4
5
6
7
8
9
10
11
12
13
1 使用dd命令创建一个swap交换文件
# dd if=/dev/zero of=/home/swap bs=1M count=4096

2 制作为swap格式文件
# mkswap /home/swap

3 再用swapon命令把这个文件分区挂载swap分区
# /sbin/swapon /home/swap

4 为防止重启后swap分区变成0,要修改/etc/fstab文件
# vi /etc/fstab
在文件末尾(最后一行)加上:
/home/swap swap swap default 0 0

设置oracel用户环境

设置oracle环境变量

1
2
# su - oracle
# vi ~/.bash_profile

内容如下,除了以下两条,不要设置其他的变量

1
2
export ORACLE_BASE=/data/db/oracle
export ORACLE_SID=orcl

使变量生效# source /home/oracle/.bash_profile

Oracle 安装

安装文件准备

官网下载 oracle 11g 安装文件
这里提供一个百度云地址,不保证一直可用
url: https://pan.baidu.com/s/1yWHjJbnb6_FbExQ_2WHSiA
code: fahd
将下载的两个文件上传至服务器,并解压,赋予 oracle 用户权限

1
2
3
4
# su -
# unzip linux.x64_11gR2_database_1of2.zip -d /data/db/
# unzip linux.x64_11gR2_database_2of2.zip -d /data/db/
# chown -R oracle:oinstall /data/db/database/

修改静默安装的配置文件

修改/data/db/database/response/中的db_install.rsp文件

1
# vi /data/db/database/response/db_install.rsp

内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
oracle.install.option=INSTALL_DB_SWONLY //29 行 安装类型
ORACLE_HOSTNAME=主机名 //37 行 主机名称 用 hostname 命令查看
UNIX_GROUP_NAME=oinstall //42 行 安装组
INVENTORY_LOCATION=/data/db/oracle/oraInventory //47 行 INVENTORY目录
SELECTED_LANGUAGES=en,zh_CN,zh_TW //78 行 选择语言
ORACLE_HOME=/data/db/oracle/product/11.2.0/db_1 //83 行 oracle_home
ORACLE_BASE=/data/db/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 //200行 自动管理内存的最小内存(M)
oracle.install.db.config.starterdb.installExampleSchemas=true //206行 加载示例数据表
oracle.install.db.config.starterdb.password.ALL=your_passwd //233行 设定所有数据库用户使用同一个密码
oracle.install.db.config.starterdb.password.SYS=your_passwd //238 指定sys用户密码
oracle.install.db.config.starterdb.password.SYSTEM=your_passwd //243 指定system用户密码
DECLINE_SECURITY_UPDATES=true //385行 设置安全更新

开始安装

/data/db/database/response/下的db_install.rspdbca.rspnetca.rsp3个文件复制到/data/db/oraInventory/

1
2
3
# cp /data/db/database/response/db_install.rsp /data/db/oraInventory/db_install.rsp
# cp /data/db/database/response/dbca.rsp /data/db/oraInventory/dbca.rsp
# cp /data/db/database/response/netca.rsp /data/db/oraInventory/netca.rsp

进入database目录,开始安装oracle

1
2
3
# cd /data/db/database/
# ./runInstaller -silent -force -responseFile /data/db/oraInventory/db_install.rsp
此时,请耐心等待,直到成功,遇到错误,请在搜索引擎中查询(一般不会遇到错误)

安装完成,需要添加oracle环境变量

1
2
# su - oracle
# vi ~/.bash_profile

内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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

然后执行source /home/oracle/.bash_profile生效

配置监听

执行监听,静默配置,没啥需要修改的

1
# $ORACLE_HOME/bin/netca /silent /responseFile /data/db/oraInventory/netca.rsp

然后修改监听配置

1
2
# cd /data/db/oracle/product/11.2.0/db_1/network/admin
# vi listener.ora

内容如下

1
2
3
4
5
6
7
#增加
SID_LIST_LISTENER =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /data/db/oracle/product/11.2.0/db_1)
(SID_NAME = orcl)
)

然后新建解析

1
# vi tnsnames.ora

内容如下

1
2
3
4
5
6
7
8
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)

静默安装数据库

修改配置文件

1
# vi /data/db/oraInventory/dbca.rsp

内容如下

1
2
3
4
GDBNAME = "orcl.VM_0_233_centos" //78 行 全局数据库的名字=SID+主机域名
SID="orcl" //170行 SID
CHARACTERSET="AL32UTF8" //418行 编码
NATIONALCHARACTERSET="UTF8" //428行 编码

进行数据库安装

1
# $ORACLE_HOME/bin/dbca -silent -responseFile /vdb1/db/dbca.rsp

整个安装完成!!!!!!!!!

一些基础的Oracle命令

当安装完成后
使用root用户连接服务器,并转为oracle 用户,已sysdba权限使用sqlplus进行如下操作

1
2
3
4
# su - oracle
# sqlplus / as sysdba

SQL>

创建表空间

创建一个名为devspace大小为10G的表空间

1
create tablespace devspace datafile '/data/db/oracle/oradata/orcl/devspace.ora' size 10G autoextend on next 1M maxsize unlimited logging extent management local autoallocate segment space management auto;

创建用户

创建一个用户名为dev密码为123456的用户,并赋予默认表空间为devspace不限制表空间使用大小
密码为字符串时,建议使用英文双引号括起来如"Dev@123456"

1
create user dev identified by 123456 default tablespace devspace quota unlimited on users;

权限赋予

赋予用户名为dev的用户,connectresource权限

1
grant connect, resource to dev;

删除用户

1
2
3
SELECT SID,SERIAL# FROM V$SESSION WHERE USERNAME='username';(username 必须为大写)
alter system kill session 'sid,serial#';
drop user username cascade;