千家信息网

Centos 7下安装Oracle 12c 以及装后优化(附软件包)

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,Oracle 12c 数据库概述ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构
千家信息网最后更新 2026年10月31日Centos 7下安装Oracle 12c 以及装后优化(附软件包)

Oracle 12c 数据库概述

ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。比如SilverStream就是基于数据库的一种中间件。ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。但它的所有知识,只要在一种机型上学习了ORACLE知识,便能在各种类型的机器上使用它。

Oracle 12c 可插拔数据库体系结构

Oracle 12c 中引入了一个新功能就是Oracle Multitenant,这个功能可以在多租户容器数据库中,创建并维护许多个可插拔数据库。Oracle Multitenant是Oracle企业版中需要额外付费的组件。然而,在所有Oracle版本中都可以在一个可插拔数据库中免费使用它。
多租户容器数据库(CDB)是指能够容纳一个或者多个可插拔数据库的数据库。容器是指CDB中的数据文件和元数据的集合。可插拔数据库是指可以通过克隆另一个数据库轻松创建的数据容器。如果有必要,也可将可插拔数据库从一个CDB传送到另一个CDB。
所有含有一组主数据文件和元数据的CDB都是根容器。每个CDB也会含有种子容器,它是用于创建其它可插拔数据库的模板。每个CDB都由一个根容器、一个种子容器和0个、1个或多个可插拔数据库构成。

----------------安装环境------------------

安装系统:CentOS 7
IP地址:192.168.100.135
安装所需硬盘大小:40G 或重新挂载一块40G硬盘 (安装就需要15G左右,大小当然越大越好)
内存:4G(不建议少于4G)
SWAP(虚拟内存) : 8G (不建议少于8G)

Oracle 数据库软件包,无需解压缩,可直接调用。
百度网盘:链接:https://pan.baidu.com/s/1v1h3_wrB6er8HCpONh9xRQ 密码:a0h2

准备工作:

关闭防火墙

[root@oracle ~]# systemctl stop firewalld.service [root@oracle ~]# systemctl disable firewalld.service [root@oracle ~]# setenforce 0

挂载新硬盘以便安装

步骤:

[root@localhost ~]# cd /dev[root@localhost dev]# fdisk /dev/sdbnp回车回车回车w[root@localhost dev]# mkfs -t xfs /dev/sdb1[root@localhost dev]# mkdir /orc[root@localhost dev]# vim /etc/hostname HOSTNAME=oracle         #修改主机名,便于管理,修改完成后保存退出[root@localhost dev]# vim /etc/hosts192.168.100.135 oracle           #末尾插入一行
重启虚拟机,识别硬盘
[root@oracle ~]# mount /dev/sdb1 /orc[root@oracle ~]# df -h

----------------安装步骤------------------

1.yum安装环境依赖包

[root@oracle ~]# yum -y install binutils compat-libcapl compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel

2.调整内核参数

[root@oracle ~]# vim /etc/sysctl.conf
#末行添加fs.aio-max-nr = 1048576       #异步IO请求数目,推荐值是:1048576(1024*1024也就是1024K个)fs.file-max = 6815744            #打开的文件句柄的最大数量,防止文件描述符耗尽的问题kernel.shmall = 2097152       #共享内存总量 页为单位,内存除以4K所得kernel.shmmax = 4294967295  kernel.shmmni = 4096kernel.sem = 250 32000 100 128       #数值对应含义:SEMMSL: 每个信号集的最大信号数量 #SEMMNS:用于控制整个 Linux 系统中信号的最大数 #SEMOPM:内核参数用于控制每个semop系统调用可以执行的信号操作的数量 #SEMMNI:内核参数用于控制整个 Linux 系统中信号集的最大数量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                #套接字发送缓冲区大小的最大值#修改完成后保存退出[root@oracle ~]# sysctl -p          #使其生效

3.添加管理用户,组

[root@oracle ~]# groupadd oinstall[root@oracle ~]# groupadd dba[root@oracle ~]# useradd -g oinstall -G dba oracle[root@oracle ~]# passwd oracle更改用户 oracle 的密码 。新的 密码:123123

4.创建并修改Oracle安装目录权限

[root@oracle ~]# mkdir -p /orc/app/oracle[root@oracle ~]# chown -R oracle.oinstall /orc/app/[root@oracle ~]# chmod -R 755 /orc/app/oracle/

5.修改Oracle源码包权限

[root@oracle oracle]# chown -R oracle:oinstall /home/oracle/database/[root@oracle oracle]# chmod -R 755 /home/oracle/database/

6.修改oracle用户环境配置

[root@oracle ~]# vim /home/oracle/.bash_profile
#删除末尾两行数据并插入以下内容umask 022                      #权限,设置的是反掩码ORACLE_BASE=/opt/app/oracle    #指定基目录ORACLE_HOME=/opt/app/oracle/product/12.2.0/dbhome_1/  #指定数据存放路径ORACLE_SID=orcl   #指定实例名称NLS_LANG="SIMPLIFIED CHINESE_CHINA".UTF8  #简体中文语言字符集PATH=$PATH:$HOME/.local/bin:$HOME/bin:$ORACLE_HOME/binLANG=zh_CN.UTF-8   export PATH LANG NLS_LANG ORACLE_BASE ORACLE_HOME ORACLE_SID#修改完成后保存退出

7.配置Oracle用户资源限制

#使用pam_limits认证模块[root@oracle ~]# vim /etc/pam.d/login
#在第7行左右下插入以下内容session    required     /lib/security/pam_limits.sosession    required     pam_limits.so#修改完成后保存退出
[root@oracle ~]# vim /etc/security/limits.conf            #编辑对资源的限制
#在末尾插入oracle          soft    nproc           2047        #但用户可用使用的进程数量oracle          hard    nproc           16384oracle          soft    nofile          1024        #用户可打开的文件数量oracle          hard    nofile          65536oracle          soft    stack           10240       #堆栈设置#修改完成后保存退出
[root@oracle ~]# vim /etc/profile                   #修改环境变量配置文件
#末尾插入if [ $USER = "oracle" ] then   if [$SHELL = "/bin/ksh" ]     then        ulimit -p 16384         #缓冲区大小        ulimit -n 65536         #文件数     else       ulimit -u 16384 -n 65536         #进程数    文件数   fifi#修改完成后保存退出

8.安装Oracle安装包

Oracle 数据库软件包,无需解压缩,可直接调。
百度网盘:链接:https://pan.baidu.com/s/1v1h3_wrB6er8HCpONh9xRQ 密码:a0h2

下载文件后挂载到 /opt 下面

[root@oracle ~]# xhost +                         #允许所有用户访问Xserveraccess control disabled, clients can connect from any host[root@oracle ~]# chmod -R 777 /opt/database/
[root@oracle ~]# su - oracle   #切换用户[oracle@oracle ~]$ export DISPLAY=:0.0[oracle@oracle ~]$ cd /opt/database/[oracle@oracle database]$ lsinstall  response  rpm  runInstaller  sshsetup  stage  welcome.html[oracle@oracle ~]$ ./runInstaller #执行安装脚本正在启动 Oracle Universal Installer...

8.进入图形化安装(无图片演示的均为默认选项)



点击单实例数据库安装,下一步
典型安装,自行设置口令 ,下一步

操作安装后,在安装到79%左右的时候弹出小窗口,要求运行两个脚本,这时候用root用户进行操作

#另开一个终端,以ROOT身份登录[root@oracle abc]# /orc/app/oraInventory/orainstRoot.sh [root@oracle abc]# /orc/app/oracle/product/12.2.0/dbhome_1/root.sh

等待完成再回到图形化界面点确定,继续安装。(需要等待一段时间)

至此Oracle数据库安装完毕

但是新安装的Oracle数据库是十分不安全的,接下来会介绍基本的装后优化


首先需要理解的是控制文件的概念和基本管理

-------------控制文件管理--------------

控制文件:为二进制文件,初始化大小由CREATE DATABASE指定,可以使用RMAN备份。

  • 记录了当前数据库的结构信息,同时也包含数据文件及日志文件的信息以及相关的状态,归档信息等等。
  • 在参数文件中描述其位置,个数等等。通常采用分散放开,多路复用的原则。在mount阶段被读取,open阶段一直被使用。
  • 维护数据库一致性(数据库启动时会比较控制文件与联机日志文件中的ckpt,即起始scn号,如相等则正常启动,否则需要介质恢复)。
  • 一个控制文件只能属于一个数据库。
  • 控制文件的任意修改将写入到初始化参数中指定的所有控制文件中,读取时则仅读取第一个控制文件。
  • 控制文件只能连接一个数据库,控制文件的大小一般不要超过MB,最多为个,最少一个,互为镜像.

-

控制文件中包含的内容

  • 数据库的名字、ID、创建的时间戳
  • 表空间的名字
  • 联机日志文件、数据文件的位置、个数、名字
  • 联机日志的Sequence号码
  • 检查点的信息
  • 撤销段的开始或结束
  • 归档信息
  • 备份信息

-

数据库启动从nomount状态启动到mount状态时必须读取控制文件,以获取数据文件和日志文件的位置;如果控制文件实效,数据库将无法启动;而且数据库实时运行过程中,系统也在不停向控制文件中写入stop scn以及checkpoint scn,如果控制文件无法写入,数据库也会宕机。遇到这种情况如果有备份的控制文件,只需要在nomount状态将正确的备份控制文件覆盖到已实效的控制文件,然后启动数据库到open状态即可解决问题。因此系统默认至少同时有几个相同的控制文件互为备份,而且相同的控制文件最好是放在不同的磁盘目录,分散风险。

-

12c安装完成后默认情况下,控制文件有2个,由上述可知,如果Oracle在安装完成后没有更改控制文件的话,会存在很大的安全隐患,所以建议优化控制文件等。

准备工作:

需要使用root用户,给/opt 777权限,以便于Oracle用户读写操作
[root@HOSTNAMEoracle ~]# chmod 777 /opt/

进入Oracle

[root@HOSTNAMEoracle ~]# su - oracle
[oracle@HOSTNAMEoracle ~]$ sqlplus / as sysdba

1.查看控制文件位置

SQL> select name from v$controlfile;

2.查看控制文件内容

#控制文件中存放,创建数据库信息、重做日志信息、数据文件及归档日志文件记录等信息SQL> select type,record_size,records_total,records_used from v$controlfile_record_section;   

3.存储多重控制文件

SQL> alter system set  2  control_files='/orc/app/oracle/oradata/orcl/control01.ctl',  3  '/opt/control02.ctl' scope=spfile;                  #变更控制文件02的路径,增加安全性

参数更改完毕后需要关闭Oracle数据库,在/orc/app/oracle/oradata/orcl控制文件的路径中进行更改,并重启Oracle才能生效
SQL> shutdown immediate;           #关闭数据库SQL> ho cp /orc/app/oracle/oradata/orcl/control02.ctl /opt/control02.ctl       #使用 ho命令在不退出数据库的情况下执行系统命令SQL> startup          #开启数据库SQL> select name from v$controlfile;     #查看控制文件位置

4.备份控制文件

SQL> alter database backup controlfile to '/opt/control.bak';       #执行备份数据库已更改。SQL> ho ls /opt                    #在sql环境中运行系统命令control02.ctl  control.bak  ORCLfmap  rh

--------------重做日志-------------

Oracle数据库在运行当中,用户更改的数据首先会存放在数据库高速缓冲区当中,为了提升磁盘读写,oracle机制不会频繁的将缓冲区的数据写到磁盘,而是等到检查点或者数据高速缓冲区达到一定数量时才会写入数据库文件;倘若在检查点或者数据量等条件还没满足系统就挂了,那么此时用户提交的数据就会丢失,因为数据还在内存里,为了防止数据丢失,oracle提出了重做日志。

-

日志的模式:

在线日志:在线日志模式,不会主动提交日志,服务器关闭就会丢失部分数据。切换日志组时会自动提交文件并保存,后切换的日志组内写入的文件会丢失。

归档日志:只要写入数据就会提交到硬盘进行保存。

重做日志组:由一个或多个相同的联机日志文件组成一个联机重做日志组至少两个日志组,每组一个成员(建议每组两个成员,分散放开到不同的磁盘),由LGWR后台进程同时将日志内容写入到一个组的所有成员。

LGWR的触发条件

  • 在事务提交的时候(COMMIT)
  • Redo Log Buffer 三分之一满
  • Redo Log Buffer 多于一兆的变化记录
  • 在DBWn写入数据文件之前

1.重做日志查询

#查看重做日志组的组号,序列,大小,个数数量,归档状态,日志组状态SQL> select group#,sequence#,bytes,members,archived,status from v$log;

新安装完Oracle数据库后,查看下重做日志文件状态,确认归档文件模式是否开启。如果没有开启,建议开启,增加安全性,防止部分数据丢失。

2.归档日志管理

#查看归档日志模式SQL> archive log list;

开启归档日志模式:

SQL> shutdown immediate;                   #关闭Oracle数据库SQL> startup mount;                             #启动实例,加载数据库但是并不打开数据库SQL> alter database archivelog;          #启用归档日志模式SQL> alter database open;                  #启动打开数据库SQL> archive log list;                           #查看归档日志模式 

3.方便查看日志组,可以稍作下修改

SQL> set line 120;         //设置显示宽度120SQL> col member for a50;    //member列显示宽度50字符宽度SQL> select group#,status,type,member from v$logfile;    //使用logfile视图查看

PS:status 含义
1:空白 正在使用
2:stale 内容不完整
3:invalid 无法访问 如刚建立
4:deleted 文件已不再有用
/orc/app/oracle/oradata/orcl/ //控制文件和重做日志文件都在此路径

4.关于重做日志组的新建和删除

---------------------新增重做日志组--------------------------------
SQL> alter database add logfile group 4  2  ('/orc/app/oracle/oradata/orcl/redo04a.log',  3  '/opt/redo04b.log') size 10m;数据库已更改。
-------------------删除重做日志组--------------------------------
SQL> alter database drop logfile group 4;数据库已更改。#当前日志组不可删除    解决方法:切换日志组: alter system switch logfile;
-------------------添加/删除重做日志文件--------------------------
SQL> alter database add logfile member  2  '/opt/redo01b.log' to group 1,  3  '/opt/redo02b.log' to group 2;数据库已更改。
SQL> alter database drop logfile member  2  '/opt/redo02b.log';数据库已更改。
数据 文件 数据库 日志 控制 用户 系统 大小 信息 容器 数量 状态 缓冲区 缓冲 备份 模式 管理 最大 内容 参数 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 有格互联网科技 互联网科技社 青岛互联网科技公司 友谊互联网络科技 深圳市运趣互联网科技有限公司 互联网科技寓意 南平创想时代互联网科技有限公司 语蝶互联网科技有限公司 晓花互联网科技有限公司网址 畅思互联网科技 西安小鹰速贷互联网科技有限公司 互联网在线教育科技创业 佛山市拉法互联网科技有限公司 小米互联网科技园入驻 互联网领先科技宣传片 济南小医互联网科技有限公司招聘 保山互联网科技靠谱吗 华人运通互联网科技公司 黑龙江互联网科技公司 银川新华互联网科技学校招聘 A股互联网金融科技公司 互联网金融和金融科技 剑昆互联网络科技有限公司临桂 受益于互联网科技的高速发展 工业互联网等科技实现智能化赋能 从那以后互联网科技有限公司 半导体是互联网高科技吗 广州燕处互联网科技有限公司 广西泛欧互联网科技有限公司 互联网科技大会大佬
0