亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用LogMiner分析oracle的redo日志和歸檔

發布時間:2020-06-24 09:51:12 來源:網絡 閱讀:1384 作者:hbxztc 欄目:數據庫

  Oracle LogMiner 是Oracle公司從產品8i以后提供的一個實際非常有用的分析工具,使用該工具可以輕松獲得Oracle 在線/歸檔日志文件中的具體內容,特別是該工具可以分析出所有對于數據庫操作的DML和DDL語句。該工具特別適用于調試、審計或者回退某個特定的事務。

  LogMiner分析工具實際上是由一組PL/SQL包和一些動態視圖(Oracle8i內置包的一部分)組成,它作為Oracle數據庫的一部分來發布是8i產品提供的一個完全免費的工具。但該工具和其他Oracle內建工具相比使用起來顯得有些復雜,主要原因是該工具沒有提供任何的圖形用戶界面(GUI)。

1、安裝LogMiner

在使用LogMiner之前需要確認Oracle是否帶有進行LogMiner分析包,一般來說Windows操作系統Oracle10g以上都默認包含。如果不能確認,可以DBA身份登錄系統,查看系統中是否存在運行LogMiner所需要的dbms_logmnr、dbms_logmnr_d包,如果沒有需要安裝LogMiner工具,必須首先要運行下面這樣兩個腳本:

a.$ORACLE_HOME/rdbms/admin/dbmslm.sql

b.$ORACLE_HOME/rdbms/admin/dbmslmd.sql

這兩個腳本必須均以DBA用戶身份運行。其中第一個腳本用來創建DBMS_LOGMNR包,該包用來分析日志文件。第二個腳本用來創建DBMS_LOGMNR_D包,該包用來創建數據字典文件。

2、修改數據庫參數

--數據庫版本
sys@ORCL>select * from v$version;

BANNER
-----------------------------------------------------------
CORE	11.2.0.4.0	Production
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production
--為數據庫添加最小附加日志
sys@ORCL>alter database add supplemental log data;

Database altered.

sys@ORCL>select supplemental_log_data_min from v$database;

SUPPLEMENTAL_LOG_DATA_MI
------------------------
YES
--設置utl_file_dir參數
sys@ORCL>alter system set utl_file_dir='/home/oracle/logminer' scope=spfile;

System altered.
--重啟數據庫
sys@ORCL>shutdown immediate
sys@ORCL>startup
sys@ORCL>show parameter utl_file_dir

NAME				     TYPE			       VALUE
------------------------------------ --------------------------------- ------------------------------
utl_file_dir			     string			       /home/oracle/logminer

3、準備測試數據

sys@ORCL>conn zx/zx
Connected.
zx@ORCL>create table log_miner (id number,name varchar2(10));

Table created.

zx@ORCL>insert into log_miner values(1,'zx');

1 row created.

zx@ORCL>insert into log_miner values(1,'lx');

1 row created.

zx@ORCL>insert into log_miner values(1,'xx');

1 row created.

zx@ORCL>commit;

Commit complete.

4、創建數據字典

zx@ORCL>conn / as sysdba
Connected.
sys@ORCL>desc dbms_logmnr_d
PROCEDURE BUILD
 Argument Name			Type			In/Out Default?
 ------------------------------ ----------------------- ------ --------
 DICTIONARY_FILENAME		VARCHAR2		IN     DEFAULT
 DICTIONARY_LOCATION		VARCHAR2		IN     DEFAULT
 OPTIONS			NUMBER			IN     DEFAULT
PROCEDURE SET_TABLESPACE
 Argument Name			Type			In/Out Default?
 ------------------------------ ----------------------- ------ --------
 NEW_TABLESPACE 		VARCHAR2		IN

sys@ORCL>exec dbms_logmnr_d.build(DICTIONARY_FILENAME=>'dictionary.ora',DICTIONARY_LOCATION=>'/home/oracle/logminer');
LogMnr Dictionary Procedure started
LogMnr Dictionary File Opened
Procedure executed successfully - LogMnr Dictionary Created

PL/SQL procedure successfully completed.

sys@ORCL>!ls -l /home/oracle/logminer/dictionary.ora
-rw-r--r-- 1 oracle oinstall 41483316 Nov 11 21:08 /home/oracle/logminer/dictionary.ora

LogMiner工具實際上是由兩個新的PL/SQL內建包((DBMS_LOGMNR 和 DBMS_ LOGMNR_D)和四個V$動態性能視圖(視圖是在利用過程DBMS_LOGMNR.START_LOGMNR啟動LogMiner時創建)組成。在使用LogMiner工具分析redo log文件之前,可以使用DBMS_LOGMNR_D 包將數據字典導出為一個文本文件。該字典文件是可選的,但是如果沒有它,LogMiner解釋出來的語句中關于數據字典中的部分(如表名、列名等)和數值都將是16進制的形式,我們是無法直接理解的。例如,下面的sql語句:

INSERT INTO dm_dj_swry (rydm, rymc) VALUES (00005, '張三');

LogMiner解釋出來的結果將是下面這個樣子:

insert into Object#308(col#1, col#2) values (hextoraw('c30rte567e436'), hextoraw('4a6f686e20446f65'));

創建數據字典的目的就是讓LogMiner引用涉及到內部數據字典中的部分時為他們實際的名字,而不是系統內部的16進制。數據字典文件是一個文本文件,使用包DBMS_LOGMNR_D來創建。如果我們要分析的數據庫中的表有變化,影響到庫的數據字典也發生變化,這時就需要重新創建該字典文件。另外一種情況是在分析另外一個數據庫文件的重作日志時,也必須要重新生成一遍被分析數據庫的數據字典文件。

5、確認當前處理聯機狀態的redo日志

sys@ORCL>select group#,status from v$log;

    GROUP# STATUS
---------- ------------------------------------------------
	 1 INACTIVE
	 2 CURRENT
	 3 INACTIVE
sys@ORCL>select group#,member from v$logfile;

    GROUP# MEMBER
---------- ----------------------------------------------------------------------------------------------------
	 3 /u02/app/oracle/oradata/orcl/redo03.log
	 2 /u02/app/oracle/oradata/orcl/redo02.log
	 1 /u02/app/oracle/oradata/orcl/redo01.log

可以看出redo02處于current狀態

6、加入需要分析的日志

--第一個日志文件使用dbms_logmnr.new
sys@ORCL>exec dbms_logmnr.add_logfile(LOGFILENAME=>'/u02/app/oracle/oradata/orcl/redo02.log',OPTIONS=>dbms_logmnr.new);

PL/SQL procedure successfully completed.
--如果需要加入其他的日志使用如下語句
exec dbms_logmnr.add_logfile(LOGFILENAME=>'/u02/app/oracle/oradata/orcl/redo03.log',OPTIONS=>dbms_logmnr.addfile);

7、使用LogMiner進行分析

sys@ORCL>exec dbms_logmnr.start_logmnr(DICTFILENAME=>'/home/oracle/logminer/dictionary.ora');

PL/SQL procedure successfully completed.

sys@ORCL>col seg_name for a15
sys@ORCL>col seg_owner for a15
sys@ORCL>col operation for a20
sys@ORCL>col sql_redo for a180
sys@ORCL>set linesize 200
sys@ORCL>select seg_owner,seg_name,operation,sql_redo from v$logmnr_contents where seg_owner='ZX' and seg_name='LOG_MINER';

SEG_OWNER	SEG_NAME	OPERATION	     SQL_REDO
--------------- --------------- -------------------- --------------------------------------------------------------------------------
ZX		LOG_MINER	DDL		     create table log_miner (id number,name varchar2(10));
ZX		LOG_MINER	INSERT		     insert into "ZX"."LOG_MINER"("ID","NAME") values ('1','zx');
ZX		LOG_MINER	INSERT		     insert into "ZX"."LOG_MINER"("ID","NAME") values ('1','lx');
ZX		LOG_MINER	INSERT		     insert into "ZX"."LOG_MINER"("ID","NAME") values ('1','xx');

以上為分析在線redo日志的過程,分析歸檔日志的步驟同樣,只是在添加日志文件的時候把在線redo日志換為歸檔日志即可。歸檔日志也可以傳輸到其他數據庫服務器上進行數據分析,但分析時需要使用源庫的字典文件。

LogMiner使用注意事項:

  1. 源庫與Mining數據庫必須運行在同樣的硬件平臺上,windows的不可以傳到Linux上進行分析

  2. Mining數據庫的版本大于等于源庫的數據庫版本

  3. Mining數據庫的字符集需要與源庫一致或是源庫的超集

參考文檔:http://www.cnblogs.com/shishanyuan/p/3140440.html

官方文檔:http://docs.oracle.com/cd/E11882_01/server.112/e22490/logminer.htm#SUTIL1557

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

盐源县| 陈巴尔虎旗| 文登市| 大埔区| 泾川县| 黄石市| 根河市| 平果县| 乡宁县| 和平县| 新河县| 偃师市| 吴堡县| 古交市| 崇礼县| 缙云县| 永泰县| 衡阳市| 红安县| 陕西省| 宝兴县| 江口县| 巧家县| 仁化县| 青浦区| 永吉县| 旬邑县| 资源县| 额尔古纳市| 灯塔市| 本溪| 无棣县| 肥西县| 清河县| 玉溪市| 封开县| 绥化市| 韶关市| 宕昌县| 瑞昌市| 林州市|