<?xml version="1.0" encoding="utf-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><title>运维派</title><link>https://ywpie.com/</link><description>专注运维与数据库技术分享</description><item><title>CentOS7系统下 Tomcat 安装指南</title><link>https://ywpie.com/post/89.html</link><description>&lt;p class=&quot;font-claude-response-body break-words whitespace-normal&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2 style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;一、Tomcat 介绍&lt;/span&gt;&lt;/h2&gt;&lt;p class=&quot;font-claude-response-body break-words whitespace-normal&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;Tomcat 是 Apache 基金会下的一个开源 Servlet 容器，用于运行 Java 编写的 Web 程序。相比 WebLogic、WebSphere 这类重量级应用服务器，Tomcat 更轻量、配置简单、上手快，是目前更为常用的 Java Web 容器之一。Tomcat 和 JDK 之间也存在明确的版本对应关系，并不是任意组合都能正常运行：&lt;/span&gt;&lt;/p&gt;&lt;ul class=&quot;[li_&amp;amp;]:mb-0 [li_&amp;amp;]:mt-1 [li_&amp;amp;]:gap-1 [&amp;amp;:not(:last-child)_ul]:pb-1 [&amp;amp;:not(:last-child)_ol]:pb-1 list-disc flex flex-col gap-1 pl-8 mb-3 list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;strong&gt;Tomcat 9.x&lt;/strong&gt;：最低要求 JDK 8，是目前唯一还在支持 JDK 8 环境的主线版本，官方支持周期延长至 2027 年3月&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;strong&gt;Tomcat 10.1.x&lt;/strong&gt;：最低要求 JDK 11，采用 Jakarta EE 9 规范&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;strong&gt;Tomcat 11.x&lt;/strong&gt;：最低要求 JDK 17，采用 Jakarta EE 10/11 规范，是当前最新的主线版本&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;font-claude-response-body break-words whitespace-normal&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;strong&gt;JDK 版本决定了 Tomcat 版本的选择上限&lt;/strong&gt;，如果系统使用的是 JDK 8，那么就只能选择 Tomcat 9.x 系列；如果计划升级到 Tomcat 10/11，也必须先把 JDK 一并升级到 11 或 17 以上。因此在做选型时，要把 JDK 和 Tomcat 作为一个整体版本组合来考虑&lt;/span&gt;&lt;/p&gt;&lt;h2&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;二、Tomcat 安装部署&lt;/span&gt;&lt;/h2&gt;&lt;h3&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;1、下载Tomcat&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;由于操作系统上JDK版本为8，所以这里下载的是Tomcat 9.x，官方下载地址是https://tomcat.apache.org/download-90.cgi&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;wget&amp;nbsp;https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.120/bin/apache-tomcat-9.0.120.tar.gz&amp;nbsp;
tar&amp;nbsp;zxf&amp;nbsp;apache-tomcat-9.0.120.tar.gz
mv&amp;nbsp;apache-tomcat-9.0.120&amp;nbsp;/usr/local/
ln&amp;nbsp;-s&amp;nbsp;/usr/local/apache-tomcat-9.0.120&amp;nbsp;/usr/local/tomcat&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;h3&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;2、&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;Tomcat目录结构说明&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://ywpie.com/zb_users/upload/2026/07/202607171784273922826448.png&quot; title=&quot;tomcat.png&quot; alt=&quot;tomcat.png&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;bin：&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;存放启动脚本和相关java文件，其中 catalina.sh 用于启动/停止tomcat&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;conf：&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;存放配置文件，server.xml 是主配置文件，tomcat-users.xml 用于配置管理账号&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;lib：&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;库文件目录&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;logs：&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;日志文件目录&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;temp：&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;临时文件目录&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;work：&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;程序工作目录&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;webapps：&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;应用程序部署目录，webapps/ROOT 是默认站点的根目录&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;h3&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;3、配置Tomcat环境变量&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;Tomcat 运行时需要检查 CATALINA_HOME 环境变量，需要提前好该变量才能通过脚本启动服务&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;cat&amp;nbsp;&amp;gt;&amp;nbsp;/etc/profile.d/tomcat.sh&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;&amp;#39;EOF&amp;#39;
export&amp;nbsp;CATALINA_HOME=/usr/local/tomcat
export&amp;nbsp;PATH=$CATALINA_HOME/bin:$PATH
EOF

source&amp;nbsp;/etc/profile.d/tomcat.sh&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;h3&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;4、启动tomcat&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;通过 catalina.sh 脚本启动Tomcat服务，默认监听端口为8080。如果启动后发现端口没有监听，可以改用 catalina.sh run 前台运行，会在当前终端窗口打印出详细日志方便排查问题&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;/usr/local/tomcat/bin/catalina.sh&amp;nbsp;start&lt;/pre&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://ywpie.com/zb_users/upload/2026/07/202607171784274348451585.png&quot; title=&quot;tomcat2.png&quot; alt=&quot;tomcat2.png&quot;/&gt;&lt;/p&gt;&lt;h3&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;5、验证&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;使用浏览器访问Tomcat，默认首页右侧可以看到 Server Status、Manager App、Host Manager 三个入口，但是此时还无法访问，还需要放行网络和配置账号才行&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://ywpie.com/zb_users/upload/2026/07/202607171784274469550578.png&quot; title=&quot;tomcat3.png&quot; alt=&quot;tomcat3.png&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;6、配置访问权限&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;由于&amp;nbsp;Tomcat 默认在 webapps/manager 和 webapps/host-manager 里配置了IP白名单限制，只允许本机（127.0.0.1）访问。所以Server Status、Manager App、Host Manager 等模块都是无法访问的，会提示403错误，这里需要修改配置文件放开IP&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;[root@v1&amp;nbsp;tomcat]#&amp;nbsp;cat&amp;nbsp;$CATALINA_HOME/webapps/manager/META-INF/context.xml
&amp;lt;?xml&amp;nbsp;version=&amp;quot;1.0&amp;quot;&amp;nbsp;encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;
&amp;lt;Context&amp;nbsp;antiResourceLocking=&amp;quot;false&amp;quot;&amp;nbsp;privileged=&amp;quot;true&amp;quot;&amp;nbsp;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;CookieProcessor&amp;nbsp;className=&amp;quot;org.apache.tomcat.util.http.Rfc6265CookieProcessor&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sameSiteCookies=&amp;quot;strict&amp;quot;&amp;nbsp;/&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;Valve&amp;nbsp;className=&amp;quot;org.apache.catalina.valves.RemoteCIDRValve&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;allow=&amp;quot;127.0.0.0/8,::1/128,0.0.0.0/0&amp;quot;&amp;nbsp;/&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;Manager&amp;nbsp;sessionAttributeValueClassNameFilter=&amp;quot;java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap&amp;quot;/&amp;gt;
&amp;lt;/Context&amp;gt;


[root@v1&amp;nbsp;tomcat]#&amp;nbsp;cat&amp;nbsp;$CATALINA_HOME/webapps/host-manager/META-INF/context.xml
&amp;lt;?xml&amp;nbsp;version=&amp;quot;1.0&amp;quot;&amp;nbsp;encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;
&amp;lt;Context&amp;nbsp;antiResourceLocking=&amp;quot;false&amp;quot;&amp;nbsp;privileged=&amp;quot;true&amp;quot;&amp;nbsp;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;CookieProcessor&amp;nbsp;className=&amp;quot;org.apache.tomcat.util.http.Rfc6265CookieProcessor&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sameSiteCookies=&amp;quot;strict&amp;quot;&amp;nbsp;/&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;Valve&amp;nbsp;className=&amp;quot;org.apache.catalina.valves.RemoteCIDRValve&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;allow=&amp;quot;127.0.0.0/8,::1/128,0.0.0.0/0&amp;quot;&amp;nbsp;/&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;Manager&amp;nbsp;sessionAttributeValueClassNameFilter=&amp;quot;java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap&amp;quot;/&amp;gt;
&amp;lt;/Context&amp;gt;&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;重启服务&lt;span style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;$CATALINA_HOME/bin/shutdown.sh
$CATALINA_HOME/bin/startup.sh&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;h3&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;7、配置管理账号&lt;br/&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;font-claude-response-body break-words whitespace-normal&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;其实访问 Tomcat 首页并点击&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;Server Status、Manager App、Host Manager 模块会弹出一个登录框，但是&lt;/span&gt;出于安全考虑，在完成安装后是没有进行任何用户配置的，也就是说此时没有用户可以登录进去，需要自行手动配置管理员账号&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;cat&amp;nbsp;$CATALINA_HOME/conf/tomcat-users.xml
&amp;lt;?xml&amp;nbsp;version=&amp;quot;1.0&amp;quot;&amp;nbsp;encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;
&amp;lt;tomcat-users&amp;nbsp;xmlns=&amp;quot;http://tomcat.apache.org/xml&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xsi:schemaLocation=&amp;quot;http://tomcat.apache.org/xml&amp;nbsp;tomcat-users.xsd&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;version=&amp;quot;1.0&amp;quot;&amp;gt;
#&amp;nbsp;在&amp;lt;/tomcat-users&amp;gt;&amp;nbsp;结束标签之前加入下面的信息
#&amp;nbsp;manager-gui对应Manager&amp;nbsp;App（含&amp;nbsp;Server&amp;nbsp;Status）；admin-gui&amp;nbsp;对应&amp;nbsp;Host&amp;nbsp;Manager，两个都要授权给同一个用户，才能两个入口都能登录
&amp;lt;role&amp;nbsp;rolename=&amp;quot;manager-gui&amp;quot;/&amp;gt;
&amp;lt;role&amp;nbsp;rolename=&amp;quot;admin-gui&amp;quot;/&amp;gt;
&amp;lt;user&amp;nbsp;username=&amp;quot;admin&amp;quot;&amp;nbsp;password=&amp;quot;123456&amp;quot;&amp;nbsp;roles=&amp;quot;manager-gui,admin-gui&amp;quot;/&amp;gt;
&amp;lt;/tomcat-users&amp;gt;&lt;/pre&gt;&lt;p class=&quot;font-claude-response-body break-words whitespace-normal&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;重启服务&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;$CATALINA_HOME/bin/shutdown.sh
$CATALINA_HOME/bin/startup.sh&lt;/pre&gt;&lt;p class=&quot;font-claude-response-body break-words whitespace-normal&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://ywpie.com/zb_users/upload/2026/07/202607171784276165632072.png&quot; title=&quot;tomcat4.png&quot; alt=&quot;tomcat4.png&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;8、部署应用程序&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;Tomcat整个服务正常后，后续只需要把Java程序的war包上传到webapps目录即可，Tomcat 会自动监控该目录，如果检测到新的war包就会自动解压部署，如这里上传了一个myapp.war的包&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;cp&amp;nbsp;myapp.war&amp;nbsp;$CATALINA_HOME/webapps/&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;几秒钟后 Tomcat 会自动解压出一个 ./myapp&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;同名目录&lt;/span&gt;，可以通过 logs/catalina.out 观察部署过程，如果看到类似 Deployment of web application archive [.../myapp.war] has finished 就说明部署成功了，&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;如果服务启动后出现各类错误也可以通过该日志进行排查&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;tail&amp;nbsp;-f&amp;nbsp;$CATALINA_HOME/logs/catalina.out&lt;/pre&gt;</description><pubDate>Fri, 17 Jul 2026 16:22:08 +0800</pubDate></item><item><title>CentOS7系统下 JAVA8 / JDK8 安装指南</title><link>https://ywpie.com/post/88.html</link><description>&lt;h2&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;一、&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;Java&lt;/span&gt;版本与JDK介绍&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;Java&lt;/span&gt; 根据应用领域不同，分为 Java SE、Java EE、Java ME 三类（早期也称 J2SE、J2EE、J2ME，Java 5 之后官方统一改用现名），三者区别如下：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;· Java SE：&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;JAVA 标准版，主要为中小型应用提供类库，也是使用最广泛的版本&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;· Java EE：&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;JAVA 企业版&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;·&amp;nbsp;&lt;/span&gt;Java ME&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;：JAVA 移动版，用于手持设备上的应用程序&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;JDK（Java Development Kit）是 JAVA 的开发工具包，包含了 JRE（Java Runtime Environment，JAVA运行环境）以及编译器（javac）、调试器（jdb）等开发工具。运行 JAVA 程序只需要 JRE，但要实现开发、编译程序需要 JDK的支持。&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;Java&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;在 1.0 到 1.4 期间，都采用 1.x 这样的命名方式 ，从 Java 5 开始改为了 Java 5，但内部版本号其实还是1.5，一直延续到 Java 8，所以经常会有两种叫法混用的情况，只需要知道 Java 8 \ JDK 8 \ Java 1.8说的都是同一个东西即可。由于 JDK 8因为生态好、功能完善、维护时间久，目前仍有大量使用，所以本文以该版本为例进行说明&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;二、JDK的安装&lt;/span&gt;&lt;/h2&gt;&lt;h3&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;1、下载 JDK&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;通过Oracle官方网站（https://www.oracle.com/java/technologies/downloads/#java8）选择与操作系统匹配的安装包，安装包分了不同类型，按需下载即可&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://ywpie.com/zb_users/upload/2026/07/202607171784270954384659.png&quot; title=&quot;JDK.png&quot; alt=&quot;JDK.png&quot;/&gt;&lt;/p&gt;&lt;h3 style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;2、安装 JDK&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;根据下载的安装包选择对应的安装方式&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;·&amp;nbsp; 使用RPM包安装&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;安装完成后会在 /usr/java 下生成一系列目录和文件，下面&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;两种方式任选一种即可，不需要都执行&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#&amp;nbsp;用yum安装本地rpm包
yum&amp;nbsp;localinstall&amp;nbsp;./jdk-8u77-linux-x64.rpm

#&amp;nbsp;或者直接用rpm命令安装
rpm&amp;nbsp;-ivh&amp;nbsp;jdk-8u77-linux-x64.rpm&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;· 使用二进制包安装&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;解压二进制包&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;tar&amp;nbsp;zxf&amp;nbsp;jdk-8u491-linux-x64.tar.gz
mv&amp;nbsp;jdk1.8.0_491&amp;nbsp;/usr/local/
ln&amp;nbsp;-s&amp;nbsp;/usr/local/jdk1.8.0_491&amp;nbsp;/usr/local/jdk&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;配置环境变量&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;vi&amp;nbsp;/etc/profile
#追加以下内容，PATH&amp;nbsp;是可执行文件的搜索路径，CLASSPATH&amp;nbsp;是&amp;nbsp;JAVA&amp;nbsp;类文件的查找路径，两者用途不同，不要把&amp;nbsp;CLASSPATH&amp;nbsp;拼接进&amp;nbsp;PATH&amp;nbsp;中，应分开设置。
export&amp;nbsp;JAVA_HOME=/usr/local/jdk
export&amp;nbsp;CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export&amp;nbsp;PATH=$JAVA_HOME/bin:$PATH&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;生效环境变量并验证&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-actionscript&quot;&gt;source&amp;nbsp;/etc/profile

java&amp;nbsp;-version&amp;nbsp;&amp;nbsp;#能正常显示版本号即完成
java&amp;nbsp;version&amp;nbsp;&amp;quot;1.8.0_491&amp;quot;
Java(TM)&amp;nbsp;SE&amp;nbsp;Runtime&amp;nbsp;Environment&amp;nbsp;(build&amp;nbsp;1.8.0_491-b10)
Java&amp;nbsp;HotSpot(TM)&amp;nbsp;64-Bit&amp;nbsp;Server&amp;nbsp;VM&amp;nbsp;(build&amp;nbsp;25.491-b10,&amp;nbsp;mixed&amp;nbsp;mode)&lt;/pre&gt;</description><pubDate>Fri, 17 Jul 2026 15:11:33 +0800</pubDate></item><item><title>达梦数据库教程（16）审计规则介绍与配置</title><link>https://ywpie.com/post/86.html</link><description>&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2 style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;一、达梦数据库审计功能介绍&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;数据库审计功能的主要作用是对数据的操作进行记录，比如谁在什么时间、通过什么IP、执行了什么SQL。只有当配置了合理的审计规则后，才能对&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;异常&lt;/span&gt;数据（&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;如数据不知道为什么被删除或修改&lt;/span&gt;）进行追溯。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;达梦数据库采用三权分立设计，&lt;span style=&quot;text-wrap-mode: wrap; font-size: 16px;&quot;&gt;必须需要专门的审计账号&amp;nbsp;SYSAUDITOR 才能进行审计配置（&lt;/span&gt;SYSDBA 账号也没有权限&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;）&lt;/span&gt;。SYSAUDITOR 账号在完成数据库安装后会默认创建，默认密码&amp;nbsp;SYSAUDITOR&lt;/span&gt;&lt;/p&gt;&lt;h2&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;二、达梦数据库审计配置&lt;/span&gt;&lt;/h2&gt;&lt;h3&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;1、开启审计功能&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;DM8 的审计功能默认是关闭的，需登录 SYSAUDITOR 账号开启。达梦数据库的审计分为普通审计和实时检测，实时检测比较少用，主要&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;用于安全防护，可在操作发生时自动告警、断开连接甚至锁账号&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;--&amp;nbsp;开启普通审计，默认0为关闭审计；1为开启普通审计；2为开启普通审计&amp;nbsp;+&amp;nbsp;实时检测
SP_SET_ENABLE_AUDIT(1);

--&amp;nbsp;验证是否生效
SELECT&amp;nbsp;*&amp;nbsp;FROM&amp;nbsp;V$DM_INI&amp;nbsp;WHERE&amp;nbsp;PARA_NAME&amp;nbsp;=&amp;nbsp;&amp;#39;ENABLE_AUDIT&amp;#39;;&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;2、审计规则配置&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;达梦数据库支持三个级别的审计规则，从粗到细依次为系统级、语句级、对象级。&lt;/span&gt;&lt;/p&gt;&lt;h4&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;2.1 系统级审计&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;审计功能开启后自动生效，无需额外配置，审计内容包含数据库启停、参数修改、主备日志传输故障等系统事件&lt;/span&gt;&lt;/p&gt;&lt;h4&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;2.2 语句级审计&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;针对某类 SQL 操作进行审计，全局生效，适合需要全实例覆盖的场景&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;&lt;p&gt;-- 语法规则&lt;br/&gt;-- SP_AUDIT_STMT(&amp;#39;审计选项&amp;#39;, &amp;#39;用户名&amp;#39;, &amp;#39;ALL/SUCCESSFUL/FAIL&amp;#39;); &amp;nbsp; &amp;nbsp;如果不限定用户，第二个参数应该传字符串 &amp;#39;NULL&amp;#39;，而不是真正的 NULL&lt;br/&gt;&lt;br/&gt;-- 审计所有用户的登录登出&lt;br/&gt;SP_AUDIT_STMT(&amp;#39;CONNECT&amp;#39;, &amp;#39;NULL&amp;#39;, &amp;#39;ALL&amp;#39;);&lt;br/&gt;&lt;br/&gt;-- 审计所有用户的 DML 操作&lt;br/&gt;SP_AUDIT_STMT(&amp;#39;INSERT TABLE&amp;#39;, &amp;#39;NULL&amp;#39;, &amp;#39;ALL&amp;#39;);&lt;br/&gt;SP_AUDIT_STMT(&amp;#39;UPDATE TABLE&amp;#39;, &amp;#39;NULL&amp;#39;, &amp;#39;ALL&amp;#39;);&lt;br/&gt;SP_AUDIT_STMT(&amp;#39;DELETE TABLE&amp;#39;, &amp;#39;NULL&amp;#39;, &amp;#39;ALL&amp;#39;);&lt;br/&gt;&lt;br/&gt;-- 审计所有用户的 DDL 操作&lt;br/&gt;SP_AUDIT_STMT(&amp;#39;TABLE&amp;#39;, &amp;#39;NULL&amp;#39;, &amp;#39;ALL&amp;#39;);&lt;br/&gt;&lt;br/&gt;-- 审计某个用户的操作&lt;br/&gt;SP_AUDIT_STMT(&amp;#39;UPDATE TABLE&amp;#39;, &amp;#39;APPUSER&amp;#39;, &amp;#39;ALL&amp;#39;);&lt;br/&gt;-- 取消审计，参数必须与设置时完全一致才能取消&lt;br/&gt;SP_NOAUDIT_STMT(&amp;#39;INSERT TABLE&amp;#39;, &amp;#39;NULL&amp;#39;, &amp;#39;ALL&amp;#39;);&lt;/p&gt;&lt;/pre&gt;&lt;h4&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;2.3 对象级审计&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;精确到具体的表、视图或存储过程，可进一步细化到列级别，适合对核心业务表做重点审计&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;--&amp;nbsp;语法规则
--&amp;nbsp;SP_AUDIT_OBJECT(&amp;#39;操作&amp;#39;,&amp;nbsp;&amp;#39;用户&amp;#39;,&amp;nbsp;&amp;#39;模式&amp;#39;,&amp;nbsp;&amp;#39;对象名&amp;#39;,&amp;nbsp;&amp;#39;时机&amp;#39;);
--&amp;nbsp;SP_AUDIT_OBJECT(&amp;#39;操作&amp;#39;,&amp;nbsp;&amp;#39;用户&amp;#39;,&amp;nbsp;&amp;#39;模式&amp;#39;,&amp;nbsp;&amp;#39;对象名&amp;#39;,&amp;nbsp;&amp;#39;列名&amp;#39;,&amp;nbsp;&amp;#39;时机&amp;#39;);

--&amp;nbsp;审计所有人对&amp;nbsp;HR.SALARY&amp;nbsp;表的&amp;nbsp;INSERT&amp;nbsp;和&amp;nbsp;UPDATE
SP_AUDIT_OBJECT(&amp;#39;INSERT&amp;#39;,&amp;nbsp;&amp;#39;NULL&amp;#39;,&amp;nbsp;&amp;#39;HR&amp;#39;,&amp;nbsp;&amp;#39;SALARY&amp;#39;,&amp;nbsp;&amp;#39;ALL&amp;#39;);
SP_AUDIT_OBJECT(&amp;#39;UPDATE&amp;#39;,&amp;nbsp;&amp;#39;NULL&amp;#39;,&amp;nbsp;&amp;#39;HR&amp;#39;,&amp;nbsp;&amp;#39;SALARY&amp;#39;,&amp;nbsp;&amp;#39;ALL&amp;#39;);

--&amp;nbsp;只审计&amp;nbsp;AMOUNT&amp;nbsp;列的修改
SP_AUDIT_OBJECT(&amp;#39;UPDATE&amp;#39;,&amp;nbsp;&amp;#39;NULL&amp;#39;,&amp;nbsp;&amp;#39;HR&amp;#39;,&amp;nbsp;&amp;#39;SALARY&amp;#39;,&amp;nbsp;&amp;#39;AMOUNT&amp;#39;,&amp;nbsp;&amp;#39;ALL&amp;#39;);

--&amp;nbsp;取消对象级审计（参数同样需完全匹配）
SP_NOAUDIT_OBJECT(&amp;#39;INSERT&amp;#39;,&amp;nbsp;&amp;#39;NULL&amp;#39;,&amp;nbsp;&amp;#39;HR&amp;#39;,&amp;nbsp;&amp;#39;SALARY&amp;#39;,&amp;nbsp;&amp;#39;ALL&amp;#39;);&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;3、审计日志管理&lt;/span&gt;&lt;/h3&gt;&lt;h4&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;3.1 审计日志存放路径&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;默认存放在数据目录中，文件命名格式为 AUDIT_&amp;lt;GUID&amp;gt;_&amp;lt;创建时间&amp;gt;.log&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;--&amp;nbsp;查看审计文件实际存放路径
SELECT&amp;nbsp;AUD_PATH&amp;nbsp;FROM&amp;nbsp;V$AUDIT_SPACE;

--&amp;nbsp;查看所有审计文件列表
SELECT&amp;nbsp;FILEPATH,&amp;nbsp;BEGIN_TIME,&amp;nbsp;LENGTH/1024/1024&amp;nbsp;AS&amp;nbsp;SIZE_MB,&amp;nbsp;IS_FULL&amp;nbsp;FROM&amp;nbsp;V$AUDIT_FILE&amp;nbsp;ORDER&amp;nbsp;BY&amp;nbsp;BEGIN_TIME&amp;nbsp;DESC;&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;如需自定义日志存放路径，修改 dm.ini&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#&amp;nbsp;静态参数，修改后需重启
AUD_PATH&amp;nbsp;=&amp;nbsp;/data/dm_audit&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;h4&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;3.2 审计日志相关参数配置&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;以下参数都在dm.ini中进行配置，部分静态参数需要重启数据库生效&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;· AUD_PATH&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;：审计文件存放路径&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;·&amp;nbsp;&lt;/span&gt;AUDIT_MAX_FILE_SIZE&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;： 单个审计日志的最大大小，单位为MB&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;--&amp;nbsp;调整单个审计文件的大小为&amp;nbsp;500MB
SP_SET_PARA_VALUE(1,&amp;nbsp;&amp;#39;AUDIT_MAX_FILE_SIZE&amp;#39;,&amp;nbsp;500);&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;·&amp;nbsp;&lt;/span&gt;AUDIT_SPACE_LIMIT&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;：审计日志可以占用的最大磁盘空间，单位为MB，0表示不限制&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;--&amp;nbsp;查看当前审计空间用量
SELECT&amp;nbsp;AUD_PATH,&amp;nbsp;AUDIT_MAX_FILE_SIZE,&amp;nbsp;AUD_SPACE_LIMIT,AUD_SPACE_FREE,&amp;nbsp;AUDIT_IS_NORMAL&amp;nbsp;FROM&amp;nbsp;V$AUDIT_SPACE;&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;·&amp;nbsp;&lt;/span&gt;AUDIT_KEEP_DAYS&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;：审计文件最小保留天数，如果配置了具体天数，优先级大于&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;AUDIT_SPACE_LIMIT，&lt;/span&gt;即达到审计文件总存储空间大小的限制也不会删除在指定保留天数内的审计日志&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;·&amp;nbsp;&lt;/span&gt;AUDIT_FILE_FULL_MODE&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;：磁盘不足时对审计日志的处理策略，&lt;/span&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;1=当审计文件创建失败时发生阻塞；&lt;/span&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;2=审计文件创建失败时不再审计；&lt;/span&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;3=先尝试删除符合条件的审计文件，如果删除后还是创建失败则不再审计&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;h4&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;3.3 清理与切换审计日志&lt;/span&gt;&lt;/h4&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;--&amp;nbsp;删除指定时间点前的审计文件，受&amp;nbsp;AUDIT_KEEP_DAYS&amp;nbsp;保护的文件不会被删除
SP_DROP_AUDIT_FILE(&amp;#39;2026-07-01&amp;nbsp;00:00:00&amp;#39;,0);

--&amp;nbsp;手动切换审计文件（生成新文件），1=切换普通审计文件，2=同时切换普通+实时审计文件
SP_SWITCH_AUDIT_FILE(1);&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;h4&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;3.4 查看审计记录&lt;/span&gt;&lt;/h4&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;--&amp;nbsp;查看最近的审计记录
SELECT&amp;nbsp;USERNAME,&amp;nbsp;OPERATION,&amp;nbsp;SCHNAME,&amp;nbsp;OBJNAME,SQL_TEXT,&amp;nbsp;SUCC_FLAG,&amp;nbsp;OPTIME,&amp;nbsp;IP
FROM&amp;nbsp;SYSAUDITOR.V$AUDITRECORDS
ORDER&amp;nbsp;BY&amp;nbsp;OPTIME&amp;nbsp;DESC;

--&amp;nbsp;按用户过滤
SELECT&amp;nbsp;USERNAME,&amp;nbsp;OPERATION,&amp;nbsp;SQL_TEXT,&amp;nbsp;OPTIME
FROM&amp;nbsp;SYSAUDITOR.V$AUDITRECORDS
WHERE&amp;nbsp;USERNAME&amp;nbsp;=&amp;nbsp;&amp;#39;APPUSER&amp;#39;
ORDER&amp;nbsp;BY&amp;nbsp;OPTIME&amp;nbsp;DESC;&lt;/pre&gt;</description><pubDate>Thu, 09 Jul 2026 15:19:29 +0800</pubDate></item><item><title>Oracle教程（6）SGA\PGA\REDO核心参数调优</title><link>https://ywpie.com/post/82.html</link><description>&lt;h2&gt;&lt;strong style=&quot;font-size: 14px;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;一、Oracle核心参数介绍&lt;/span&gt;&lt;/strong&gt;&lt;/h2&gt;&lt;h3&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;1、SGA&lt;/span&gt;&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;SGA（System Global Area）是 Oracle 实例启动时分配的共享内存区域，所有连接到该实例的会话都共用这块内存，&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;是整个数据库实例对外提供服务的公共内存池&lt;/span&gt;（和&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;&amp;nbsp;MySQL的 InnoDB Buffer Pool 类似&lt;/span&gt;）。SGA主要包含以下部分：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;· Shared Pool：用于缓存 SQL 解析结果、执行计划和数据字典信息&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;· Buffer Cache：用于缓存数据块，减少物理读&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;·&amp;nbsp;&lt;/span&gt;Redo Log Buffer：用于临时存放尚未写入磁盘的重做日志条目。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;Oracle 的 SGA 是集合体，而 MySQL 的内存管理相对分散，Buffer Pool、Sort Buffer、Join Buffer 等是各自独立配置的参数，没有一个统一的实例级共享内存区概念&lt;/span&gt;&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;2、PGA&lt;/span&gt;&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;PGA（Program Global Area）是 Oracle 实例中每个进程或会话所私有的内存区域，每个区域不与其他会话共享。主要用于排序操作、哈希连接等需要临时空间的操作。当一个会话 ORDER BY、GROUP BY 或者大表之间的 HASH JOIN 时，如果数据量超过 PGA 能提供的内存上限，就会发生排序溢出到磁盘，导致性能下降。在&amp;nbsp;MySQL 中与之对应的是每个连接独立分配的 sort_buffer_size、join_buffer_size、tmp_table_size 等参数。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3 style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;3、&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;REDO LOG&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;在 Oracle 中 REDO LOG 和 MySQL 一样都是通过重做日志记录数据库所有数据变更操作的&amp;quot;重放记录&amp;quot;，这样可以在实例崩溃后，通过 Redo Log 可以把数据恢复到崩溃前的状态，保证事务的持久性。在 MySQL 中 REDO LOG 是循环覆盖写入的，而 Oracle 采用多个日志组循环写入的机制，当一个日志组写满后会触发日志切换（log switch），同时触发增量检查点（checkpoint），把脏数据写回数据文件。如果日志组设置过小，会导致切换过于频繁，对性能造成明显影响。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;Oracle 的 &lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;REDO LOG&lt;/span&gt; 搭配归档日志（&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;归档日志是 Redo Log 切换后被复制保存的历史副本&lt;/span&gt;）来实现时间点恢复，也就是说 Oracle 用 &lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;REDO LOG&lt;/span&gt; 兼顾实例恢复和时间点恢复两个目的，而 MySQL 把这两个职责拆成了 &lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;REDO LOG&amp;nbsp;&lt;/span&gt;（实例恢复）和 Binlog（时间点恢复、主从复制）两套独立的日志系统。&lt;/span&gt;&lt;/p&gt;&lt;h2&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;二、Oracle内存管理方式介绍&lt;/span&gt;&lt;/strong&gt;&lt;/h2&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;Oracle 提供了三种内存管理方式&lt;/span&gt;&lt;/p&gt;&lt;table align=&quot;center&quot; interlaced=&quot;enabled&quot;&gt;&lt;tbody&gt;&lt;tr class=&quot;ue-table-interlace-color-single firstRow&quot;&gt;&lt;td width=&quot;306&quot; valign=&quot;middle&quot; align=&quot;center&quot; style=&quot;word-break: break-all;&quot;&gt;&lt;strong&gt;管理方式&lt;/strong&gt;&lt;/td&gt;&lt;td width=&quot;306&quot; valign=&quot;middle&quot; align=&quot;center&quot; style=&quot;word-break: break-all;&quot;&gt;&lt;strong&gt;关键参数&lt;/strong&gt;&lt;/td&gt;&lt;td width=&quot;306&quot; valign=&quot;middle&quot; align=&quot;center&quot; style=&quot;word-break: break-all;&quot;&gt;&lt;strong&gt;适用场景&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;ue-table-interlace-color-double&quot;&gt;&lt;td width=&quot;306&quot; valign=&quot;middle&quot; align=&quot;center&quot; style=&quot;word-break: break-all;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;AMM自动内存管理&lt;/span&gt;&lt;/td&gt;&lt;td width=&quot;306&quot; valign=&quot;middle&quot; align=&quot;center&quot; style=&quot;word-break: break-all;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;MEMORY_TARGET&lt;/span&gt;&lt;/td&gt;&lt;td width=&quot;306&quot; valign=&quot;middle&quot; align=&quot;center&quot; style=&quot;word-break: break-all;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;background-color: #FF0000;&quot;&gt;不推荐&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;ue-table-interlace-color-single&quot;&gt;&lt;td width=&quot;306&quot; valign=&quot;middle&quot; align=&quot;center&quot; style=&quot;word-break: break-all;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;ASMM自动共享内存管理&lt;/span&gt;&lt;/td&gt;&lt;td width=&quot;306&quot; valign=&quot;middle&quot; align=&quot;center&quot; style=&quot;word-break: break-all;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;SGA_TARGET + PGA_AGGREGATE_TARGET&lt;/span&gt;&lt;/td&gt;&lt;td width=&quot;306&quot; valign=&quot;middle&quot; align=&quot;center&quot; style=&quot;word-break: break-all;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;生产环境推荐&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;ue-table-interlace-color-double&quot;&gt;&lt;td valign=&quot;middle&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot; align=&quot;center&quot; style=&quot;word-break: break-all;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;手动管理&lt;/span&gt;&lt;/td&gt;&lt;td valign=&quot;middle&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot; align=&quot;center&quot; style=&quot;word-break: break-all;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;逐项指定各子池大小&lt;/span&gt;&lt;/td&gt;&lt;td valign=&quot;middle&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot; align=&quot;center&quot; style=&quot;word-break: break-all;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;对内存有精细控制需求时&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;之所以不推荐通过 AMM 方式来自动进行内存管理，是因为通过 MEMORY_TARGET 自动管理 SGA + PGA听起来方便，但由于 AMM 模式在高并发场景下会频繁的出现内存移动，反而增大了性能开销&lt;/span&gt;&lt;/p&gt;&lt;h3 style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;1、SGA配置最佳实践&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;通常建议 SGA 总量不超过服务器物理内存的 60%，剩余部分留给 OS、PGA 以及其他进程&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;--&amp;nbsp;查看当前&amp;nbsp;SGA&amp;nbsp;配置
SHOW&amp;nbsp;PARAMETER&amp;nbsp;SGA;

--&amp;nbsp;设置&amp;nbsp;SGA_TARGET，让&amp;nbsp;Oracle&amp;nbsp;在这个总量内自动分配各子池
ALTER&amp;nbsp;SYSTEM&amp;nbsp;SET&amp;nbsp;SGA_TARGET=8G&amp;nbsp;SCOPE=SPFILE;
ALTER&amp;nbsp;SYSTEM&amp;nbsp;SET&amp;nbsp;SGA_MAX_SIZE=8G&amp;nbsp;SCOPE=SPFILE;

--&amp;nbsp;设置&amp;nbsp;Shared&amp;nbsp;Pool&amp;nbsp;子池最小值，防止&amp;nbsp;AMM/ASMM&amp;nbsp;压缩得过小出现ORA-04031共享池耗尽的情况
ALTER&amp;nbsp;SYSTEM&amp;nbsp;SET&amp;nbsp;SHARED_POOL_SIZE=2G&amp;nbsp;SCOPE=SPFILE;&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;子池参考比例（以 16G SGA 为例）：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;· Buffer Cache&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;：10～12G ，SGA 里占比最大，越大越好。命中率低于 95% 就需要考虑加大 Buffer Cache，正常生产环境应该维持在 98% 以上&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;--&amp;nbsp;查询&amp;nbsp;Buffer&amp;nbsp;Cache&amp;nbsp;命中率
SELECT&amp;nbsp;ROUND((1&amp;nbsp;-&amp;nbsp;(phys.value&amp;nbsp;/&amp;nbsp;(cur.value&amp;nbsp;+&amp;nbsp;con.value)))&amp;nbsp;*&amp;nbsp;100,&amp;nbsp;2)&amp;nbsp;AS&amp;nbsp;&amp;quot;Buffer命中率%&amp;quot;&amp;nbsp;FROM&amp;nbsp;v$sysstat&amp;nbsp;phys,&amp;nbsp;v$sysstat&amp;nbsp;cur,&amp;nbsp;v$sysstat&amp;nbsp;con
WHERE&amp;nbsp;phys.name&amp;nbsp;=&amp;nbsp;&amp;#39;physical&amp;nbsp;reads&amp;#39;&amp;nbsp;AND&amp;nbsp;cur.name&amp;nbsp;&amp;nbsp;=&amp;nbsp;&amp;#39;db&amp;nbsp;block&amp;nbsp;gets&amp;#39;&amp;nbsp;AND&amp;nbsp;con.name&amp;nbsp;&amp;nbsp;=&amp;nbsp;&amp;#39;consistent&amp;nbsp;gets&amp;#39;;&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;·&amp;nbsp;&lt;/span&gt;Shared Pool&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;：2～4G，OLTP 系统多，SQL 复杂度高则需要更大。&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;硬解析率超过 30% 就需要排查是否 Shared Pool 太小，或应用层没有使用绑定变量&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;--&amp;nbsp;查询&amp;nbsp;Shared&amp;nbsp;Pool&amp;nbsp;的硬解析率
SELECT&amp;nbsp;ROUND(hard.value&amp;nbsp;/&amp;nbsp;parse.value&amp;nbsp;*&amp;nbsp;100,&amp;nbsp;2)&amp;nbsp;AS&amp;nbsp;&amp;quot;硬解析率%&amp;quot;&amp;nbsp;FROM&amp;nbsp;v$sysstat&amp;nbsp;hard,&amp;nbsp;v$sysstat&amp;nbsp;parse
WHERE&amp;nbsp;hard.name&amp;nbsp;=&amp;nbsp;&amp;#39;parse&amp;nbsp;count&amp;nbsp;(hard)&amp;#39;&amp;nbsp;AND&amp;nbsp;parse.name&amp;nbsp;=&amp;nbsp;&amp;#39;parse&amp;nbsp;count&amp;nbsp;(total)&amp;#39;;&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;·&amp;nbsp;&lt;/span&gt;Large Pool&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;：512M～1G，RMAN、并行查询、Shared Server 使用&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;·&amp;nbsp;&lt;/span&gt;Redo Log Buffer&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;：128M～256M，一般不需要特别大，写满即刷盘&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3 style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;2、PGA配置最佳实践&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;高并发场景下 PGA 的总消耗是所有活跃会话 PGA 之和，所以在估算服务器内存分配时，不能忽略这块消耗。&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;通用经验是PGA_AGGREGATE_TARGET = 物理内存 × 20%，如果是以批量处理、数据仓库为主的系统可以提高到 30%，OLTP 系统则适当降低。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;--&amp;nbsp;查看当前&amp;nbsp;PGA&amp;nbsp;配置
SHOW&amp;nbsp;PARAMETER&amp;nbsp;PGA;

--&amp;nbsp;设置&amp;nbsp;PGA&amp;nbsp;总目标值（Oracle&amp;nbsp;会尽可能在此范围内为各会话分配内存）
ALTER&amp;nbsp;SYSTEM&amp;nbsp;SET&amp;nbsp;PGA_AGGREGATE_TARGET=4G&amp;nbsp;SCOPE=SPFILE;

--&amp;nbsp;设置&amp;nbsp;PGA&amp;nbsp;硬上限，防止撑爆内存，超过后&amp;nbsp;Oracle&amp;nbsp;会强制终止消耗最多&amp;nbsp;PGA&amp;nbsp;的会话，生产环境建议设置为&amp;nbsp;PGA_AGGREGATE_TARGET&amp;nbsp;的2倍
ALTER&amp;nbsp;SYSTEM&amp;nbsp;SET&amp;nbsp;PGA_AGGREGATE_LIMIT=8G&amp;nbsp;SCOPE=SPFILE;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;排查 PGA 是否成为瓶颈，如果sorts (disk)&amp;nbsp;磁盘排序次数过高，说明 PGA 不够用&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;SELECT&amp;nbsp;name,&amp;nbsp;value&amp;nbsp;FROM&amp;nbsp;v$sysstat&amp;nbsp;WHERE&amp;nbsp;name&amp;nbsp;IN&amp;nbsp;(&amp;#39;sorts&amp;nbsp;(memory)&amp;#39;,&amp;nbsp;&amp;#39;sorts&amp;nbsp;(disk)&amp;#39;);&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;3、REDO LOG配置最佳实践&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;Redo Log 最常见的问题就是日志组太小导致切换过于频繁。&lt;span style=&quot;font-size: 16px; background-color: #FFFF00;&quot;&gt;Oracle 官方建议&lt;span style=&quot;font-size: 16px; background-color: #FFFF00;&quot;&gt;最少保留 3 组日志组（高并发写入场景 4～6 组&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap; background-color: #FFFF00;&quot;&gt;），&lt;/span&gt;&lt;/span&gt;日志切换频率控制在每 15～30 分钟一次，如果每小时切换次数超过 4 次就需要考虑扩大日志组&lt;/span&gt;。&lt;span style=&quot;font-size: 16px;&quot;&gt;如果发现某些高峰时段每小时切换次数很高（如 50MB 大小的日志组每小时上百次切换），就需要立即扩大日志组大小&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;--&amp;nbsp;查看当前切换频率
SELECT&amp;nbsp;TO_CHAR(first_time,&amp;nbsp;&amp;#39;YYYY-MM-DD&amp;nbsp;HH24&amp;#39;)&amp;nbsp;AS&amp;nbsp;hour,COUNT(*)&amp;nbsp;AS&amp;nbsp;switches&amp;nbsp;FROM&amp;nbsp;v$log_history&amp;nbsp;WHERE&amp;nbsp;first_time&amp;nbsp;&amp;gt;&amp;nbsp;SYSDATE&amp;nbsp;-&amp;nbsp;1
GROUP&amp;nbsp;BY&amp;nbsp;TO_CHAR(first_time,&amp;nbsp;&amp;#39;YYYY-MM-DD&amp;nbsp;HH24&amp;#39;)&amp;nbsp;ORDER&amp;nbsp;BY&amp;nbsp;1;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;日志组大小参考，&lt;span style=&quot;font-size: 16px;&quot;&gt;注意这里是单个日志组大小，不是所有组加起来的总量。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;table interlaced=&quot;enabled&quot;&gt;&lt;tbody&gt;&lt;tr class=&quot;ue-table-interlace-color-single firstRow&quot;&gt;&lt;td width=&quot;470&quot; valign=&quot;middle&quot; style=&quot;word-break: break-all;&quot; align=&quot;center&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;系统类型&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td width=&quot;470&quot; valign=&quot;middle&quot; style=&quot;word-break: break-all;&quot; align=&quot;center&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;推荐单个日志组大小&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;ue-table-interlace-color-double&quot;&gt;&lt;td width=&quot;470&quot; valign=&quot;middle&quot; style=&quot;word-break: break-all;&quot; align=&quot;center&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;轻量 OLTP&lt;/span&gt;&lt;/td&gt;&lt;td width=&quot;470&quot; valign=&quot;middle&quot; style=&quot;word-break: break-all;&quot; align=&quot;center&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;500M～1G&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;ue-table-interlace-color-single&quot;&gt;&lt;td width=&quot;470&quot; valign=&quot;middle&quot; style=&quot;word-break: break-all;&quot; align=&quot;center&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;中等业务量&lt;/span&gt;&lt;/td&gt;&lt;td width=&quot;470&quot; valign=&quot;middle&quot; style=&quot;word-break: break-all;&quot; align=&quot;center&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;1G～2G&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;ue-table-interlace-color-double&quot;&gt;&lt;td width=&quot;470&quot; valign=&quot;middle&quot; style=&quot;word-break: break-all;&quot; align=&quot;center&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;高并发 / 批量写入&lt;/span&gt;&lt;/td&gt;&lt;td width=&quot;470&quot; valign=&quot;middle&quot; style=&quot;word-break: break-all;&quot; align=&quot;center&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;2G～4G&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br/&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;h4&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;新增日志组&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: nowrap;&quot;&gt;日志组大小不允许直接修改，只能新增更大的日志组，再删掉原来小的，操作顺序如下&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;--&amp;nbsp;第一步：新增日志组，指定序号和日志路径、日志大小
ALTER&amp;nbsp;DATABASE&amp;nbsp;ADD&amp;nbsp;LOGFILE&amp;nbsp;GROUP&amp;nbsp;4&amp;nbsp;&amp;#39;/u01/oradata/orcl/redo04.log&amp;#39;&amp;nbsp;SIZE&amp;nbsp;1G;
ALTER&amp;nbsp;DATABASE&amp;nbsp;ADD&amp;nbsp;LOGFILE&amp;nbsp;GROUP&amp;nbsp;5&amp;nbsp;&amp;#39;/u01/oradata/orcl/redo05.log&amp;#39;&amp;nbsp;SIZE&amp;nbsp;1G;
ALTER&amp;nbsp;DATABASE&amp;nbsp;ADD&amp;nbsp;LOGFILE&amp;nbsp;GROUP&amp;nbsp;6&amp;nbsp;&amp;#39;/u01/oradata/orcl/redo06.log&amp;#39;&amp;nbsp;SIZE&amp;nbsp;1G;

--&amp;nbsp;第二步：手动触发切换，让旧日志组变为&amp;nbsp;INACTIVE&amp;nbsp;状态
ALTER&amp;nbsp;SYSTEM&amp;nbsp;SWITCH&amp;nbsp;LOGFILE;
ALTER&amp;nbsp;SYSTEM&amp;nbsp;CHECKPOINT;

--&amp;nbsp;第三步：确认旧日志组状态为&amp;nbsp;INACTIVE
SELECT&amp;nbsp;group#,&amp;nbsp;status,&amp;nbsp;members,&amp;nbsp;bytes/1024/1024&amp;nbsp;AS&amp;nbsp;mb&amp;nbsp;FROM&amp;nbsp;v$log;

--&amp;nbsp;第四步：删除状态为INACTIVE的旧日志组
ALTER&amp;nbsp;DATABASE&amp;nbsp;DROP&amp;nbsp;LOGFILE&amp;nbsp;GROUP&amp;nbsp;1;
ALTER&amp;nbsp;DATABASE&amp;nbsp;DROP&amp;nbsp;LOGFILE&amp;nbsp;GROUP&amp;nbsp;2;
ALTER&amp;nbsp;DATABASE&amp;nbsp;DROP&amp;nbsp;LOGFILE&amp;nbsp;GROUP&amp;nbsp;3;

--&amp;nbsp;第五步：删除操作系统上的旧日志文件（Oracle&amp;nbsp;不会自动删除物理文件）
rm&amp;nbsp;/u01/oradata/orcl/redo01.log&lt;/pre&gt;</description><pubDate>Wed, 01 Jul 2026 10:16:42 +0800</pubDate></item><item><title>Linux时间同步——chrony的配置与使用</title><link>https://ywpie.com/post/87.html</link><description>&lt;h2&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;一、chrony 工具介绍&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;chrony 相比 ntpd 服务而言是更现代的NTP时间同步方案，它的同步算法更激进，在服务启动几分钟后就能达到较高精度，并且可以对偏差较大的服务器进行&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;强制同步（在&amp;nbsp;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;ntpd 下如果偏差超过 1000 秒会直接退出同步而不是强制校正&lt;/span&gt;）。仍然需要强调的是chrony和ntpd&lt;/span&gt;不能同时运行，它们会互相冲突抢占 UDP 123 端口&lt;/span&gt;&lt;/p&gt;&lt;h2&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;二、chrony 使用教程&lt;/span&gt;&lt;/h2&gt;&lt;h3&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;1、安装chrony&lt;/span&gt;&lt;/h3&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;yum&amp;nbsp;install&amp;nbsp;-y&amp;nbsp;chrony&lt;/pre&gt;&lt;h3&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;2、配置chrony&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;chrony 的主配置文件为 /etc/chrony.conf，以下是常用配置项说明：&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#&amp;nbsp;指定上游&amp;nbsp;NTP&amp;nbsp;服务器，iburst&amp;nbsp;表示启动时快速发送多个请求加速初始同步
server&amp;nbsp;10.1.18.114&amp;nbsp;iburst
server&amp;nbsp;ntp.aliyun.com&amp;nbsp;iburst

#&amp;nbsp;允许内网客户端向本机同步（本机作为内网&amp;nbsp;NTP&amp;nbsp;服务器时启用）
allow&amp;nbsp;192.168.1.0/24

#&amp;nbsp;当无法连接外部&amp;nbsp;NTP&amp;nbsp;时，允许系统作为自身时钟源
local&amp;nbsp;stratum&amp;nbsp;10

#&amp;nbsp;记录时钟漂移信息，用于断网后的时钟估算
driftfile&amp;nbsp;/var/lib/chrony/drift

#&amp;nbsp;启用日志记录
logdir&amp;nbsp;/var/log/chrony
log&amp;nbsp;measurements&amp;nbsp;statistics&amp;nbsp;tracking&lt;/pre&gt;&lt;h3&gt;3、启动chrony服务&lt;/h3&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;systemctl&amp;nbsp;start&amp;nbsp;chronyd
systemctl&amp;nbsp;enable&amp;nbsp;chronyd&lt;/pre&gt;&lt;h3&gt;4、查看同步源&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;通过chronyc sources -v可以查看同步源信息，主要观察同步源的状态&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;*&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;：当前同步源&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;+&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;：可用候选源&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;?&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;：不可达或未响应&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;x&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;：被标记为异常的源&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;&amp;nbsp;chronyc&amp;nbsp;sources&amp;nbsp;-v&lt;/pre&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://ywpie.com/zb_users/upload/2026/06/202606221782110816821151.jpg&quot; title=&quot;chrony1.jpg&quot; alt=&quot;chrony1.jpg&quot;/&gt;&lt;/p&gt;&lt;h3&gt;5、查看同步状态&lt;/h3&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;chronyc&amp;nbsp;tracking

Reference&amp;nbsp;ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;0A011272&amp;nbsp;(10.1.18.114)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#当前同步的上游时间源&amp;nbsp;
Stratum&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#时间源层级，数字越小越精确&amp;nbsp;&amp;nbsp;
System&amp;nbsp;time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;0.000001690&amp;nbsp;seconds&amp;nbsp;fast&amp;nbsp;of&amp;nbsp;NTP&amp;nbsp;time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#本地时钟与&amp;nbsp;NTP&amp;nbsp;时间的偏差&amp;nbsp;&amp;nbsp;
Last&amp;nbsp;offset&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;+0.000002484&amp;nbsp;seconds
RMS&amp;nbsp;offset&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;0.000368575&amp;nbsp;seconds
Leap&amp;nbsp;status&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;Normal&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#Normal&amp;nbsp;表示同步正常&lt;/pre&gt;&lt;h3&gt;6、手动强制同步&lt;/h3&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;chronyc&amp;nbsp;makestep&lt;/pre&gt;</description><pubDate>Mon, 22 Jun 2026 14:50:18 +0800</pubDate></item><item><title>Linux时间同步——ntpd的配置与使用</title><link>https://ywpie.com/post/35.html</link><description>&lt;h2 style=&quot;text-wrap: wrap;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-family: &amp;quot;&amp;quot;; font-size: 16px;&quot;&gt;一、NTP时间同步介绍&lt;/span&gt;&lt;/strong&gt;&lt;/h2&gt;&lt;p style=&quot;text-wrap: wrap;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;&amp;quot;; font-size: 16px;&quot;&gt;NTP是网络时间协议 Network Time Protocol 的简称。通过 NTP 服务可以确保不同设备或者服务之间的时间一致性，尤其是一些高可用或集群化的服务，节点之间的时间偏差是不允许有误差的。在互联网上有许多可靠的共用NTP服务器，如清华、阿里等，我们可以通过与这些服务器同步使本地服务器间的时间一致、准确。&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;&amp;quot;; font-size: 16px; background-color: #FFFF00;&quot;&gt;在 CentOS 7 或之前的系统中默认使用 ntp&amp;nbsp;作为默认的时间同步方案，在 CentOS 7 之后改为 chrony，两者不可同时运行。&lt;/span&gt;&lt;/p&gt;&lt;h2 style=&quot;text-wrap: wrap;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;&amp;quot;; font-size: 16px;&quot;&gt;二、ntpd使用教程&lt;/span&gt;&lt;/h2&gt;&lt;h3 style=&quot;text-wrap: wrap;&quot;&gt;1、安装&lt;span style=&quot;font-family: &amp;quot;&amp;quot;; font-size: 16px;&quot;&gt;NTPD服务&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;font-family: &amp;quot;&amp;quot;; font-size: 16px;&quot;&gt;只需要通过yum命令就可以快速安装NTP相关工具包，&lt;/span&gt;安装完成后系统会产生以下几个主要工具：&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;· ntpd&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;：NTP 守护进程，在后台运行，负责持续进行同步时钟&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;·&amp;nbsp;&lt;/span&gt;ntpq&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;：用于查看NTP同步状态和时间源信息&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;·&amp;nbsp;&lt;/span&gt;ntpdate&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;：手动同步工具，常用于首次校时或偏差过大时的强制纠偏&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;·&amp;nbsp;&lt;/span&gt;ntpstat&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;：显示当前同步状态&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;yum&amp;nbsp;install&amp;nbsp;ntp&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-family: &amp;quot;&amp;quot;; font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;h3 style=&quot;text-wrap: wrap;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;&amp;quot;; font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;2、NTP手动同步配置&lt;/span&gt;&lt;/h3&gt;&lt;p style=&quot;text-wrap: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;通过ntpdate命令并指定ntp服务器地址后可以进行手动同步，如手动配置与阿里云NTP同步&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;&lt;p&gt;ntpdate ntp.aliyun.com&lt;br/&gt;&lt;/p&gt;&lt;/pre&gt;&lt;h3 style=&quot;text-wrap: wrap;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;font-size:16px;&amp;quot;; font-size: 16px;&quot;&gt;3、NTP自动同步配置&lt;/span&gt;&lt;/h3&gt;&lt;p style=&quot;text-wrap: wrap;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;font-size:16px;&amp;quot;; font-size: 16px;&quot;&gt;编辑NTP配置文件，具体内容如下&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#&amp;nbsp;记录系统时钟频率漂移值
driftfile&amp;nbsp;/var/lib/ntp/drift&amp;nbsp;&amp;nbsp;

pidfile&amp;nbsp;/var/run/ntpd.pid
logfile&amp;nbsp;/var/log/ntp.log

#&amp;nbsp;安全策略：默认拒绝所有非本地访问
restrict&amp;nbsp;default&amp;nbsp;kod&amp;nbsp;nomodify&amp;nbsp;notrap&amp;nbsp;nopeer&amp;nbsp;noquery
restrict&amp;nbsp;-6&amp;nbsp;default&amp;nbsp;kod&amp;nbsp;nomodify&amp;nbsp;notrap&amp;nbsp;nopeer&amp;nbsp;noquery

#&amp;nbsp;允许本地回环地址用于状态查询
restrict&amp;nbsp;127.0.0.1&amp;nbsp;nomodify
restrict&amp;nbsp;::1&amp;nbsp;nomodify

#&amp;nbsp;本地伪时钟源，作为兜底时间源
server&amp;nbsp;127.127.1.0
fudge&amp;nbsp;127.127.1.0&amp;nbsp;stratum&amp;nbsp;10

#&amp;nbsp;实际&amp;nbsp;NTP&amp;nbsp;上游服务器
server&amp;nbsp;ntp.aliyun.com&amp;nbsp;iburst&amp;nbsp;minpoll&amp;nbsp;4&amp;nbsp;maxpoll&amp;nbsp;10&lt;/pre&gt;&lt;p style=&quot;text-wrap: wrap;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;font-size:16px;&amp;quot;; font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px; font-family: 微软雅黑, &amp;quot;Microsoft YaHei&amp;quot;;&quot;&gt;启动NTP服务后客户端会立即进行一次同步，并且会周期性地与服务器进行时间同步，通常为每隔1小时进行一次时间同步，具体频率可以通过配置进行调整。&lt;span style=&quot;font-size: 16px; font-family: 微软雅黑, &amp;quot;Microsoft YaHei&amp;quot;; background-color: #FFFF00;&quot;&gt;需要注意的是ntpd 有一个内置保护机制，&lt;span style=&quot;font-family: 微软雅黑, &amp;quot;Microsoft YaHei&amp;quot;; font-size: 16px; text-wrap-mode: wrap; background-color: #FFFF00;&quot;&gt;如果服务器与NTP时间相差超过1000 秒，&lt;/span&gt;ntpd 会主动退出而不是强制校正。如果要重新与服务器进行同步，必须先用 ntpdate 进行一次手动同步将时间拉近后再启动 ntpd 才能自动同步&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;systemctl&amp;nbsp;start&amp;nbsp;ntpd&lt;/pre&gt;&lt;p style=&quot;text-wrap: wrap;&quot;&gt;&lt;br/&gt;&lt;/p&gt;&lt;h3 style=&quot;text-wrap: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px; font-family: 微软雅黑, &amp;quot;Microsoft YaHei&amp;quot;;&quot;&gt;4、查询同步状态&lt;/span&gt;&lt;/h3&gt;&lt;p style=&quot;text-wrap: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px; font-family: 微软雅黑, &amp;quot;Microsoft YaHei&amp;quot;;&quot;&gt;通过ntpstate或者ntpq命令可以查看NTP服务器同步是否正常：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap; font-size: 16px;&quot;&gt;* 号表示当前已选用的服务器；&lt;/span&gt;&lt;span style=&quot;font-size: 16px; text-wrap: nowrap;&quot;&gt;reach列如果不为0表示能访问服务器；offset 表示本地时间与服务器差值（ms）&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;&amp;nbsp;ntpq&amp;nbsp;-p
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;remote&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;refid&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;st&amp;nbsp;t&amp;nbsp;when&amp;nbsp;poll&amp;nbsp;reach&amp;nbsp;&amp;nbsp;&amp;nbsp;delay&amp;nbsp;&amp;nbsp;&amp;nbsp;offset&amp;nbsp;&amp;nbsp;jitter
==============================================================================
*203.107.6.88&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;100.107.25.114&amp;nbsp;&amp;nbsp;&amp;nbsp;2&amp;nbsp;u&amp;nbsp;&amp;nbsp;&amp;nbsp;11&amp;nbsp;&amp;nbsp;&amp;nbsp;16&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;59.353&amp;nbsp;&amp;nbsp;&amp;nbsp;-0.896&amp;nbsp;&amp;nbsp;15.879&lt;/pre&gt;&lt;p style=&quot;text-wrap: wrap;&quot;&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;查看服务器是否启用NTPD&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;timedatectl&lt;/pre&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://ywpie.com/zb_users/upload/2025/07/202507091752026560485789.png&quot; title=&quot;ntp.png&quot; alt=&quot;ntp.png&quot;/&gt;&lt;/p&gt;</description><pubDate>Mon, 22 Jun 2026 14:04:55 +0800</pubDate></item><item><title>Ansible教程（3）使用Playbook进行多任务编排</title><link>https://ywpie.com/post/85.html</link><description>&lt;h2&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;一、Ansible&amp;nbsp;Playbook介绍&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;如果基于AD-Hoc去执行多任务（如安装Nginx、修改配置文件、启动服务），需要先使用yum或command模块安装程序，再使用copy模块复制配置文件，最后使用service模块启动服务。为了解决这种多任务繁琐的情况，可以使用Ansible的playbook（剧本）功能&lt;/span&gt;&lt;/p&gt;&lt;h2&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;二、Ansible&amp;nbsp;Playbook构成&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;Inventory：主机列表，表示剧本中的任务要应用在哪些主机上&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;Tasks：具体任务，即调用哪些模块完成操作，可以配置多个任务&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;Variables：变量，包含内置变量和自定义变量&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;Templates：模板，即使用模板语法来灵活变更的配置文件&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;Handlers与notify：触发器，由某事件触发执行的操作，比如修改配置文件后自动重启服务&lt;/span&gt;&lt;/p&gt;&lt;h2&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;三、Ansible&amp;nbsp;Playbook语法&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;1、playbook本质是包含了一个或多个任务的YAML配置文件，通常以.yaml或者.yml结尾&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;2、在单一的一个playbook文件中，使用连续的三个中横线（---）作为每个play的区分&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;3、缩进必须统一，不能空格和tab混合使用，缩进级别需要一致，同样的缩进代表同样的级别&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;4、使用冒号“:”之后还需要书写内容的话，则需要空一格才能书写&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;5、使用短横线“-”后必须追加一个空格&lt;/span&gt;&lt;/p&gt;&lt;h2&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;四、Ansible&amp;nbsp;Playbook参数&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;· hosts：指定远程主机（多个主机用逗号分隔）或主机组&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;-&amp;nbsp;hosts:&amp;nbsp;webservers&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;·&amp;nbsp;remote_user：指定执行任务的用户（可以定义在hosts字段下，也可单独给每个task定义），通常是root用户，也可指定非root用户使用sudo方式执行任务&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;-&amp;nbsp;hosts:&amp;nbsp;192.168.1.31
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;remote_user:&amp;nbsp;root&amp;nbsp;&amp;nbsp;#定义全局用户&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;· tasks：任务信息将定义在此字段下&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;tasks:&amp;nbsp;
&amp;nbsp;&amp;nbsp;-&amp;nbsp;name:&amp;nbsp;run&amp;nbsp;df&amp;nbsp;-h
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;remote_user:&amp;nbsp;test&amp;nbsp;&amp;nbsp;#单独为task定义用户
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;shell:&amp;nbsp;name=df&amp;nbsp;-h&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;·&amp;nbsp;sudo（可省略）：如果设置为yes，那么sudo_user指定的用户在执行任务时会获得root权限&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;·&amp;nbsp;sudo_user（可省略）：指定需要使用sudo执行操作的用户&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;tasks:&amp;nbsp;
&amp;nbsp;&amp;nbsp;-&amp;nbsp;name:&amp;nbsp;run&amp;nbsp;df&amp;nbsp;-h
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sudo_user:&amp;nbsp;test
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sudo:&amp;nbsp;yes
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;shell:&amp;nbsp;name=df&amp;nbsp;-h&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;·&amp;nbsp;connection（可省略）：通过什么方式连接到远程主机，默认为SSH&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;·&amp;nbsp;gather_facts（可省略）：如果明确不需要通过setup模块来获取远程主机facts信息，可以使用这个选项，能提升一定的性能&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;-&amp;nbsp;hosts:&amp;nbsp;all
&amp;nbsp;&amp;nbsp;gather_facts_:&amp;nbsp;no
&amp;nbsp;&amp;nbsp;tasks:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;name:&amp;nbsp;sleep&amp;nbsp;5
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;command:&amp;nbsp;sleep&amp;nbsp;5&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;· ignore_errors（可省略）：默认情况下ansible会因为一个错误导致后面的任务全部失败，有些时候可能会忽略一些错误的发生，让其他任务能正常执行&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;-hosts:&amp;nbsp;all
&amp;nbsp;&amp;nbsp;tasks:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;name:&amp;nbsp;ignore_test
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;command:&amp;nbsp;/bin/false
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ignore_errors:&amp;nbsp;yes
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;name:&amp;nbsp;touch&amp;nbsp;file
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;file:&amp;nbsp;path=/tmp/test.txt&amp;nbsp;state=touch&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;h2&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;五、Ansible&amp;nbsp;Playbook基础示例&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;1、基本示例&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;-&amp;nbsp;hosts:&amp;nbsp;webservers
&amp;nbsp;&amp;nbsp;tasks:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;name:&amp;nbsp;1.Installed&amp;nbsp;NFS&amp;nbsp;Server
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;yum:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name:&amp;nbsp;nfs-utils
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;state:&amp;nbsp;present
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;name:&amp;nbsp;2.Configure&amp;nbsp;NFS&amp;nbsp;Server
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;copy:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;src:&amp;nbsp;./exports.j2
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dest:&amp;nbsp;/etc/exports&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;2、高级示例，包含变量、触发器等使用&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;cat&amp;nbsp;playbook01.yml
-&amp;nbsp;hosts:&amp;nbsp;192.168.1.31&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#定义需要执行的主机或主机组
&amp;nbsp;&amp;nbsp;remote_user:&amp;nbsp;root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#远程用户
&amp;nbsp;&amp;nbsp;vars:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#定义变量
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;http_port:&amp;nbsp;8088&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#变量
&amp;nbsp;&amp;nbsp;tasks:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#定义一个任务
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;name:&amp;nbsp;create&amp;nbsp;new&amp;nbsp;file&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#定义任务的名称
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;file:&amp;nbsp;name=/tmp/playtest.txt&amp;nbsp;state=touch&amp;nbsp;&amp;nbsp;&amp;nbsp;#调用模块，具体要做的事情
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;name:&amp;nbsp;install&amp;nbsp;package
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;yum:&amp;nbsp;name=httpd
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;name:&amp;nbsp;config&amp;nbsp;httpd
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;template:&amp;nbsp;src=./httpd.conf&amp;nbsp;dest=/etc/httpd/conf/httpd.conf
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;notify:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#触发器，当条件触发后需要做的操作，配合handlers使用
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;restart&amp;nbsp;apache&amp;nbsp;&amp;nbsp;#需要引用的handlers的名字
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;name:&amp;nbsp;copy&amp;nbsp;index.html
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;copy:&amp;nbsp;src=/var/www/html/index.html&amp;nbsp;dest=/var/www/html/index.html
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;name:&amp;nbsp;start&amp;nbsp;httpd
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;service:&amp;nbsp;name=httpd&amp;nbsp;state=started
&amp;nbsp;&amp;nbsp;handlers:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#notify定义的触发执行相应的处理动作
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;name:&amp;nbsp;restart&amp;nbsp;apache&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#要与notify定义的内容相同
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;service:&amp;nbsp;name=httpd&amp;nbsp;state=restarted&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#触发要执行的动作&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;h2&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;六、Ansible playbook运行结果说明&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;当playbook运行后在PLAY RECAP（汇总报告）一列将返回返回的结果包含了任务ok的数量（已经达到任务要求，无需再次处理）、changed数量&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://ywpie.com/zb_users/upload/2026/05/202605081778228246620594.png&quot; title=&quot;ansible5.png&quot; alt=&quot;ansible5.png&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;ansible-playbook命令示例与常用选项&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;ansible-playbook&amp;nbsp;-t&amp;nbsp;tag_name&amp;nbsp;httpd.yml&amp;nbsp;#-t指定标签名，多个标签用逗号分隔
ansible-playbook&amp;nbsp;playbookname.yml&amp;nbsp;--list-task&amp;nbsp;#列出该playbook中的任务

#&amp;nbsp;--check&amp;nbsp;|&amp;nbsp;-C：只检测可能会发生的改变，但不真正执行操作
#&amp;nbsp;--list-hosts：列出运行任务的主机
#&amp;nbsp;--list-tags：列出playbook文件中定义的所有tags
#&amp;nbsp;--list-tasks：列出playbook文件中定义的所有任务
#&amp;nbsp;--limit：主机列表&amp;nbsp;只针对主机列表中的某个主机或者某个组执行
#&amp;nbsp;-f：指定并发数，默认为5个
#&amp;nbsp;-t：指定tags运行，运行某一个或者多个tags。前提是playbook中有定义tags
#&amp;nbsp;-e：声明变量和值&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;h2&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;七、使用ansible-vault加密Playbook&lt;/span&gt;&lt;/h2&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;ansible-vault&amp;nbsp;encrypt&amp;nbsp;hello.yml&amp;nbsp;&amp;nbsp;#加密playbook，加密否的文件无法直接执行和查看
ansible-vault&amp;nbsp;view&amp;nbsp;hello.yml&amp;nbsp;&amp;nbsp;#查看加密后的文件
ansible-vault&amp;nbsp;edit&amp;nbsp;hello.yml&amp;nbsp;&amp;nbsp;#查看加密后的文件
ansible-vault&amp;nbsp;decrypt&amp;nbsp;hello.yml&amp;nbsp;&amp;nbsp;#解密playbook&lt;/pre&gt;</description><pubDate>Fri, 08 May 2026 16:05:17 +0800</pubDate></item><item><title>Ansible教程（2）Ansible的命令行与常用模块</title><link>https://ywpie.com/post/84.html</link><description>&lt;h2&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;一、Ansible Ad-Hoc简介&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;Ad-Hoc是一种通过ansible内置命令行让Ansible进行工作的方式，也是最简单的调用方式。命令行语法格式如下&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;ansible&amp;nbsp;&amp;lt;host-pattern&amp;gt;&amp;nbsp;[-f&amp;nbsp;forks]&amp;nbsp;[-m&amp;nbsp;module_name]&amp;nbsp;[-a&amp;nbsp;args]&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;&amp;lt;host-pattern&amp;gt;&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;：指定生效的主机组，可以使用主机列表中的地址或者组名，all代表所有主机，也支持逻辑与、或以及正则表达式&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;[-f forks]&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;：并发数，可以理解为ansible一次性要让多少个主机执行任务，配置文件中默认为5&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;[-m module_name]&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;：使用的模块名&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;[-a args]&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;：每个模块特有的参数，可以用ansible-doc -s 模块名来查看模块对应参数&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;-b&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;：老版本中的sudo指令，将在远端主机切换到root执行操作，这个root用户是在ansible配置中定义的&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;-K&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;：sudo时需要输入的密码&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;Ansible命令行示例&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;ansible&amp;nbsp;192.168.1.100&amp;nbsp;-m&amp;nbsp;ping&amp;nbsp;&amp;nbsp;#指定某台主机
ansible&amp;nbsp;all&amp;nbsp;-m&amp;nbsp;ping&amp;nbsp;&amp;nbsp;#指定所有主机
ansible&amp;nbsp;192.168.1.100:192.168.1.50&amp;nbsp;-m&amp;nbsp;ping&amp;nbsp;&amp;nbsp;#一次指定多台主机
ansible&amp;nbsp;all:\!192.168.1.100&amp;nbsp;-m&amp;nbsp;ping&amp;nbsp;&amp;nbsp;#排除某台主机
ansible&amp;nbsp;web&amp;nbsp;-m&amp;nbsp;ping&amp;nbsp;-u&amp;nbsp;dba&amp;nbsp;-k&amp;nbsp;&amp;nbsp;#使用dba用户对web组进行操作
ansible&amp;nbsp;web&amp;nbsp;-m&amp;nbsp;command&amp;nbsp;-a&amp;nbsp;&amp;#39;cat&amp;nbsp;/etc/passwd&amp;#39;&amp;nbsp;-u&amp;nbsp;dba&amp;nbsp;-k&amp;nbsp;-b&amp;nbsp;&amp;nbsp;-K&amp;nbsp;#使用dba用户连接web组，然后sudo到root用户查看passwd文件&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;h2&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;二、Ansible常用模块介绍&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;· command模块：缺省默认模块，指定远端主机需要执行的命令，不支持管道或者重定向&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;ansible&amp;nbsp;192.168.44.130&amp;nbsp;-a&amp;nbsp;&amp;#39;date&amp;#39;&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;·&amp;nbsp;&lt;/span&gt;cron模块：设置定时任务，其中有个state选项包含present、absent两个参数，分别代表增加和移除&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;ansible&amp;nbsp;webserver&amp;nbsp;-m&amp;nbsp;cron&amp;nbsp;-a&amp;nbsp;&amp;#39;minute=&amp;quot;*/10&amp;quot;&amp;nbsp;job=&amp;quot;/bin/echo&amp;nbsp;test&amp;quot;&amp;nbsp;name=&amp;quot;test&amp;nbsp;cron&amp;nbsp;job&amp;quot;&amp;nbsp;&amp;#39;
ansible&amp;nbsp;webserver&amp;nbsp;-m&amp;nbsp;cron&amp;nbsp;-a&amp;nbsp;&amp;#39;hour=&amp;quot;*/1&amp;quot;&amp;nbsp;job=&amp;quot;/usr/sbin/ntpdate&amp;nbsp;10.254.1.10&amp;quot;&amp;nbsp;name=&amp;quot;crontab&amp;nbsp;from&amp;nbsp;ansible&amp;quot;&amp;nbsp;state=present&amp;#39;&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;·&amp;nbsp;&lt;/span&gt;user模块：管理用户，还有一个group模块用于管理组&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;ansible&amp;nbsp;webserver&amp;nbsp;-m&amp;nbsp;user&amp;nbsp;-a&amp;nbsp;&amp;quot;name=mysql&amp;nbsp;system=yes&amp;quot;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;·&amp;nbsp;&lt;/span&gt;file模块：设置文件的属性，如所属主、文件权限等&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;ansible&amp;nbsp;all&amp;nbsp;-m&amp;nbsp;file&amp;nbsp;-a&amp;nbsp;&amp;#39;owner=mysql&amp;nbsp;group=mysql&amp;nbsp;mode=644&amp;nbsp;path=/tmp/test&amp;#39;
ansible&amp;nbsp;all&amp;nbsp;-m&amp;nbsp;file&amp;nbsp;-a&amp;nbsp;&amp;#39;path=/etc/passwd.link&amp;nbsp;src=/etc/passwd&amp;nbsp;state=link&amp;#39;&amp;nbsp;
#&amp;nbsp;path：指定要设置的文件所在路径，可使用name或dest替换
#&amp;nbsp;state：指明文件的格式，touch=创建新的文件；absent=删除文件，link=创建软连接文件；directory=创建目录。创建文件的软连接时src指明源文件，path指明连接文件路径&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;·&amp;nbsp;&lt;/span&gt;ping模块：测试远端主机是否能连接&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;ansible&amp;nbsp;all&amp;nbsp;-m&amp;nbsp;ping&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;·&amp;nbsp;&lt;/span&gt;service模块：控制服务运行状态&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;ansible&amp;nbsp;webserver&amp;nbsp;-m&amp;nbsp;service&amp;nbsp;-a&amp;nbsp;&amp;#39;enabled=true&amp;nbsp;name=httpd&amp;nbsp;state=started&amp;#39;
#&amp;nbsp;enabled：是否开机自动启动，取值为true或者false
#&amp;nbsp;name：服务名称
#&amp;nbsp;state：状态，取值有started，stopped，restarted&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;·&amp;nbsp;&lt;/span&gt;shell模块：和command模块一样是用来运行命令，当命令中有变量或者管道符的时候要用shell模块，特殊符号需要转义，比如\$&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;ansible&amp;nbsp;all&amp;nbsp;-m&amp;nbsp;shell&amp;nbsp;-a&amp;nbsp;&amp;quot;echo&amp;nbsp;test&amp;nbsp;|&amp;nbsp;passwd&amp;nbsp;--stdin&amp;nbsp;user1&amp;quot;&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;·&amp;nbsp;&lt;/span&gt;script模块：将本地的脚本复制到远端主机并执行，需要把脚本放在当前目录中并使用相对路径来指定&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;ansible&amp;nbsp;all&amp;nbsp;-m&amp;nbsp;script&amp;nbsp;-a&amp;nbsp;&amp;#39;test.sh&amp;#39;&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;·&amp;nbsp;&lt;/span&gt;yum模块：安装程序包，远端主机需要先配置好正确的yum源&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;ansible&amp;nbsp;-m&amp;nbsp;yum&amp;nbsp;-a&amp;nbsp;&amp;#39;name=httpd&amp;nbsp;state=present&amp;#39;&amp;nbsp;
#&amp;nbsp;name：指明要安装的程序包，可以带版本号，否则默认最新版本，多个安装包用逗号分隔
#&amp;nbsp;tate：present代表安装，也是默认操作；absent是卸载；latest最新版本安装&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;·&amp;nbsp;&lt;/span&gt;setup模块：收集被管理主机的信息，包含系统版本、IP地址、CPU核心数。在Ansible高级操作中可以通过该模块先收集信息，然后根据不同主机的不同信息做响应操作，类似Zabbix中的低级别发现自动获取磁盘信息一样&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;·&amp;nbsp;&lt;/span&gt;copy模块：实现文件复制，但是使用该模块进行文件复制时不会引用变量的值，如果使用了变量，需要替换为template模块（该模块只能通过playbook方式运行）&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;ansible&amp;nbsp;all&amp;nbsp;-m&amp;nbsp;copy&amp;nbsp;-a&amp;nbsp;&amp;#39;src=/etc/fstab&amp;nbsp;dest=/etc/fstab&amp;nbsp;owner=root&amp;nbsp;mode=640&amp;#39;&amp;nbsp;
ansible&amp;nbsp;all&amp;nbsp;-m&amp;nbsp;copy&amp;nbsp;-a&amp;nbsp;&amp;#39;content=&amp;quot;hello&amp;nbsp;world&amp;quot;&amp;nbsp;dest=/etc/fstab&amp;nbsp;owner=root&amp;nbsp;mode=640&amp;nbsp;backup=yes&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;
#&amp;nbsp;src=：定义本地源文件的路径
#&amp;nbsp;dset=：定义目标文件路径
#&amp;nbsp;content=：用该选项直接生成内容，替代src
#&amp;nbsp;backup=：如果目标路径存在同名文件，将自动备份该文件&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;·&amp;nbsp;&lt;/span&gt;sysctl模块：实现内核参数修改&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;ansible&amp;nbsp;all&amp;nbsp;-m&amp;nbsp;sysctl&amp;nbsp;-a&amp;nbsp;&amp;#39;name=vm.swappiness&amp;nbsp;value=1&amp;nbsp;state=present&amp;#39;&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;h2&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;三、查看Ansible模块帮助信息&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;1、通过ansible-doc -l 可以显示当前版本所支持的模块信息&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://ywpie.com/zb_users/upload/2026/05/202605081778226433666529.png&quot; title=&quot;ansible3.png&quot; alt=&quot;ansible3.png&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;2、通过ansible-doc -s&amp;nbsp;modulename显示指定模块的详细用法&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;ansible-doc&amp;nbsp;-s&amp;nbsp;yum&lt;/pre&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://ywpie.com/zb_users/upload/2026/05/202605081778226445228948.png&quot; title=&quot;ansible4.png&quot; alt=&quot;ansible4.png&quot;/&gt;&lt;/p&gt;</description><pubDate>Fri, 08 May 2026 15:38:52 +0800</pubDate></item><item><title> Ansible教程（1）Ansible的安装与基本使用</title><link>https://ywpie.com/post/83.html</link><description>&lt;h2&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;一、Ansible简介&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;Ansible是一个基于Python开发的轻量级自动化运维工具，有着其他自动化运维工具如puppet、cfengine、chef、func、fabric的优点，并且不需要单独安装客户端以及启动服务，只需要通过SSH就可以快速的对大量客户端实现批量系统配置、程序部署、批量运行命令等。而且Ansible的学习曲线也平缓，比puppet易学很多&lt;/span&gt;&lt;/p&gt;&lt;h2&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;二、安装Ansible&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style=&quot;background-color: #FFFF00;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px; background-color: #FFFF00;&quot;&gt;方法1（推荐）：YUM安装&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;对于Ansible这种工具性软件使用YUM安装是最方便的，只需要配置好EPEL仓库就可以一条命令安装&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;yum&amp;nbsp;install&amp;nbsp;ansible&amp;nbsp;-y&amp;nbsp;#yum安装最新版
ansible&amp;nbsp;--version&amp;nbsp;&amp;nbsp;#安装后查看版本以及模块路径等信息&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;方法2：通过python pip工具安装&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;该方法需要先编译安装好python3，安装好以后Ansible的命令都会放在Python的目录中&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;/usr/local/python3/bin/pip3&amp;nbsp;install&amp;nbsp;ansible==2.7&amp;nbsp;&amp;nbsp;#使用pip安装指定版本Ansible
ln&amp;nbsp;-s&amp;nbsp;/usr/local/python3/bin/ansible&amp;nbsp;/usr/local/bin&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;h2&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;三、Ansible配置文件&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;· /etc/ansible/hosts&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;主机列表清单，也叫Inventory。所有被管理的主机都需要定义在该文件中。如果不想使用默认清单的话可以用-i选项指定自定义的清单文件，防止多人混合使用一个主机清单。如果没有定义在主机列表文件中，执行命令会提示“No hosts matched”&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;· /etc/ansible/ansible.cfg&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;Ansible服务主配置文件，可以自定义Inventory文件、并发数等，该配置文件的优先级实际是最低的，如果有定义其他配置文件，可以通过ansible --version查看实际有效路径&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;h2&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;四、Inventory定义方法&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;方法1：为不同的主机组配置各自的主机IP、端口、用户名、密码信息&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#编辑配置清单文件
vim&amp;nbsp;/etc/ansible/hosts

#组名为webserver，并且为该组下的主机配置了各自的端口、root信息
[webserver]&amp;nbsp;&amp;nbsp;
192.168.1.31&amp;nbsp;ansible_ssh_port=22&amp;nbsp;ansible_ssh_user=root&amp;nbsp;ansible_ssh_pass=&amp;quot;123456&amp;quot;
192.168.1.32&amp;nbsp;ansible_ssh_port=22&amp;nbsp;ansible_ssh_user=root&amp;nbsp;ansible_ssh_pass=&amp;quot;123456&amp;quot;
192.168.1.33&amp;nbsp;ansible_ssh_port=22&amp;nbsp;ansible_ssh_user=root&amp;nbsp;ansible_ssh_pass=&amp;quot;123456&amp;quot;
192.168.1.36&amp;nbsp;ansible_ssh_port=22&amp;nbsp;ansible_ssh_user=root&amp;nbsp;ansible_ssh_pass=&amp;quot;123456&amp;quot;

#组名为dbserver，并且使用了表达式来表示连续的IP段
[dbserver]&amp;nbsp;&amp;nbsp;
192.168.1.4[1:3]&amp;nbsp;ansible_ssh_port=22&amp;nbsp;ansible_ssh_user=root&amp;nbsp;ansible_ssh_pass=&amp;quot;123456&amp;quot;&amp;nbsp;&amp;nbsp;

[redis]
192.168.1.5[1:3]
[redisserver:vars]&amp;nbsp;&amp;nbsp;#将信息定义为变量
ansible_ssh_pass=&amp;quot;123456&amp;quot;

[nginx]&amp;nbsp;#推荐写法
nginx_1&amp;nbsp;ansible_ssh_host=192.168.1.61&amp;nbsp;ansible_ssh_port=22&amp;nbsp;ansible_ssh_user=root&amp;nbsp;ansible_ssh_pass=&amp;quot;123456&amp;quot;
nginx_2&amp;nbsp;ansible_ssh_host=192.168.1.62&amp;nbsp;ansible_ssh_port=22&amp;nbsp;ansible_ssh_user=root&amp;nbsp;ansible_ssh_pass=&amp;quot;123456&amp;quot;&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://ywpie.com/zb_users/upload/2026/05/202605081778225685567894.png&quot; title=&quot;ansible1.png&quot; alt=&quot;ansible1.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;方法二：基于秘钥管理&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;基于秘钥管理客户端的话需要在管理端创建公钥和私钥，然后发送给被管理端的机器&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#管理端创建秘钥并发送到每个被管理端
ssh-keygen
ssh-copy-id&amp;nbsp;-i&amp;nbsp;$被管理端IP

#管理端清单文件
vim&amp;nbsp;/etc/ansible/hosts
[webserver]&amp;nbsp;&amp;nbsp;#做好秘钥的机器只用写IP即可
192.168.1.31:22
192.168.1.32
192.168.1.33
192.168.1.36

[dbserver]&amp;nbsp;&amp;nbsp;#也可以通过别名方式进行配置
node1&amp;nbsp;ansible_ssh_host=192.168.1.31&amp;nbsp;ansible_ssh_port=22
node2&amp;nbsp;ansible_ssh_host=192.168.1.32&amp;nbsp;ansible_ssh_port=22
node3&amp;nbsp;ansible_ssh_host=192.168.1.33&amp;nbsp;ansible_ssh_port=22&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;方法三：自定义Inventory清单文件&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#创建清单文件
vim&amp;nbsp;/etc/ansible/dockers
[dockers]
192.168.1.31&amp;nbsp;ansible_ssh_pass=&amp;#39;123456&amp;#39;
192.168.1.32
192.168.1.33
#使用-i指定清单文件
ansible&amp;nbsp;dockers&amp;nbsp;-m&amp;nbsp;ping&amp;nbsp;-i&amp;nbsp;/etc/dockers&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;h2&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;五、Inventory内置参数&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://ywpie.com/zb_users/upload/2026/05/202605081778225694617751.png&quot; title=&quot;ansible2.png&quot; alt=&quot;ansible2.png&quot;/&gt;&lt;/span&gt;&lt;/p&gt;</description><pubDate>Fri, 08 May 2026 15:25:57 +0800</pubDate></item><item><title>Oracle教程（5）数据泵备份教程与实战</title><link>https://ywpie.com/post/81.html</link><description>&lt;h2&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;一、数据泵介绍&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;数据泵（Data Pump）是 Oracle 10g 开始引入的命令行逻辑备份与恢复工具。&lt;span style=&quot;text-wrap-mode: wrap; font-size: 16px;&quot;&gt;通过 expdp / impdp ，可以对所有数据库对象（模式、表数据、表空间等）进行高效导出和导入，并且&lt;/span&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;支持多进程并行导出导入、可暂停恢复备份作业、&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;灵活的对象过滤与重映射（如 REMAP_SCHEMA、REMAP_TABLESPACE、REMAP_TABLE 等），&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;还能直接在数据库间通过网络链路完成数据传输，无需落地中间文件。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;二、备份前置工作&lt;/span&gt;&lt;/h2&gt;&lt;h3&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;1、创建数据泵目录&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;数据泵目录是 Oracle 中定义的逻辑目录，用于配置导出和导入数据的存放位置，在进行导出和导入操作时都需要指定该目录&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#登录数据库后创建逻辑目录
CREATE&amp;nbsp;DIRECTORY&amp;nbsp;DATA_PUMP_DIR&amp;nbsp;AS&amp;nbsp;&amp;#39;/u01/app/oracle/admin/backup/&amp;#39;;&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;h3&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;2、创建备份用户&lt;/span&gt;&lt;/h3&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;CREATE&amp;nbsp;USER&amp;nbsp;backup_user&amp;nbsp;IDENTIFIED&amp;nbsp;BY&amp;nbsp;&amp;quot;YourPassword123!&amp;quot;;
GRANT&amp;nbsp;READ,&amp;nbsp;WRITE&amp;nbsp;ON&amp;nbsp;DIRECTORY&amp;nbsp;DATA_PUMP_DIR&amp;nbsp;TO&amp;nbsp;backup_user;&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;h3&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;3、授予用户备份权限&lt;/span&gt;&lt;/h3&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;GRANT&amp;nbsp;CREATE&amp;nbsp;SESSION&amp;nbsp;TO&amp;nbsp;backup_user;
GRANT&amp;nbsp;EXP_FULL_DATABASE&amp;nbsp;TO&amp;nbsp;backup_user;
GRANT&amp;nbsp;IMP_FULL_DATABASE&amp;nbsp;TO&amp;nbsp;backup_user;&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;h3&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;4、授予用户数据泵目录权限&lt;/span&gt;&lt;/h3&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;GRANT&amp;nbsp;READ,&amp;nbsp;WRITE&amp;nbsp;ON&amp;nbsp;DIRECTORY&amp;nbsp;DATA_PUMP_DIR&amp;nbsp;TO&amp;nbsp;backup_user;&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;h2&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;三、expdp / impdp 常用选项说明&lt;/span&gt;&lt;/h2&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;expdp&amp;nbsp;username/password@db&amp;nbsp;SERVICE_NAME&amp;nbsp;directory=DATA_PUMP_DIR&amp;nbsp;dumpfile=backup.dmp&amp;nbsp;logfile=backup.log&amp;nbsp;schemas=SCHEMA_NAME&lt;/pre&gt;&lt;h3&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;1、expdp常用选项&lt;/span&gt;&lt;/h3&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;· 文件相关&lt;br/&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;username/password：执行备份的数据库用户名和密码&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;@db：指定需要连接的数据库实例，可以通过tnsnames.ora查看&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;directory=DUMP_DIR：指示数据泵目录，即一开始创建的逻辑目录&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;dumpfile=backup.dmp：指定备份文件名&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;logfile=backup.log：备份日志&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;PARALLEL=4：并行备份，可以提高到处速度&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;COMPRESSION=ALL：压缩备份，ALL表示数据 + 元数据全部压缩，还可以设置为METADATA_ONLY（默认）、DATA_ONLY、NONE&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;JOB_NAME=my_backup：给任务命名，方便监控和恢复&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;FLASHBACK_TIME=&amp;quot;TO_TIMESTAMP(&amp;#39;2024-01-01 00:00:00&amp;#39;,&amp;#39;YYYY-MM-DD HH24:MI:SS&amp;#39;)&amp;quot;：导出某一时间点的一致性数据&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;· 备份范围（四选一）&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;FULL=Y：导出整个数据库&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;SCHEMAS=$SCHEMA_NAME：导出指定 Schema&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;TABLES=$SCHEMA_NAME_$TABLE_NAME：导出指定表&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;TABLESPACES=TBS1,TBS2：导出指定表空间&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;· 过滤&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;CONTENT=ALL：指定需要导出的数据，默认为ALL，此外还有DATA_ONLY 和 METADATA_ONLY&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;QUERY=$TABLE_NAME:&amp;quot;WHERE deptno=10&amp;quot;：按照过滤条件进行备份&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;EXCLUDE=TABLE:&amp;quot;IN (&amp;#39;TMP&amp;#39;,&amp;#39;LOG&amp;#39;,&amp;#39;TEMP&amp;#39;)&amp;quot;：备份时排除指定对象&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;INCLUDE=TABLE:&amp;quot;IN (&amp;#39;EMP&amp;#39;,&amp;#39;DEPT&amp;#39;,&amp;#39;SALARY&amp;#39;)&amp;quot;：备份时只包含指定对象&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3 style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;2、impdp常用选项&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;strong style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;dumpfile=backup.dmp：指定备份文件&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;logfile=restore.log：指定恢复过程的日志文件&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;schemas=SCHEMA_NAME：指定要恢复的模式名&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;TABLE_EXISTS_ACTION=REPLACE：导入时如果表已存在的处理方式，支持SKIP（跳过）、APPEND（追加）、TRUNCATE（先清空）和REPLACE（替换）&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;text-wrap-mode: wrap; font-size: 16px;&quot;&gt;remap_tablespace=&lt;span style=&quot;text-wrap-mode: wrap; font-size: 16px;&quot;&gt;old_tablespace:new_tablespace&lt;/span&gt;：&lt;span style=&quot;text-wrap-mode: wrap; font-size: 16px;&quot;&gt;如果要恢复到不同的表空间，通过 remap_tablespace 参数进行映射，如果导出还原时表空间名一致就可以不用该选项&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;text-wrap-mode: wrap; font-size: 16px;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2 style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;四、expdp / impdp 使用实例&lt;/span&gt;&lt;/h2&gt;&lt;h3&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;1、expdp导出示例&lt;/span&gt;&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;· 完整备份&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;expdp&amp;nbsp;username/password@db&amp;nbsp;directory=DATA_PUMP_DIR&amp;nbsp;dumpfile=all_tables.dmp&amp;nbsp;logfile=all_tables.log&amp;nbsp;full=yes&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;·&amp;nbsp;备份特定的表&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;expdp&amp;nbsp;username/password@db&amp;nbsp;directory=DATA_PUMP_DIR&amp;nbsp;dumpfile=table_backup.dmp&amp;nbsp;logfile=table_backup.log&amp;nbsp;tables=SCHEMA_NAME.TABLE_NAME&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;·&amp;nbsp;只导出表结构&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;expdp&amp;nbsp;username/password@db&amp;nbsp;directory=DATA_PUMP_DIR&amp;nbsp;dumpfile=structure_only.dmp&amp;nbsp;logfile=structure_only.log&amp;nbsp;content=metadata_only&amp;nbsp;schemas=SCHEMA_NAME&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;·&amp;nbsp;并行导出&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;expdp&amp;nbsp;username/password@db&amp;nbsp;directory=DATA_PUMP_DIR&amp;nbsp;dumpfile=backup%U.dmp&amp;nbsp;logfile=backup.log&amp;nbsp;schemas=SCHEMA_NAME&amp;nbsp;parallel=4&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3 style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;2、impdp导出示例&lt;/span&gt;&lt;/strong&gt;&lt;/h3&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;· 从完整备份恢复&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;impdp&amp;nbsp;username/password@db&amp;nbsp;directory=DATA_PUMP_DIR&amp;nbsp;dumpfile=full_backup.dmp&amp;nbsp;logfile=full_restore.log&amp;nbsp;full=yes&lt;/pre&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;·&amp;nbsp;恢复指定表&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;impdp&amp;nbsp;username/password@db&amp;nbsp;directory=DATA_PUMP_DIR&amp;nbsp;dumpfile=table_backup.dmp&amp;nbsp;logfile=table_restore.log&amp;nbsp;tables=SCHEMA_NAME.TABLE_NAME&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;· 导入数据到指定表空间&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;impdp&amp;nbsp;username/password@db&amp;nbsp;directory=DATA_PUMP_DIR&amp;nbsp;dumpfile=backup.dmp&amp;nbsp;logfile=restore.log&amp;nbsp;remap_tablespace=old_tablespace:new_tablespace&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;五、监控数据泵作业&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;· 查看当前数据泵作业&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;SELECT&amp;nbsp;*&amp;nbsp;FROM&amp;nbsp;DBA_DATAPUMP_JOBS;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;strong&gt;·&amp;nbsp;&lt;/strong&gt;查看作业进度&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;SELECT&amp;nbsp;*&amp;nbsp;FROM&amp;nbsp;DBA_DATAPUMP_SESSIONS;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2 style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;六、备份还原实战&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;将A服务器 Oracle 中的&amp;nbsp;IPLAT.HISTRORY_LOG 表恢复到B服务器 Oralce 中进行归档，恢复后保持表名不变或者使用一张新表保存，但是SCHEMA需要保持一致&lt;/span&gt;&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;1、源库创建&amp;nbsp;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;DIRECTORY&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;DIRECTORY 是 Oracle 中的数据库对象，用于指定数据库和操作系统物理路径的映射关系，把数据库内的一个名字和服务器磁盘上的真实路径关联起来。在对&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;Oracle 进行备份时，不允许直接写操作系统路径，而是需要先创建 DIRECTORY 对象，再把这个对象的权限授予具体用户&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;--&amp;nbsp;查看已有&amp;nbsp;directory
SELECT&amp;nbsp;directory_name,&amp;nbsp;directory_path&amp;nbsp;FROM&amp;nbsp;dba_directories;

--&amp;nbsp;如不存在，创建一个（路径需提前在&amp;nbsp;OS&amp;nbsp;上建好）
CREATE&amp;nbsp;OR&amp;nbsp;REPLACE&amp;nbsp;DIRECTORY&amp;nbsp;dp_dir&amp;nbsp;AS&amp;nbsp;&amp;#39;/data/datapump&amp;#39;;

--&amp;nbsp;授权给&amp;nbsp;iplat&amp;nbsp;用户
GRANT&amp;nbsp;READ,&amp;nbsp;WRITE&amp;nbsp;ON&amp;nbsp;DIRECTORY&amp;nbsp;dp_dir&amp;nbsp;TO&amp;nbsp;iplat;&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;h3&gt;&lt;strong style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;2、导出数据&lt;/span&gt;&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;注意&amp;nbsp;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;DIRECTORY 的名字要与数据库中已有的 DIRECTORY 保持一致&lt;/span&gt;&lt;/span&gt;&lt;strong style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;expdp&amp;nbsp;iplat/密码@服务名&amp;nbsp;DIRECTORY=DUMPDIR&amp;nbsp;\&amp;nbsp;&amp;nbsp;&amp;nbsp;
DUMPFILE=em_hi_log_$(date&amp;nbsp;+%Y%m%d).dmp&amp;nbsp;\
LOGFILE=em_hi_log_exp_$(date&amp;nbsp;+%Y%m%d).log&amp;nbsp;\
TABLES=iplat.EM_HI_LOG&amp;nbsp;\
COMPRESSION=ALL&lt;/pre&gt;&lt;p&gt;&lt;strong style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;&lt;/p&gt;&lt;h3&gt;3、目标库创建&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;DIRECTORY&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;确认目标库 DUMPDIR 目录对象存在，如果不存话按照上面的步骤创建&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;SELECT&amp;nbsp;directory_name,&amp;nbsp;directory_path&amp;nbsp;FROM&amp;nbsp;dba_directories&amp;nbsp;&amp;nbsp;WHERE&amp;nbsp;directory_name&amp;nbsp;=&amp;nbsp;&amp;#39;DUMPDIR&amp;#39;;&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;h3&gt;4、目标库创建用户&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;确认 iplat 用户存在，如果不存在需要提前创建&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;SELECT&amp;nbsp;username,&amp;nbsp;account_status&amp;nbsp;FROM&amp;nbsp;dba_users&amp;nbsp;WHERE&amp;nbsp;username&amp;nbsp;=&amp;nbsp;&amp;#39;IPLAT&amp;#39;;&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;h3&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;5、确认目标库&lt;/span&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;存在&lt;/span&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;表空间&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;源库用的是 DS_IPLAT01表空间，如果目标库不进行表空间映射的话就需要保持一致；如果要不存在该表空间就要先行创建，避免写入到默认表空间&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;SELECT&amp;nbsp;tablespace_name,&amp;nbsp;status&amp;nbsp;FROM&amp;nbsp;dba_tablespaces&amp;nbsp;WHERE&amp;nbsp;tablespace_name&amp;nbsp;=&amp;nbsp;&amp;#39;DS_IPLAT01&amp;#39;;

--创建表空间
CREATE&amp;nbsp;TABLESPACE&amp;nbsp;DS_IPLAT01&amp;nbsp;\
DATAFILE&amp;nbsp;&amp;#39;/u01/oradata/orcl/ds_iplat01_01.dbf&amp;#39;&amp;nbsp;SIZE&amp;nbsp;10G&amp;nbsp;\
AUTOEXTEND&amp;nbsp;ON&amp;nbsp;NEXT&amp;nbsp;1000M&amp;nbsp;MAXSIZE&amp;nbsp;32G
EXTENT&amp;nbsp;MANAGEMENT&amp;nbsp;LOCALSEGMENT&amp;nbsp;SPACE&amp;nbsp;MANAGEMENT&amp;nbsp;AUTO;&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;h3&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;6、导入数据&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;这里使用REMAP_TABLE将表名进行了修改&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;impdp&amp;nbsp;&amp;#39;iplat/123456&amp;#39;&amp;nbsp;\
DIRECTORY=DUMPDIR&amp;nbsp;DUMPFILE=em_hi_log_20260611.dmp&amp;nbsp;\
LOGFILE=em_hi_log_imp_20260611.log&amp;nbsp;\
TABLES=iplat.EM_HI_LOG&amp;nbsp;\
REMAP_TABLE=iplat.EM_HI_LOG:EM_HI_LOG_202606&lt;/pre&gt;</description><pubDate>Thu, 23 Apr 2026 15:03:52 +0800</pubDate></item></channel></rss>