首页数据库数据库日志分析(如何查看数据库日志)

数据库日志分析(如何查看数据库日志)

编程之家2023-10-21117次浏览

各位老铁们好,相信很多人对数据库日志分析都不是特别的了解,因此呢,今天就来为大家分享下关于数据库日志分析以及如何查看数据库日志的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

数据库日志分析(如何查看数据库日志)

如何查看数据库日志

1、首先,打开计算机上的sqlserver软件,进入软件加载界面。

2、在弹出的“连接到服务器”窗口中选择相应的信息,并登录到sqlserver服务器。

3、成功登录后,展开“管理”文件夹以查看“SQLServer日志”文件夹。

4、展开“SQLServer日志”文件夹后,您可以看到许多日志文档。

5、右键单击并选择“查看SQLServer日志”将其打开。完成上述设置后,您可以查看sql数据库操作日志。

深入分析Oracle数据库日志文件(1)

作为Oracle DBA我们有时候需要追踪数据误删除或用户的恶意操作情况此时我们不仅需要查出执行这些操作的数据库账号还需要知道操作是由哪台客户端(IP地址等)发出的针对这些问题一个最有效实用而又低成本的方法就是分析Oracle数据库的日志文件本文将就Oracle日志分析技术做深入探讨一如何分析即LogMiner解释从目前来看分析Oracle日志的唯一方法就是使用Oracle公司提供的LogMiner来进行 Oracle数据库的所有更改都记录在日志中但是原始的日志信息我们根本无法看懂而LogMiner就是让我们看懂日志信息的工具从这一点上看它和tkprof差不多一个是用来分析日志信息一个则是格式化跟踪文件通过对日志的分析我们可以实现下面的目的查明数据库的逻辑更改侦察并更正用户的误操作执行事后审计执行变化分析不仅如此日志中记录的信息还包括数据库的更改历史更改类型(INSERT UPDATE DELETE DDL等)更改对应的SCN号以及执行这些操作的用户信息等 LogMiner在分析日志时将重构等价的SQL语句和UNDO语句(分别记录在V$LOGMNR_CONTENTS视图的SQL_REDO和SQL_UNDO中)这里需要注意的是等价语句而并非原始SQL语句例如我们最初执行的是 delete a where c<> cyx;而LogMiner重构的是等价的条DELETE语句所以我们应该意识到V$LOGMNR_CONTENTS视图中显示的并非是原版的现实从数据库角度来讲这是很容易理解的它记录的是元操作因为同样是 delete a where c<> cyx;语句在不同的环境中实际删除的记录数可能各不相同因此记录这样的语句实际上并没有什么实际意义 LogMiner重构的是在实际情况下转化成元操作的多个单条语句另外由于Oracle重做日志中记录的并非原始的对象(如表以及其中的列)名称而只是它们在Oracle数据库中的内部编号(对于表来说是它们在数据库中的对象ID而对于表中的列来说对应的则是该列在表中的排列序号 COL COL等)因此为了使LogMiner重构出的SQL语句易于识别我们需要将这些编号转化成相应的名称这就需要用到数据字典(也就说LogMiner本身是可以不用数据字典的详见下面的分析过程) LogMiner利用DBMS_LOGMNR_D BUILD()过程来提取数据字典信息 LogMiner包含两个PL/SQL包和几个视图 dbms_logmnr_d包这个包只包括一个用于提取数据字典信息的过程即dbms_logmnr_d build()过程 dbms_logmnr包它有三个过程 add_logfile(name varchar options number)用来添加/删除用于分析的日志文件 start_logmnr(start_scn number end_scn number start_time number end_time number dictfilename varchar options number)用来开启日志分析同时确定分析的时间/SCN窗口以及确认是否使用提取出来的数据字典信息 end_logmnr()用来终止分析会话它将回收LogMiner所占用的内存与LogMiner相关的数据字典 v$logmnr_dictionary LogMiner可能使用的数据字典信息因logmnr可以有多个字典文件该视图用于显示这方面信息 v$logmnr_parameters当前LogMiner所设定的参数信息 v$logmnr_logs当前用于分析的日志列表 v$logmnr_contents日志分析结果二 Oracle i LogMiner的增强支持更多数据/存储类型链接/迁移行 CLUSTER表操作 DIRECT PATH插入以及DDL操作在V$LOGMNR_CONTENTS的SQL_REDO中可以看到DDL操作的原句(CREATE USER除外其中的密码将以加密的形式出现而不是原始密码)如果TX_AUDITING初始化参数设为TRUE则所有操作的数据库账号将被记录提取和使用数据字典的选项现在数据字典不仅可以提取到一个外部文件中还可以直接提取到重做日志流中它在日志流中提供了操作当时的数据字典快照这样就可以实现离线分析允许对DML操作按事务进行分组可以在START_LOGMNR()中设置MITTED_DATA_ONLY选项实现对DML操作的分组这样将按SCN的顺序返回已经提交的事务支持SCHEMA的变化在数据库打开的状态下如果使用了LogMiner的DDL_DICT_TRACKING选项 Oracle i的LogMiner将自动对比最初的日志流和当前系统的数据字典并返回正确的DDL语句并且会自动侦察并标记当前数据字典和最初日志流之间的差别这样即使最初日志流中所涉及的表已经被更改或者根本已经不存在 LogMiner同样会返回正确的DDL语句在日志中记录更多列信息的能力例如对于UPDATE操作不仅会记录被更新行的情况还可以捕捉更多前影信息支持基于数值的查询 Oracle i LogMiner在支持原有基于元数据(操作对象等)查询的基础上开始支持基于实际涉及到的数据的查询例如涉及一个工资表现在我们可以很容易地查出员工工资由变成的原始更新语句而在之前我们只能选出所有的更新语句三 Oracle i/ i的日志分析过程 LogMiner只要在实例起来的情况下都可以运行 LogMiner使用一个字典文件来实现Oracle内部对象名称的转换如果没有这个字典文件则直接显示内部对象编号例如我们执行下面的语句 delete from C A where C= gototop and ROWID= AAABg AAFAAABQaAAH;如果没有字典文件 LogMiner分析出来的结果将是 delete from UNKNOWN OBJ# where COL= HEXTORAW( d a d ae) and ROWID= AAABg AAFAAABQaAAH;如果想要使用字典文件数据库至少应该出于MOUNT状态然后执行dbms_logmnr_d build过程将数据字典信息提取到一个外部文件中下面是具体分析步骤确认设置了初始化参数 UTL_FILE_DIR并确认Oracle对改目录拥有读写权限然后启动实例示例中UTL_FILE_DIR参数如下 SQL> show parameter utlNAME TYPEvalue utl_file_dir string/data/cyx/logmnr这个目录主要用于存放dbms_logmnr_d build过程所产生的字典信息文件如果不用这个则可以不设也就跳过下面一步生成字典信息文件 exec dbms_logmnr_d build(dictionary_filename=> dic ora dictionary_location=>/data/cyx/logmnr);其中dictionary_location指的是字典信息文件的存放位置它必须完全匹配UTL_FILE_DIR的值例如假设UTL_FILE_DIR=/data/cyx/logmnr/则上面这条语句会出错只因为UTL_FILE_DIR后面多了一个/而在很多其它地方对这一/是不敏感的 dictionary_filename指的是放于字典信息文件的名字可以任意取当然我们也可以不明确写出这两个选项即写成 exec dbms_logmnr_d build( dic ora/data/cyx/logmnr);如果你第一步的参数没有设而直接开始这一步 Oracle会报下面的错误 ERROR at line:ORA: initialization parameter utl_file_dir is not setORA: at SYS DBMS_LOGMNR_D line ORA: at SYS DBMS_LOGMNR_D line ORA: at line需要注意的是在oracle for Windows版中会出现以下错误:: SQL> execute dbms_logmnr_d build( oradict ora c:\oracle\admin\ora\log);BEGIN dbms_logmnr_d build( oradict ora c:\oracle\admin\ora\log); END;*ERROR at line:ORA: Subscript outside of limitORA: at SYS DBMS_LOGMNR_D line ORA: at line解决办法编辑$ORACLE_HOME/rdbms/admindbmslmd sql文件把其中的TYPE col_desc_array IS VARRAY() OF col_description;改成 TYPE col_desc_array IS VARRAY() OF col_description;保存文件然后执行一遍这个脚本:: SQL>@c:\oracle\ora \rdbms\admin\dbmslmd sqlPackage created Package body created No errors Grant succeeded然后重新编译DBMS_LOGMNR_D包:: SQL> alter package DBMS_LOGMNR_D pile body;Package body altered之后重新执行dbms_logmnr_d build即可:: SQL> execute dbms_logmnr_d build( oradict ora c:\oracle\admin\ora\log);PL/SQL procedure successfully pleted添加需要分析的日志文件 SQL>exec dbms_logmnr add_logfile( logfilename=>/data/cyx/rac arch/arch_ _ arc options=>dbms_logmnr new);PL/SQL procedure successfully pleted这里的options选项有三个参数可以用 NEW表示创建一个新的日志文件列表 ADDFILE表示向这个列表中添加日志文件如下面的例子 REMOV lishixinzhi/Article/program/Oracle/201311/18949

数据库日志分析(如何查看数据库日志)

SQL数据库日志文件 可以删除吗

数据库在使用过程中会使日志文件不断增加,使得数据库的性能下降,并且占用大量的磁盘空间。SQL Server数据库都有log文件,log文件记录用户对数据库修改的操作。可以通过直接删除log文件和清空日志在清除数据库日志。

一、删除LOG

1、分离数据库。分离数据库之前一定要做好数据库的全备份,选择数据库——右键——任务——分离。

勾选删除连接

分离后在数据库列表将看不到已分离的数据库。

2、删除LOG文件

数据库日志分析(如何查看数据库日志)

3、附加数据库,附加的时候会提醒找不到log文件。

删除数据库信息信息的ldf文件:

附加数据库之后将生成新的日志文件log,新的日志文件的大小事504K。

也可以通过命令才完成以上的操作:

use master;

exec sp_detach_db@dbname='TestDB';

exec sp_attach_single_file_db@dbname='TestDB',@physname='D:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\TestDB.mdf'

二、清空日志

该命令在SQL Server 2005和2000支持,SQL Server 2008不支持该命令。

DUMP TRANSACTION TestDB WITH NO_LOG

三、收缩数据库文件

DBCC SHRINKFILE('TestDB_log',1)

四、截断事务日志

BACKUP LOG TestDB WITH NO_LOG

该命令在SQL Server 2008也是不支持,在SQL Server 2005和2000可以使用。

清除SQLServer2005的LOG文件

--最好备份日志,以后可通过日志恢复数据。。。

以下为日志处理方法

一般不建议做第4,6两步

第4步不安全,有可能损坏数据库或丢失数据

第6步如果日志达到上限,则以后的数据库处理会失败,在清理日志后才能恢复.

--*/

--下面的所有库名都指你要处理的数据库的库名

1.清空日志

DUMPTRANSACTION库名 WITH NO_LOG

2.截断事务日志:

BACKUPLOG库名 WITH NO_LOG

3.收缩数据库文件(如果不压缩,数据库的文件不会减小

企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件

--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了

--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了

也可以用SQL语句来完成

--收缩数据库

DBCC SHRINKDATABASE(库名)

--收缩指定数据文件,1是文件号,可以通过这个语句查询到:select* from sysfiles

DBCC SHRINKFILE(1)

4.为了最大化的缩小日志文件(如果是sql 7.0,这步只能在查询分析器中进行)

a.分离数据库:

企业管理器--服务器--数据库--右键--分离数据库

b.在我的电脑中删除LOG文件

c.附加数据库:

企业管理器--服务器--数据库--右键--附加数据库

此法将生成新的LOG,大小只有500多K

或用代码:

下面的示例分离 pubs,然后将 pubs中的一个文件附加到当前服务器。

a.分离

EXEC sp_detach_db@dbname='库名'

b.删除日志文件

c.再附加

EXEC sp_attach_single_file_db@dbname='库名',

@physname='c:\Program Files\Microsoft SQL Server\MSSQL\Data\库名.mdf'

5.为了以后能自动收缩,做如下设置:

企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩"

--SQL语句设置方式:

EXEC sp_dboption'库名','autoshrink','TRUE'

6.如果想以后不让它日志增长得太大

企业管理器--服务器--右键数据库--属性--事务日志

--将文件增长限制为xM(x是你允许的最大数据文件大小)

--SQL语句的设置方式:

alterdatabase库名 modify file(name=逻辑文件名,maxsize=20)

SQL Server数据库使用时间一长就会导致Log文件逐渐变的庞大,想备份一下数据库,想发给谁都很困难

运行下面的语句就可以清到Log文件只剩下1M左右的空间.

DUMP TRANSACTION数据库名 WITH NO_LOG

DBCC SHRINKDATABASE('数据库名',TRUNCATEONLY)

不重启SQL服务,删除SQLServer系统日志

SQLServer的系统日志过大,就会引起SQLServer服务器无法启动等一系列问题。今天我遇到了这个问题,在网上搜索了一下,解决方法是删除就可以了,可是当前的ErrorLog正在被SQL使用无法删除啊,要删除只能停止SQL服务器,难道就没有别得办法了吗?

回答是肯定的:使用以下存储过程:EXEC sp_cycle_errorlog

注释

每次启动 SQL Server时,当前错误日志重新命名为 errorlog.1;errorlog.1成为 errorlog.2,errorlog.2成为 errorlog.3,依次类推。sp_cycle_errorlog使您得以循环错误日志文件,而不必停止而后再启动服务器。

如何查看sql数据库操作日志

请参照以下步骤查看sql数据库操作日志。

1、首先在电脑上打开sql server软件,进入软件加载界面。

2、在弹出的连接到服务器窗口中选择相应的信息,登录到sql server服务器。

3、登录成功后,将“管理”文件夹展开,即可看到“SQL Server日志”文件夹。

4、将“SQL Server日志”文件夹展开后,可以看到有很多的日志文档。

5、鼠标右键单击选择“查看SQL Server日志”,即可打开。完成以上设置后,即可查看sql数据库操作日志。

好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!

oracle数据库怎么连接?如何连接oracle数据库数据存储服务器价格 存储服务器多少钱