Oracle 12C安装实例
2019-04-03陕西王金国解宝琦
■ 陕西 王金国 解宝琦
编者按:Oracle作为企业级数据库产品。目前依然是各大中型企业数据库管理软件的翘楚。本文以生产环境为应用场景。详细阐述了CentOS7.5系统下Oracle 12C数据库的安装及补丁升级涉及的重点过程,包含了完整的数据库日志模式启用及全库备份需要进行的配置,很好的满足了生产环境对Oracle稳定性和日常备份的要求。
本实例所在的系统环境为:
操作系统:CentOS7.5;
数据库版本:12.1.0.2.0;
主机名:Oracle 12C;
ORACLE_SID:Oracle12c;
容器数据库:Oracle12cp db
操作系统环境准备及数据库安装要点
因为操作系统安装相关文章已经非常多了。笔者认为安装Oracle数据库的重点和难点在于操作系统环境准备部分以及补丁安装部分,因此将略过操作系统安装和数据库安装过程,重点详细描述以上环境准备和补丁安装内容。
1.安装centos7.5,安装过程中需要选择gnome图形桌面,并配置磁盘为LVM管理模式。便于未来数据增长后进行磁盘的动态扩展和管理。
2.操作系统参数配置及优化,使用vi/etc/sysctl.conf命令编辑/etc/sysctl.conf文 件,并在文件末尾增加如图1所示。
fs.aiomax-nr参数Oracle默认设置为 1M 即 1048576,一般不用更改,其他参数具体详解可以参考Oracle官方文档。
图1 具体命令
3.对Oracle用户设置限制,提高软件运行性能,通过命令vi etc/security/limits.conf编辑该文件,并加入如下内容:
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
4.关联设置,通过命令vi /etc/pam.d/login,添加如下内容:
session required/lib64/security/pam_limits.so
session required pam_limits.so
5.设置环境变量,通过命令vi etc/profile添加如图2所示。
6.添加数据库服务主机名,通过命令vi /etc/hosts添加如下内容:
127.0.0.1 oracle12c oracle12c.localdomain
配置完成后重启系统。
图2 具体命令
7.通过命令集创建Oracle组,命令内容如下:
for group in oinstall dba backupdba oper dgdba kmdba; do
groupadd $group
; done
8.通过命令创建oracle用户,命令内容如下:
useradd-g oinstall-G dba,oper,backupdba,dgdb a,kmdba -d
/home/oracle-m oracle
9.修改oracle用户口令,命令如下:
passwd oracle
10.以oracle 用户登陆系统,并使用如下命令vi~/.bash_profile编辑该文件,并添加如图3所示内容。
11.创建CentOS7.5本地源,并使用命令安装Oracle数据库需要的基础支持软件组件包,命令内容:
图3 具体命令
yum-y install binutils compat-libstdc++compat-libstdc++-33 elfutils-libelf-devel gcc gcc-c++ glibc-devel glibc-headers ksh libaiodevel libstdc++-devel make sysstat unixODBCdevel binutils-* compatlibstdc++* elfutilslibelf* glibc* gcc-* libaio* libgcc*libstdc++* make* sysstat*unixODBC* wget unzip compat-libcap1.i686 compat-libcap1.x86_64
12.以oracle用户上传oracle12.1安装文件,并进入解压目录执行./runInstaller进行数据库软件安装。
数据库软件升级
1.下载补丁集及工具
按照Oracle的官方建议,用户在使用Oracle数据库产品时,应该将生产数据库置于归档模式,同时最少需要安装一个补丁集来确保Oracle数据库在生产环境中的可靠性。按照官方建议我们通过Oracle订阅可以下载如下数据库系统补丁集:
p28259833_121020_Linux-x86-64.zip ####Database Patch Set Update 12.1.0.2.181016
p28440711_121020_Linux-x86-64.zip ####OJVM PATCH SET UPDATE 12.1.0.2.181016
同时因为数据库安装的默认opatch版本无法满足以上补丁的要求,用户需要下载如下opatch压缩包进行opatch后续操作,opatch文件名如下:
p6880880_121010_Linux-x86-64.zip#### OPatch Version:12.2.0.1.16
下载完成后将该文件集上传到服务器并应确保该文件集用户和属组为Oracle用户属组。
2.以Oracle登陆用户,使用命令vi.bash_profile编辑文件,并将:$ORACLE_HOME/OPatch添加到PATH末尾,完整内容如下:
export PATH=$PATH:$HO ME/bin:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch
3.使用命令mv$ORACLE_HOME/Opatch$ORACLE_HOME/Opatch.backup备份数据库默认安装的opatch。
4.进入文件所在目录使用命令unzip p6880880_121010_Linux-x86-64.zip解压该文件。
5.在当前目录下使用命令mv opatch/ $ORACLE_HOME/将opatch目录移动至$ORACLE_HOME目录中。
6.以Oracle用户执行sqlplus / as sysdba登入数据库,并执行SHUTDOWN IMMEDIATE;关闭数据库,并以oracle用户执行lsnrctl stop终止数据库监听服务。
7.以命令cd
8.以命令opatch prereq CheckConflictAga instOHWithDetail -ph./&& opatch apply进行补丁升级。并以同样的方法升级28259833补丁并等待完成。补丁安装过程中会出现错误信息,查询Oracle文档该项内容可以忽略。
9.以oracle用户执行sqlplus/as sysdba,并依次执行如下数据库命令:
SQL>startup;
SQL>alter pluggable database oracle12cpdb open;
SQL>show pdbs;
10.使用命令cd $ORACL E_HOME/Opatch进 入$ORACLE_HOME/Opatch目录,并执行如下命令:
./datapatch -verbose
11.关闭数据库并重新启动,使用如下SELECT命令查询dba_registry_history数据
SQL> select comments from dba_registry_history;
系统返回如下信息:
RAN jvmpsu.sql
RDBMS_12.1.0.2.0DBPSU_LINUX.X64_161210
说明补丁升级成功。
建立系统启动脚本
因 为CentOS7系 列Linux操作系统已经开始使用systemd作为系统与服务管理器来替代早期的SysV,因此Oracle 12C安装后需要手工编辑systemd启动脚本来满足数据库自动启动的需求。
1.使用命令vi /lib/systemd/system/oraclerdbms.service,编辑该文件,并增加如图4所示。
2.使用命令systemctl daemon-reload; systemctl enable oracle-rdbms.service刷新systemd服务注册,并将Oracle服务设置为开启。
3.使用命令vi /etc/oratab,将文件内容修改如下:
oracle12c:/opt/oracle/12c:Y
完成后重启服务器。
修改数据库模式,并设置全库备份
1.以Oracle用户执行sqlplus/as sysdba,以此执行如下命令:
SQL>shutdown immediate;
图4 具体命令
图5 具体命令
SQL>startup mount;
SQL>alter database archivelog;
SQL>alter database open;
SQL>alter pluggable database oracle12cpdb open;
SQL> select log_mode from v$database;
系统返回如下内容:
ARCHIVELOG
说明数据库已经处于归档模式。
2.使用命令rman target/链接数据库,并以此执行如下命令:
CONFIGURE CONTROLFILE AUTOBACKUP ON; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO'/opt/oracle/oracle12cdbbackupfull/oracle12c/control%F.bak';
CONFIGURE CHANNEL DEVICE TYPE DISK MAXPIECESIZE 1024 M;
系统将开始自动备份数据库控制文件。
3.以Oracle用 户使用命令cd $ORACLE_BASE && mkdir oracle12cdbbackupfull &&cd oracle12cdbbackupfull/建立全库备份目录,并进入目录使用命令vi dbfullbackup.rman编辑文件,内容如图5所示。
4.在全库备份目录中使用命令vi oracle12cdbfullbackup.sh编辑文件,内容如图6所示。
5.使用命令crontab -e编辑计划计划任务,添加如下内容:
0 3 * * * /opt/oracle/oracle12cdbbackupfull/oracle12cdbfullbackup.sh>/opt/oracle/oracle12cdbbackupfull/rman.log 2>&1
然后系统将在每日的凌晨3点钟进行一次全库的备份。
后记
作为生产系统数据库,用户首先需要的是稳定可靠,Oracle 12C提供的容器特性具有很好的多租户特性,但数据集中也带来了另一个数据安全的问题:
过于集中的数据库以及数据库系统在单机状态下很难保证其安全性,需要更好的双机特性以及在线备份系统支持才能具有良好的数据安全性。
不过另一方面,本实例可以通过虚拟化主机方式建立模板主机来完成数据库的快速部署和上线。在实时性要求不是特别严格的中小规模数据库部署中使用该方法通过虚拟机模板方式部署Oracle 12C单实例容器数据库,很容易实现快速部署,并具有良好的稳定性。
图6 具体命令