事前准备
服务器硬件要求
物理内存不少于1G
硬盘可以空间不少于5G
swap分区空间不少于2G
支持256色以上显卡
cpu主频不小于550mHZ
软件安装包下载上传
从官网下载安装包文件
https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
本文安装版本为Oracle 11gR2 64位版本
下载后使用Xftp将安装包传输到/usr/src(专用于存放安装包)目录


服务器环境
1.创建数据库用户组和用户
groupadd oinstall #创建用户组oinstallgroupadd dba #创建用户组dbauseradd -g oinstall -G dba -m oracle #创建用户oracle,并初始加入oinstall用户组,附加到dba用户组groups oracle #验证分组是否成功passwd oracle #设置oracle用户密码(此处设置密码123456)id oracle #查看oracle用户信息

2.创建oracle数据库安装目录并分配权限
mkdir -p /opt/oracle/product #创建oracle安装目录
mkdir -p /opt/oracle/oradata #创建oracle数据存放目录
mkdir -p /opt/oracle/oraInventory #创建oracle数据库清单目录
ls /opt/oracle #验证目录生成
chown -R oracle:oinstall /opt/oracle #设置oracle目录所有者为oinstall用户组中的oracle用户

3.安装Oracle安装所需依赖包
binutils-2.23.52.0.1-12.el7.x86_64
compat-libcap1-1.10-3.el7.x86_64
gcc-4.8.2-3.el7.x86_64
gcc-c++-4.8.2-3.el7.x86_64
glibc-2.17-36.el7.i686
glibc-2.17-36.el7.x86_64
glibc-devel-2.17-36.el7.i686
glibc-devel-2.17-36.el7.x86_64
ksh
libaio-0.3.109-9.el7.i686
libaio-0.3.109-9.el7.x86_64
libaio-devel-0.3.109-9.el7.i686
libaio-devel-0.3.109-9.el7.x86_64
libgcc-4.8.2-3.el7.i686
libgcc-4.8.2-3.el7.x86_64
libstdc++-4.8.2-3.el7.i686
libstdc++-4.8.2-3.el7.x86_64
libstdc++-devel-4.8.2-3.el7.i686
libstdc++-devel-4.8.2-3.el7.x86_64
libXi-1.7.2-1.el7.i686
libXi-1.7.2-1.el7.x86_64
libXtst-1.2.2-1.el7.i686
libXtst-1.2.2-1.el7.x86_64
make-3.82-19.el7.x86_64
sysstat-10.1.5-1.el7.x86_64
使用如下命令安装上述系列依赖包
yum -y install binutils-2.* compat-libstdc++-33* elfutils-libelf-0.* elfutils-libelf-devel-* gcc-4.* gcc-c++-4.* glibc-2.* glibc-common-2.* glibc-devel-2.* glibc-headers-2.* ksh-2* libaio-0.* libaio-devel-0.* libgcc-4.* libstdc++-4.* libstdc++-devel-4.* make-3.* sysstat-7.* unixODBC-2.* unixODBC-devel-2.* pdksh*

4.关闭服务器安全防护
关闭防火墙(开发测试环境关闭,生产环境不可以关闭,可以开启1521端口,oracle默认端口是1521)
systemctl stop firewalld.service
systemctl status firewalld.service #查看防火墙服务状态

关闭selinux(方便部署测试,生产环境不允许关闭)
安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。
SELinux 主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)
查看SELinux状态,linux下默认是启用状态
sestatus -v

编辑selinux配置文件关闭selinux服务
vim /etc/selinux/config
将SELINUX=enforcing更改为disabled

重启服务器使SELinux配置生效

5.修改内核参数
linux内核参数指的是用于配置系统运行的参数,类似于软件的一些参数配置
编辑/etc/sysctl.conf文件,设置相关参数的系统默认值。如果该文件中已有相关参数的设置,则确保参数值不小于如下对应值;如果还没有相关参数的设置,则按照如下格式添加相应的参数设置行。
vim /etc/sysctl.conf
fs.file-max = 6815744 #指定了可以分配的文件句柄的最大数目。如果用户得到的错误消息声明由于打开文件数已经达到了最大值,从而他们不能打开更多文件,则可能需要增加该值。
fs.aio-max-nr = 1048576 #同时可以拥有的的异步IO请求数目
kernel.shmall = 2097152 #表示在任何给定时刻,系统上可以使用的共享内存的总量(bytes)
kernel.shmmax = 2147483648 #表示内核所允许的最大共享内存段的大小(bytes)。
kernel.shmmni = 4096 #表示用于整个系统的共享内存段的最大数目(个)。
kernel.sem = 250 32000 100 128 #用于控制内核信号量,信号量是System VIPC用于进程间通讯的方法。
net.ipv4.ip_local_port_range = 9000 65500 #表示TCP/UDP协议打开的本地端口号
net.core.rmem_default = 262144 #指定了接收套接字缓冲区大小的缺省值(以字节为单位)
net.core.rmem_max = 4194304 #指定了接收套接字缓冲区大小的最大值(以字节为单位)
net.core.wmem_default = 262144 #指定了发送套接字缓冲区大小的缺省值(以字节为单位)
net.core.wmem_max = 1048576 #指定了发送套接字缓冲区大小的最大值(以字节为单位)

保存后执行如下命令使配置更改即刻生效
sysctl -p
6.修改oracle用户限制,提高软件运行性能
编辑/etc/security/limits.conf配置文件,修改操作系统对oracle用户资源的限制;
vim /etc/security/limits.conf
在配置文件中添加如下语句
oracle soft nproc 2047 #最大进程数
oracle hard nproc 16384
oracle soft nofile 1024 #最大文件打开数
oracle hard nofile 65536


将pam_limits.so文件加入到启动文件中,使limit.conf文件生效
vim /etc/pam.d/login
加入如下语句
session required pam_limits.so

保存上述文件后,编辑/etc/profile配置文件
vim /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

7.配置oracle用户的私有环境变量
编辑文件 /homt/oracle/.bash_profile
vim /home/oracle/.bash_profile
在文件中加入如下内容
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
#加入编码
export NLS_LANG=AMERICAN_AMERICA.UTF8
export LANG=en_US.UTF8
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$ORACLE_HOME/bin
export PATH

保存环境变量后执行如下命令使文件生效
source /home/oracle/.bash_profile
正式安装
切换到oracle用户环境下
su - oracle
1、解压安装包
进入安装包目录
cd /usr/src/Oracle11g

linux默认没有安装zip及unzip命令,执行如下命令安装
yum -y install zip unzip
执行如下命令解压
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip
解压后生成database目录

2、执行安装
进入database目录,执行.runinstall文件
cd database
ls
./runinstall


=========================================================================
此时报如下错误:DISPLAY not set.Please set the DISPLAY and try again

中文报错如下:

意即oracle安装需要图形界面,而系统尚未配置DISPLAY选项,不支持图形安装
解决:
安装图形界面
yum -y groupinstall "X Window System"
yum -y groupinstall "GNOME Desktop"
=========================================================================
root用户下登录启动图形界面
startx
在图形界面开启命令框,切换到oracle用户身份,并执行./runInstaller
su oracle
cd /usr/src/Oracle11g/database/
ls
./runInstaller

如果此时仍旧出现上述问题,可以执行如下命令
export DISPLAY=:0.0
xhost +
执行./runInsataller后弹出Oracle安装图形界面

3、开始安装
取消选中这个界面上的 “I wish to receive security updates via My Oracle Support” 复选框,点击Next

不填写Email直接安装

在Select Installation Option(选择安装选项)界面上,选择Install database software only(仅安装数据库软件)选项,点击Next
其中:
Create and configure a database:默认选项,创建和配置数据库,安装的同时提供模板数据库,适合初学者
Install database software only: 仅安装数据库软件,数据库管理员常用,较为灵活
Upgrade an existing database: 升级已有数据库

在Grid Installation Options(网格安装选项)界面上,选择Single instance database installation
Single instance database installation: 单实例安装
Real Application Clusters database installation**: Oracle RAC数据库安装

Select Product Languages界面,选择安装语言,默认选择English,点击next

Select Database Edition,选择数据库安装版本,此处选择企业版,点击next

在Specify Installation Location界面,为Oracle Base和Software Location指定存储位置,点击Next
此处我们将安装目录指向/opt/oracle/product

Create Inventory,选择清单目录,点击next
此处选择/opt/oracle/oralnventory

Operating Systems Groups,选择数据库管理员和操作员所属用户组
此处选择数据库管理员用户组:dba
数据库操作员用户组:oinstall

Prerequisite Checks,失败安装包内容,需要使用root逐个安装


注:其中的compat-libstdc++-33-3.2.3,在检测系统是否安装时极容易出错,其正确软件名为compat-libstdc++-33,而不是compat-libstdc++
使用如下命令进行安装,其中,pdksh已经找不到安装包去安装,可以安装ksh即可
yum install ksh

而oracle安装检测有时候是因为服务器安装了高级版本,所以检测出错,确认全部安装后点击Check Again,可以看到还是报Failed,此时我们可以勾选Ignore All选项


Summery界面,展示前面的所有信息,点击Finish

安装过程缓慢,等待安装完成点击close即可

安装至70%左右报如下错误:
Error in invoking target ‘install’ of makefile ‘/opt/oracle/product/11.2.0/db_1/sysman/lib/ins_emagent.mk

保留安装过程,另外开启一个终端窗口,将ins_emagent.mk文件中的 (MK_EMAGENT_NMECTL)更改为$(MK_EMAGENT_NMECTL) -lnnz11,然后在安装过程中点击Continue即可
cd /opt/oracle/product/11.2.0/dbhome_1/sysman/lib
cp ins_emagent.mk ins_emagent.mk.bak #编辑前先备份
vim ins_emagent.mk




配置监听
监听是配置在数据库服务端的,用作建立客户端和数据库服务端直接连接的一个服务程序;
客户端一旦通过监听连接上服务端,此时服务端的监听停止或关闭,连接依旧有效,客户端一样可以操作数据库,除非客户端主动断开连接
Oracle数据库安装完毕,默认已经拥有一个监听配置文件的参考(1521),监听配置文件参考位于:/opt/oracle/product/11.2.0/dbhome_1/network/admin/samples/listener.ora
cd /opt/oracle/product/11.2.0/dbhome_1/network/admin/samples/
ls
cat listener.ora


有了参考文件我们可以将该文件的相关注释去除,然后拷贝到amdin目录下,使监听生效。此处我们学习如何通过图形界面进行监听配置
监听服务配置
①用root执行startx指令进入图形界面
startx

②在图形界面右键进入命令行,切换oracle身份
注:此处必须使用su - oracle,将环境一同切换,否则执行netca命令时会报common not found错误,因为环境变量没有生效
su - oracle


③用oracle身份执行netca命令
注:在调用界面之前,需要习惯首先执行xhost +,否则容易报错
export DISPLAY=:0.0
xhost +
netca

④选择Listener Configurationu选项,点击next

⑤选择监听配置操作,此处选择Add,增加监听

⑥选择监听程序名,由于数据库没有默认监听,我们保持默认的LISTENER

⑦选择监听协议,此处保留默认TCP

⑧选择监听端口,此处选择1521端口

⑨是否配置其他监听,选择YES

⑩确认操作,点击finish


⑪ 查看生成的监听配置文件,该配置文件位于:/opt/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
cd /opt/oracle/product/11.2.0/dbhome_1/network/admin/
ls
cat listener.ora

至此,监听1521端口配置完毕
监听服务管理
监听服务通过命令lsnrctl实现启停,该命令位于/opt/oracle/product/11.2.0/dbhome_1/bin/
**
启动监听服务
su - oracle
lsnrctl start

查看监听服务状态
su - oracle
lsnrctl status

停止监听服务
su - oracle
lsnrctl stop

创建数据库实例
前提:必须保证存在监听且监听是启动状态
进入图形界面,右键打开命令行窗口,切换到oracle环境
su - oracle

执行dbca命令,启动oracle实例安装界面,点击Next
dbca

选择操作类型,此处选择Crearte a Database(创建一个数据库),点击Next

选择数据库类型,此处选择Custom Database,点击Next
General Purpose Or Transaction Processing: 默认,一般用途和事务处理
Custom Database: 定制数据库
Data Warehouse**: 数据仓库

填写全局数据库名称及实例名称,此处填写安装数据库之前添加的环境变量中的SID:orcl,点击Next


取消选中Configure Enterprise Manager复选框,点击Next。(如果希望使用企业管理器来管理这个数据库,那么可以选中Configure Enterprise Manager复选框)

设置管理员密码,可以选择使用不同密码Use Different Administrative Passwords,也可以选择所有管理员账户使用统一密码Use the Same Administrative Password for All Accounts,此处方便选择第二项,输入密码点击Next**

此处使用默认值,点击Next
取消快速恢复和存档区域,点击next
仅勾选”Enterprise Manager Repository”选项,点击Next**

在Initialization Parameters界面中,可以指定一些初始化参数。
在Memory选项卡中,可以指定Oracle数据库使用的内存。
在Sizing选项卡中,可以设置数据块大小、进程数量。
在Character Sets(字符集)选项卡中,可以选择这个数据库的字符集、默认语言和日期格式。
在Connection Mode(连接模式)选项卡中,可以指定数据库的连接模式。默认情况下,Oracle使用Dedicated Server(专用服务器)模式。在这一阶段,唯一必须知道的重要事情就是这个数据库的字符集和数据块大小。选择适当的字符集和数据块大小,其他初始化参数集保留默认即可,可以在以后对它们进行优化调整**




在Database Storage(数据库存储)界面,可以指定数据文件、控制文件和重做日志组的位置。还可以为数据文件和重做日志指定文件位置变量。设置完成后,点击Next

勾选”Create Database”,点击Finish开始创建数据库(可以根据自己的需要选择生成用于创建数据库的脚本)



点击Password Management,管理用户及密码,解锁需要使用的用户

SYS 和 SYSTEM用户默认解锁了,如无其他账号需要使用可以直接ok

点击exit完成创建
测试是否创建成功
切换到oracle身份**
su - oracle
在oracle身份环境下执行如下语句使用DBA身份登录
sqlplus / as sysdba (或sqlplus /nolog)

至此,数据库实例ORCL创建完成
数据库管理
以下处理除特殊说明皆在oracle身份执行**
启动数据库步骤
export ORACLE_SID=orcl(选择自己需要启动的数据库SID)
echo $ORACLE_SID (显示实例名)
sqlplus /nolog
connect sys as sysdba
(输入您的密码)
startup(数据库启动)
exit (返回普通命令界面)
lsnrctl start (启动监听)
关闭数据库(登录状态)
SQL>shutdown immediate;
使用数据库实例
防止sqlplus工具中无法使用删除键
stty erase '^H'
进入sqlplus工具
sqlplus / as sysdba

启动数据库
startup

注:此处必须执行上述操作,否则下述操作都会报错误:
ERROR at line 1:
ORA-01034: ORACLE not available
Process ID: 0
Session ID: 0 Serial number: 0
建立表空间
**
建立用户使用之前需要先建立表空间,否则默认使用系统表空间,不合适。
1、建立临时表空间
格式:
create temporary tablespace 表空间名
tempfile '数据文件名'
size 表空间初始大小
autoextend on next 表空间自动增长大小
maxsize 表空间最大大小
extent management local;
(*数据文件名 包含全路径, 表空间大小,表空间自动增长大小,及表空间最大大小单位皆是m)
实例:
create temporary tablespace springcloud_temp
tempfile '/opt/oracle/oradata/orcl/springcloud_temp.dbf'
size 1024m
autoextend on next 100m
maxsize 10240m
extent management local;

2、建立数据表空间
格式:
create tablespace 表空间名
datafile '数据文件名'
size 表空间大小
autoextend on next 表空间自动增长大小
maxsize 表空间最大大小
extent management local;
(*数据文件名 包含全路径, 表空间大小,表空间自动增长大小,及表空间最大大小单位皆是m)
实例:
create tablespace springcloud logging
datafile '/opt/oracle/oradata/orcl/springcloud.dbf'
size 1024m
autoextend on next 100m
maxsize 10240m
extent management local;

建立用户并指向表空间
格式:
create user 用户名 identified by 密码 default tablespace 缺省表空间;
缺省表空间表示 用户数据如果没有专门指出,其数据就保存在缺省表空间中, 也就是保存在对应的物理文件中
实例:
create user spring identified by spring default tablespace springcloud temporary tablespace springcloud_temp;

给用户授权
**
格式:
grant 权限/数据库 to 用户名
实例(dba = Database Administration,最高权限):
grant dba to spring;

使用新建用户连接数据库实例
sqlplus /nolog
conn spring/spring@localhost/orcl


客户端连接Oracle
1.oracle环境下启动数据库及监听(正确步骤)
su - oracle
sqlplus / as sysdba #进入sqlplus工具
startup #开启数据库
exit #退出sqlplus工具
lsnrctl start #开启监听

2.root环境下开启防火墙监听端口
su root
firewall-cmd --zone=public --add-port=1521/tcp --permanent #添加防火墙开放端口
systemctl restart firewalld #重启防火墙
firewall-cmd --list-ports #查看防火墙开放端口

3.本地使用Navicat Premium,建立连接

点击连接测试:

点击确定查看数据库:

如有贻误,还请评论指正

