日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

toad查看oracle的plsql包,Oracle logminer 分析redo log(TOAD与PLSQL)

發布時間:2023/12/2 数据库 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 toad查看oracle的plsql包,Oracle logminer 分析redo log(TOAD与PLSQL) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Oracle logminer 分析redo log

Oracle 11g r2 RAC centos 6.5

設置時間格式

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') date_format from dual ;

查看數據庫是否開啟補全日志功能

select

SUPPLEMENTAL_LOG_DATA_MIN,

SUPPLEMENTAL_LOG_DATA_PK,

SUPPLEMENTAL_LOG_DATA_UI,

SUPPLEMENTAL_LOG_DATA_FK,

SUPPLEMENTAL_LOG_DATA_ALL from v$database;

開啟補全日志

alter database add supplemental log data;

alter database add supplemental log data (primary key, unique,foreign key) columns;

再次查詢檢查是否開啟

開啟歸檔--詳細見歸檔的開啟

SQL> archive log list;

Database log mode ???????Archive Mode

Automatic archival ???????Enabled

Archive destination ???????+FRA/bol/arch

Oldest online log sequence ????93

Next log sequence to archive ??95

Current log sequence ???????95

配置LogMiner工具

SQL> show parameter UTL_FILE

NAME ?????TYPE ?VALUE

------------------------------------ ----------- ------------------------------

utl_file_dir ?????string

1 利用toad自帶的工具logminer

dml 操作

select?*from?TESTYHQ;

insert?into?TESTYHQ(id1,name1)values?(2,'hq');

commit;

利用toad的logminer直接分析redo

select * from V$LOGFILE;

select group#,sequence#,bytes,members,status from v$log;

toad-database-diagnose-logminer

選擇online logs,輸入redo文件全路徑,比如

+DATA/bol/onlinelog/group_2.258.990861405

再選擇時間范圍,選擇過大的話,日志會有很多,完成后點擊finish,直接生成記錄

可以用sql進行篩選查看

select scn,timestamp,operation,seg_owner,seg_name,

table_space,row_id,username,os_username,machine_name,

session#,serial#,sql_redo,sql_undo from v$logmnr_contents where seg_owner='SDE';

幾個關鍵字段,username,machine_name,session#,serial#,sql_redo,sql_undo,可以清楚的看見

scn,時間,操作內容,表名,操作的機器名字,和操作語句,以及undo內容

2?利用plsql進行分析

[root@rac1 /]# mkdir u02

[root@rac1 /]# chown oracle:oinstall /u02

alter system set utl_file_dir='/u02' scope=spfile; --需要重啟db

SQL> ?show parameter UTL_FILE

NAME ?????TYPE ?VALUE

------------------------------------ ----------- ------------------------------

utl_file_dir ?????string ?/u02

[root@rac1 admin]# ls dbmslm*

dbmslmd.sql ?dbmslm.sql ?dbmslms.sql

[root@rac1 admin]# pwd

/u01/app/11.2.0/grid/rdbms/admin

SQL> @/u01/app/11.2.0/grid/rdbms/admin/dbmslmd.sql

SQL> @/u01/app/11.2.0/grid/rdbms/admin/dbmslm.sql

SQL> @/u01/app/11.2.0/grid/rdbms/admin/dbmslms.sql

SQL> execute dbms_logmnr_d.build(dictionary_filename =>'dfdict.data',dictionary_location =>'/u02');

PL/SQL procedure successfully completed.

--- 如果報錯,請檢查目錄及權限

*

ERROR at line 1:

ORA-01336: specified dictionary file cannot be opened

ORA-29283: invalid file operation

ORA-06512: at "SYS.UTL_FILE", line 536

ORA-29283: invalid file operation

ORA-06512: at "SYS.DBMS_LOGMNR_INTERNAL", line 6110

ORA-06512: at "SYS.DBMS_LOGMNR_INTERNAL", line 6200

ORA-06512: at "SYS.DBMS_LOGMNR_D", line 12

ORA-06512: at line 1

--

insert into TESTYHQ(id1,name1)values (444,'hq');

commit;

select group#,sequence#,bytes,members,status from v$log;

select * from V$LOGFILE;

SQL> alter system switch logfile;

----

因為這里只有一個日志,那么只需要添加一個就好了(第一個日志用new“=>dbms_logmnr.new”)

execute dbms_logmnr.add_logfile(options =>dbms_logmnr.new,logfilename =>'/u01/app/oracle/oradata/or11g/redo01.log');

如果是有多個日志,那么就繼續添加(添加其他日志用add“=>dbms_logmnr.addfile”):

execute dbms_logmnr.add_logfile(options =>dbms_logmnr.addfile,logfilename=>'/u01/app/oracle/oradata/or11g/redo02.log');

dbms_logmnr.new --用于建一個日志分析表

dbms_logmnr.addfile --用于加,入用于分析的日志文件

dbms_logmnr.removefile --用于移出,用于分析的日志文件

如果是刪除日志就用removefile,如:

execute dbms_logmnr.add_logfile(options =>dbms_logmnr.removefile,logfilename =>'/u01/app/oracle/oradata/or11g/redo03.log');

---

SQL> alter system switch logfile;

System altered.

SQL> exec dbms_logmnr.add_logfile('+DATA/bol/onlinelog/group_1.257.990861405',dbms_logmnr.new);

PL/SQL procedure successfully completed.

SQL> exec dbms_logmnr.start_logmnr(dictfilename=>'/u02/dfdict.data');

PL/SQL procedure successfully completed.

select scn,timestamp,operation,seg_owner,seg_name,

table_space,row_id,username,os_username,machine_name,

session#,serial#,sql_redo,sql_undo from v$logmnr_contents where seg_owner='SDE';

create table t01 as select scn,timestamp,operation,seg_owner,seg_name,

table_space,row_id,username,os_username,machine_name,

session#,serial#,sql_redo,sql_undo from v$logmnr_contents where seg_owner='SDE';

--v$logmnr_contents 針對于session,其他session執行該查詢就會報錯

ORA-01306: 在從v$logmnr_contents中選擇之前必須調用dbms_logmnr.start_logmnr()

select *from t01;

SQL> exec dbms_logmnr.end_logmnr;--關閉日志挖掘

PL/SQL procedure successfully completed.

select *from t01;

總結

以上是生活随笔為你收集整理的toad查看oracle的plsql包,Oracle logminer 分析redo log(TOAD与PLSQL)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。