oracle 12c安装步骤详细图解(Oracle12cData)
oracle 12c安装步骤详细图解(Oracle12cData)12.1 案例分析· 会互换Oracle Data Guard数据库角色· 了解Oracle Data Guard 的Active Data Guard· 会安装Oracle Database数据库· 会配置Oracle Data Guard 实现数据同步
技能目标:
· 了解什么是Oracle Data Guard
· 了解Oracle Data Guard备库的两种类型
· 了解Oracle Data Guard 的三种保护模式
· 了解Oracle Data Guard 的Active Data Guard
· 会安装Oracle Database数据库
· 会配置Oracle Data Guard 实现数据同步
· 会互换Oracle Data Guard数据库角色
12.1 案例分析
12.1.1 案例概述
Oracle公司的Oracle Database 数据库,市场占用率有着绝对的优势,它运行稳定、数据安全、性能可靠是用户对它好评的集中体现。Oracle Data Guard在Oracle Database数据库软件里进行设置,就能够实现对主数据库影响很小的前题下,将主数据库的数据,同步到备用数据库里,以防范主数据库的损坏造成数据丢失。因此,在企业应用中Oracle常常被作为数据库容灾的优先选择方案。
12.1.2 案例前置知识点
1.什么是Data Guard
Data Guard 翻译成为中文"数据保护",作用就是保护数据的安全,防范和减少数据库里数据丢失。企业里的应用场景是,将生产数据库(或称主库 Primary)里的数据,通过 Data Guard的功能,传输到备用数据库(或称备库 Standby),以保护数据不丢失。
图12.1 Data Guard基础架构
Data Guard基础物理架构中有两个数据库:生产数据库、备用数据库。
1)生产数据库(或称主库 Primary Database)
生产数据库(图12.1 左边部分),是供业务系统实时进行读写的数据库,上面存储的数据,随着业务的写入而变化。
2)备用数据库(或称备库 Standby Database)
备用数据库(图12.1 右边部分),通过网络接收主数据库传输过来的归档日志,在本地数据库里恢复归档日志,实现数据与主库同步。
12.1.3 案例环境
1. 本案例实验环境
本案例操作系统的环境见表12-1、数据库环境的要求见表12-2。
表12-1 操作系统环境
表12-2 数据库环境
2. 案例需求
1) CentOS7.3搭建Oracle 12c Data Guard环境。
2) 手动执行主备切换操作。
3. 案例实现思路
1) 安装2 台CentOS 7.3 64bit Linux服务器系统,用于搭建 Oracle Data Guard。
2) 在2台Linux 服务器系统里安装Oracle Database 12.2.0.1 数据库软件。
3) 在2台服务器里同时创建相名 SID(ORCL)名字的数据库实例,而且Oracle数据库sys和system帐号密码相同。
4) 配置主库(DB-01)启用 Data Guard 功能。
5) 配置备库(DB-02)启用 Data Guard 功能。
6) 验证主库与备库数据同步功能成功。
7) 配置主库(DB-01)、备库(DB-02)角色互换,且互换角色后数据同步成功。
12.2 案例实施
12.2.1 安装Oracle Database的系统参数配置
两台Linux系统,均需要执行如下步骤,以完成Oracle Database数据库的安装。
1.检查确认Linux系统版本。
[root@DB-01 ~]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
2. 关闭Firewall防火墙。
[root@DB-01 ~]# systemctl stop firewalld.service
[root@DB-01 ~]# systemctl disable firewalld.service
3. 关闭SELinux防火墙。
[root@DB-01 ~]# vi /etc/selinux/config
SELINUX=enforcing
修改为
SELINUX=disabled
4. 禁用 THP 功能,添加如下一行参数。
[root@DB-01 /]# vi /etc/default/grub
GRUB_CMDLINE_LINUX="rhgb quiet transparent_hugepage=never"
5. 重新生成新的Linux grup启动菜单
[root@DB-01 /]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-710d8540242f4334820c5acc6160db07
Found initrd image: /boot/initramfs-0-rescue-710d8540242f4334820c5acc6160db07.img
done
6. 修改系统配置文件sysctl.conf,添加如下参数。
[root@DB-01 /]# vi /etc/sysctl.conf
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
kernel.panic_on_oops = 1
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
7. 修改系统配置文件limits.conf,添加如下参数。
[root@DB-01 /]# vi /etc/security/limits.conf
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 3145728
oracle hard memlock 3145728
8. 修改系统配置文件login,添加如下参数。
[root@DB-01 /]# vi /etc/pam.d/login
session required pam_limits.so
9. 修改系统配置文件profile,增加oracle用户相关配置,添加如下参数。
[root@DB-01 ~]# vi /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
10. 安装Oracle依赖的软件包
[root@DB-01 ~]# yum -y install bc binutils compat-libcap1 gcc gcc-c glibc glibc*.i686 glibc-devel glibc-devel*.i686 ksh libaio libaio-*.i686 libaio-devel libaio-devel*.i686 libgcc libgcc*.i686 libstdc libstdc *.i686 libstdc -devel libstdc devel*.i686 libXi libXi*.i686 libXtst libXtst*.i686 libxcb libxcb*.i686 libX11 libX11*.i686 libXau libXau*.i686 make sysstat unixODBC unixODBC-devel unixODBC*.i686
11. 创建组
[root@DB-01 ~]# groupadd -g 54321 oinstall
[root@DB-01 ~]# groupadd -g 54322 dba
[root@DB-01 ~]# groupadd -g 54323 oper
[root@DB-01 ~]# groupadd -g 54324 backupdba
[root@DB-01 ~]# groupadd -g 54325 dgdba
[root@DB-01 ~]# groupadd -g 54326 kmdba
[root@DB-01 ~]# groupadd -g 54327 asmdba
[root@DB-01 ~]# groupadd -g 54328 asmoper
[root@DB-01 ~]# groupadd -g 54329 asmadmin
[root@DB-01 ~]# groupadd -g 54330 racdba
12. 创建oracle系统帐号
[root@DB01 /]# useradd -u 54321 -g oinstall -G dba oper backupdba dgdba kmdba asmdba racdba oracle
13. 设置oracle帐号密码
[root@DB-01 ~]# passwd oracle
Changing password for user oracle.
New password: #输入密码为 oracle123
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: #再次输入密码为 oracle123
passwd: all authentication tokens updated successfully.
14. 编辑oracle帐号配置文件,增加oracle帐号相关环境变量,添加如下参数。
[root@DB-01 ~]# vi /home/oracle/.bash_profile
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/db_1
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH:/u01/app/grid/product/12.2.0/grid/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:
export TERM=xterm
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export TEMP=/tmp
export TMPDIR=/tmp
15. root帐号创建安装目录。
[root@DB-01 ~]# mkdir /u01
[root@DB-01 ~]# chmod -R 777 /u01
[root@DB-01 ~]# chown oracle.oinstall /u01
16. 使用oracle帐号创建安装目录。
[oracle@DB-01 ~]$ mkdir -p $ORACLE_BASE
[oracle@DB-01 ~]$ mkdir -p $ORACLE_HOME
17. 上传oracle安装文件到/tmp并解压。
[oracle@DB-01 /]$ cd /tmp/
[oracle@DB-01 tmp]$ ls -l linuxx64_12201_database.zip
-rw-r--r-- 1 oracle oinstall 3453696911 Jul 2 17:37 linuxx64_12201_database.zip
[oracle@DB-01 tmp]$
[oracle@DB-01 tmp]$ unzip linuxx64_12201_database.zip
18. 重启系统
使用root帐号登录重启系统。
[root@DB-01 ~]# reboot
12.2.2 安装Oracle Database数据库软件
两台Linux系统,均需要执行如下步骤,以完成Oracle Database数据库的安装。
1. 以oracle帐号登录Linux系统,如图12.2所示。
图12.2 oracle帐号登录系统
2. 如图12.3,以oracle帐号进入database软件安装目录,执行安装程序。
图12.3 oracle帐号执行安装程序
3. 如图12.4,不勾选Oracle的支持,然后点击安装向导中的Next。
图12.4 oracle安装向导更新界面
4. 如图12.5,未输入email 地址的警告,选择Yes继续。
图12.5 未输入邮件地址的警告
5. 如图12.6,选择安装类型为只安装软件,点击Next继续。
图12.5 只安装软件
6. 如图12.6,选择安装类型为单实例,点击Next继续。
图12.6 单实例安装
7. 如图12.7,选择安装类型为企业版本,点击Next继续。
图12.7 安装企业版
8. 如图12.8,确认安装路径,点击Next继续。
图12.8 确认安装路径
9. 如图12.9,确认安装目录及组信息,点击Next继续。
图12.9 确认安装路径及组信息
10. 如图12.10,确认系统组信息,点击Next继续。
图12.10 确认系统组信息
11. 如图12.11,oracle自动系统检查。
图12.11 系统检查
12. 如图12.12,安装任务总结,点击Install继续。
图12.12 安装任务总结
13. 如图12.13,oracle软件正在安装中。
图12.13 oracle软件安装中
14. 如图12.14,安装向导提示用root帐号,在shell命令终端执行执行2个脚本,执行完成后,点击安装向导OK。
图12.14 提示用root帐号执行2个脚本
15. 如图12.15,数据库软件安装完成,点击close结束安装。
图12.15 数据库软件安装完成
12.2.3 创建数据库监听服务
两台Linux系统,均需要执行如下步骤,以完成Oracle数据库监听服务的建立。
1. 如图12.16,oracle帐号,执行netca启动网络配置助手。
图12.16 启动网络配置助手
2. 如图12.17,选择监听程序配置,点击Next继续。
图12.17 选择监听程序配置
3. 如图12.18,选择添加监听服务,点击Next继续。
图12.18 添加监听服务
4. 如图12.19,接受默认的监听服务名,点击Next继续。
图12.19 监听服务名
5. 如图12.20,协议为TCP,点击Next继续。
图12.20 服务协议
6. 如图12.21,配置监听服务端口为默认的1521,点击Next继续。
图12.21 监听服务端口
7. 如图12.22,配置向导询问是否配置其它监听,选择NO,点击Next继续。
图12.22 配置其它监听
8. 如图12.23,监听服务配置完成,点击Next继续。
图12.23 监听服务配置完成
9. 如图12.24,监听服务配置完成,点击Finish退出网络配置助手。
图12.24 退出网络配置助手
12.2.4 创建数据库实例
两台Linux系统,均需要执行如下步骤,以完成Oracle数据库实例的建立。
按前期规划,如表12-3所示,完成数据库的创建。
表12-3 数据库环境
1. 如图12.25,oracle帐号执行dbca数据库创建助手命令。
图12.25 执行数据库创建命令
2. 如图12.26,选择创建数据库操作,点击Next继续。
图12.26 创建数据库
3. 如图12.27,选择高级安装配置,点击Next继续。
图12.27 选择高级安装模式
4. 如图12.28,选择数据库类型为单实例,使用通用传输模版,点击Next继续。
图12.28 选择实例类型及模版
5. 如图12.29,数据库实例信息,输入规划的orcl,同时不勾选Create as Container database,点击Next继续安装。
图12.29 输入实例名字信息
6. 如图12.30,数据存储选择使用默认的存储属性,点击Next继续安装。
图12.30 默认存储属性
7. 如图12.31,快速恢复选项,选择Enable Archive,点击Edit archive mode parameters 编辑归档参数。
图12.31 启用归档
8. 如图12.32, 在Archive log destinations的第1行中,输入 location=/u01/archivelog,点击OK返回主界面,点击Next继续安装。
图12.32 指定归档存放路径
9. 如图12.33,网络配置中使用前面步骤已创建好的监听,点击Next继续安装。
图12.33 网络配置
10. 如图12.34,数据库Vault配置选择全部不需要启用,点击Next继续安装。
图12.34 Vault配置
11. 如图12.35,数据库内存管理配置。
图12.35 内存配置
Memory target: 这个是根据服务器内存自动计算的, 比如总的是 8G 使用 40% 用给ORACLE, Oracle再计划划多少给PGA。
12. 如图12.36,数据库进程配置。
图12.36 进程配置
13. 如图12.37,数据库字符集配置。
图12.37 进程配置
14. 如图12.38,连接模式配置。
图12.38 连接模式配置
15. 如图12.39,数据库示例,点击Next继续安装。
图12.39 数据库示例
16. 如图12.40,数据库企业管理器配置,点击Next继续安装。
图12.40 数据库企业管理器
17. 如图12.41,数据库默认用户sys和system密码配置,根据前期规划输入密码为ORACLEdba123,点击Next继续安装。
图12.41 用户密码配置
18. 如图12.42,数据库创建选项,点击Next继续安装。
图12.42 数据库创建选项
19. 如图12.43,数据库创建总结,点击Finish继续安装。
图12.43 数据库创建总结
20. 如图12.44,数据库实例创建中。
图12.44 数据库创建中
21. 如图12.45,数据库实例创建完成,点击Close退出配置助手。
图12.45 数据库创建完成
12.2.5 配置Data Guard功能
两台均是以oracle帐号登录Linux系统,进行Oracle Data Guard功能的配置。
按前期规划,如表12-4所示,在2台Oracle数据库环境里,完成Data Guard的配置。
表12-4 Data Guard环境
1. 主库(DB-01),配置监听文件listener.ora。
将HOST=DB-01 改为 HOST=0.0.0.0
同时添加 # Add the following lines 提示下的所有行,请注意排版格式。
[oracle@DB-01 ~]$ vi /u01/app/oracle/product/12.2.0/db_1/network/admin/listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/12.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
#Add the following lines
SID_LIST_LISTENER =
(SID_DESC =
(GLOBAL_DBNAME =orcl)
(ORACLE_HOME = /u01/app/oracle/product/12.2.0/db_1)
(SID_NAME = orcl)
)
2. 主库(DB-01),重启监听服务。
[oracle@DB-01 ~]$ lsnrctl stop
[oracle@DB-01 ~]$ lsnrctl start
3. 主库(DB-01),配置网络连接名文件tnsnames.ora。
将第一个HOST=DB-01 改为 HOST=0.0.0.0
将第二个HOST=DB-01 改为 HOST=192.168.1.52
同时添加 # Add the following lines 提示下的所有行,请注意排版格式。
[oracle@DB-01 ~]$ vi /u01/app/oracle/product/12.2.0/db_1/network/admin/tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/12.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.52)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
#Add the following lines
ORCLDG =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.53)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
4. 主库(DB-01),确认处于归档模式。
[oracle@DB-01 ~]$ sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Tue Jul 3 11:35:47 2018
Copyright (c) 1982 2016 Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/archivelog
Oldest online log sequence 1
Next log sequence to archive 2
Current log sequence 2
SQL>
5. 主库(DB-01)数据库使用命令,启动强制日志(Forced Logging) 模式。
SQL> alter database force logging;
Database altered.
6. 主库(DB-01),查询重做日志(redo log)的数量,本案例环境重做日志的数量是3个。
SQL> select thread# groups from v$thread;
THREAD# GROUPS
---------- ----------
1 3
7. 主库(DB-01),查询重做日志(redo log)的大小,本例重做日志每个大小是200M。
SQL> select thread# group# bytes/1024/1024 MB from v$log;
THREAD# GROUP# MB
---------- ---------- ----------
1 1 200
1 2 200
1 3 200
8. 主库(DB-01),查询重做日志(redo log)的位置,添加备用日志(standby log)位置与重做日志路径相同。
SQL> select member from v$Logfile;
MEMBER
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/orcl/redo03.log
/u01/app/oracle/oradata/orcl/redo02.log
/u01/app/oracle/oradata/orcl/redo01.log
9. 主库(DB-01),添加4组(4是根据重做日志数量 1计算而来)备用日志(standby log)。
SQL> alter database add standby logfile thread 1 GROUP 4 '/u01/app/oracle/oradata/orcl/standlog4.ora' SIZE 200M;
Database altered.
SQL> alter database add standby logfile thread 1 GROUP 5 '/u01/app/oracle/oradata/orcl/standlog5.ora' SIZE 200M;
Database altered.
SQL> alter database add standby logfile thread 1 GROUP 6 '/u01/app/oracle/oradata/orcl/standlog6.ora' SIZE 200M;
Database altered.
SQL> alter database add standby logfile thread 1 GROUP 7 '/u01/app/oracle/oradata/orcl/standlog7.ora' SIZE 200M;
Database altered.
10. 主库(DB-01),确认备用日志(standby log)添加成功。
SQL> SELECT THREAD# GROUP# bytes/1024/1024 MB ARCHIVED STATUS FROM V$STANDBY_LOG;
HREAD# GROUP# MB ARC STATUS
---------- ---------- ---------- ------- ----------
1 4 200 YES UNASSIGNED
1 5 200 YES UNASSIGNED
1 6 200 YES UNASSIGNED
1 7 200 YES UNASSIGNED
11. 主库(DB-01),执行Data Guard参数修改,唯一数据库名为规划的orcl。
SQL> alter system set DB_UNIQUE_NAME=orcl scope=spfile;
System altered.
12. 主库(DB-01),执行Data Guard参数修改,归档日志为规划的orcl、orcldg。
SQL> alter system set log_archive_config='DG_CONFIG=(orcl orcldg)' scope=spfile;
System altered.
13. 主库(DB-01),执行Data Guard参数修改,指定本地归档日志位置。
SQL> alter system set log_archive_dest_1='LOCATION=/u01/archivelog VALID_FOR=(ALL_LOGFILES ALL_ROLES) DB_UNIQUE_NAME=orcl' scope=spfile;
System altered.
14. 主库(DB-01),执行Data Guard参数修改,指定远程归档日志位置。
SQL> alter system set log_archive_dest_2='SERVICE=orcldg LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES PRIMARY_ROLE) DB_UNIQUE_NAME=orcldg' scope=spfile;
System altered.
15. 主库(DB-01),执行Data Guard参数修改,启用本地归档参数功能。
SQL> alter system set log_archive_dest_state_1=enable scope=spfile;
System altered.
16. 主库(DB-01),执行Data Guard参数修改,启用远程归档参数功能。
SQL> alter system set log_archive_dest_state_2=enable scope=spfile;
System altered.
17. 主库(DB-01),执行Data Guard参数修改,远程密码策略为EXCLUSIVE。
SQL> alter system set remote_login_passwordfile=EXCLUSIVE scope=spfile;
System altered.
18. 主库(DB-01),执行Data Guard参数修改,最大归档日志进程数量为30个。
SQL> alter system set LOG_ARCHIVE_MAX_PROCESSES=30 scope=spfile;
System altered.