{"id":18038,"date":"2025-05-01T17:14:34","date_gmt":"2025-05-01T09:14:34","guid":{"rendered":"https:\/\/www.orczhou.com\/?p=18038"},"modified":"2025-05-06T15:51:41","modified_gmt":"2025-05-06T07:51:41","slug":"oracle-logminer-how-to","status":"publish","type":"post","link":"https:\/\/www.orczhou.com\/index.php\/2025\/05\/oracle-logminer-how-to\/","title":{"rendered":"Oracle LogMiner \u4f7f\u7528"},"content":{"rendered":"<div id=\"tocer-1\" class=\"tocer tocer-pos-flt-e\"><div class=\"tocer-toc\"><header class=\"tocer-header\"><h2 class=\"tocer-title\">\u76ee\u5f55<\/h2>\n<\/header>\n<ul class=\"tocer-list tocer-adv tocer-sp-os-bf tocer-st-ctrs-dec tocer-lvl1\"><li><div><a href=\"#tocer-heading-1\">Oracle \u4f55\u65f6\u5f15\u5165\u7684LogMiner\uff1f<\/a><\/div><\/li>\n<li><div><a href=\"#tocer-heading-2\">\u6253\u5f00\u8865\u5145\u65e5\u5fd7<\/a><\/div><\/li>\n<li><div><a href=\"#tocer-heading-3\">\u67e5\u770b\u5f52\u6863\u65e5\u5fd7<\/a><\/div><\/li>\n<li><div><a href=\"#tocer-heading-4\">\u6dfb\u52a0\u9700\u8981\u89e3\u6790\u7684\u65e5\u5fd7\u6587\u4ef6<\/a><\/div><\/li>\n<li class=\"tocer-has-sub\"><div><a href=\"#tocer-heading-5\">\u542f\u52a8LogMiner<\/a><\/div>\n<ul class=\"tocer-sublist tocer-lvl2\"><li><div><a href=\"#tocer-heading-6\">\u4f7f\u7528\u5728\u7ebf\u6570\u636e\u5b57\u5178\u542f\u52a8<\/a><\/div><\/li>\n<li><div><a href=\"#tocer-heading-7\">\u4f7f\u7528\u65e5\u5fd7\u4e2d\u7684\u6570\u636e\u5b57\u5178\u542f\u52a8<\/a><\/div><\/li>\n<\/ul>\n<\/li>\n<li class=\"tocer-has-sub\"><div><a href=\"#tocer-heading-8\">\u83b7\u53d6LogMiner\u4e2d\u7684\u53d8\u66f4\u6570\u636e<\/a><\/div>\n<ul class=\"tocer-sublist tocer-lvl2\"><li><div><a href=\"#tocer-heading-9\">\u83b7\u53d6\u53d8\u66f4\u6570\u636e<\/a><\/div><\/li>\n<\/ul>\n<\/li>\n<li><div><a href=\"#tocer-heading-10\">\u9000\u51fa LogMiner<\/a><\/div><\/li>\n<li><div><a href=\"#tocer-heading-11\">\u89e3\u6790\u672a\u5f52\u6863\u7684 Redo \u65e5\u5fd7<\/a><\/div><\/li>\n<li class=\"tocer-has-sub\"><div><a href=\"#tocer-heading-12\">\u4e00\u4e9b\u5e38\u89c1\u7684 SQL<\/a><\/div>\n<ul class=\"tocer-sublist tocer-lvl2\"><li><div><a href=\"#tocer-heading-13\">\u83b7\u53d6\u5f52\u6863\u65e5\u5fd7<\/a><\/div><\/li>\n<li><div><a href=\"#tocer-heading-14\">\u5f3a\u5236\u5207\u6362\u5f52\u6863\u65e5\u5fd7\u6587\u4ef6<\/a><\/div><\/li>\n<li><div><a href=\"#tocer-heading-15\">\u83b7\u53d6\u5f53\u524d\u6b63\u5728\u4f7f\u7528\u7684redo\u6587\u4ef6<\/a><\/div><\/li>\n<\/ul>\n<\/li>\n<li><div><a href=\"#tocer-heading-16\">\u53c2\u8003<\/a><\/div><\/li>\n<\/ul>\n<\/div><\/div>\n\n\n\n<p>\u5728<code>Oracle<\/code>\u5b98\u65b9\u6587\u6863<a href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/21\/sutil\/oracle-logminer-utility.html\">Using LogMiner to Analyze Redo Log Files<\/a><sup>[2]<\/sup>\u4e2d\uff0c\u5bf9\u8be5\u529f\u80fd\u6709\u8be6\u7ec6\u7684\u4ecb\u7ecd\uff0c\u5305\u62ec\u4e86<code>LogMiner<\/code>\u7684\u914d\u7f6e\u4e0e\u4f7f\u7528\u3001\u6570\u636e\u8fc7\u6ee4\u3001\u8865\u5145\u65e5\u5fd7\uff08Supplemental Logging\uff09\u3001\u4f7f\u7528\u793a\u4f8b\u7b49\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Oracle \u4f55\u65f6\u5f15\u5165\u7684LogMiner\uff1f<\/h4>\n\n\n\n<p>\u81ea 1999 \u5e74\u53d1\u5e03 Oracle 8i \u7684\u65f6\u5019\uff0c\u6b63\u5f0f\u5f15\u5165 LogMiner \u529f\u80fd\uff08\u53c2\u8003\uff1a<a href=\"https:\/\/docs.oracle.com\/cd\/F49540_01\/DOC\/server.815\/a68020\/ch2.htm#141051\">Redo Log Analysis Using LogMiner<\/a><sup>[1]<\/sup>\uff09\u3002\u8be5\u529f\u80fd\u652f\u6301\u4ee5<code>SQL<\/code>\u7684\u5f62\u5f0f\u5206\u6790<code>redo<\/code>\u4e2d\u7684\u6570\u636e\uff0c\u6700\u521d\u8003\u8651\u7684\u5e94\u7528\u573a\u666f\uff0c\u4e3b\u8981\u8fd8\u662f\u504f\u4e8e\u6545\u969c\u6062\u590d\u3001\u5f02\u5e38\u8bca\u65ad\u3001\u5ba1\u8ba1\u7b49\uff0c\u4f46\u662f\u8be5\u529f\u80fd\u7684\u6f5c\u529b\u5f88\u5927\uff0c\u73b0\u5728\u5df2\u7ecf\u9010\u6b65\u6210\u4e3a<code>Oracle CDC<\/code>\u7684\u4e3b\u6d41\u65b9\u6848\u4e4b\u4e00\u3002<\/p>\n\n\n\n<p>\u76ee\u524d\u5df2\u7ecf\u6709\u5f88\u591a\u7684\u96c6\u6210\/\u540c\u6b65\u5de5\u5177\u90fd\u4f7f\u7528<code>LogMiner<\/code>\u8fdb\u884c\u53d8\u5316\u6570\u636e\u83b7\u53d6\uff0c\u867d\u7136\uff0c\u76ee\u524d\u5b98\u65b9\u4f9d\u65e7\u4e0d\u63a8\u8350\u8fd9\u4e48\u505a\uff0c\u6587\u6863\u4e2d\u7684\u539f\u6587\u5982\u4e0b\uff1a\u201cNote:LogMiner is intended for use as a debugging tool, to extract information from the redo logs to solve problems. It is not intended to be used for any third party replication of data in a production environment.\u201d<\/p>\n\n\n\n<p>\u6839\u636e\u7ecf\u9a8c\u6765\u770b\uff0c<code>LogMiner<\/code>\u7528\u4e8e\u6570\u636e\u96c6\u6210\u5e76\u6ca1\u6709\u4ec0\u4e48\u592a\u5927\u7684\u95ee\u9898\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u6253\u5f00\u8865\u5145\u65e5\u5fd7<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u67e5\u770b\u5f52\u6863\u65e5\u5fd7<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"sql\" class=\"language-sql\">SQL> SELECT name FROM v$archived_log ORDER BY FIRST_TIME DESC FETCH FIRST 3 ROWS ONLY;\n\nNAME\n----------------------------------------------------------------------------------------------------\n\/u03\/app\/oracle\/fast_recovery_area\/ORCLCDB\/archivelog\/2025_04_24\/o1_mf_1_761_n0mbccbd_.arc\n\/u03\/app\/oracle\/fast_recovery_area\/ORCLCDB\/archivelog\/2025_04_24\/o1_mf_1_760_n0mbcc62_.arc\n\/u03\/app\/oracle\/fast_recovery_area\/ORCLCDB\/archivelog\/2025_04_24\/o1_mf_1_759_n0m6tdfp_.arc<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u6dfb\u52a0\u9700\u8981\u89e3\u6790\u7684\u65e5\u5fd7\u6587\u4ef6<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"sql\" class=\"language-sql\">BEGIN\n  DBMS_LOGMNR.ADD_LOGFILE(\n    LOGFILENAME => '\/PATH_TO_YOUR_ARCHIVE\/o1_mf_1_761_n0mbccbd_.arc',\n    OPTIONS => DBMS_LOGMNR.NEW\n  );\nEND;\n\/<\/code><\/pre>\n\n\n\n<p>\u4f8b\u5982\uff0c\u5b9e\u9645\u7684SQL\u53ef\u80fd\u662f\u5982\u4e0b\u7684\u6837\u5b50\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"sql\" class=\"language-sql\">BEGIN\n  DBMS_LOGMNR.ADD_LOGFILE(\n    LOGFILENAME => '\/u03\/app\/oracle\/fast_recovery_area\/ORCLCDB\/archivelog\/2025_04_24\/o1_mf_1_955_n0mwc01v_.arc',\n    OPTIONS => DBMS_LOGMNR.NEW\n  );\nEND;\n\/\n\no1_mf_1_955_n0mwc01v_.arc\no1_mf_1_909_n0mv4sc3_.arc\no1_mf_1_908_n0mv4ohs_.arc<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">\u542f\u52a8LogMiner<\/h4>\n\n\n\n<p>\u542f\u52a8\u65f6\uff0c\u53ef\u4ee5\u5e26\u4e0d\u540c\u7684\u53c2\u6570\u4ee5\u6307\u5b9a<code>LogMiner<\/code>\u4e0d\u540c\u7684\u884c\u4e3a\u3002<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">\u4f7f\u7528\u5728\u7ebf\u6570\u636e\u5b57\u5178\u542f\u52a8<\/h5>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"sql\" class=\"language-sql\">EXECUTE DBMS_LOGMNR.START_LOGMNR( -\n   OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG);<\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\">\u4f7f\u7528\u65e5\u5fd7\u4e2d\u7684\u6570\u636e\u5b57\u5178\u542f\u52a8<\/h5>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"sql\" class=\"language-sql\">EXECUTE DBMS_LOGMNR_D.BUILD( -\n    OPTIONS => DBMS_LOGMNR_D.STORE_IN_REDO_LOGS);<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">\u83b7\u53d6<code>LogMiner<\/code>\u4e2d\u7684\u53d8\u66f4\u6570\u636e<\/h4>\n\n\n\n<h5 class=\"wp-block-heading\">\u83b7\u53d6\u53d8\u66f4\u6570\u636e<\/h5>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"sql\" class=\"language-sql\">SELECT \n  SCN,\n  TIMESTAMP,\n  OPERATION,\n  SQL_REDO,\n  SQL_UNDO,\n  SEG_OWNER,\n  TABLE_NAME,\n  USERNAME\nFROM \n  V$LOGMNR_CONTENTS\nWHERE \n    OPERATION IN ('INSERT', 'UPDATE', 'DELETE')\n--  AND SEG_OWNER = 'TEST_USER'\n    AND (TABLE_NAME = 'T2' OR TABLE_NAME = 't2')\nORDER BY TIMESTAMP DESC\nFETCH FIRST 3 ROWS ONLY;<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">\u9000\u51fa LogMiner<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">EXECUTE DBMS_LOGMNR.END_LOGMNR();<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">\u89e3\u6790\u672a\u5f52\u6863\u7684 Redo \u65e5\u5fd7<\/h4>\n\n\n\n<p>\u9664\u4e86\u89e3\u6790\u5f52\u6863\u4e4b\u5916\uff0cLogMiner \u53ef\u4ee5\u76f4\u63a5\u89e3\u6790\u5f53\u524d\u6b63\u5728\u4f7f\u7528\u7684 redo \u6587\u4ef6\u3002\u5148\u6839\u636e\u5c0f\u8282\u201c\u83b7\u53d6\u5f53\u524d\u6b63\u5728\u4f7f\u7528\u7684redo\u6587\u4ef6\u201d\u4e2d\u7684SQL\u83b7\u53d6\u5f53\u524d\u6b63\u5728\u4f7f\u7528\u7684 redo \u6587\u4ef6\uff0c\u7136\u540e\u5728\u6dfb\u52a0\u65e5\u5fd7\u6587\u4ef6\u65f6\uff0c\u50cf\u4e0a\u8ff0\u6dfb\u52a0\u5f52\u6863\u4e00\u6837\u6dfb\u52a0\u5373\u53ef\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"sql\" class=\"language-sql\">BEGIN\n  DBMS_LOGMNR.ADD_LOGFILE(\n    LOGFILENAME => '\/u04\/app\/oracle\/redo\/redo003.log',\n    OPTIONS => DBMS_LOGMNR.NEW\n  );\nEND;\n\/<\/code><\/pre>\n\n\n\n<p>\u4f7f\u7528\u4e0a\u8ff0\uff08\u5c0f\u7ed3\u201c\u83b7\u53d6\u53d8\u66f4\u6570\u636e\u201d\uff09\u7684SQL\u53ef\u4ee5\u83b7\u5f97\u5982\u4e0b\u7684\u8f93\u51fa\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"sql\" class=\"language-sql\">       SCN TIMESTAMP OPERATION\t  SQL_REDO\n---------- --------- ------------ ---------------------------------------------\n   3175619 24-APR-25 INSERT       insert into \"SYS\".\"T2\"(\"ID\") values ('31');\n   3175846 24-APR-25 INSERT       insert into \"SYS\".\"T2\"(\"ID\") values ('32');<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">\u4e00\u4e9b\u5e38\u89c1\u7684 SQL<\/h4>\n\n\n\n<h5 class=\"wp-block-heading\">\u83b7\u53d6\u5f52\u6863\u65e5\u5fd7<\/h5>\n\n\n\n<p>\u83b7\u53d6\u6700\u65b0\u7684<code>ARCHIVE LOG<\/code>\u7684\u5217\u8868\uff0c\u4ee5\u53ca\u5bf9\u5e94\u7684<code>SCN<\/code>\u53f7\u8303\u56f4\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"sql\" class=\"language-sql\">SELECT \n  FIRST_CHANGE#,\n  TO_CHAR(FIRST_TIME, 'YYYY-MM-DD HH24:MI:SS'),\n  NEXT_CHANGE# ,\n  TO_CHAR(NEXT_TIME, 'YYYY-MM-DD HH24:MI:SS'),\n  NAME \nFROM  \n  V$ARCHIVED_LOG \nORDER BY NEXT_CHANGE# DESC \nFETCH FIRST 3 ROWS ONLY;<\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\">\u5f3a\u5236\u5207\u6362\u5f52\u6863\u65e5\u5fd7\u6587\u4ef6<\/h5>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"sql\" class=\"language-sql\">ALTER SYSTEM SWITCH LOGFILE;<\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\">\u83b7\u53d6\u5f53\u524d\u6b63\u5728\u4f7f\u7528\u7684redo\u6587\u4ef6<\/h5>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"sql\" class=\"language-sql\">SELECT A.GROUP#,A.MEMBER, B.STATUS\nFROM   V$LOGFILE A\nJOIN   V$LOG B ON A.GROUP# = B.GROUP#\nWHERE  B.STATUS = 'CURRENT'; <\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">\u53c2\u8003<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>[1] <a href=\"https:\/\/docs.oracle.com\/cd\/F49540_01\/DOC\/server.815\/a68020\/ch2.htm#141051\">Redo Log Analysis Using LogMiner<\/a> Oracle8i New Features@oracle.com <\/li>\n\n\n\n<li>[2] <a href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/21\/sutil\/oracle-logminer-utility.html\">Using LogMiner to Analyze Redo Log Files<\/a> 21c@oracle.com<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>\u5728Oracle\u5b98\u65b9\u6587\u6863Using LogMiner to Analyze Redo Log Files[2]\u4e2d\uff0c\u5bf9\u8be5\u529f\u80fd\u6709\u8be6\u7ec6\u7684\u4ecb\u7ecd\uff0c\u5305\u62ec\u4e86LogMiner\u7684\u914d\u7f6e\u4e0e\u4f7f\u7528\u3001\u6570\u636e\u8fc7\u6ee4\u3001\u8865\u5145\u65e5\u5fd7\uff08Supplemental Logging\uff09\u3001\u4f7f\u7528\u793a\u4f8b\u7b49\u3002 Oracle \u4f55\u65f6\u5f15\u5165\u7684LogMiner\uff1f \u81ea 1999 \u5e74\u53d1\u5e03 Oracle 8i \u7684\u65f6\u5019\uff0c\u6b63\u5f0f\u5f15\u5165 LogMiner \u529f\u80fd\uff08\u53c2\u8003\uff1aRedo Log Analysis Using LogMiner[1]\uff09\u3002\u8be5\u529f\u80fd\u652f\u6301\u4ee5SQL\u7684\u5f62\u5f0f\u5206\u6790redo\u4e2d\u7684\u6570\u636e\uff0c\u6700\u521d\u8003\u8651\u7684\u5e94\u7528\u573a\u666f\uff0c\u4e3b\u8981\u8fd8\u662f\u504f\u4e8e\u6545\u969c\u6062\u590d\u3001\u5f02\u5e38\u8bca\u65ad\u3001\u5ba1\u8ba1\u7b49\uff0c\u4f46\u662f\u8be5\u529f\u80fd\u7684\u6f5c\u529b\u5f88\u5927\uff0c\u73b0\u5728\u5df2\u7ecf\u9010\u6b65\u6210\u4e3aOracle CDC\u7684\u4e3b\u6d41\u65b9\u6848\u4e4b\u4e00\u3002 \u76ee\u524d\u5df2\u7ecf\u6709\u5f88\u591a\u7684\u96c6\u6210\/\u540c\u6b65\u5de5\u5177\u90fd\u4f7f\u7528LogMiner\u8fdb\u884c\u53d8\u5316\u6570\u636e\u83b7\u53d6\uff0c\u867d\u7136\uff0c\u76ee\u524d\u5b98\u65b9\u4f9d\u65e7\u4e0d\u63a8\u8350\u8fd9\u4e48\u505a\uff0c\u6587\u6863\u4e2d\u7684\u539f\u6587\u5982\u4e0b\uff1a\u201cNote:LogMiner is intended for use as a debugging tool, to extract information from the redo logs to solve problems. It is not intended to be used for any third party replication of [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"wp-custom-template-a-1440-px-width-template","format":"standard","meta":{"_eb_attr":"","inline_featured_image":false,"_tocer_settings":[],"footnotes":""},"categories":[126,13,137],"tags":[],"class_list":["post-18038","post","type-post","status-publish","format-standard","hentry","category-database","category-oracle","category-learning-more"],"_links":{"self":[{"href":"https:\/\/www.orczhou.com\/index.php\/wp-json\/wp\/v2\/posts\/18038","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.orczhou.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.orczhou.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.orczhou.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.orczhou.com\/index.php\/wp-json\/wp\/v2\/comments?post=18038"}],"version-history":[{"count":53,"href":"https:\/\/www.orczhou.com\/index.php\/wp-json\/wp\/v2\/posts\/18038\/revisions"}],"predecessor-version":[{"id":18091,"href":"https:\/\/www.orczhou.com\/index.php\/wp-json\/wp\/v2\/posts\/18038\/revisions\/18091"}],"wp:attachment":[{"href":"https:\/\/www.orczhou.com\/index.php\/wp-json\/wp\/v2\/media?parent=18038"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.orczhou.com\/index.php\/wp-json\/wp\/v2\/categories?post=18038"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.orczhou.com\/index.php\/wp-json\/wp\/v2\/tags?post=18038"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}