一 orace简介
ORACLE(甲骨文)公司。Oracle Database (甲骨文数据库) 是一个具有对象和可扩展标记语言(XML)功能的关系数据库,提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。
在关系数据库中,所有数据都存储在由行和列组成的二维表中。Oracle数据库使您能够以高度的性能,可靠性和可伸缩性存储数据,更新数据并有效地检索数据。
二 描述
ORACLE 数据库,是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。但它的所有知识,只要在一种机型上学习了ORACLE知识,便能在各种类型的机器上使用它。
- Oracle 数据库目前分为:Oracle Database 11G、Oracle Database 12c、Oracle Database 18c 三个版本;
- 目前最新版本为 Oracle Database 18c。
三 Oracle组成
Oracle 数据库由以下组建组成:
- Oracle 软件 :安装在 Oracle 主机上的软件
- 数据库 : 包含用户数据,元数据和控制结构
(元数据 和数据集,允许 Oracle 软件管理用户数据。元数据的示例是数据字典。控制结构(例如控制文件和联机重做日志文件)可确保用户数据的完整性,可用性和可恢复性。)
数据库的物理存储结构是由一些多种物理文件组成,主要有数据文件、控制文件、重做日志文件、归档日志文件、参数文件、口令文件、警告文件等 - Oracle instance(Oracle 实例) :由以下部分组成:
- 后台进程
- 存储
- 监视和恢复与数据库相关的用户数据、元数据和控制文件的操作系统进程或线程后台进程使用的共享内存区域
- Server processes(服务进程):这些进程使用的内存和临时存储,服务器进程解析并执行SQL语句,并将检索结果返回给用户或应用程序。
- Oracle Net listener(Oracle 侦听) :Oracle Net 是一个软件层,支持客户端应用程序和 Oracle 数据库通过网络进行通信
它是一个侦听来自网络的连接请求的进程。
四 管理数据库的工具
- 实现数据库管理员目标的一些产品,工具和实用程序:
- Oracle Universal Installer
- Oracle Universal Installer(OUI)是一个安装 Oracle 软件和选件的实用程序。它可以自动启动 Oracle Database Configuration Assistant 来安装数据库。
- Oracle 数据库配置助手
- Oracle 数据库配置助手(DBCA)是一个实用程序,它可以从 Oracle 提供的模板创建数据库,也可以创建自己的模板。使用户可以复制预配置的种子数据库,从而节省生成和自定义新数据库的时间和精力。
- 数据库升级助手
- 数据库升级助手是一个工具,可指导您将现有数据库升级到新的 Oracle 数据库版本。
- Net Configuration Assistant
- Net Configuration Assistant(NETCA)是一个实用程序,使用户可以配置侦听器和命名方法,这些方法是 Oracle 数据库网络的关键组件。
- Oracle 企业管理器数据库控制
- 管理数据库的主要产品是 Oracle 企业管理器数据库控制(数据库控制),这是一个基于Web的界面。安装 Oracle 数据库软件,创建或升级数据库并配置网络后,可以使用 Database Control 来管理数据库。
- Database Control 还为性能顾问和Oracle实用程序(如SQL * Loader和Recovery Manager(RMAN))提供了一个界面。
五 实例安装oracle准备
5.1 系统环境
5.1.1 查看内存
验证 内存条件 ! 注意在Linux上,使用内存映射文件为大型页表分配不可交换的内存。如果启用了 HugePages,那么应该在计算交换空间之前从可用RAM中扣除分配给 HugePages 的内存
[root@localhost ~]# cat /proc/meminfo |grep -i memto # 查看系统 内存 是否满足最低需求 MemTotal: 7994076 kB [root@localhost ~]# cat /proc/meminfo |grep -i swapto # 查看系统 内存交换空间 是否满足最低要求 SwapTotal: 6291452 kB [root@localhost ~]# free -h # 或者使用 Free 查看内存和交换空间 total used free shared buff/cache available Mem: 7.6G 186M 7.2G 8.7M 245M 7.2G Swap: 6.0G 0B 6.0G
5.1.2 查看内核
从 Oracle Database 11g 第2版(11.2)开始,Oracle Linux 4,Oracle Linux 5,Oracle Linux 6,Red Hat Enterprise Linux 4,Red Hat Enterprise Linux 5 和 Red Hat Enterprise Linux 6 支持 Security Enhanced Linux(SE Linux)功能 。
支持的发行版: Red Hat Enterprise Linux 7:3.10.0-123.el7.x86_64 或 更高版本
[root@localhost ~]# uname -s # 查看系统内核名称 Linux [root@localhost ~]# uname -m -p -i # 查看系统硬件架构、处理器架构、及硬件平台 x86_64 x86_64 x86_64 [root@localhost ~]# uname -r # 查看系统内科发行版本,是否满足最低要求 3.10.0-693.el7.x86_64 [root@localhost ~]# cat /proc/version # 查看系统版本号
# 在具有 Red Hat Linux 7 上应具有 3.10.0-54.0.1.el7.x86_64的内核或更高版本的内核 Linux version 3.10.0-693.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Tue Aug 22 21:09:27 UTC 2017 [root@localhost ~]# uname -a #也可以使用此命令 Linux localhost.localdomain 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
5.1.3 验证Automatic Memory Management
Oracle 数据库从11g开始,自动内存管理特性需要更多的共享内存 ( /dev/shm ) 和文件描述符。共享内存的大小应该至少大于该计算机上每个 Oracle 实例的 MEMORY_MAX_TARGET 和 MEMORY_TARGET 。
/dev/shm 并不占用磁盘空间,而是存放在内存上面,因此和 RAM (Random Access Memory)一样断电清空数据。
/dev/shm 使用增量占用空间,并不会是将挂载点的空间全部占用, /dev/shm 挂载点未占用的空间将会被内存使用。
Linux (CentOS) 的 /dev/shm 分区,默认大小是系统物理内存的50%
[root@localhost ~]# free -h | head -2 # 查看系统内存 total used free shared buff/cache available Mem: 7.6G 187M 7.2G 8.7M 245M 7.2G [root@localhost ~]# df -hal /dev/shm/ # 查看指定的 tmpfs Filesystem Size Used Avail Use% Mounted on tmpfs 3.9G 0 3.9G 0% /dev/shm [root@localhost ~]# df -hal /tmp # 查看 /tmp 目录至少应有1 GB的磁盘空间 Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 36G 896M 35G 3% /
5.1.4 依赖包需求
Package Requirements(软件包需求),以下是 Oracle Database 11g 第2版(11.2)所需的软件包列表:(其中后缀为 .el7.i686 需要从互联网上下载,而其他安装包可以由 CentOS 7.4 映像文件提供 )
# Oracle Linux 7和Red Hat Enterprise Linux 7必须安装以下或更高版本的包: bc binutils #≧-2.23.52.0.1-12.el7 (x86_64) compat-libcap1 #≧-1.10-3.el7 (x86_64) compat-libstdc++-33.i686 #≧-3.2.3-71.el7 (i686) compat-libstdc++-33 #≧-3.2.3-71.el7 (x86_64) glibc.i686 #≧-2.17-36.el7 (i686) glibc #≧-2.17-36.el7 (x86_64) glibc-devel.i686 #≧-2.17-36.el7 (i686) glibc-devel #≧-2.17-36.el7 (x86_64) ksh libaio.i686 #≧-0.3.109-9.el7 (i686) libaio #≧-0.3.109-9.el7 (x86_64) libaio-devel.i686 #≧-0.3.109-9.el7 (i686) libaio-devel #≧-0.3.109-9.el7 (x86_64) libgcc.i686 #≧-4.8.2-3.el7 (i686) libgcc #≧-4.8.2-3.el7 (x86_64) libstdc++.i686 #≧-4.8.2-3.el7 (i686) libstdc++ #≧-4.8.2-3.el7 (x86_64) libstdc++-devel.i686 #≧-4.8.2-3.el7 (i686) libstdc++-devel #≧-4.8.2-3.el7 (x86_64) libxcb.i686 #≧-1.9-5.el7 (i686) libxcb #≧-1.9-5.el7 (x86_64) libX11.i686 #≧-1.6.0-2.1.el7 (i686) libX11 #≧-1.6.0-2.1.el7 (x86_64) libXau.i686 #≧-1.0.8-2.1.el7 (i686) libXau #≧-1.0.8-2.1.el7 (x86_64) libXi.i686 #≧-1.7.2-1.el7 (i686) libXi #≧-1.7.2-1.el7 (x86_64) libXtst.i686 #≧-1.2.2-1.el7 (i686) libXtst #≧-1.2.2-1.el7 (x86_64) libXrender.i686 #≧ (i686) libXrender #≧ (x86_64) libXrender-devel.i686 #≧ (i686) libXrender-devel #≧ (x86_64) make #≧-3.82-19.el7 (x86_64) net-tools #≧-2.0-0.17.20131004git.el7 (x86_64) (for Oracle RAC and Oracle Clusterware) nfs-utils #≧-1.3.0-0.21.el7.x86_64 (for Oracle ACFS) smartmontools #≧-6.2-4.el7 (x86_64) sysstat #≧-10.1.5-1.el7 (x86_64)
5.2 禁用selinx,防火墙,并设置用户名
为了方便实验,减少防火墙以及selinux的影响,在此都关闭
[root@localhost ~]# setenforce 0 [root@localhost ~]# sed -i -e 's@^SELINUX=enforcing@SELINUX=disabled@' /etc/selinux/config [root@localhost ~]# systemctl disable firewalld.service && systemctl stop firewalld.service Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. [root@localhost ~]# hostnamectl set-hostname "oracle12c" #设置主机名 [root@localhost ~]# exit
5.3 安装数据库用户和组
用户信息介绍
创建
如果安装有 Oracle,则 OUI 会从 /etc/oraInst.loc 文件中检测现有的 oraInventory 目录,并使用此位置。
#创建与oracle相关的用户合和组
[root@oracle12c ~]# /usr/sbin/groupadd -g 6543210 oinstall [root@oracle12c ~]# /usr/sbin/groupadd -g 6543211 dba [root@oracle12c ~]# /usr/sbin/groupadd -g 6543212 backupdba # 为数据库安装创建 OSBACKUPDBA 组 [root@oracle12c ~]# /usr/sbin/groupadd -g 6543213 dgdba # 为数据库安装创建 OSDGDBA 组 [root@oracle12c ~]# /usr/sbin/groupadd -g 6543214 kmdba # 为数据库安装创建 OSKMDBA 组 [root@oracle12c ~]# /usr/sbin/groupadd -g 6543215 asmdba # 为ASM Group创建 OSDBA [root@oracle12c ~]# /usr/sbin/groupadd -g 6543216 racdba # 为数据库安装创建 OSRACDBA 组 [root@oracle12c ~]# /usr/sbin/groupadd -g 6543217 oper # 为数据库安装创建 OSOPER 组 [root@oracle12c ~]# /usr/sbin/groupadd -g 6543218 asmoper # 为ASM Group创建 OSOPER 组 [root@oracle12c ~]# /usr/sbin/groupadd -g 6543219 asmadmin # 为ASM Group创建 ASMADMIN 组 # 创建 Oracle 用户
[root@oracle12c ~]# /usr/sbin/useradd -c "Oracle Database" -u 6543210 -g oinstall -G dba,asmdba,backupdba,dgdba,kmdba,racdba oracle # 创建 Oracle Grid Infrastructure(GRID) 用户
[root@oracle12c ~]# /usr/sbin/useradd -c "Oracle Grid Infrastructure" -u 6543220 -g oinstall -G dba,asmdba,asmoper,asmadmin,racdba grid # 初始化 Oracle 用户密码为 admin@123
[root@oracle12c ~]# echo "admin@123"|passwd --stdin oracle Changing password for user oracle. passwd: all authentication tokens updated successfully.
5.4 设置oracle和root用户的环境变量
设置 oracle 用户 和 root 用户的环境变量 ~/UserName/.bash_profile
# 挨着顺序在文件 ~oracle/.bash_profile 的当前行中的上一行插入文本 (即时倒数第二行)中插入
[root@oracle12c ~]# sed -i '$i\export ORACLE_HOSTNAME='$HOSTNAME'' ~oracle/.bash_profile [root@oracle12c ~]# sed -i '$i\export ORACLE_BASE=/usr/local/Oracle' ~oracle/.bash_profile [root@oracle12c ~]# sed -i '$i\export ORACLE_HOME=$ORACLE_BASE/Product/11.2.0' ~oracle/.bash_profile [root@oracle12c ~]# sed -i '$i\export ORACLE_INVENTORY=/Oracle/Inventory' ~oracle/.bash_profile [root@oracle12c ~]# sed -i '$i\export ORACLE_DATA=/Oracle/Data' ~oracle/.bash_profile [root@oracle12c ~]# sed -i '$i\export ORACLE_RECOVER=/Oracle/Recovery_area' ~oracle/.bash_profile [root@oracle12c ~]# sed -i '$i\export ORACLE_OWNER=oracle' ~oracle/.bash_profile [root@oracle12c ~]# sed -i '$i\export ORACLE_SID=orcl11g' ~oracle/.bash_profile [root@oracle12c ~]# sed -i '$i\export ORACLE_GDBNAME=$ORACLE_SID.'$HOSTNAME.em.local'' ~oracle/.bash_profile [root@oracle12c ~]# sed -i '$i\export PATH=.:$PATH:$ORACLE_HOME/bin:/usr/sbin' ~oracle/.bash_profile [root@oracle12c ~]# sed -i '$i\export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib' ~oracle/.bash_profile [root@oracle12c ~]# sed -i '$i\export LC_ALL="zh_CN.UTF-8"' ~oracle/.bash_profile [root@oracle12c ~]# sed -i '$i\export LANG="zh_CN.UTF-8"' ~oracle/.bash_profile [root@oracle12c ~]# sed -i '$i\#export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"' ~oracle/.bash_profile [root@oracle12c ~]# sed -i '$i\#export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"' ~oracle/.bash_profile [root@oracle12c ~]# sed -i '$i\export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"' ~oracle/.bash_profile [root@oracle12c ~]# sed -i '$i\export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"' ~oracle/.bash_profile [root@oracle12c ~]# [root@oracle12c ~]# sed -i '$i\export ORACLE_HOSTNAME='$HOSTNAME'' ~root/.bash_profile [root@oracle12c ~]# sed -i '$i\export ORACLE_BASE=/usr/local/Oracle' ~root/.bash_profile [root@oracle12c ~]# sed -i '$i\export ORACLE_HOME=$ORACLE_BASE/Product/11.2.0' ~root/.bash_profile [root@oracle12c ~]# sed -i '$i\export ORACLE_INVENTORY=/Oracle/Inventory' ~root/.bash_profile [root@oracle12c ~]# sed -i '$i\export ORACLE_DATA=/Oracle/Data' ~root/.bash_profile [root@oracle12c ~]# sed -i '$i\export ORACLE_RECOVER=/Oracle/Recovery_area' ~root/.bash_profile [root@oracle12c ~]# sed -i '$i\export ORACLE_OWNER=oracle' ~root/.bash_profile [root@oracle12c ~]# sed -i '$i\export ORACLE_SID=orcl11g' ~root/.bash_profile [root@oracle12c ~]# sed -i '$i\export ORACLE_GDBNAME=$ORACLE_SID.'$HOSTNAME.em.local'' ~root/.bash_profile [root@oracle12c ~]# sed -i '$i\export PATH=.:$PATH:$ORACLE_HOME/bin:/usr/sbin' ~root/.bash_profile [root@oracle12c ~]# sed -i '$i\export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib' ~root/.bash_profile [root@oracle12c ~]# sed -i '$i\export LC_ALL="zh_CN.UTF-8"' ~root/.bash_profile [root@oracle12c ~]# sed -i '$i\export LANG="zh_CN.UTF-8"' ~root/.bash_profile [root@oracle12c ~]# sed -i '$i\#export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"' ~root/.bash_profile [root@oracle12c ~]# sed -i '$i\#export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"' ~root/.bash_profile [root@oracle12c ~]# sed -i '$i\export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"' ~root/.bash_profile [root@oracle12c ~]# sed -i '$i\export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"' ~root/.bash_profile [root@oracle12c ~]# source ~oracle/.bash_profile # 更新 oracle 用户的环境变量 [root@oracle12c ~]# source ~root/.bash_profile # 更新 root 用户的环境变量
5.5 配置hosts文件
# 配置主机IP地址和主机名的变量,然后在文件 /etc/hosts 的最后一行下面插入新的行
[root@oracle12c ~]# hostip=`routel |grep host |grep -v '127.0.0' | awk 'NR==1{ print }' | awk '{ print $1 }'` [root@oracle12c ~]# sed -i '$a\'$hostip' '$HOSTNAME' '$HOSTNAME.em.local'' /etc/hosts
5.6 创建oracle的安装目录
# 创建 Oracle 安装目录、oraInventory 目录、oraData 目录、flash_recovery_area 目录
[root@oracle12c ~]# mkdir -p $ORACLE_HOME $ORACLE_INVENTORY $ORACLE_DATA $ORACLE_RECOVER [root@oracle12c ~]# mkdir -p /tmp/Oracle [root@oracle12c ~]# mkdir -p /usr/share/fonts/zh_CN/TrueType # 创建中文字体目录,解决中文GUI安装乱码问题 [root@oracle12c ~]# chown -R oracle:oinstall $ORACLE_BASE /Oracle /tmp/Oracle # 设置 oracle用户 和 oinstall组 为指定目录的所有者 [root@oracle12c ~]# chmod -R 775 $ORACLE_BASE /Oracle /tmp/Oracle # 修改 指定目录和子目录修改权限
六 实例安装
6.1 安装相关依赖包
# 安装 相关包依赖,建议使用epel源如果使用本地源可能会缺少软件包
[root@oracle12c ~]# yum install wget links -y [root@oracle12c ~]# yum install bc binutils ksh compat-libcap1 unzip make \ compat-libstdc++-33.i686 compat-libstdc++-33 \ gcc-c++ glibc glibc.i686 glibc-headers \ glibc-devel.i686 glibc-devel \ libaio.i686 libaio \ libaio-devel.i686 libaio-devel \ libgcc.i686 libgcc \ libstdc++.i686 libstdc++ \ libstdc++-devel.i686 libstdc++-devel \ libxcb.i686 libxcb \ libX11.i686 libX11 \ libXau.i686 libXau \ libXi.i686 libXi \ libXtst.i686 libXtst \ libXrender.i686 libXrender \ libXrender-devel.i686 libXrender-devel \ net-tools nfs-utils \ smartmontools sysstat # elfutils-libelf-devel smartmontools cvuqdisk
6.2 安装ODBC的驱动程序
- 安装 Linux/Unix 的ODBC驱动程序管理器,可以从 www.unixodbc.org 下载相关的ODBC驱动程序。安装ODBC前还必须安装以下其他ODBC RPM
在 Oracle Linux 7 和 Red Hat Enterprise Linux 7 上需要安装以下数据包:
- 1. unixODBC-2.3.1-6.el7.x86_64 or later
- 2. unixODBC-2.3.1-6.el7.i686 or later
- 3. unixODBC-devel-2.3.1-6.el7.x86_64 or later
- 4. unixODBC-devel-2.3.1-6.el7.i686 or later
[root@oracle12c ~]# yum install unixODBC unixODBC.i686 unixODBC-devel unixODBC-devel.i686
下载中文字体,数据库文件并解压
# 下载中文字体 && 并解压到 /usr/share/fonts/zh_CN/TrueType 目录中
[root@oracle12c ~]# wget -P /tmp/Oracle/ http://wd.91tzy.com:8070/zysong.zip && unzip /tmp/Oracle/zysong.zip -d /usr/share/fonts/zh_CN/TrueType 下载数据库,本次实验已经下载完成,直接上传,下载地址https://www.oracle.com/database/technologies/oracle-database-software-downloads.html
[root@oracle12c ~]# unzip /opt/linuxx64_12201_database.zip -d /tmp/Oracle/
6.3 禁用大页
6.3.1 什么是 HugePages(大页面)
当一个进程占用内存时,CPU 会将 RAM 标记为该进程所使用的内存,为了提高效率,CPU 按 4K 字节块分配RAM(这是许多平台上的默认值)。这些块被命名为 Pages。这些 Pages 可以交换到磁盘,等等。
进程地址空间是虚拟的,CPU 和 操作系统 必须记住哪个 pages 属于哪个进程,以及它存储在哪里。
因此,pages 越多,查找内存映射位置所需的时间就越多。当一个进程使用1GB内存时,需要查找262144个条目(1GB / 4K)。如果一个页表条目消耗8字节,那么查找它需要2MB(262144 * 8)。
如果操作系统仍然以 4KB 大小为页面的基本单位,显然不合理呢
如果操作系统以 2MB 甚至更大作为分页的单位时,将会大大减少 TLB Miss 和缺页中断的数量,显著提高应用程序的性能
大多数当前的CPU架构支持更大的页面(因此CPU/OS需要查找的条目更少),这些 pages 被命名为 大页面(HugePages)
为了能以最小的代价实现大页面支持,Linux 操作系统采用了基于 hugetlbfs 特殊文件系统 2M 字节大页面支持。
这种采用特殊文件系统形式支持大页面的方式,使得应用程序可以根据需要灵活地选择虚存页面大小,而不会被强制使用 2MB 大页面。
6.3.2 禁用 Transparent HugePages
Oracle 建议在开始安装之前禁用 Transparent HugePages
Transparent HugePages内存 与 Standard HugePages内存不同,因为内核 khugepaged 线程在运行时动态分配内存。Standard HugePages内存在启动时预先分配,并且在运行时不会更改。
6.3.3 查看大页状态
#查看是否已启用 Transparent HugePages,输出结果为两种:
# [always]已启用
# [never]永久禁用
#cat /sys/kernel/mm/redhat_transparent_hugepage/enabled # red hat 系统
[root@oracle12c ~]# cat /sys/kernel/mm/transparent_hugepage/enabled # 其他(CentOS,SUSE,Ubunt……)系统 [always] madvise never
6.3.4 禁用大页
# 1. 零时禁用 Transparent HugePages 重启后失效
[root@oracle12c ~]# echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled && echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag [root@oracle12c ~]# [root@oracle12c ~]# cat /sys/kernel/mm/transparent_hugepage/enabled #查看大页状态 always madvise [never]
6.3.5 以服务方式自动禁用大页
# 创建 Unit 服务文件,以实现开机自动禁用 Transparent HugePages
[root@oracle12c ~]# cat >/usr/lib/systemd/system/THP.service <<EOF [Unit] Description=Disable Transparent Huge Pages (THP) [Service] Type=simple ExecStart=/bin/sh -c "echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled && echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag" [Install] WantedBy=multi-user.target EOF [root@oracle12c ~]# systemctl daemon-reload # 重新加载SystemD守护程序 [root@oracle12c ~]# systemctl enable THP.service && systemctl start THP.service #设置开机自启并启动 Created symlink from /etc/systemd/system/multi-user.target.wants/THP.service to /usr/lib/systemd/system/THP.service. [root@oracle12c ~]# cat /sys/kernel/mm/transparent_hugepage/enabled # 检查 Transparent HugePages 状态
6.4 验证I/O磁盘的调度程序
为了获得 Oracle ASM 的最佳性能,Oracle 建议使用 Deadline I / O Scheduler。
磁盘I / O 调度程序对磁盘I / O的请求进行重新排序,延迟或合并,以实现更高的吞吐量和更低的延迟。Linux有多个磁盘I / O调度程序可用,包括(Deadline,Noop,Anticipatory和Completely Fair Queuing (CFQ)。
验证Linux上的磁盘I / O调度程序:在集群上更加适用
[root@oracle12c ~]# cat /sys/block/*/queue/scheduler # 查看磁盘是否启用 I / O 调度 none none none noop [deadline] cfq noop deadline [cfq] # 如果默认磁盘I / O调度程序不是Deadline,则使用 rules 文件设置
# 创建规则文件
[root@oracle12c ~]# cat >/etc/udev/rules.d/60-oracle-schedulers.rules <<EOF ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline" EOF # 在群集系统上,将规则文件复制到群集上的所有其他节点。例如
#scp /etc/udev/rules.d/60-oracle-schedulers.rules root@node2:/etc/udev/rules.d/
# 加载规则文件并重新启动UDEV服务
[root@oracle12c ~]# udevadm control --reload-rules # 适用于 RHEL,CentOS
6.5 调整内核参数
下表中显示 内核和shell 的参数是否设置为 <大于或等于> 显示的最小值的值。表后面的过程描述了如何验证和设置值。
调整 内核和shell 的参数
# 将设置的参数打印,并重定向到 /etc/sysctl.d/97-oracle-database-sysctl.conf文件中
[root@oracle12c ~]# /usr/bin/cat >/etc/sysctl.d/97-oracle-database-sysctl.conf << EOF # This is a parameter set for Oracle database tuning fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.sem = 250 32000 100 128 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 # Kernel.shmmax (parameter) is set to 50% of the physical memory # kernel.shmall = 2097152 # kernel.shmmax = 536870912 # kernel.shmmni = 4096 EOF [root@oracle12c ~]# /sbin/sysctl -p # 重新载入内科参数 [root@oracle12c ~]# /sbin/sysctl --system # 从所有配置文件读取值 * Applying /usr/lib/sysctl.d/00-system.conf ... * Applying /usr/lib/sysctl.d/10-default-yama-scope.conf ... kernel.yama.ptrace_scope = 0 * Applying /usr/lib/sysctl.d/50-default.conf ... kernel.sysrq = 16 kernel.core_uses_pid = 1 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 net.ipv4.conf.all.accept_source_route = 0 net.ipv4.conf.default.promote_secondaries = 1 net.ipv4.conf.all.promote_secondaries = 1 fs.protected_hardlinks = 1 fs.protected_symlinks = 1 * Applying /etc/sysctl.d/97-oracle-database-sysctl.conf ... fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.sem = 250 32000 100 128 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 * Applying /etc/sysctl.d/99-sysctl.conf ... * Applying /etc/sysctl.conf ...
6.6 安装数据库之shell限制
检查 Oracle 软件安装用户的资源限制,更新 /etc/security/limits.conf 安装所有者的配置文件中的资源限制
[root@oracle12c ~]# /usr/bin/cat >/etc/security/limits.d/97-oracle-database-limits.conf << EOF # This is a parameter set for Oracle user Resource Limitations tuning #max number of open file descriptors oracle soft nofile 4096 oracle hard nofile 65536 # max number of processes #oracle soft nproc 4096 #oracle hard nproc 31140 # maximum stack size (KB) oracle soft stack 10240 oracle hard stack 32768 # End of file EOF
6.7 配置 PAM
配置 PAM /etc/pam.d/login 登入会话要求使文件 /etc/security/limits.conf 对 shell 限制生效
# Configuration (PAM)/etc/PAM. D/login login session file, make the file/etc/security/limits. Conf effective restriction on the shell
[root@oracle12c ~]#cp /etc/pam.d/login /etc/pam.d/login.backup && /usr/bin/cat >>/etc/pam.d/login <<EOF session required /lib64/security/pam_limits.so session required pam_limits.so EOF [root@oracle12c ~]#cp /etc/profile /etc/profile.backup && /usr/bin/cat >>/etc/profile <<EOF # This is a parameter set for Oracle database tuning if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 31440 ulimit -n 65536 else ulimit -u 31140 -n 65536 fi fi EOF [root@oracle12c ~]# source /etc/profile # 更新全局环境变量配置文件
6.8 使用db_intall.rsp静默安装
6.8.1配置相关参数
[root@oracle12c ~]# cp /tmp/Oracle/database/response/{dbca,db_install,netca}.rsp ~oracle/ # 拷贝 静默安装应答 文件直当前用户注目礼 [root@oracle12c ~]# chmod +x ~oracle/{dbca,db_install,netca}.rsp # 将 静默安装应答 文件赋予可 x 执行权限 [root@oracle12c ~]# su - oracle [oracle@oracle12c ~]$ hostip=`routel |grep host |grep -v '127.0.0' | awk '{ print $1 }'` [oracle@oracle12c ~]$ sed -i -e '/^ACCEPT_LICENSE_AGREEMENT=/s#=.*$#=true#' ~oracle/db_install.rsp [oracle@oracle12c ~]$ sed -i -e 's@^oracle.install.option=@oracle.install.option=INSTALL_DB_SWONLY@' ~oracle/db_install.rsp # 设置安装模式为:INSTALL_DB_SWONLY|INSTALL_DB_AND_CONFIG|UPGRADE_DB
[oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.isRACOneInstall=/s#=.*$#=false#' ~oracle/db_install.rsp # 禁用 rac 安装
[oracle@oracle12c ~]$ sed -i -e '/^INVENTORY_LOCATION/s#=.*$#='$ORACLE_INVENTORY'#' ~oracle/db_install.rsp # 指定 Oracle 存储库文件的位置 [oracle@oracle12c ~]$ sed -i -e '/^ORACLE_HOME=/s#=.*$#='$ORACLE_HOME'#' ~oracle/db_install.rsp # 指定 Oracle 数据库主目录 [oracle@oracle12c ~]$ sed -i -e '/^ORACLE_BASE=/s#=.*$#='$ORACLE_BASE'#' ~oracle/db_install.rsp # 指定 Oracle 数据库基本目录 [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.InstallEdition=/s#=.*$#=EE#' ~oracle/db_install.rsp # 指定 Oracle 数据库所安装的版本 EE 企业本 [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.starterdb.fileSystemStorage.dataLocation/s#=.*$#='$ORACLE_DATA'#' ~oracle/db_install.rsp # 数据存放路径 [oracle@oracle12c ~]$ [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.starterdb.globalDBName=/s#=.*$#='$ORACLE_GDBNAME'#' ~oracle/db_install.rsp # 全局数据库名 globalDBName [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.starterdb.SID/s#=.*$#='$ORACLE_SID'#' ~oracle/db_install.rsp # SID [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.starterdb.characterSet/s#=.*$#=AL32UTF8#' ~oracle/db_install.rsp # 设置数据库的字符集,通用字符集。 [oracle@oracle12c ~]$ [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.starterdb.enableRecovery/s#=.*$#=true#' ~oracle/db_install.rsp # 启用数据恢复 [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.starterdb.storageType/s#=.*$#=FILE_SYSTEM_STORAGE#' ~oracle/db_install.rsp # 数据库存储类型:FILE_SYSTEM_STORAGE|ASM_STORAGE [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation/s#=.*$#='$ORACLE_RECOVER'#' ~oracle/db_install.rsp # 指定存储恢复文件路径 [oracle@oracle12c ~]$ [oracle@oracle12c ~]$ sed -i -e '/^UNIX_GROUP_NAME=/s#=.*$#=oinstall#' ~oracle/db_install.rsp # 指定 Oracle 用户组名称 [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.OSDBA_GROUP=/s#=.*$#=dba#' ~oracle/db_install.rsp # DBA 组 [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.OSOPER_GROUP=/s#=.*$#=dba#' ~oracle/db_install.rsp # OPER 组 [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.OSBACKUPDBA_GROUP=/s#=.*$#=backupdba#' ~oracle/db_install.rsp # backupdba 组 [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.OSDGDBA_GROUP=/s#=.*$#=dgdba#' ~oracle/db_install.rsp # dgdba 组 [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.OSKMDBA_GROUP=/s#=.*$#=kmdba#' ~oracle/db_install.rsp # kmdba 组 [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.OSRACDBA_GROUP=/s#=.*$#=racdba#' ~oracle/db_install.rsp # racdba 组
[oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.starterdb.type=/s#=.*$#=DATA_WAREHOUS#' ~oracle/db_install.rsp # 数据库类型:GENERAL_PURPOSE|DATA_WAREHOUSE [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.PDBName=/s#=.*$#=orclpdb#' ~oracle/db_install.rsp [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.starterdb.memoryOption/s#=.*$#=false#' ~oracle/db_install.rsp # 是否启用自动内存管理 [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.ConfigureAsContainerDB/s#=.*$#=false#' ~oracle/db_install.rsp # 是否将数据库配置为容器数据库 [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.starterdb.characterSet/s#=.*$#=ZHS16GBK#' ~oracle/db_install.rsp # 数据库字符集 [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.starterdb.password.SYS/s#=.*$#=AdminSYS123#' ~oracle/db_install.rsp # 指定 SYS 密码:AdminSYS123 [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.starterdb.password.SYSTEM/s#=.*$#=AdminSYSTEM123#' ~oracle/db_install.rsp # 指定 SYSTEM 密码:AdminSYSTEM123 [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.starterdb.managementOption/s#=.*$#=DEFAULT#' ~oracle/db_install.rsp # 使用默认的(database Express)来管理数据库 [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.starterdb.memoryLimit/s#=.*$#=4096#' ~oracle/db_install.rsp # 总内存分配,MB 为单位 [oracle@oracle12c ~]$ sed -i -e '/^DECLINE_SECURITY_UPDATES=/s#=.*$#=true#' ~oracle/db_install.rsp # 启用安全更新 [oracle@oracle12c ~]$ sed -i -e "s@^ORACLE_HOSTNAME=@ORACLE_HOSTNAME=$HOSTNAME@" ~oracle/db_install.rsp [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.starterdb.password.DBSNMP=/s#=.*$#=AdminDB123#' ~oracle/db_install.rsp # 设置 Oracle 主机名称 [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.starterdb.omsHost=/s#=.*$#='$hostip'#' ~oracle/db_install.rsp # 配置 EM 登入主机地址 [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.starterdb.omsPort=/s#=.*$#=5500#' ~oracle/db_install.rsp # 配置 EM 登入端口号 [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.starterdb.emAdminUser/s#=.*$#=sys#' ~oracle/db_install.rsp # 配置 EM 登入用户名 [oracle@oracle12c ~]$ sed -i -e '/^oracle.install.db.config.starterdb.emAdminPassword/s#=.*$#=AdminEM123#' ~oracle/db_install.rsp # 配置 EM [oracle@oracle12c ~]$ sed -i -e '/^SELECTED_LANGUAGES=/s#=.*$#=en,zh_CN#' ~oracle/db_install.rsp # 指定数据库所使用语言
6.8.2 开始安装
[oracle@oracle12c ~]$ /tmp/Oracle/database/runInstaller -silent -responseFile /home/oracle/db_install.rsp -ignorePrereq
相关结果,对于安装类型有问题,设置取消掉,重新安装
再次安装结果成功
6.8.3日志结果
[oracle@oracle12c ~]$ tail -f /Oracle/Inventory/logs/installActions2019-10-19_10-47-34PM.log
信息: 正在安装 信息: 将文件提取到 '/usr/local/Oracle/Product/11.2.0'。 信息: 将文件提取到 '/usr/local/Oracle/Product/11.2.0'。 信息: 根据文件 'oracle.server_EE_dirs.lst' 中的信息执行快速复制操作。 信息: 根据文件 'oracle.server_EE_1.xml' 中的信息执行快速复制操作。 信息: 根据文件 'oracle.server_EE_exp_1.xml' 中的信息执行快速复制操作。 信息: 根据文件 'oracle.server_EE_filemap.jar' 中的信息执行快速复制操作。 信息: 根据文件 'racfiles.jar' 中的信息执行快速复制操作。 信息: 根据文件 'setperms1.sh' 中的信息执行快速复制操作。 信息: Number of threads for fast copy :1 。。。 信息: 将变量 'ROOTSH_LOCATION' 设置为 '/usr/local/Oracle/Product/11.2.0/root.sh'。从代码块得到该值。 信息: 将变量 'ROOTSH_STATUS' 设置为 '3'。从代码块得到该值。 信息: component has plugIns in XML: no configlog.xml written 信息: InstallProgressMonitor: Completed phase 8 信息: 安装阶段 2 JRE files in Scratch :0 信息: Checkpoint:Index file written and updated 信息: InstallProgressMonitor: Starting phase 16 信息: 正在保存产品清单 信息: 正在保存产品清单 信息: OiicSaveInvWCCE:Before saving the inventory. This is a install session. 信息: OiicSaveInvWCCE:Before saving the inventory. The platform is unix. 信息: OiicSaveInvWCCE:Before saving the inventory. The root.sh location is /usr/local/Oracle/Product/11.2.0/root.sh 信息: OiicSaveInvWCCE:Before saving the inventory. The root.sh location exists. 信息: 初始化 OUI 存储产品清单 信息: Saving global variables for component oracle.server 信息: Saving global variables completed 信息: Saving the install inventory which has the access of 1 信息: 。。。。 以 root 用户的身份执行以下脚本: 1. /Oracle/Inventory/orainstRoot.sh 2. /usr/local/Oracle/Product/11.2.0/root.sh Successfully Setup Software. 信息: Output processor threads exited. 信息: Number of scripts to be executed as root user = 2 信息: 正在清除, 请稍候... 信息: All forked task are completed at state setup 信息: Completed background operations 信息: Validating state <setup> 信息: Completed validating state <setup> 信息: Verifying route success 信息: Waiting for completion of background operations 信息: Completed background operations 信息: Waiting for completion of background operations 信息: Completed background operations 信息: Executing action at state finish 信息: FinishAction Actions.execute called 信息: Completed executing action at state <finish> 信息: Waiting for completion of background operations 信息: Completed background operations 信息: Waiting for completion of background operations 信息: Completed background operations 信息: Moved to state <finish> 信息: Waiting for completion of background operations 信息: Completed background operations 信息: Validating state <finish> 警告: Validation disabled for the state finish 信息: Completed validating state <finish> 信息: Terminating all background operations 信息: Terminated all background operations 信息: Successfully executed the flow in SILENT mode 信息: Dispose the current Session instance 信息: Dispose the install area control object 信息: Update the state machine to STATE_CLEAN 信息: Finding the most appropriate exit status for the current application 信息: Exit Status is 0 信息: Shutdown Oracle Database 12c 发行版 2 安装程序
6.8.4 以root用户执行脚本
根据上述日志使用root用户执行脚本
以 root 用户身份执行 /usr/local/Oracle/Inventory/orainstRoot.sh 和 /usr/local/Oracle/Product/11.2.0/root.sh 脚本
- orainstRoot.sh 创建库存指针(/etc/oraInst.loc);将 Inventory(oraInventory) 目录的权限更改为770;并将 Inventory(oraInventory) 目录的组名更改为 oinstall 组;设置变量 ORACLE_OWNER = ;ORACLE_HOME =
- root.sh 创建 /etc/oratab 文件;设置 Oracle 用户的环境
- 更多的 orainstRoot.sh 和 root.sh 脚本信息请参阅 执行orainstRoot.sh和root.sh脚本的重要性是什么
[oracle@oracle12c ~]$ exit 登出 [root@oracle12c ~]# /Oracle/Inventory/orainstRoot.sh # 以 root 用户身份运行脚本:1 更改权限/Oracle/Inventory. 添加组的读取和写入权限。 删除全局的读取, 写入和执行权限。 更改组名/Oracle/Inventory 到 oinstall. 脚本的执行已完成。 [root@oracle12c ~]# /usr/local/Oracle/Product/11.2.0/root.sh # 以 root 用户身份运行脚本:2 Check /usr/local/Oracle/Product/11.2.0/install/root_oracle12c_2019-10-19_22-54-27-357824276.log for the output of root script
6.9 启动oracle net监听器
启动 Oracle Net 侦听器,使用相应文件运行 Net Configuration Assistant。 在 静默模式(silent mode)下,使用响应文件模板 netca.resp,该模板在 DVD 目录中的 database/response 中。关于 netca.rsp 模板文件以及启动方式请参阅 安装和配置Oracle数据库使用响应文件
[root@oracle12c ~]# su - oracle 上一次登录:六 10月 19 22:35:39 EDT 2019pts/1 上
# 启动 Oracle 侦听,以 /home/oracle/netca.rsp 模板文件静默模式启动 [oracle@oracle12c ~]$ netca /silent /responsefile ~oracle/netca.rsp 正在对命令行参数进行语法分析: 参数"silent" = true 参数"responsefile" = /home/oracle/netca.rsp 完成对命令行参数进行语法分析。 Oracle Net Services 配置: 完成概要文件配置。 Oracle Net 监听程序启动: 正在运行监听程序控制: /usr/local/Oracle/Product/11.2.0/bin/lsnrctl start LISTENER 监听程序控制完成。 监听程序已成功启动。 监听程序配置完成。 成功完成 Oracle Net Services 配置。退出代码是0 [oracle@oracle12c ~]$ lsnrctl start # 启动侦听器 LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 19-10月-2019 22:55:44 Copyright (c) 1991, 2016, Oracle. All rights reserved. TNS-01106: 使用名称LISTENER的监听程序已经启动 [oracle@oracle12c ~]$ lsnrctl status # 查看侦听状态 LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 19-10月-2019 22:55:50 Copyright (c) 1991, 2016, Oracle. All rights reserved. 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle12c)(PORT=1521))) LISTENER 的 STATUS ------------------------ 别名 LISTENER 版本 TNSLSNR for Linux: Version 12.2.0.1.0 - Production 启动日期 19-10月-2019 22:55:37 正常运行时间 0 天 0 小时 0 分 12 秒 跟踪级别 off 安全性 ON: Local OS Authentication SNMP OFF 监听程序参数文件 /usr/local/Oracle/Product/11.2.0/network/admin/listener.ora 监听程序日志文件 /usr/local/Oracle/diag/tnslsnr/oracle12c/listener/alert/log.xml 监听端点概要... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle12c)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) 监听程序不支持服务 命令执行成功
6.10 安装 Oracle 数据库 之 使用应答文件静默创建数据库
6.10.1配置相关参数
[oracle@oracle12c ~]$ hostip=`routel |grep host |grep -v '127.0.0' | awk '{ print $1 }'` [oracle@oracle12c ~]$ sed -i -e '/^OPERATION_TYPE/s#=.*$#= "createDatabase"#' ~oracle/dbca.rsp # 数据库动作类型:创建数据库 [oracle@oracle12c ~]$ sed -i -e '/^templateName/s#=.*$#=General_Purpose.dbc#' ~oracle/dbca.rsp # 使用 通用模板 创建数据库 [oracle@oracle12c ~]$ sed -i -e '/^gdbName/s#=.*$#='$ORACLE_GDBNAME'#' ~oracle/dbca.rsp # 设置全局数据库名 全局数据库名=数据库名+数据库域名 [oracle@oracle12c ~]$ sed -i -e '/^sid/s#=.*$#='$ORACLE_SID'#' ~oracle/dbca.rsp# 设置 Oracle 的 SID [oracle@oracle12c ~]$ [oracle@oracle12c ~]$ sed -i -e '/^createAsContainerDatabase/s#=.*$#=true#' ~oracle/dbca.rsp # 是否创建容器数据库 [oracle@oracle12c ~]$ sed -i -e '/^numberOfPDBs/s#=.*$#=1#' ~oracle/dbca.rsp # 创建容器数据库的数量,0-4096 可用 [oracle@oracle12c ~]$ sed -i -e '/^pdbName/s#=.*$#=orclpdb12c#' ~oracle/dbca.rsp # 容器数据库名称 [oracle@oracle12c ~]$ [oracle@oracle12c ~]$ sed -i -e '/^pdbAdminPassword/s#=.*$#=AdminPDB123#' ~oracle/dbca.rsp # 设定PDB的密码:AdminPDB123 [oracle@oracle12c ~]$ sed -i -e '/^sysPassword/s#=.*$#=AdminSys123#' ~oracle/dbca.rsp # 设置 SYS 密码 [oracle@oracle12c ~]$ sed -i -e '/^systemPassword/s#=.*$#=AdminSystem123#' ~oracle/dbca.rsp # 设置 system 密码 [oracle@oracle12c ~]$ sed -i -e '/^emConfiguration/s#=.*$#=DBEXPRESS#' ~oracle/dbca.rsp # 配置 EM 类型,类型可以有:CENTRAL|DBEXPRESS|BOTH|NON [oracle@oracle12c ~]$ sed -i -e '/^emExpressPort/s#=.*$#=5500#' ~oracle/dbca.rsp # 配置 EM 服务端口,默认端口为 5500,端口范围 500到5599 [oracle@oracle12c ~]$ sed -i -e '/^dbsnmpPassword/s#=.*$#=AdminDbsnmp123#' ~oracle/dbca.rsp # 配置 dbsnmpPassword 密码 [oracle@oracle12c ~]$ [oracle@oracle12c ~]$ sed -i -e '/^datafileDestination/s#=.*$#='$ORACLE_DATA'#' ~oracle/dbca.rsp # oradata 目录 [oracle@oracle12c ~]$ sed -i -e '/^recoveryAreaDestination/s#=.*$#='$ORACLE_RECOVER'#' ~oracle/dbca.rsp # flash_recovery_area 目录 [oracle@oracle12c ~]$ [oracle@oracle12c ~]$ sed -i -e '/^characterSet/s#=.*$#=AL32UTF8#' ~oracle/dbca.rsp # 数据库字符集,使用通用字符集。 [oracle@oracle12c ~]$ sed -i -e '/^nationalCharacterSet/s#=.*$#=AL16UTF16#' ~oracle/dbca.rsp # 国家字符集 [oracle@oracle12c ~]$ sed -i -e '/^listeners/s#=.*$#=LISTENER#' ~oracle/dbca.rsp # 注册数据库的监听器列表 [oracle@oracle12c ~]$ sed -i -e '/^sampleSchema/s#=.*$#=false#' ~oracle/dbca.rsp # 是否向数据库添加示例模式 [oracle@oracle12c ~]$ [oracle@oracle12c ~]$ sed -i -e '/^automaticMemoryManagement/s#=.*$#=false#' ~oracle/dbca.rsp # 是否启用(自动内存管理) [oracle@oracle12c ~]$ sed -i -e '/^totalMemory/s#=.*$#=4096#' ~oracle/dbca.rsp #分配给Oracle的总内存(以MB为单位) [oracle@oracle12c ~]$ #sed -i -e '/^emConfiguration/s#=.*$#=DBEXPRESS#' ~oracle/dbca.rsp # 配置 EM 类型,类型可以有:CENTRAL|DBEXPRESS|BOTH|NONE [oracle@oracle12c ~]$ #sed -i -e '/^omsHost/s#=.*$#='$hostip'#' ~oracle/dbca.rsp # 配置 EM 登入主机地 [oracle@oracle12c ~]$ #sed -i -e '/^omsPort/s#=.*$#=1158#' ~oracle/dbca.rsp # 配置 OMS 端口号 [oracle@oracle12c ~]$ #sed -i -e '/^emUser/s#=.*$#=sys#' ~oracle/dbca.rsp # 配置 EM 登入用户名 [oracle@oracle12c ~]$ #sed -i -e '/^omsUser/s#=.*$#=sys#' ~oracle/dbca.rsp # 配置 OMS 用户名 [oracle@oracle12c ~]$ #sed -i -e '/^dbsnmpPassword/s#=.*$#=AdminDbsnmp123#' ~oracle/dbca.rsp # 配置 dbsnmpPassword 密码 [oracle@oracle12c ~]$ #sed -i -e '/^emPassword/s#=.*$#=#' ~oracle/dbca.rsp # 配置 OMS 密码
6.10.2 安装
使用 Database Configuration Assistant (DBCA) 来创建数据库,DBCA 是一种自动化的方法,DBCA 支持(静默/交互)两种模式来创建数据库。有关使用 DBCA 的(silent mode)静默模式的详细信息,请参阅:静默模式的数据库配置助手命令参考
[oracle@oracle12c ~]$ dbca -silent -createDatabase -responseFile ~oracle/dbca.rsp 复制数据库文件 1%已完成 13%已完成 25%已完成 正在创建并启动 Oracle 实例 26%已完成 30%已完成 31%已完成 35%已完成 38%已完成 39%已完成 41%已完成 正在进行数据库创建 42%已完成 43%已完成 44%已完成 46%已完成 47%已完成 50%已完成 正在创建插接式数据库 55%已完成 75%已完成 执行配置后操作 100%已完成 有关详细信息, 请参阅日志文件 "/usr/local/Oracle/cfgtoollogs/dbca/orcl11g/orcl11g.log"。
6.11 查看数据库监听状态,并尝试登陆数据库
查看数据库侦听状态,并使用 as sysdba 登入数据库测试
[oracle@oracle12c ~]$ sqlplus / as sysdba SQL*Plus: Release 12.2.0.1.0 Production on 星期六 10月 19 23:10:19 2019 Copyright (c) 1982, 2016, Oracle. All rights reserved. 连接到: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production SQL> show user ' USER 为 "SYS" SP2-0158: 未知的 SHOW 选项 "" SQL> show user SP2-0734: 未知的命令开头 "show..." - 忽略了剩余的行。 SQL> show user; SP2-0734: 未知的命令开头 "show..." - 忽略了剩余的行。 SQL> show databeases; SP2-0735: 未知的 SHOW 选项开头 "databeas..." SQL> conn / as sysdba 已连接。 SQL> show user USER 为 "SYS"
6.12 配置oracle systemd的守护服务
[oracle@oracle12c ~]$ exit 登出 [root@oracle12c ~]# sed -i -e "s@^orcl:$ORACLE_HOME:N@orcl:$ORACLE_HOME:Y@" /etc/oratab # 允许 Oracle 的 SID 为Y cat >/usr/lib/systemd/system/oracle.service <<EOF # /etc/systemd/system/oracle-rdbms.service # Invoking Oracle scripts to start/shutdown Instances defined in /etc/oratab # and starts Listener [Unit] Description=Oracle Database(s) and Listener Requires=network.target [Service] Type=forking Restart=no ExecStart=$ORACLE_HOME/bin/dbstart $ORACLE_HOME ExecStop=$ORACLE_HOME/bin/dbshut $ORACLE_HOME User=oracle [Install] WantedBy=multi-user.target EOF [root@oracle12c ~]# systemctl enable oracle && systemctl restart oracle # 将服务器设为开机自启 Created symlink from /etc/systemd/system/multi-user.target.wants/oracle.service to /usr/lib/systemd/system/oracle.service.
整个数据库安装成功
参考文献:
https://www.holoem.com/?p=1629
感谢作者的整理,整理的很全面,也很仔细,对于第一次结束oracle,同时需要安装部署的话,帮助很大,本文也是根据原作者的文档,一步一步整理验证的,辛苦原作者!