一 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 (该邮件地址已受到反垃圾邮件插件保护。要显示它需要在浏览器中启用 JavaScript。) (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 状态
知识兔