<?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>Oracle教程（8）Oracle 19C 单实例调整为 ADG 架构</title><link>https://ywpie.com/post/92.html</link><description>&lt;h2&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;一、ADG架构介绍&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;Active Data Guard 简称ADG，是 Oracle Data Guard 架构下给物理备库（Physical Standby）追加的一个功能，非ADG模式下的物理备库只能保持数据同步，但不能对外提供查询，如果要提供只读查询需要暂停同步。开启 ADG 后，备库可以实现保持数据同步的同时提供只读服务，数据延迟通常在秒级，这样可以把报表、统计等只读查询从主库分流到备库，实现读写分离，同时不影响它随时切换接管为主库的容灾能力&lt;/span&gt;&lt;/p&gt;&lt;h2&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;二、Oracle 19C 单机改 ADG 步骤&lt;/span&gt;&lt;/h2&gt;&lt;h3&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;1、主库部分&lt;/span&gt;&lt;/h3&gt;&lt;h4&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;1.1 确认主库&lt;/span&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: nowrap;&quot;&gt;归档模式&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;ADG的底层原理是备库靠重放主库的归档日志来保持数据同步，如果主库不开归档就会存在主库已经将之前的redo日志覆盖了，但是备库还没有收到的情况（比如备库停机维护期间），此时就没有办法保证数据的同步了&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;--&amp;nbsp;下面两条命令都可以查询是否开启归档模式
sqlplus&amp;nbsp;/&amp;nbsp;as&amp;nbsp;sysdba

SQL&amp;gt;&amp;nbsp;ARCHIVE&amp;nbsp;LOG&amp;nbsp;LIST;
Database&amp;nbsp;log&amp;nbsp;mode	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Archive&amp;nbsp;Mode
Automatic&amp;nbsp;archival	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Enabled
Archive&amp;nbsp;destination	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/oraarch/DBXSPROD/archivelog
Oldest&amp;nbsp;online&amp;nbsp;log&amp;nbsp;sequence&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;137242
Next&amp;nbsp;log&amp;nbsp;sequence&amp;nbsp;to&amp;nbsp;archive&amp;nbsp;&amp;nbsp;&amp;nbsp;137247
Current&amp;nbsp;log&amp;nbsp;sequence	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;137247


SQL&amp;gt;&amp;nbsp;SELECT&amp;nbsp;log_mode&amp;nbsp;FROM&amp;nbsp;v$database;
LOG_MODE
------------
ARCHIVELOG&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;h4&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;1.2 开启归档模式（如未开启）&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;如果是 ARCHIVELOG 代表已经开启归档模式，后续操作不用重启主库；如果是 NOARCHIVELOG 则必须先切换到归档模式，该操作只能在数据库 MOUNT 状态下进行，需要短暂停止数据库服务&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;SQL&amp;gt;SHUTDOWN&amp;nbsp;IMMEDIATE;
SQL&amp;gt;STARTUP&amp;nbsp;MOUNT;
SQL&amp;gt;ALTER&amp;nbsp;DATABASE&amp;nbsp;ARCHIVELOG;
SQL&amp;gt;ALTER&amp;nbsp;DATABASE&amp;nbsp;OPEN;
SQL&amp;gt;SELECT&amp;nbsp;log_mode&amp;nbsp;FROM&amp;nbsp;v$database;
SQL&amp;gt;ALTER&amp;nbsp;SYSTEM&amp;nbsp;SWITCH&amp;nbsp;LOGFILE;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#主动触发一次日志切换，验证归档进程确实能正常把日志写出去&lt;/pre&gt;&lt;h4&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;1.&lt;/span&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: nowrap;&quot;&gt;3 主库信息核查&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap; 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;记录主库 db_unique_name 和&amp;nbsp;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;db_name&lt;/span&gt;，必须保持&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;主备节点&lt;/span&gt; db_name 相同，db_unique_name 则必须不同。&lt;/span&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;db_unique_name 作为节点的&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;span style=&quot;font-size: 16px;&quot;&gt;db_name 参数不需要手工修改，备库在后续通过 RMAN 复制数据时会继承主库的值&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#&amp;nbsp;这里主库&amp;nbsp;db_unique_name&amp;nbsp;为&amp;nbsp;dbxsprod，后续会给备库起一个名字&amp;nbsp;dbxsprod_standby

SQL&amp;gt;&amp;nbsp;SHOW&amp;nbsp;PARAMETER&amp;nbsp;db_unique_name;
NAME				&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TYPE	&amp;nbsp;VALUE
------------------------------------&amp;nbsp;-----------&amp;nbsp;------------------------------
db_unique_name	&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;string	&amp;nbsp;dbxsprod
		&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
		&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
SQL&amp;gt;&amp;nbsp;SHOW&amp;nbsp;PARAMETER&amp;nbsp;db_name;
NAME				&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TYPE	&amp;nbsp;VALUE
------------------------------------&amp;nbsp;-----------&amp;nbsp;------------------------------
db_name&amp;nbsp;			&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string	&amp;nbsp;dbxsprod&lt;/pre&gt;&lt;h4 style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;1.4 开启 FORCE LOGGING&lt;/span&gt;&lt;/h4&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;Oracle 允许某些批量操作通过 NOLOGGING 的方式提升性能，但是由于这类操作不写完整的 redo，会导致备库数据不完整。通过 FORCE LOGGING 可以强制记录完整 redo，保证备库数据完整性。该操作可以在线修改，执行时只需要等待当前正在进行的 NOLOGGING 操作结束，不会锁库或中断连接&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;SQL&amp;gt;&amp;nbsp;ALTER&amp;nbsp;DATABASE&amp;nbsp;FORCE&amp;nbsp;LOGGING;



SQL&amp;gt;&amp;nbsp;SELECT&amp;nbsp;force_logging&amp;nbsp;FROM&amp;nbsp;v$database;
FORCE_LOGGING
---------------------------------------
YES&lt;/pre&gt;&lt;h4&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;1.5 添加 Standby Redo Log&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;Standby Redo Log 虽然是在主库上创建，但是作用于备库。它用来接收主库实时发过来且还没归档完的 redo 数据。如果没有 standby redo log，主库必须等一个联机日志组写满、触发日志切换、生成了一份完整的归档文件之后才会把归档文件传给备库，这样备库和主库之间就存在数据延迟。&lt;/span&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;通过&amp;nbsp;standby redo log，主库的 LGWR（日志写入进程）在把 redo 写入自己本地联机日志的同一时刻就会把这部分内容发给备库的 standby redo log，不需要等主库那边写满整个日志文件、切换、归档完成才进行传送。&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;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: wrap; font-size: 16px;&quot;&gt;在创建 standby redo log 时，标准做法是单个文件的大小和主库联机日志一致，而组数需要在主库redolog基础上+1，&lt;span style=&quot;font-size: 16px;&quot;&gt;多出来的这一组是为了避免日志切换时因为找不到空闲的 standby 组而发生短暂阻塞&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;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#&amp;nbsp;可以看到6组日志，每个日志大小200M，编号为1-6

SQL&amp;gt;&amp;nbsp;SQL&amp;gt;&amp;nbsp;SELECT&amp;nbsp;group#,&amp;nbsp;bytes/1024/1024&amp;nbsp;AS&amp;nbsp;size_mb,&amp;nbsp;members&amp;nbsp;FROM&amp;nbsp;v$log;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GROUP#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SIZE_MB	&amp;nbsp;MEMBERS
----------&amp;nbsp;----------&amp;nbsp;----------
	&amp;nbsp;1	&amp;nbsp;&amp;nbsp;200	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1
	&amp;nbsp;2	&amp;nbsp;&amp;nbsp;200	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1
	&amp;nbsp;3	&amp;nbsp;&amp;nbsp;200	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1
	&amp;nbsp;4	&amp;nbsp;&amp;nbsp;200	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1
	&amp;nbsp;5	&amp;nbsp;&amp;nbsp;200	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1
	&amp;nbsp;6	&amp;nbsp;&amp;nbsp;200	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;/p&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 style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;standby log&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;standby redo log 的组号不能与现有组号冲突，一般顺着往后编写，比如主库是1/2/3，那么备库就可以使用4/5/6/7。&lt;span style=&quot;font-size: 16px;&quot;&gt;这一步是纯新增文件，不影响任何现有日志组，可以放心在线操作，对业务无影响&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;--&amp;nbsp;查看主库联机日志路径

SQL&amp;gt;&amp;nbsp;SELECT&amp;nbsp;member&amp;nbsp;FROM&amp;nbsp;v$logfile;

MEMBER
--------------------------------------------------------------------------------
/oradata/DBXSPROD/redo03.log
/oradata/DBXSPROD/redo02.log
/oradata/DBXSPROD/redo01.log
/oradata/DBXSPROD/redo04.log
/oradata/DBXSPROD/redo05.log
/oradata/DBXSPROD/redo06.log



--&amp;nbsp;添加standby&amp;nbsp;redo&amp;nbsp;log，在redolog基础上增加一组
ALTER&amp;nbsp;DATABASE&amp;nbsp;ADD&amp;nbsp;STANDBY&amp;nbsp;LOGFILE&amp;nbsp;GROUP&amp;nbsp;7&amp;nbsp;(&amp;#39;/oradata/DBXSPROD/stdredo07.log&amp;#39;)&amp;nbsp;SIZE&amp;nbsp;200M;
ALTER&amp;nbsp;DATABASE&amp;nbsp;ADD&amp;nbsp;STANDBY&amp;nbsp;LOGFILE&amp;nbsp;GROUP&amp;nbsp;8&amp;nbsp;(&amp;#39;/oradata/DBXSPROD/stdredo08.log&amp;#39;)&amp;nbsp;SIZE&amp;nbsp;200M;
ALTER&amp;nbsp;DATABASE&amp;nbsp;ADD&amp;nbsp;STANDBY&amp;nbsp;LOGFILE&amp;nbsp;GROUP&amp;nbsp;9&amp;nbsp;(&amp;#39;/oradata/DBXSPROD/stdredo09.log&amp;#39;)&amp;nbsp;SIZE&amp;nbsp;200M;
ALTER&amp;nbsp;DATABASE&amp;nbsp;ADD&amp;nbsp;STANDBY&amp;nbsp;LOGFILE&amp;nbsp;GROUP&amp;nbsp;10&amp;nbsp;(&amp;#39;/oradata/DBXSPROD/stdredo10.log&amp;#39;)&amp;nbsp;SIZE&amp;nbsp;200M;
ALTER&amp;nbsp;DATABASE&amp;nbsp;ADD&amp;nbsp;STANDBY&amp;nbsp;LOGFILE&amp;nbsp;GROUP&amp;nbsp;11&amp;nbsp;(&amp;#39;/oradata/DBXSPROD/stdredo11.log&amp;#39;)&amp;nbsp;SIZE&amp;nbsp;200M;
ALTER&amp;nbsp;DATABASE&amp;nbsp;ADD&amp;nbsp;STANDBY&amp;nbsp;LOGFILE&amp;nbsp;GROUP&amp;nbsp;12&amp;nbsp;(&amp;#39;/oradata/DBXSPROD/stdredo12.log&amp;#39;)&amp;nbsp;SIZE&amp;nbsp;200M;
ALTER&amp;nbsp;DATABASE&amp;nbsp;ADD&amp;nbsp;STANDBY&amp;nbsp;LOGFILE&amp;nbsp;GROUP&amp;nbsp;13&amp;nbsp;(&amp;#39;/oradata/DBXSPROD/stdredo13.log&amp;#39;)&amp;nbsp;SIZE&amp;nbsp;200M;&lt;/pre&gt;&lt;h4&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;1.6 ADG 相关初始化参数&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;· 声明集群成员&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;各成员名字取参数 db_unique_name 的值&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;ALTER&amp;nbsp;SYSTEM&amp;nbsp;SET&amp;nbsp;log_archive_config=&amp;#39;DG_CONFIG=(dbxsprod,dbxsprod_standby)&amp;#39;;&lt;/pre&gt;&lt;p&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&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;· 主库 redo log 路径配置&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;主库产生的所有 redo 日志理论上有两个去处：一是本地归档用于数据恢复；二是传给备库，让备库重放这份 redo保持数据同步。Oracle 允许一个库同时配置多个 log_archive_dest_N（N 最多到 31），根据配置的内容决定日志到底是去哪里。随后会在备库也进行同样的配置，只是把远端目标地址互换了一下，这样可以在发生主备切换后保持日志传输的正常。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;VALID_FOR参数说明：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;ALL_LOGFILES,ALL_ROLES&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;：不管是自己产生还是远端接收的redolog + 不管我现在是主还是备，本条配置都要生效进行本地归档，这样发生角色切换后参数也是生效的&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;ONLINE_LOGFILES,PRIMARY_ROLE&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;：只有当这份redo是自己产生的，且自己现在是主的时候，才把这份 redo 外传给SERVICE所指定的备库&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;ASYNC：表示主库提交事务不需要等备库确认写盘成功，而是异步传输，这样可以避免拖累主库性能，只不过有小概率出现数据丢失&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#先确认现有&amp;nbsp;log_archive_dest_1是不是已经有配置
SQL&amp;gt;&amp;nbsp;SHOW&amp;nbsp;PARAMETER&amp;nbsp;log_archive_dest_1;


NAME				&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TYPE	&amp;nbsp;VALUE
------------------------------------&amp;nbsp;-----------&amp;nbsp;------------------------------
log_archive_dest_1		&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string	&amp;nbsp;location=/oraarch/DBXSPROD/archivelog

#定义主库本地归档
ALTER&amp;nbsp;SYSTEM&amp;nbsp;SET&amp;nbsp;log_archive_dest_1=&amp;#39;LOCATION=/oraarch/DBXSPROD/archivelog&amp;nbsp;VALID_FOR=(ALL_LOGFILES,ALL_ROLES)&amp;nbsp;DB_UNIQUE_NAME=dbxsprod&amp;#39;;
ALTER&amp;nbsp;SYSTEM&amp;nbsp;SET&amp;nbsp;log_archive_dest_state_1=ENABLE;



#先确认现有&amp;nbsp;log_archive_dest_2是不是已经有配置，这里为空表示还没有配置
SQL&amp;gt;&amp;nbsp;SHOW&amp;nbsp;PARAMETER&amp;nbsp;log_archive_dest_2;

NAME				&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TYPE	&amp;nbsp;VALUE
------------------------------------&amp;nbsp;-----------&amp;nbsp;------------------------------
log_archive_dest_2		&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string

#定义远端路径
ALTER&amp;nbsp;SYSTEM&amp;nbsp;SET&amp;nbsp;log_archive_dest_2=&amp;#39;SERVICE=dbxsprod_standby&amp;nbsp;ASYNC&amp;nbsp;VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)&amp;nbsp;DB_UNIQUE_NAME=dbxsprod_standby&amp;#39;;
ALTER&amp;nbsp;SYSTEM&amp;nbsp;SET&amp;nbsp;log_archive_dest_state_2=ENABLE;&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;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;· FAL配置&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;FAL（Fetch Archive Log）用于灾难恢复场景，如果备库因网络抖动漏收了某些归档日志，会主动向 fal_server 指定的库去补拉缺失的日志。这个参数主要在备库端起作用，现在属于预防性配置，发生主备切换后不用再去补这个配置&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;ALTER&amp;nbsp;SYSTEM&amp;nbsp;SET&amp;nbsp;fal_server=&amp;#39;dbxsprod_standby&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&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;主库新增或删除了数据文件（比如加表空间），设为 AUTO 后备库会自动同步建/删对应物理文件。如果不设置，主库加了数据文件后备库不会跟着建，等 redo 应用到那条 DDL 时 MRP 进程会直接报错并停止应用&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;ALTER&amp;nbsp;SYSTEM&amp;nbsp;SET&amp;nbsp;standby_file_management=AUTO;&lt;/pre&gt;&lt;h4&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;1.&lt;/span&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: nowrap;&quot;&gt;7 主库TNS配置&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;由于在主库 log_archive_dest_N 中配置了&amp;nbsp;SERVICE=ftxsprdu_standby ，所以需要增加一条TNS解析，不然无法识别这个名称背后的地址和端口。该配置文件&lt;span style=&quot;font-size: 16px;&quot;&gt;是纯文本，客户端每次连接都会重新读取，不需要重启实例&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#&amp;nbsp;主库&amp;nbsp;tnsnames.ora&amp;nbsp;添加：
su&amp;nbsp;-&amp;nbsp;oracle
vi&amp;nbsp;$ORACLE_HOME/network/admin/tnsnames.ora
dbxsprod_standby&amp;nbsp;=
&amp;nbsp;&amp;nbsp;(DESCRIPTION&amp;nbsp;=
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(ADDRESS&amp;nbsp;=&amp;nbsp;(PROTOCOL&amp;nbsp;=&amp;nbsp;TCP)(HOST&amp;nbsp;=&amp;nbsp;10.128.32.94)(PORT&amp;nbsp;=&amp;nbsp;1521))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(CONNECT_DATA&amp;nbsp;=&amp;nbsp;(SERVER&amp;nbsp;=&amp;nbsp;DEDICATED)(SERVICE_NAME&amp;nbsp;=&amp;nbsp;dbxsprod_standby))
&amp;nbsp;&amp;nbsp;)
&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;
#验证
tnsping&amp;nbsp;ftxsprdu_standby&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: nowrap;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3 style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;2、备库部分&lt;/span&gt;&lt;/h3&gt;&lt;h4 style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: nowrap;&quot;&gt;2.1 安装 Oracle&lt;/span&gt;&lt;/h4&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: nowrap;&quot;&gt;备库版本一定不能低于主库，只用安装数据库软件，不用运行dbca建库，过程略，环境变量配置如下&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;su&amp;nbsp;-&amp;nbsp;oracle
vi&amp;nbsp;~/.bash_profile

if&amp;nbsp;[&amp;nbsp;-f&amp;nbsp;~/.bashrc&amp;nbsp;];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.&amp;nbsp;~/.bashrc
fi

PATH=$PATH:$HOME/.local/bin:$HOME/bin
export&amp;nbsp;PATH

export&amp;nbsp;ORACLE_SID=dbxsprod
export&amp;nbsp;ORACLE_BASE=/oracle/app/oracle
export&amp;nbsp;ORACLE_HOME=$ORACLE_BASE/product/19.10/db_1
export&amp;nbsp;PATH=$ORACLE_HOME/bin:$PATH
export&amp;nbsp;LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export&amp;nbsp;NLS_LANG=american_america.ZHS16GBK

umask&amp;nbsp;022&lt;/pre&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: nowrap;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;h4&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;2.2 创建 listener.ora&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;因为备库实例此时还没启动，只能通过配置文件静态注册到监听器中。配置文件声明了监听名（服务名）、端口号等，后续 RMAN 连接备库 duplicate 也需要使用配置文件里的信息&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;vi&amp;nbsp;/oracle/app/oracle/product/19.10/db_1/network/admin/listener.ora
LISTENER&amp;nbsp;=
&amp;nbsp;&amp;nbsp;(DESCRIPTION_LIST&amp;nbsp;=
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(DESCRIPTION&amp;nbsp;=
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(ADDRESS&amp;nbsp;=&amp;nbsp;(PROTOCOL&amp;nbsp;=&amp;nbsp;TCP)(HOST&amp;nbsp;=&amp;nbsp;10.128.32.94)(PORT&amp;nbsp;=&amp;nbsp;1521))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)
&amp;nbsp;&amp;nbsp;)

SID_LIST_LISTENER&amp;nbsp;=
&amp;nbsp;&amp;nbsp;(SID_LIST&amp;nbsp;=
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(SID_DESC&amp;nbsp;=
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(GLOBAL_DBNAME&amp;nbsp;=&amp;nbsp;dbxsprod_standby)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(ORACLE_HOME&amp;nbsp;=&amp;nbsp;/oracle/app/oracle/product/19.10/db_1)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(SID_NAME&amp;nbsp;=&amp;nbsp;dbxsprod)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)
&amp;nbsp;&amp;nbsp;)&lt;/pre&gt;&lt;h4 style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;2.3 备库TNS配置&lt;/span&gt;&lt;/h4&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;vi&amp;nbsp;/oracle/app/oracle/product/19.10/db_1/network/admin/tnsnames.ora

dbxsprod&amp;nbsp;=
&amp;nbsp;&amp;nbsp;(DESCRIPTION&amp;nbsp;=
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(ADDRESS&amp;nbsp;=&amp;nbsp;(PROTOCOL&amp;nbsp;=&amp;nbsp;TCP)(HOST&amp;nbsp;=&amp;nbsp;10.128.32.140)(PORT&amp;nbsp;=&amp;nbsp;1521))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(CONNECT_DATA&amp;nbsp;=&amp;nbsp;(SERVER&amp;nbsp;=&amp;nbsp;DEDICATED)(SERVICE_NAME&amp;nbsp;=&amp;nbsp;dbxsprod))
&amp;nbsp;&amp;nbsp;)&lt;/pre&gt;&lt;h4 style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;2.4 启动监听&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;启动后确保 dbxsprod_standby 服务已经注册、状态 READY&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;lsnrctl&amp;nbsp;start
lsnrctl&amp;nbsp;status&lt;/pre&gt;&lt;h4&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;2.5 TNS ping测试&lt;/span&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;&quot;&gt;主备节点都应该返回 OK&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#&amp;nbsp;主库ping备库
tnsping&amp;nbsp;dbxsprod_standby

#&amp;nbsp;备库ping主库
tnsping&amp;nbsp;dbxsprod&lt;/pre&gt;&lt;h3&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;3、密码文件同步&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;主备两端必须使用完全相同的密码文件，否则连接会失败，所以需要在主库上将密码文件传输给备库。密码文件固定存放在 $ORACLE_HOME/dbs 目录。密码文件命名规则固定为 orapw + ORACLE_SID 的方式，如orapwdbxsprod。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;如果发现没有该文件或者连远程密码文件认证都没有开启的话需要按照后续步骤先行开启&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#查看主库密码文件
[oracle@ftxsdb&amp;nbsp;~]$&amp;nbsp;ll&amp;nbsp;$ORACLE_HOME/dbs
-rw-rw----&amp;nbsp;1&amp;nbsp;oracle&amp;nbsp;dba&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1544&amp;nbsp;Aug&amp;nbsp;17&amp;nbsp;&amp;nbsp;2025&amp;nbsp;hc_ftxsprdu.dat
-rw-rw----&amp;nbsp;1&amp;nbsp;oracle&amp;nbsp;dba&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1544&amp;nbsp;Nov&amp;nbsp;10&amp;nbsp;&amp;nbsp;2022&amp;nbsp;hc_ftxsprod.dat
-rw-rw----&amp;nbsp;1&amp;nbsp;oracle&amp;nbsp;dba&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1544&amp;nbsp;Nov&amp;nbsp;&amp;nbsp;7&amp;nbsp;&amp;nbsp;2022&amp;nbsp;hc_ftxsprodm.dat
-rw-rw----&amp;nbsp;1&amp;nbsp;oracle&amp;nbsp;dba&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1544&amp;nbsp;Nov&amp;nbsp;&amp;nbsp;7&amp;nbsp;&amp;nbsp;2022&amp;nbsp;hc_ftxsprodum.dat
-rw-r--r--&amp;nbsp;1&amp;nbsp;oracle&amp;nbsp;dba&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1419&amp;nbsp;Nov&amp;nbsp;28&amp;nbsp;&amp;nbsp;2022&amp;nbsp;initftxsprdu.ora
-rw-r--r--&amp;nbsp;1&amp;nbsp;oracle&amp;nbsp;dba&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3079&amp;nbsp;May&amp;nbsp;14&amp;nbsp;&amp;nbsp;2015&amp;nbsp;init.ora
-rw-r-----&amp;nbsp;1&amp;nbsp;oracle&amp;nbsp;dba&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;24&amp;nbsp;Nov&amp;nbsp;&amp;nbsp;7&amp;nbsp;&amp;nbsp;2022&amp;nbsp;lkFTXSPRDU
-rw-r-----&amp;nbsp;1&amp;nbsp;oracle&amp;nbsp;dba&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;24&amp;nbsp;Dec&amp;nbsp;&amp;nbsp;8&amp;nbsp;&amp;nbsp;2021&amp;nbsp;lkFTXSPROD
-rw-r-----&amp;nbsp;1&amp;nbsp;oracle&amp;nbsp;dba&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;24&amp;nbsp;Nov&amp;nbsp;&amp;nbsp;7&amp;nbsp;&amp;nbsp;2022&amp;nbsp;lkFTXSPRODM
-rw-r-----&amp;nbsp;1&amp;nbsp;oracle&amp;nbsp;dba&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;24&amp;nbsp;Nov&amp;nbsp;&amp;nbsp;7&amp;nbsp;&amp;nbsp;2022&amp;nbsp;lkFTXSPRODUM
-rw-r-----&amp;nbsp;1&amp;nbsp;oracle&amp;nbsp;dba&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2048&amp;nbsp;Nov&amp;nbsp;11&amp;nbsp;&amp;nbsp;2022&amp;nbsp;orapwwdbxsprod&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#需要确保有类似这样的文件存在
-rw-r-----&amp;nbsp;1&amp;nbsp;oracle&amp;nbsp;dba&amp;nbsp;11288576&amp;nbsp;Sep&amp;nbsp;18&amp;nbsp;02:08&amp;nbsp;snapcf_ftxsprdu.f
-rw-r-----&amp;nbsp;1&amp;nbsp;oracle&amp;nbsp;dba&amp;nbsp;11845632&amp;nbsp;Nov&amp;nbsp;10&amp;nbsp;&amp;nbsp;2022&amp;nbsp;snapcf_ftxsprod.f
-rw-r-----&amp;nbsp;1&amp;nbsp;oracle&amp;nbsp;dba&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;4608&amp;nbsp;Sep&amp;nbsp;17&amp;nbsp;14:14&amp;nbsp;spfileftxsprdu.ora
-rw-r-----&amp;nbsp;1&amp;nbsp;oracle&amp;nbsp;dba&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3584&amp;nbsp;Nov&amp;nbsp;10&amp;nbsp;&amp;nbsp;2022&amp;nbsp;spfileftxsprdu.ora.bak
-rw-r-----&amp;nbsp;1&amp;nbsp;oracle&amp;nbsp;dba&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3584&amp;nbsp;Mar&amp;nbsp;31&amp;nbsp;&amp;nbsp;2022&amp;nbsp;spfileftxsprod.ora&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;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;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px; background-color: #FFFF00;&quot;&gt;确保主库已经开启远程密码认证功能，remote_login_passwordfile的值应该为&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap; background-color: #FFFF00;&quot;&gt;&amp;nbsp;EXCLUSIVE。如果是&amp;nbsp;&lt;/span&gt;NONE 就必须开启并重启数据库才会生效。这个密码文件是专门给&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap; background-color: #FFFF00;&quot;&gt;&amp;nbsp;SYSDBA、SYSOPER、SYSDG、SYSBACKUP 这类&lt;/span&gt;存在管理权限的账号使用的，确保&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap; background-color: #FFFF00;&quot;&gt;数据库在没打开，甚至没 mount 的时候也能登录。而普通&lt;/span&gt;账号权限是存在数据字典里，是登录数据库后通过查字典验证，不需要密码文件&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;SQL&amp;gt;&amp;nbsp;SHOW&amp;nbsp;PARAMETER&amp;nbsp;remote_login_passwordfile
NAME				&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TYPE	&amp;nbsp;VALUE
------------------------------------&amp;nbsp;-----------&amp;nbsp;------------------------------
remote_login_passwordfile	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string	&amp;nbsp;NONE


#如果是NONE需要修改后重启数据库
SQL&amp;gt;&amp;nbsp;ALTER&amp;nbsp;SYSTEM&amp;nbsp;SET&amp;nbsp;remote_login_passwordfile=&amp;#39;EXCLUSIVE&amp;#39;&amp;nbsp;SCOPE=SPFILE;


#重启
SQL&amp;gt;SHUTDOWN&amp;nbsp;IMMEDIATE;
SQL&amp;gt;STARTUP;&lt;/pre&gt;&lt;p&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; text-wrap-mode: wrap;&quot;&gt;需要确保这个文件和备库 listener.ora 里 SID_NAME 所配置的值是一致的&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#查看SID
echo&amp;nbsp;$ORACLE_SID

#重启完成后创建密码文件
orapwd&amp;nbsp;file=$ORACLE_HOME/dbs/orapw$ORACLE_SID&amp;nbsp;password=你设置的密码&amp;nbsp;force=y&lt;/pre&gt;&lt;p&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;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;scp&amp;nbsp;/oracle/app/oracle/product/19.10/db_1/dbs/orapwftxsprdu&amp;nbsp;oracle@10.128.32.94:/oracle/app/oracle/product/19.10/db_1/dbs/&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;传完之后在备库确认文件存在，属主正确，权限通常是640&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;[mb:oracle][/oracle/app/oracle/product/19.10/db_1/dbs]#ls&amp;nbsp;-l&amp;nbsp;/oracle/app/oracle/product/19.10/db_1/dbs/
total&amp;nbsp;8
-rw-r--r--&amp;nbsp;1&amp;nbsp;oracle&amp;nbsp;dba&amp;nbsp;3079&amp;nbsp;May&amp;nbsp;14&amp;nbsp;&amp;nbsp;2015&amp;nbsp;init.ora
-rw-r-----&amp;nbsp;1&amp;nbsp;oracle&amp;nbsp;dba&amp;nbsp;2048&amp;nbsp;Sep&amp;nbsp;18&amp;nbsp;09:27&amp;nbsp;orapwftxsprdu&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;&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;h3 style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;4、&lt;/span&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: nowrap;&quot;&gt;RMAN 在线复制部分&lt;/span&gt;&lt;/h3&gt;&lt;h4&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;4.1 主库创建复制用户&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;RMAN 做 DUPLICATE ... FOR STANDBY 操作时必须拥有 SYSDBA 权限，如果有SYS用户密码的话可以直接略过此步。如果忘了密码可以新建一个用户，新建后需要重新传输一次密码文件&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#主库执行
CREATE&amp;nbsp;USER&amp;nbsp;adg_user&amp;nbsp;IDENTIFIED&amp;nbsp;BY&amp;nbsp;ADGuser#202609;
GRANT&amp;nbsp;SYSDBA&amp;nbsp;TO&amp;nbsp;adg_user;

#执行后确认下用户是否进入了密码文件
SELECT&amp;nbsp;*&amp;nbsp;FROM&amp;nbsp;v$pwfile_users&amp;nbsp;WHERE&amp;nbsp;username=&amp;#39;ADG_USER&amp;#39;;

#重新同步密码文件到备库
scp&amp;nbsp;/oracle/app/oracle/product/19.10/db_1/dbs/orapwftxsprdu&amp;nbsp;oracle@10.128.32.94:/oracle/app/oracle/product/19.10/db_1/dbs/&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;h4 style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;4.2&amp;nbsp;备库创建&lt;/span&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: nowrap;&quot;&gt;pfile&lt;/span&gt;&lt;/h4&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;备库此时还没有控制文件和任何的数据文件，这里需要先创建一个极简的pfile以启动实例，并切换到 nomount 状态，这样后续才能通过 RMAN 把控制文件和数据文件都复制过来&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;cat&amp;nbsp;/tmp/init_dbxsprod_standby.ora
db_name=&amp;#39;dbxsprod&amp;#39;&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;#这里的名称需要和主库SHOW&amp;nbsp;PARAMETER&amp;nbsp;db_name一致
db_unique_name=&amp;#39;dbxsprod_standby&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ADG靠它区分主备身份，必须和主库不同
control_files=&amp;#39;/oradata/DBXSPROD/control01.ctl&amp;#39;,&amp;#39;/oradata/DBXSPROD/control02.ctl&amp;#39;&amp;nbsp;&amp;nbsp;#RMAN复制时会在这里生成控制文件，写两份是为了和主库保持一致，不是硬性要求
audit_file_dest=&amp;#39;/oracle/app/oracle/admin/dbxsprod_standby/adump&amp;#39;&amp;nbsp;&amp;nbsp;#实例启动、登录都会往这个目录写审计文件，必须提前建好


mkdir&amp;nbsp;-p&amp;nbsp;/oradata/DBXSPROD
mkdir&amp;nbsp;-p&amp;nbsp;/oraarch/DBXSPROD/archivelog
mkdir&amp;nbsp;-p&amp;nbsp;/oracle/app/oracle/admin/dbxsprod_standby/adump&lt;/pre&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: nowrap;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;h4 style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;4.3 使用pfile启动数据库实例&lt;/span&gt;&lt;/h4&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;sqlplus&amp;nbsp;/&amp;nbsp;as&amp;nbsp;sysdba


SQL&amp;gt;&amp;nbsp;STARTUP&amp;nbsp;NOMOUNT&amp;nbsp;PFILE=&amp;#39;/tmp/init_dbxsprod_standby.ora&amp;#39;;
ORACLE&amp;nbsp;instance&amp;nbsp;started.
Total&amp;nbsp;System&amp;nbsp;Global&amp;nbsp;Area&amp;nbsp;1182790760&amp;nbsp;bytes
Fixed&amp;nbsp;Size		&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;8905832&amp;nbsp;bytes
Variable&amp;nbsp;Size		&amp;nbsp;&amp;nbsp;763363328&amp;nbsp;bytes
Database&amp;nbsp;Buffers	&amp;nbsp;&amp;nbsp;402653184&amp;nbsp;bytes
Redo&amp;nbsp;Buffers		&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;7868416&amp;nbsp;bytes



SQL&amp;gt;&amp;nbsp;SELECT&amp;nbsp;status&amp;nbsp;FROM&amp;nbsp;v$instance;

STATUS
------------------------
STARTED&lt;/pre&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;h4 style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;4.4 验证主备RMAN通信&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;在主库上通过rman连接两个节点，备库正常情况下应该是 not mounted ，对应备库的 NOMOUNT，正是复制开始前该有的状态。&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;[pvvmpgdb01:oraprod][/home/oraprod]#rman&amp;nbsp;target&amp;nbsp;adg_user/ADGuser#202609@dbxsprod&amp;nbsp;auxiliary&amp;nbsp;adg_user/ADGuser#202609@dbxsprod_standby
connected&amp;nbsp;to&amp;nbsp;target&amp;nbsp;database:&amp;nbsp;DBXSPROD&amp;nbsp;(DBID=1201673755)
connected&amp;nbsp;to&amp;nbsp;auxiliary&amp;nbsp;database:&amp;nbsp;DBXSPROD&amp;nbsp;(not&amp;nbsp;mounted)

RMAN&amp;gt;&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;h4 style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;4.5 创建&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: nowrap;&quot;&gt;RMAN 脚本&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;在主库上为RMAN建立一个配置文件&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;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;· FOR STANDBY FROM ACTIVE DATABASE&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;：核心指令， RMAN 从主库把数据流式复制到备库，同时自动生成备库 standby controlfile。整个过程主库全程保持 open 对外服务，不会锁表，对主库影响小&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;· SPFILE&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;：把参数文件也复制过去，并按 SET 项修改参数值，避免手工在备库配置&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;strong&gt;· SET：&lt;/strong&gt;RMAN 复制 spfile 时会把主库参数全部搬过来，如果没有用 SET 声明的参数，备库都会和主库完全一样。SET 的作用就是把备库端明确需要和主库端不同的参数项进行声明，而这里的关键就是找出这些参数&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;strong&gt;· NOFILENAMECHECK&lt;/strong&gt;：如果备库跟主库目录规划完全相同，通过该参数跳过路径校验，否则会因为路径一致而被拒绝；如果两边路径规划不同也不能加这个选项&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;cat&amp;nbsp;&amp;gt;&amp;nbsp;/tmp/duplicate.rman&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;&amp;#39;EOF&amp;#39;
DUPLICATE&amp;nbsp;TARGET&amp;nbsp;DATABASE&amp;nbsp;FOR&amp;nbsp;STANDBY&amp;nbsp;FROM&amp;nbsp;ACTIVE&amp;nbsp;DATABASE
&amp;nbsp;&amp;nbsp;SPFILE
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SET&amp;nbsp;db_unique_name=&amp;#39;dbxsprod_standby&amp;#39;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SET&amp;nbsp;control_files=&amp;#39;/oradata/DBXSPROD/control01.ctl&amp;#39;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SET&amp;nbsp;audit_file_dest=&amp;#39;/oracle/app/oracle/admin/dbxsprod_standby/adump&amp;#39;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SET&amp;nbsp;db_recovery_file_dest=&amp;#39;/oradata/fra&amp;#39;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SET&amp;nbsp;local_listener=&amp;#39;(ADDRESS=(PROTOCOL=TCP)(HOST=10.128.32.94)(PORT=1521))&amp;#39;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SET&amp;nbsp;log_archive_dest_1=&amp;#39;LOCATION=/oradata/DBXSPROD/archivelog&amp;nbsp;VALID_FOR=(ALL_LOGFILES,ALL_ROLES)&amp;nbsp;DB_UNIQUE_NAME=dbxsprod_standby&amp;#39;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SET&amp;nbsp;log_archive_dest_2=&amp;#39;SERVICE=dbxsprod&amp;nbsp;ASYNC&amp;nbsp;VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)&amp;nbsp;DB_UNIQUE_NAME=dbxsprod&amp;#39;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SET&amp;nbsp;fal_server=&amp;#39;dbxsprod&amp;#39;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SET&amp;nbsp;standby_file_management=&amp;#39;AUTO&amp;#39;
&amp;nbsp;&amp;nbsp;NOFILENAMECHECK;
EOF&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;h4&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;4.6 主库启动 RMAN 脚本&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;日志最后出现 Finished Duplicate Db 就是成功，备库会停在 MOUNT 状态&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;nohup&amp;nbsp;rman&amp;nbsp;target&amp;nbsp;adg_user/ADGuser#202609@dbxsprod&amp;nbsp;auxiliary&amp;nbsp;adg_user/ADGuser#202609@dbxsprod_standby&amp;nbsp;\
cmdfile=/tmp/duplicate.rman&amp;nbsp;\
log=/tmp/duplicate.log&amp;nbsp;&amp;gt;&amp;nbsp;/dev/null&amp;nbsp;2&amp;gt;&amp;amp;1&amp;nbsp;&amp;amp;


#确保日志最后没有报错
tail&amp;nbsp;-f&amp;nbsp;/tmp/duplicate.log
datafile&amp;nbsp;62&amp;nbsp;switched&amp;nbsp;to&amp;nbsp;datafile&amp;nbsp;copy
input&amp;nbsp;datafile&amp;nbsp;copy&amp;nbsp;RECID=64&amp;nbsp;STAMP=1246296287&amp;nbsp;file&amp;nbsp;name=/oradata/DBXSPROD/DS_IPLAT17.dbf
datafile&amp;nbsp;63&amp;nbsp;switched&amp;nbsp;to&amp;nbsp;datafile&amp;nbsp;copy
input&amp;nbsp;datafile&amp;nbsp;copy&amp;nbsp;RECID=65&amp;nbsp;STAMP=1246296287&amp;nbsp;file&amp;nbsp;name=/oradata/DBXSPROD/DS_IPLAT18.dbf
datafile&amp;nbsp;64&amp;nbsp;switched&amp;nbsp;to&amp;nbsp;datafile&amp;nbsp;copy
input&amp;nbsp;datafile&amp;nbsp;copy&amp;nbsp;RECID=66&amp;nbsp;STAMP=1246296287&amp;nbsp;file&amp;nbsp;name=/oradata/DBXSPROD/DS_IPLAT19.dbf
datafile&amp;nbsp;65&amp;nbsp;switched&amp;nbsp;to&amp;nbsp;datafile&amp;nbsp;copy
input&amp;nbsp;datafile&amp;nbsp;copy&amp;nbsp;RECID=67&amp;nbsp;STAMP=1246296287&amp;nbsp;file&amp;nbsp;name=/oradata/DBXSPROD/DS_IPLAT20.dbf
datafile&amp;nbsp;66&amp;nbsp;switched&amp;nbsp;to&amp;nbsp;datafile&amp;nbsp;copy
input&amp;nbsp;datafile&amp;nbsp;copy&amp;nbsp;RECID=68&amp;nbsp;STAMP=1246296287&amp;nbsp;file&amp;nbsp;name=/oradata/DBXSPROD/DS_SM08.dbf
datafile&amp;nbsp;67&amp;nbsp;switched&amp;nbsp;to&amp;nbsp;datafile&amp;nbsp;copy
input&amp;nbsp;datafile&amp;nbsp;copy&amp;nbsp;RECID=69&amp;nbsp;STAMP=1246296288&amp;nbsp;file&amp;nbsp;name=/oradata/DBXSPROD/DS_SA02.dbf
Finished&amp;nbsp;Duplicate&amp;nbsp;Db&amp;nbsp;at&amp;nbsp;2026/10/10&amp;nbsp;17:24:56

Recovery&amp;nbsp;Manager&amp;nbsp;complete.&lt;/pre&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&gt;&lt;/p&gt;&lt;h3 style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;5、备库应用日志部分&lt;/span&gt;&lt;/h3&gt;&lt;h4&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;5.1 检查备库状态&lt;br/&gt;&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;预期spfile有值，不是临时pfile；db_unique_name&amp;nbsp;是 dbxsprod_standby；角色为 PHYSICAL STANDBY、STANDBY；状态为 MOUNTED；备库要用 standby redo log 接收主库实时传来的日志，必须存在&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;SQL&amp;gt;SHOW&amp;nbsp;PARAMETER&amp;nbsp;spfile;

NAME				&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TYPE	&amp;nbsp;VALUE
------------------------------------&amp;nbsp;-----------&amp;nbsp;------------------------------
spfile				&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string	&amp;nbsp;/oracle/app/oracle/product/19.10/db_1/dbs/spfiledbxsprod.ora


SQL&amp;gt;SELECT&amp;nbsp;name,&amp;nbsp;db_unique_name,&amp;nbsp;database_role,&amp;nbsp;open_mode,&amp;nbsp;controlfile_type&amp;nbsp;FROM&amp;nbsp;v$database;
NAME	&amp;nbsp;&amp;nbsp;DB_UNIQUE_NAME		&amp;nbsp;DATABASE_ROLE	&amp;nbsp;&amp;nbsp;OPEN_MODE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CONTROL
---------&amp;nbsp;------------------------------&amp;nbsp;----------------&amp;nbsp;---------------------------
DBXSPROD&amp;nbsp;&amp;nbsp;dbxsprod_standby		&amp;nbsp;PHYSICAL&amp;nbsp;STANDBY&amp;nbsp;MOUNTED&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;STANDBY


SQL&amp;gt;SELECT&amp;nbsp;status&amp;nbsp;FROM&amp;nbsp;v$instance;
STATUS
------------
MOUNTED



SQL&amp;gt;&amp;nbsp;SELECT&amp;nbsp;group#,&amp;nbsp;bytes/1024/1024&amp;nbsp;AS&amp;nbsp;size_mb,&amp;nbsp;status&amp;nbsp;FROM&amp;nbsp;v$standby_log;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GROUP#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SIZE_MB&amp;nbsp;STATUS
----------&amp;nbsp;----------&amp;nbsp;----------
	&amp;nbsp;7	&amp;nbsp;&amp;nbsp;200&amp;nbsp;UNASSIGNED
	&amp;nbsp;8	&amp;nbsp;&amp;nbsp;200&amp;nbsp;ACTIVE
	&amp;nbsp;9	&amp;nbsp;&amp;nbsp;200&amp;nbsp;UNASSIGNED
	10	&amp;nbsp;&amp;nbsp;200&amp;nbsp;UNASSIGNED
	11	&amp;nbsp;&amp;nbsp;200&amp;nbsp;UNASSIGNED
	12	&amp;nbsp;&amp;nbsp;200&amp;nbsp;UNASSIGNED
	13	&amp;nbsp;&amp;nbsp;200&amp;nbsp;UNASSIGNED

	
SQL&amp;gt;&amp;nbsp;SSELECT&amp;nbsp;member&amp;nbsp;FROM&amp;nbsp;v$logfile&amp;nbsp;WHERE&amp;nbsp;type=&amp;#39;STANDBY&amp;#39;;
MEMBER
--------------------------------------------------------------------------------
/oradata/fra/DBXSPROD_STANDBY/onlinelog/o1_mf_7_odn134y8_.log
/oradata/fra/DBXSPROD_STANDBY/onlinelog/o1_mf_8_odn135j2_.log
/oradata/fra/DBXSPROD_STANDBY/onlinelog/o1_mf_9_odn1362q_.log
/oradata/fra/DBXSPROD_STANDBY/onlinelog/o1_mf_10_odn136mw_.log
/oradata/fra/DBXSPROD_STANDBY/onlinelog/o1_mf_11_odn1375v_.log
/oradata/fra/DBXSPROD_STANDBY/onlinelog/o1_mf_12_odn137r6_.log
/oradata/fra/DBXSPROD_STANDBY/onlinelog/o1_mf_13_odn1389k_.log&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;h4 style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;5.1 启动备库应用&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;备库启动 MRP（Managed Recovery Process），它负责持续把收到的 redo 应用到备库数据文件上，是备库保持与主库同步的核心机制。USING CURRENT LOGFILE 表示优先用 standby redo log 里正在写入的当前日志内容做实时应用，不用等一整个归档文件传完；DISCONNECT 表示命令下发后立即返回，MRP 在后台持续运行，不占用当前会话&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;ALTER&amp;nbsp;DATABASE&amp;nbsp;RECOVER&amp;nbsp;MANAGED&amp;nbsp;STANDBY&amp;nbsp;DATABASE&amp;nbsp;USING&amp;nbsp;CURRENT&amp;nbsp;LOGFILE&amp;nbsp;DISCONNECT&amp;nbsp;FROM&amp;nbsp;SESSION;&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;启动MRP后检查状态，&lt;span style=&quot;font-size: 16px; background-color: #FFFF00;&quot;&gt;MRP0 状态是 APPLYING_LOG 或 WAIT_FOR_LOG 说明在正常工作&lt;/span&gt;；v$archive_gap 如果有数据，表示有日志缺口，过一会儿自动补，一直不消失就要排查 fal_server 和网络&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;SQL&amp;gt;&amp;nbsp;SELECT&amp;nbsp;*&amp;nbsp;FROM&amp;nbsp;v$archive_gap;
no&amp;nbsp;rows&amp;nbsp;selected&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#没有数据，说明复制期间主库产生的日志没有缺口，主库的归档没被清掉


SQL&amp;gt;&amp;nbsp;SELECT&amp;nbsp;process,&amp;nbsp;status,&amp;nbsp;thread#,&amp;nbsp;sequence#&amp;nbsp;FROM&amp;nbsp;v$managed_standby;
PROCESS&amp;nbsp;&amp;nbsp;&amp;nbsp;STATUS	&amp;nbsp;&amp;nbsp;THREAD#&amp;nbsp;&amp;nbsp;SEQUENCE#
---------&amp;nbsp;------------&amp;nbsp;----------&amp;nbsp;----------
ARCH	&amp;nbsp;&amp;nbsp;CLOSING		1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;138456
DGRD	&amp;nbsp;&amp;nbsp;ALLOCATED		0	&amp;nbsp;&amp;nbsp;&amp;nbsp;0
DGRD	&amp;nbsp;&amp;nbsp;ALLOCATED		0	&amp;nbsp;&amp;nbsp;&amp;nbsp;0
ARCH	&amp;nbsp;&amp;nbsp;CLOSING		1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;138457
ARCH	&amp;nbsp;&amp;nbsp;CLOSING		1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;138458
ARCH	&amp;nbsp;&amp;nbsp;CLOSING		1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;138459
RFS	&amp;nbsp;&amp;nbsp;IDLE			1	&amp;nbsp;&amp;nbsp;&amp;nbsp;0
RFS	&amp;nbsp;&amp;nbsp;IDLE			1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;138460&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#正在接收主库当前正在写的&amp;nbsp;138460&amp;nbsp;号日志，说明实时传输已经生效
RFS	&amp;nbsp;&amp;nbsp;IDLE			0	&amp;nbsp;&amp;nbsp;&amp;nbsp;0
RFS	&amp;nbsp;&amp;nbsp;IDLE			0	&amp;nbsp;&amp;nbsp;&amp;nbsp;0
RFS	&amp;nbsp;&amp;nbsp;IDLE			0	&amp;nbsp;&amp;nbsp;&amp;nbsp;0

PROCESS&amp;nbsp;&amp;nbsp;&amp;nbsp;STATUS	&amp;nbsp;&amp;nbsp;THREAD#&amp;nbsp;&amp;nbsp;SEQUENCE#
---------&amp;nbsp;------------&amp;nbsp;----------&amp;nbsp;----------
MRP0	&amp;nbsp;&amp;nbsp;APPLYING_LOG		1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;138384&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#正在应用&amp;nbsp;138384&amp;nbsp;号日志&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;从上面的查询中可以看到主库已经写到 138460，备库应用到 138384，落后约 76 个日志，这是复制期间积压的。当前MRP 在追，追赶速度通常比主库产生日志的速度快，所以会逐渐缩小&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;SQL&amp;gt;&amp;nbsp;SELECT&amp;nbsp;process,&amp;nbsp;status,&amp;nbsp;thread#,&amp;nbsp;sequence#&amp;nbsp;FROM&amp;nbsp;v$managed_standby;

#MRP0应用是138460，和&amp;nbsp;RFS&amp;nbsp;正在接收的&amp;nbsp;138460&amp;nbsp;相同，说明已经追评，现在是实时应用状态（边接收边应用）

PROCESS&amp;nbsp;&amp;nbsp;&amp;nbsp;STATUS	&amp;nbsp;&amp;nbsp;THREAD#&amp;nbsp;&amp;nbsp;SEQUENCE#
---------&amp;nbsp;------------&amp;nbsp;----------&amp;nbsp;----------
ARCH	&amp;nbsp;&amp;nbsp;CLOSING		1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;138456
DGRD	&amp;nbsp;&amp;nbsp;ALLOCATED		0	&amp;nbsp;&amp;nbsp;&amp;nbsp;0
DGRD	&amp;nbsp;&amp;nbsp;ALLOCATED		0	&amp;nbsp;&amp;nbsp;&amp;nbsp;0
ARCH	&amp;nbsp;&amp;nbsp;CLOSING		1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;138457
ARCH	&amp;nbsp;&amp;nbsp;CLOSING		1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;138458
ARCH	&amp;nbsp;&amp;nbsp;CLOSING		1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;138459
RFS	&amp;nbsp;&amp;nbsp;IDLE			1	&amp;nbsp;&amp;nbsp;&amp;nbsp;0
RFS	&amp;nbsp;&amp;nbsp;IDLE			1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;138460
RFS	&amp;nbsp;&amp;nbsp;IDLE			0	&amp;nbsp;&amp;nbsp;&amp;nbsp;0
RFS	&amp;nbsp;&amp;nbsp;IDLE			0	&amp;nbsp;&amp;nbsp;&amp;nbsp;0
RFS	&amp;nbsp;&amp;nbsp;IDLE			0	&amp;nbsp;&amp;nbsp;&amp;nbsp;0

PROCESS&amp;nbsp;&amp;nbsp;&amp;nbsp;STATUS	&amp;nbsp;&amp;nbsp;THREAD#&amp;nbsp;&amp;nbsp;SEQUENCE#
---------&amp;nbsp;------------&amp;nbsp;----------&amp;nbsp;----------
MRP0	&amp;nbsp;&amp;nbsp;APPLYING_LOG		1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;138460&lt;/pre&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&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;在主库切一次日志，验证全链路。该操作执行完后后&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;备库的 v$managed_standby 里 MRP0 的序号应该跟着变成 138461&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#主库
ALTER&amp;nbsp;SYSTEM&amp;nbsp;SWITCH&amp;nbsp;LOGFILE;&lt;/pre&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;br/&gt;&lt;/p&gt;&lt;h4 style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;5.2 &lt;span style=&quot;font-size: 16px;&quot;&gt;备库开启只读服务（Active Data Guard）&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#备库要从&amp;nbsp;mount&amp;nbsp;状态切换到&amp;nbsp;OPEN&amp;nbsp;READ&amp;nbsp;ONLY&amp;nbsp;必须先结束当前的恢复会话，所以需要&amp;nbsp;CANCEL&amp;nbsp;停掉&amp;nbsp;MRP
ALTER&amp;nbsp;DATABASE&amp;nbsp;RECOVER&amp;nbsp;MANAGED&amp;nbsp;STANDBY&amp;nbsp;DATABASE&amp;nbsp;CANCEL;

#开启OPEN&amp;nbsp;READ&amp;nbsp;ONLY&amp;nbsp;让数据库可读，此时业务已经能连上去查询
ALTER&amp;nbsp;DATABASE&amp;nbsp;OPEN&amp;nbsp;READ&amp;nbsp;ONLY;

#重新启动&amp;nbsp;MRP，让它在只读状态下继续应用日志
ALTER&amp;nbsp;DATABASE&amp;nbsp;RECOVER&amp;nbsp;MANAGED&amp;nbsp;STANDBY&amp;nbsp;DATABASE&amp;nbsp;USING&amp;nbsp;CURRENT&amp;nbsp;LOGFILE&amp;nbsp;DISCONNECT;&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&gt;&lt;/p&gt;&lt;h4 style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;5.3&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;检查备库状态和数据&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;备库最终状态应该是 READ ONLY WITH APPLY&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;SQL&amp;gt;&amp;nbsp;SELECT&amp;nbsp;open_mode,&amp;nbsp;database_role&amp;nbsp;FROM&amp;nbsp;v$database;

OPEN_MODE	&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;DATABASE_ROLE
--------------------&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;----------------
READ&amp;nbsp;ONLY&amp;nbsp;WITH&amp;nbsp;APPLY&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PHYSICAL&amp;nbsp;STANDBY&lt;/pre&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;[dbxsprod_standby:oracle][/home/oracle]#sqlplus&amp;nbsp;adg_user/ADGuser#202609@10.128.32.94:1521/dbxsprod_standby&amp;nbsp;as&amp;nbsp;sysdba


SQL&amp;gt;&amp;nbsp;SELECT&amp;nbsp;COUNT(*)&amp;nbsp;FROM&amp;nbsp;dba_tables;
&amp;nbsp;&amp;nbsp;COUNT(*)
----------
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3896&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;h3 style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;6、主库创建只读账号（非必须）&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;账号创建以后，需要注意连接备库的服务名是 dbxsprod_standby&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;CREATE&amp;nbsp;USER&amp;nbsp;dbxs_ro&amp;nbsp;IDENTIFIED&amp;nbsp;BY&amp;nbsp;&amp;quot;ro#202610&amp;quot;;
GRANT&amp;nbsp;CREATE&amp;nbsp;SESSION&amp;nbsp;TO&amp;nbsp;dbxs_ro;
GRANT&amp;nbsp;READ&amp;nbsp;ANY&amp;nbsp;TABLE&amp;nbsp;TO&amp;nbsp;dbxs_ro;&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;h3 style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;7、主库配置归档日志清理策略&lt;/span&gt;&lt;/h3&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;rman&amp;nbsp;target&amp;nbsp;/
RMAN&amp;gt;&amp;nbsp;SHOW&amp;nbsp;ARCHIVELOG&amp;nbsp;DELETION&amp;nbsp;POLICY;

#下面查询结构返回的dNONE是默认值，说明没有配置过，RMAN&amp;nbsp;删归档时不会考虑备库是否已经应用
CONFIGURE&amp;nbsp;ARCHIVELOG&amp;nbsp;DELETION&amp;nbsp;POLICY&amp;nbsp;TO&amp;nbsp;NONE;&amp;nbsp;#&amp;nbsp;default

#配置只允许删除备库已经应用的归档
RMAN&amp;gt;&amp;nbsp;CONFIGURE&amp;nbsp;ARCHIVELOG&amp;nbsp;DELETION&amp;nbsp;POLICY&amp;nbsp;TO&amp;nbsp;APPLIED&amp;nbsp;ON&amp;nbsp;STANDBY;&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Wed, 14 Oct 2026 15:05:15 +0800</pubDate></item><item><title> Oracle教程（7）RMAN 物理备份教程与实战</title><link>https://ywpie.com/post/93.html</link><description>&lt;h2&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;一、RMAN 介绍&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;RMAN 是 Oracle 自带的物理备份工具，&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;它的核心作用是保护数据库的物理完整性，确保在发生磁盘损坏、误删数据文件、服务器整体故障等灾难场景下能够将数据库恢复到某个可用的状态。&lt;/span&gt;RMAN 处理的是整个数据库、表空间文件或数据文件这样的物理对象。除了对整个实例进行全量备份外，还可以单独备份控制文件、spfile、归档日志等关键文件，保护整个数据库的物理完整性；&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;备份期间数据库可以正常读写，并且&lt;/span&gt;支持增量备份，只处理自上次备份以来发生变化的部分，在处理TB级别的大型数据库时非常有用；配合归档模式，理论上可以把数据库恢复到发生故障前的任意一个时间点。&lt;/span&gt;&lt;/p&gt;&lt;h2&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;二、RMAN 使用方法&lt;/span&gt;&lt;/h2&gt;&lt;h3&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;1、连接 RMAN&lt;/span&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;p&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;通过数据库服务器本地连接RMAN时最常用的方式，&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;不需要在命令行明文写密码。&lt;/span&gt;关键词 target 后面跟上需要连接的数据库目标， / 表示用操作系统当前登录用户的身份进行认证（通常直接用 oracle 用户就会满足这个条件&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;[oracle@ftxsdb&amp;nbsp;~]$&amp;nbsp;rman&amp;nbsp;&amp;nbsp;target&amp;nbsp;/
connected&amp;nbsp;to&amp;nbsp;target&amp;nbsp;database:&amp;nbsp;FTXS&amp;nbsp;(DBID=2207681056)

RMAN&amp;gt;&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&gt;&lt;/strong&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;orcl 是 tnsnames.ora 里配置的连接标识符（网络服务名）&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;SQL&amp;gt;&amp;nbsp;show&amp;nbsp;parameter&amp;nbsp;service_names;&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;#服务名是ftxsprdu
NAME&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;TYPE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;VALUE
------------------------------------&amp;nbsp;-----------&amp;nbsp;------------------------------
service_names&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;string&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ftxsprdu


#命令格式：rman&amp;nbsp;target&amp;nbsp;用户名/密码@服务名
rman&amp;nbsp;target&amp;nbsp;adg_user/ADGuser#202609@ftxsprdu
connected&amp;nbsp;to&amp;nbsp;target&amp;nbsp;database:&amp;nbsp;FTXSPRDU&amp;nbsp;(DBID=2207681056)

RMAN&amp;gt;&lt;/pre&gt;&lt;p&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;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;#命令格式：rman&amp;nbsp;target&amp;nbsp;用户名@服务名
[oracle@ftxsdb&amp;nbsp;~]$&amp;nbsp;rman&amp;nbsp;target&amp;nbsp;adg_user@ftxsprdu
target&amp;nbsp;database&amp;nbsp;Password:&lt;/pre&gt;&lt;p&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;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;在 / 后面加关键词 catalog 用户/密码@服务名，可以同时连接 target 库和 catalog 库&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;rman&amp;nbsp;target&amp;nbsp;/&amp;nbsp;catalog&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;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;· 进入 RMAN 后再连接&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;rman
RMAN&amp;gt;&amp;nbsp;connect&amp;nbsp;target&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;h3&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;2、RMAN 备份策略说明&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;连接上RMAN后执行show all可以打印出当前针对RMAN进行的配置，比如保留策略、并行度、控制文件自动备份是否开启等，&lt;span style=&quot;font-size: 16px; background-color: #FFFF00;&quot;&gt;每一项配置后面如果有 #default 代表&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap; background-color: #FFFF00;&quot;&gt;没有被人为修改过的&lt;/span&gt;默认配置，没标的则是特意配置过的&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#查看当前备份策略
RMAN&amp;gt;&amp;nbsp;show&amp;nbsp;all;

using&amp;nbsp;target&amp;nbsp;database&amp;nbsp;control&amp;nbsp;file&amp;nbsp;instead&amp;nbsp;of&amp;nbsp;recovery&amp;nbsp;catalog
RMAN&amp;nbsp;configuration&amp;nbsp;parameters&amp;nbsp;for&amp;nbsp;database&amp;nbsp;with&amp;nbsp;db_unique_name&amp;nbsp;FTXSPRDU&amp;nbsp;are:
CONFIGURE&amp;nbsp;RETENTION&amp;nbsp;POLICY&amp;nbsp;TO&amp;nbsp;REDUNDANCY&amp;nbsp;7;
CONFIGURE&amp;nbsp;BACKUP&amp;nbsp;OPTIMIZATION&amp;nbsp;OFF;&amp;nbsp;#&amp;nbsp;default
CONFIGURE&amp;nbsp;DEFAULT&amp;nbsp;DEVICE&amp;nbsp;TYPE&amp;nbsp;TO&amp;nbsp;DISK;&amp;nbsp;#&amp;nbsp;default
CONFIGURE&amp;nbsp;CONTROLFILE&amp;nbsp;AUTOBACKUP&amp;nbsp;ON;&amp;nbsp;#&amp;nbsp;default
CONFIGURE&amp;nbsp;CONTROLFILE&amp;nbsp;AUTOBACKUP&amp;nbsp;FORMAT&amp;nbsp;FOR&amp;nbsp;DEVICE&amp;nbsp;TYPE&amp;nbsp;DISK&amp;nbsp;TO&amp;nbsp;&amp;#39;%F&amp;#39;;&amp;nbsp;#&amp;nbsp;default
CONFIGURE&amp;nbsp;DEVICE&amp;nbsp;TYPE&amp;nbsp;DISK&amp;nbsp;PARALLELISM&amp;nbsp;4&amp;nbsp;BACKUP&amp;nbsp;TYPE&amp;nbsp;TO&amp;nbsp;BACKUPSET;
CONFIGURE&amp;nbsp;DATAFILE&amp;nbsp;BACKUP&amp;nbsp;COPIES&amp;nbsp;FOR&amp;nbsp;DEVICE&amp;nbsp;TYPE&amp;nbsp;DISK&amp;nbsp;TO&amp;nbsp;1;&amp;nbsp;#&amp;nbsp;default
CONFIGURE&amp;nbsp;ARCHIVELOG&amp;nbsp;BACKUP&amp;nbsp;COPIES&amp;nbsp;FOR&amp;nbsp;DEVICE&amp;nbsp;TYPE&amp;nbsp;DISK&amp;nbsp;TO&amp;nbsp;1;&amp;nbsp;#&amp;nbsp;default
CONFIGURE&amp;nbsp;MAXSETSIZE&amp;nbsp;TO&amp;nbsp;UNLIMITED;&amp;nbsp;#&amp;nbsp;default
CONFIGURE&amp;nbsp;ENCRYPTION&amp;nbsp;FOR&amp;nbsp;DATABASE&amp;nbsp;OFF;&amp;nbsp;#&amp;nbsp;default
CONFIGURE&amp;nbsp;ENCRYPTION&amp;nbsp;ALGORITHM&amp;nbsp;&amp;#39;AES128&amp;#39;;&amp;nbsp;#&amp;nbsp;default
CONFIGURE&amp;nbsp;COMPRESSION&amp;nbsp;ALGORITHM&amp;nbsp;&amp;#39;BASIC&amp;#39;&amp;nbsp;AS&amp;nbsp;OF&amp;nbsp;RELEASE&amp;nbsp;&amp;#39;DEFAULT&amp;#39;&amp;nbsp;OPTIMIZE&amp;nbsp;FOR&amp;nbsp;LOAD&amp;nbsp;TRUE&amp;nbsp;;&amp;nbsp;#&amp;nbsp;default
CONFIGURE&amp;nbsp;RMAN&amp;nbsp;OUTPUT&amp;nbsp;TO&amp;nbsp;KEEP&amp;nbsp;FOR&amp;nbsp;7&amp;nbsp;DAYS;&amp;nbsp;#&amp;nbsp;default
CONFIGURE&amp;nbsp;ARCHIVELOG&amp;nbsp;DELETION&amp;nbsp;POLICY&amp;nbsp;TO&amp;nbsp;NONE;&amp;nbsp;#&amp;nbsp;default
CONFIGURE&amp;nbsp;SNAPSHOT&amp;nbsp;CONTROLFILE&amp;nbsp;NAME&amp;nbsp;TO&amp;nbsp;&amp;#39;/oracle/app/oracle/product/19.10/db_1/dbs/snapcf_ftxsprdu.f&amp;#39;;&amp;nbsp;#&amp;nbsp;default&lt;/pre&gt;&lt;p&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;br/&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;· CONFIGURE RETENTION POLICY TO &amp;lt;策略&amp;gt; &lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;：全备/0级备份的保留策略，可以按份数保留也可以按时间保留，只能二选一，后者覆盖前者。超过限额后最早的备份会在下次 DELETE OBSOLETE 时被标记为过期&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;CONFIGURE&amp;nbsp;RETENTION&amp;nbsp;POLICY&amp;nbsp;TO&amp;nbsp;REDUNDANCY&amp;nbsp;7;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--&amp;nbsp;按份数：保留7份
CONFIGURE&amp;nbsp;RETENTION&amp;nbsp;POLICY&amp;nbsp;TO&amp;nbsp;RECOVERY&amp;nbsp;WINDOW&amp;nbsp;OF&amp;nbsp;7&amp;nbsp;DAYS;&amp;nbsp;&amp;nbsp;--&amp;nbsp;按时间窗口保证7天内任意点可恢复&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;· CONFIGURE BACKUP OPTIMIZATION OFF&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;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;· CONFIGURE DEFAULT DEVICE TYPE TO DISK&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;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;· CONFIGURE CONTROLFILE AUTOBACKUP ON&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;：控制文件自动备份，需要保持开启，这样每次 BACKUP 执行完以及每次影响到备份元数据的操作都会自动备份控制文件和 spfile&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;CONFIGURE&amp;nbsp;CONTROLFILE&amp;nbsp;AUTOBACKUP&amp;nbsp;ON;&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;· CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO &amp;#39;%F&amp;#39;&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;：控制文件自动备份的文件名格式，默认会写到 db_recovery_file_dest（也就是 FRA&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; text-wrap-mode: wrap;&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;· CONFIGURE DEVICE TYPE DISK PARALLELISM &amp;lt;n&amp;gt; BACKUP TYPE TO &amp;lt;BACKUPSET|COPY&amp;gt;：&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;备份并行度和格式。PARALLELISM数字越大，并发越高，备份速度越快，但是对 CPU 和 I/O 消耗也越大；BACKUP TYPE&amp;nbsp;备份格式用 backup set表示只备份已用块，COPY是镜像拷贝，占空间更多，但恢复速度快&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;CONFIGURE&amp;nbsp;DEVICE&amp;nbsp;TYPE&amp;nbsp;DISK&amp;nbsp;PARALLELISM&amp;nbsp;4&amp;nbsp;BACKUP&amp;nbsp;TYPE&amp;nbsp;TO&amp;nbsp;BACKUPSET;&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;· CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;：每个数据文件只保留 1 份备份&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;· CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1&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;只保留&lt;/span&gt; 1 份&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;CONFIGURE MAXSETSIZE TO UNLIMITED&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;CONFIGURE ENCRYPTION FOR DATABASE OFF：&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;· CONFIGURE COMPRESSION ALGORITHM &amp;#39;BASIC&amp;#39; ...&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;· CONFIGURE ARCHIVELOG DELETION POLICY TO &amp;lt;策略&amp;gt;&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;：NONE表示执行 DELETE ARCHIVE LOG 或者磁盘空间不足需要 RMAN 自动清理归档日志时，没有&amp;quot;至少备份过 N 次才能删&amp;quot;的约束。如果有备库建议配置 TO APPLIED ON ALL STANDBY，表示备库都应用过才允许删，避免归档被误删导致备库断档或者恢复链断裂&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;CONFIGURE&amp;nbsp;ARCHIVELOG&amp;nbsp;DELETION&amp;nbsp;POLICY&amp;nbsp;TO&amp;nbsp;BACKED&amp;nbsp;UP&amp;nbsp;1&amp;nbsp;TIMES&amp;nbsp;TO&amp;nbsp;DISK;&amp;nbsp;&amp;nbsp;--&amp;nbsp;至少成功备份1次才能删
CONFIGURE&amp;nbsp;ARCHIVELOG&amp;nbsp;DELETION&amp;nbsp;POLICY&amp;nbsp;TO&amp;nbsp;NONE;&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;无限制（默认）&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;· CONFIGURE SNAPSHOT CONTROLFILE NAME TO &amp;#39;...snapcf_ftxsprdu.f&amp;#39;：&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; text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;·&amp;nbsp;&lt;/span&gt;CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT &amp;#39;&amp;lt;路径模板&amp;gt;&amp;#39;&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;：备份文件默认存放路径&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;CONFIGURE&amp;nbsp;CHANNEL&amp;nbsp;DEVICE&amp;nbsp;TYPE&amp;nbsp;DISK&amp;nbsp;FORMAT&amp;nbsp;&amp;#39;/backup/%d_%T_%U.bkp&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;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;3、RMAN 备份策略修改&amp;nbsp;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;如果要对RMAN默认配置进行修改或者重置，需要使用 CONFIGURE 命令，不管是修改还是重置，RMAN都会&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;#修改参数
CONFIGURE&amp;nbsp;参数名&amp;nbsp;TO&amp;nbsp;值;

#重置参数
CONFIGURE&amp;nbsp;参数名&amp;nbsp;CLEAR;&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-bash&quot;&gt;CONFIGURE&amp;nbsp;RETENTION&amp;nbsp;POLICY&amp;nbsp;TO&amp;nbsp;REDUNDANCY&amp;nbsp;7;&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;7&amp;nbsp;份
CONFIGURE&amp;nbsp;RETENTION&amp;nbsp;POLICY&amp;nbsp;TO&amp;nbsp;RECOVERY&amp;nbsp;WINDOW&amp;nbsp;OF&amp;nbsp;7&amp;nbsp;DAYS;&amp;nbsp;&amp;nbsp;--&amp;nbsp;改成按时间窗口保留7天，和&amp;nbsp;REDUNDANCY&amp;nbsp;互斥，配了会自动取消前者
CONFIGURE&amp;nbsp;RETENTION&amp;nbsp;POLICY&amp;nbsp;CLEAR;&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;REDUNDANCY&amp;nbsp;1

CONFIGURE&amp;nbsp;DEVICE&amp;nbsp;TYPE&amp;nbsp;DISK&amp;nbsp;PARALLELISM&amp;nbsp;4&amp;nbsp;BACKUP&amp;nbsp;TYPE&amp;nbsp;TO&amp;nbsp;BACKUPSET;
CONFIGURE&amp;nbsp;DEVICE&amp;nbsp;TYPE&amp;nbsp;DISK&amp;nbsp;CLEAR;&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;

CONFIGURE&amp;nbsp;CONTROLFILE&amp;nbsp;AUTOBACKUP&amp;nbsp;ON;

CONFIGURE&amp;nbsp;ARCHIVELOG&amp;nbsp;DELETION&amp;nbsp;POLICY&amp;nbsp;TO&amp;nbsp;BACKED&amp;nbsp;UP&amp;nbsp;1&amp;nbsp;TIMES&amp;nbsp;TO&amp;nbsp;DISK;&amp;nbsp;&amp;nbsp;--&amp;nbsp;至少备份过1次才允许删
CONFIGURE&amp;nbsp;ARCHIVELOG&amp;nbsp;DELETION&amp;nbsp;POLICY&amp;nbsp;CLEAR;


CONFIGURE&amp;nbsp;CHANNEL&amp;nbsp;DEVICE&amp;nbsp;TYPE&amp;nbsp;DISK&amp;nbsp;FORMAT&amp;nbsp;&amp;#39;/backup/rman/%d_%T_%U.bkp&amp;#39;;
CONFIGURE&amp;nbsp;CHANNEL&amp;nbsp;DEVICE&amp;nbsp;TYPE&amp;nbsp;DISK&amp;nbsp;CLEAR;&lt;/pre&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;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;4、RMAN 备份语法&lt;/span&gt;&lt;/h3&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;BACKUP&amp;nbsp;[备份格式]&amp;nbsp;[增量级别]&amp;nbsp;备份对象&amp;nbsp;[FORMAT&amp;nbsp;...]&amp;nbsp;[TAG&amp;nbsp;...]&amp;nbsp;[其他选项];

--命令骨架
BACKUP&amp;nbsp;[格式:&amp;nbsp;AS&amp;nbsp;BACKUPSET&amp;nbsp;/&amp;nbsp;AS&amp;nbsp;COMPRESSED&amp;nbsp;BACKUPSET&amp;nbsp;/&amp;nbsp;AS&amp;nbsp;COPY]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[级别:&amp;nbsp;INCREMENTAL&amp;nbsp;LEVEL&amp;nbsp;0&amp;nbsp;/&amp;nbsp;LEVEL&amp;nbsp;1&amp;nbsp;/&amp;nbsp;LEVEL&amp;nbsp;1&amp;nbsp;CUMULATIVE]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[对象:&amp;nbsp;DATABASE&amp;nbsp;/&amp;nbsp;TABLESPACE&amp;nbsp;xx&amp;nbsp;/&amp;nbsp;DATAFILE&amp;nbsp;n&amp;nbsp;/&amp;nbsp;ARCHIVELOG&amp;nbsp;ALL]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[FORMAT&amp;nbsp;...]&amp;nbsp;[TAG&amp;nbsp;...]&amp;nbsp;[PLUS&amp;nbsp;ARCHIVELOG&amp;nbsp;...]&amp;nbsp;[DELETE&amp;nbsp;INPUT];

--示例
BACKUP&amp;nbsp;AS&amp;nbsp;COMPRESSED&amp;nbsp;BACKUPSET
&amp;nbsp;&amp;nbsp;INCREMENTAL&amp;nbsp;LEVEL&amp;nbsp;0
&amp;nbsp;&amp;nbsp;DATABASE
&amp;nbsp;&amp;nbsp;FORMAT&amp;nbsp;&amp;#39;/backup/%d_%T_%U_lvl1.bkp&amp;#39;
&amp;nbsp;&amp;nbsp;TAG&amp;nbsp;&amp;#39;DAILY_L1&amp;#39;
&amp;nbsp;&amp;nbsp;PLUS&amp;nbsp;ARCHIVELOG
&amp;nbsp;&amp;nbsp;FORMAT&amp;nbsp;&amp;#39;/backup/%d_%T_%U.arc&amp;#39;;&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;&lt;/span&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;BACKUPSET表示只备份已使用的块，备份可压缩，是最常用的格式；COMPRESSED BACKUPSET在基础上增加压缩，默认压缩算法是 BASIC；COPY 逐字节复制整个数据文件，体积和原文件一样大，恢复时可以用 SWITCH TO COPY 直接切换使用，不需要restore，速度最快&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;BACKUP&amp;nbsp;AS&amp;nbsp;BACKUPSET&amp;nbsp;DATABASE;&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;备份集（默认，可省略AS&amp;nbsp;BACKUPSET）
BACKUP&amp;nbsp;AS&amp;nbsp;COMPRESSED&amp;nbsp;BACKUPSET&amp;nbsp;DATABASE;&amp;nbsp;&amp;nbsp;&amp;nbsp;--&amp;nbsp;备份集+压缩
BACKUP&amp;nbsp;AS&amp;nbsp;COPY&amp;nbsp;DATABASE;&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;镜像拷贝&lt;/pre&gt;&lt;p&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;增量级别&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;不带 INCREMENTAL 的全备不能被后续的 LEVEL 1 增量当作基线使用。&lt;span style=&quot;font-size: 16px; background-color: #FFFF00;&quot;&gt;要建立增量链第一次必须显式写 INCREMENTAL LEVEL 0。如果在没有基线备份的情况下又使用了增量备份，RMAN 会自动把这次操作当成一次 0 级备份来执行&lt;/span&gt;。差异增量每次只备&amp;quot;上一次备份以来&amp;quot;的变化，每次备份的体积小，但恢复时要应用的增量片多；累积增量备的是&amp;quot;从最近一次0级以来&amp;quot;的全部变化，体积会逐渐变大，恢复时只需要 0级+最后一次累积&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;BACKUP&amp;nbsp;INCREMENTAL&amp;nbsp;LEVEL&amp;nbsp;0&amp;nbsp;DATABASE;&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;增量备份基线，等同全备但能作为增量起点
BACKUP&amp;nbsp;INCREMENTAL&amp;nbsp;LEVEL&amp;nbsp;1&amp;nbsp;DATABASE;&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;差异增量：备份自上次0级或1级以来变化的块
BACKUP&amp;nbsp;INCREMENTAL&amp;nbsp;LEVEL&amp;nbsp;1&amp;nbsp;CUMULATIVE&amp;nbsp;DATABASE;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--&amp;nbsp;累积增量：备份自上次0级以来变化的块
BACKUP&amp;nbsp;DATABASE;&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;普通全备，但是不能作为增量基线&lt;/pre&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;备份对象&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-basic&quot;&gt;BACKUP&amp;nbsp;DATABASE;&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;整个数据库
BACKUP&amp;nbsp;TABLESPACE&amp;nbsp;users;&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;指定表空间，可以逗号加多个
BACKUP&amp;nbsp;DATAFILE&amp;nbsp;4;&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;指定数据文件号（用REPORT&amp;nbsp;SCHEMA能查到号）
BACKUP&amp;nbsp;CURRENT&amp;nbsp;CONTROLFILE;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--&amp;nbsp;当前控制文件
BACKUP&amp;nbsp;SPFILE;&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;参数文件
BACKUP&amp;nbsp;ARCHIVELOG&amp;nbsp;ALL;&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;所有归档日志&lt;/pre&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;其他选项&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;--&amp;nbsp;PLUS&amp;nbsp;ARCHIVELOG&amp;nbsp;备份同时带上归档日志
BACKUP&amp;nbsp;DATABASE&amp;nbsp;PLUS&amp;nbsp;ARCHIVELOG;&amp;nbsp;&amp;nbsp;

--&amp;nbsp;FORMAT指定文件名，%d表示数据库名；%T为日期(YYYYMMDD)；%U是系统生成的唯一标识,必须包含；%F只用于控制文件自动备份,格式固定&amp;nbsp;
BACKUP&amp;nbsp;DATABASE&amp;nbsp;FORMAT&amp;nbsp;&amp;#39;/backup/%d_%T_%U.bkp&amp;#39;;

--&amp;nbsp;TAG&amp;nbsp;给备份打标签
BACKUP&amp;nbsp;DATABASE&amp;nbsp;TAG&amp;nbsp;&amp;#39;WEEKLY_FULL&amp;#39;;

--只用在归档日志备份上,备份完把原文件删除
BACKUP&amp;nbsp;ARCHIVELOG&amp;nbsp;ALL&amp;nbsp;DELETE&amp;nbsp;INPUT;&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;h3 style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;5、RMAN 备份结果&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;LIST BACKUP SUMMARY 命令会直接从 RMAN 的记录里查看备份历史，用于查看数据库现在到底有没有可用的备份、最近一次成功的备份是什么时候等信息，这也是评估如果数据库出问题了能恢复到多久之前的数据的依据。&lt;span style=&quot;font-size: 16px; background-color: #FFFF00;&quot;&gt;LIST BACKUP SUMMARY 里每行是一个 backup set，一次 level 0 全备会按通道数、MAXSETSIZE 等参数拆成十几个甚至几十个备份集，这些备份集共用同一个 Tag&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;RMAN&amp;gt;LIST&amp;nbsp;BACKUP&amp;nbsp;SUMMARY;&amp;nbsp;&amp;nbsp;

using&amp;nbsp;target&amp;nbsp;database&amp;nbsp;control&amp;nbsp;file&amp;nbsp;instead&amp;nbsp;of&amp;nbsp;recovery&amp;nbsp;catalog

List&amp;nbsp;of&amp;nbsp;Backups
===============
Key&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TY&amp;nbsp;LV&amp;nbsp;S&amp;nbsp;Device&amp;nbsp;Type&amp;nbsp;Completion&amp;nbsp;Time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#Pieces&amp;nbsp;#Copies&amp;nbsp;Compressed&amp;nbsp;Tag
-------&amp;nbsp;--&amp;nbsp;--&amp;nbsp;-&amp;nbsp;-----------&amp;nbsp;-------------------&amp;nbsp;-------&amp;nbsp;-------&amp;nbsp;----------&amp;nbsp;---
13828&amp;nbsp;&amp;nbsp;&amp;nbsp;B&amp;nbsp;&amp;nbsp;F&amp;nbsp;&amp;nbsp;A&amp;nbsp;DISK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2026/09/08&amp;nbsp;02:08:38&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NO&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TAG20260908T020838
13839&amp;nbsp;&amp;nbsp;&amp;nbsp;B&amp;nbsp;&amp;nbsp;F&amp;nbsp;&amp;nbsp;A&amp;nbsp;DISK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2026/09/09&amp;nbsp;02:08:38&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NO&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TAG20260909T020838
13850&amp;nbsp;&amp;nbsp;&amp;nbsp;B&amp;nbsp;&amp;nbsp;F&amp;nbsp;&amp;nbsp;A&amp;nbsp;DISK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2026/09/10&amp;nbsp;02:08:48&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NO&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TAG20260910T020848
13861&amp;nbsp;&amp;nbsp;&amp;nbsp;B&amp;nbsp;&amp;nbsp;F&amp;nbsp;&amp;nbsp;A&amp;nbsp;DISK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2026/09/11&amp;nbsp;02:08:38&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NO&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TAG20260911T020838
13872&amp;nbsp;&amp;nbsp;&amp;nbsp;B&amp;nbsp;&amp;nbsp;F&amp;nbsp;&amp;nbsp;A&amp;nbsp;DISK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2026/09/12&amp;nbsp;02:08:28&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NO&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TAG20260912T020828
13883&amp;nbsp;&amp;nbsp;&amp;nbsp;B&amp;nbsp;&amp;nbsp;F&amp;nbsp;&amp;nbsp;A&amp;nbsp;DISK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2026/09/13&amp;nbsp;02:08:48&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NO&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TAG20260913T020848
13884&amp;nbsp;&amp;nbsp;&amp;nbsp;B&amp;nbsp;&amp;nbsp;A&amp;nbsp;&amp;nbsp;A&amp;nbsp;DISK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2026/09/14&amp;nbsp;02:00:13&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;YES&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TAG20260914T020010
13885&amp;nbsp;&amp;nbsp;&amp;nbsp;B&amp;nbsp;&amp;nbsp;A&amp;nbsp;&amp;nbsp;A&amp;nbsp;DISK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2026/09/14&amp;nbsp;02:00:20&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;YES&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TAG20260914T020010
13886&amp;nbsp;&amp;nbsp;&amp;nbsp;B&amp;nbsp;&amp;nbsp;A&amp;nbsp;&amp;nbsp;A&amp;nbsp;DISK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2026/09/14&amp;nbsp;02:00:20&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;YES&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TAG20260914T020010
13887&amp;nbsp;&amp;nbsp;&amp;nbsp;B&amp;nbsp;&amp;nbsp;A&amp;nbsp;&amp;nbsp;A&amp;nbsp;DISK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2026/09/14&amp;nbsp;02:00:20&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;YES&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TAG20260914T020010
13888&amp;nbsp;&amp;nbsp;&amp;nbsp;B&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;A&amp;nbsp;DISK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2026/09/14&amp;nbsp;02:01:03&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;YES&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TAG20260914T020025
13889&amp;nbsp;&amp;nbsp;&amp;nbsp;B&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;A&amp;nbsp;DISK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2026/09/14&amp;nbsp;02:03:31&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;YES&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TAG20260914T020025
13890&amp;nbsp;&amp;nbsp;&amp;nbsp;B&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;A&amp;nbsp;DISK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2026/09/14&amp;nbsp;02:05:29&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;YES&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TAG20260914T020025
13891&amp;nbsp;&amp;nbsp;&amp;nbsp;B&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;A&amp;nbsp;DISK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2026/09/14&amp;nbsp;02:08:24&amp;nbsp;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;YES&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TAG20260914T020025
13892&amp;nbsp;&amp;nbsp;&amp;nbsp;B&amp;nbsp;&amp;nbsp;A&amp;nbsp;&amp;nbsp;A&amp;nbsp;DISK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2026/09/14&amp;nbsp;02:08:26&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;YES&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TAG20260914T020826
13893&amp;nbsp;&amp;nbsp;&amp;nbsp;B&amp;nbsp;&amp;nbsp;F&amp;nbsp;&amp;nbsp;A&amp;nbsp;DISK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2026/09/14&amp;nbsp;02:08:28&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NO&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TAG20260914T020827
13894&amp;nbsp;&amp;nbsp;&amp;nbsp;B&amp;nbsp;&amp;nbsp;F&amp;nbsp;&amp;nbsp;A&amp;nbsp;DISK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2026/09/14&amp;nbsp;02:08:30&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NO&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TAG20260914T020830&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;· Key&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;：备份记录自增编号，主要用来在 DELETE、CROSSCHECK 时进行指定&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;TY&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;：备份类型，B表示 backup set（备份集），如果是 AS COPY 镜像拷贝会显示别的标识&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;LV：&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;备份级别，F表示全备（full backup，但不能作为增量基线）；0表示增量 0 级（可作为增量基线）；1表示增量 1 级；A表示归档日志备份&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;S&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;：备份状态，A 表示 Available（可用）；X 表示 Expired（过期）；D 是 Deleted&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;Device Type&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;：备份介质，通常为 DISK&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;Completion Time&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;#Pieces&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;#Copies&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;Compressed&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;Tag：&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;备份标签，默认格式是 TAG + 时间戳，没有手动指定的话系统会自动生成&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;h3 style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;6、RMAN 维护类命令&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;·&amp;nbsp;CROSSCHECK：&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;核对 RMAN 备份记录所对应的物理文件还在磁盘上，检查是否有备份文件有被 rm 命令删除过的情况，&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;文件还在就把状态标记为 AVAILABLE，文件不在了就标记为 EXPIRED&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;CROSSCHECK&amp;nbsp;BACKUP;
CROSSCHECK&amp;nbsp;ARCHIVELOG&amp;nbsp;ALL;
CROSSCHECK&amp;nbsp;BACKUPSET;
CROSSCHECK&amp;nbsp;COPY;&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;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;· LIST：&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;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;LIST&amp;nbsp;BACKUP&amp;nbsp;[OF&amp;nbsp;&amp;lt;对象&amp;gt;]&amp;nbsp;[SUMMARY];

&amp;nbsp;#备份摘要，适合看备份整体情况
LIST&amp;nbsp;BACKUP&amp;nbsp;SUMMARY&amp;nbsp;&amp;nbsp;&amp;nbsp;

#&amp;nbsp;LIST&amp;nbsp;BACKUP&amp;nbsp;OF&amp;nbsp;&amp;lt;对象&amp;gt;——按对象过滤,看某一类的详细信息
LIST&amp;nbsp;BACKUP&amp;nbsp;OF&amp;nbsp;DATABASE;
LIST&amp;nbsp;BACKUP&amp;nbsp;OF&amp;nbsp;ARCHIVELOG&amp;nbsp;ALL;
LIST&amp;nbsp;BACKUP&amp;nbsp;OF&amp;nbsp;DATAFILE&amp;nbsp;4;
LIST&amp;nbsp;BACKUP&amp;nbsp;OF&amp;nbsp;CONTROLFILE;&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap; 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;· DELETE：&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;删除备份文件与记录， NOPROMPT 参数可以取消人工确认的交互，用于脚本自动化&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;DELETE&amp;nbsp;[NOPROMPT]&amp;nbsp;&amp;lt;过滤条件&amp;gt;;

DELETE&amp;nbsp;NOPROMPT&amp;nbsp;EXPIRED&amp;nbsp;BACKUP;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#删掉失效的备份记录（配合CROSSCHECK使用），不会产生实际的磁盘释放，因为文件本来就没了
DELETE&amp;nbsp;NOPROMPT&amp;nbsp;EXPIRED&amp;nbsp;ARCHIVELOG&amp;nbsp;ALL;
DELETE&amp;nbsp;NOPROMPT&amp;nbsp;OBSOLETE;&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;删掉按保留策略已经多余的备份文件，可以释放磁盘
DELETE&amp;nbsp;NOPROMPT&amp;nbsp;BACKUP&amp;nbsp;OF&amp;nbsp;DATABASE;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--&amp;nbsp;删掉数据库本体的所有备份
DELETE&amp;nbsp;NOPROMPT&amp;nbsp;BACKUPSET&amp;nbsp;13828;&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;按具体Key号精确删除某一条&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;· REPORT：&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;基于策略做分析、给结论，和 LIST 的本质区别在于LIST 只是把数据展示出来，而 REPORT 是给出一个判断结论&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#列出当前库所有数据文件的编号、大小、路径,常用来查&amp;nbsp;DATAFILE&amp;nbsp;n&amp;nbsp;里的&amp;nbsp;n&amp;nbsp;对应哪个文件
REPORT&amp;nbsp;SCHEMA;

#按保留策略算出哪些文件的备份不够新了,需要重新备份
REPORT&amp;nbsp;NEED&amp;nbsp;BACKUP;

#如果现在执行&amp;nbsp;DELETE&amp;nbsp;OBSOLETE&amp;nbsp;会删掉哪些内容,是&amp;nbsp;DELETE&amp;nbsp;前的安全预览
REPORT&amp;nbsp;OBSOLETE;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;text-wrap-mode: nowrap; font-size: 16px;&quot;&gt;RMAN 维护命令使用实例&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#先核实每条记录对应的文件是否还在磁盘，然后刷新&amp;nbsp;RMAN&amp;nbsp;内部状态，已经不存在了的文件会被标记成&amp;nbsp;EXPIRED
RMAN&amp;gt;&amp;nbsp;CROSSCHECK&amp;nbsp;BACKUP;
RMAN&amp;gt;&amp;nbsp;CROSSCHECK&amp;nbsp;ARCHIVELOG&amp;nbsp;ALL;

#把&amp;nbsp;EXPIRED&amp;nbsp;的记录从&amp;nbsp;RMAN&amp;nbsp;里删掉。这一步不会释放任何磁盘空间(文件本来就已经不在磁盘上了),只是清理记录
RMAN&amp;gt;&amp;nbsp;DELETE&amp;nbsp;NOPROMPT&amp;nbsp;EXPIRED&amp;nbsp;BACKUP;
RMAN&amp;gt;&amp;nbsp;DELETE&amp;nbsp;NOPROMPT&amp;nbsp;EXPIRED&amp;nbsp;ARCHIVELOG&amp;nbsp;ALL;

#删除前先看一眼会删掉什么
RMAN&amp;gt;&amp;nbsp;REPORT&amp;nbsp;OBSOLETE;

#按配置的保留策略(比如&amp;nbsp;REDUNDANCY&amp;nbsp;7)把多余的备份连文件带记录一起删掉
RMAN&amp;gt;&amp;nbsp;DELETE&amp;nbsp;NOPROMPT&amp;nbsp;OBSOLETE;

#查看清理后的现状
RMAN&amp;gt;&amp;nbsp;LIST&amp;nbsp;BACKUP&amp;nbsp;SUMMARY;

#健康检查
RMAN&amp;gt;&amp;nbsp;REPORT&amp;nbsp;SCHEMA;
RMAN&amp;gt;&amp;nbsp;REPORT&amp;nbsp;NEED&amp;nbsp;BACKUP;&lt;/pre&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;</description><pubDate>Wed, 14 Oct 2026 14:54:04 +0800</pubDate></item><item><title>Oracle运维管理——修改用户密码过期时间</title><link>https://ywpie.com/post/90.html</link><description>&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;在 Oracle 数据库中，用户的密码有效期通过PROFILE（资源限制配置文件）中的&amp;nbsp;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;PASSWORD_LIFE_TIME 参数控制&lt;/span&gt;。&lt;/span&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;如果没有为用户单独创建 PROFILE，默认使用一个 DEFAULT 策略。该策略中&amp;nbsp;&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;PASSWORD_LIFE_TIME&amp;nbsp;&lt;/span&gt;为180天。如果要修改用户密码过期策略可按照以下步骤进行&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;1、查看 DEFAULT profile 配置项&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;SELECT profile, resource_name, resource_type, limit FROM dba_profiles&lt;br/&gt;WHERE profile = &amp;#39;DEFAULT&amp;#39;&lt;br/&gt;ORDER BY resource_type, resource_name;&lt;br/&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&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、查询数据库当前所有用户&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;SELECT&amp;nbsp;username&amp;nbsp;FROM&amp;nbsp;dba_users;&lt;br/&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;3、查询指定用户是否存在过期时间&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;SELECT&amp;nbsp;username,&amp;nbsp;account_status,&amp;nbsp;expiry_date&amp;nbsp;FROM&amp;nbsp;dba_users&amp;nbsp;WHERE&amp;nbsp;username&amp;nbsp;=&amp;nbsp;&amp;#39;想要查询的数据库用户名&amp;#39;;&lt;br/&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;4、查找&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;指定&lt;/span&gt;用户所用profile，&lt;span style=&quot;font-size: 16px; text-wrap-mode: wrap;&quot;&gt;从输出结果中可以看到使用了 DEFAULT 策略&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;SELECT&amp;nbsp;username,&amp;nbsp;profile&amp;nbsp;FROM&amp;nbsp;dba_users&amp;nbsp;WHERE&amp;nbsp;username&amp;nbsp;=&amp;nbsp;&amp;#39;想要查询的数据库用户名&amp;#39;;&lt;br/&gt;&lt;/span&gt;&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;img class=&quot;ue-image&quot; src=&quot;https://ywpie.com/zb_users/upload/2026/09/202609011788246499181244.png&quot; title=&quot;PROFILE1.png&quot; alt=&quot;PROFILE1.png&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&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;5、直接修改DEFAULT策略中的配置项，如果是使用的非DEFAULT注意修改 PROFILE 的名字&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;ALTER&amp;nbsp;PROFILE&amp;nbsp;[DEFAULT]&amp;nbsp;LIMIT&amp;nbsp;PASSWORD_LIFE_TIME&amp;nbsp;UNLIMITED;&lt;br/&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;6、也可以单独为用户创建专属 PROFILE&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;CREATE&amp;nbsp;PROFILE&amp;nbsp;$new_profile_name&amp;nbsp;LIMIT&amp;nbsp;PASSWORD_LIFE_TIME&amp;nbsp;UNLIMITED;&lt;br/&gt;ALTER&amp;nbsp;USER&amp;nbsp;$username&amp;nbsp;PROFILE&amp;nbsp;$new_profile_name&amp;nbsp;;&lt;br/&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Tue, 01 Sep 2026 14:52:48 +0800</pubDate></item><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></channel></rss>