如何查看sqlserver日志的方法

如何查看sqlserver日志的方法,第1张

定期分析sqlserver日志是DBA很重要的任务,那如何才能查看sqlserver日志呢

在SQL Server 70和SQL Server2000中,可以用下面的命令查看:

DBCC log ( {dbid|dbname}, [, type={0|1|2|3|4}] )

参数:

Dbid or dbname - 任一数据库的ID或名字

type - 输出结果的类型:

0 - 最少信息(operation, context, transaction id)

1 - 更多信息(plus flags, tags, row length)

2 - 非常详细的信息(plus object name, index name,page id, slot id)

3 - 每种 *** 作的全部信息

4 - 每种 *** 作的全部信息加上该事务的16进制信息

默认 type = 0

要查看MSATER数据库的事务日志可以用以下命令:

DBCC log (master)

释放日志空间

1清空日志

  DUMP TRANSACTION 库名 WITH NO_LOG

2截断事务日志:

  BACKUP LOG 数据库名 WITH NO_LOG

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

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

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

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

  也可以用SQL语句来完成

  --收缩数据库

  DBCC SHRINKDATABASE(客户资料)

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

  DBCC SHRINKFILE(1)

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

  a分离数据库:

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

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

  c附加数据库:

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

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

  或用代码:

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

  a分离

  E X E C sp_detach_db @dbname = 'pubs'

  b删除日志文件

  c再附加

  E X E C sp_attach_single_file_db @dbname = 'pubs',

  @physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubsmdf'

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

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

  --SQL语句设置方式:

  E X E C sp_dboption '数据库名', 'autoshrink', 'TRUE'

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

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

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

  --SQL语句的设置方式:

  alter database 数据库名 modify file(name=逻辑文件名,maxsize=20)

特别注意:

  请按步骤进行,未进行前面的步骤,请不要做后面的步骤

  否则可能损坏你的数据库

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

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

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

另外提供一种更简单的方法,建议大家使用。

更简单的方法:

1。右建数据库属性窗口--故障还原模型--设为简单

2。右建数据库所有任务--收缩数据库

3。右建数据库属性窗口--故障还原模型--设为大容量日志记录

1、 在SQL Server 70和SQL Server2000中,可以用下面的命令查看:

DBCC log ( {dbid|dbname}, [, type={0|1|2|3|4}] )

参数:

Dbid or dbname - 任一数据库的ID或名字

type - 输出结果的类型:

0 - 最少信息(operation, context, transaction id)

1 - 更多信息(plus flags, tags, row length)

2 - 非常详细的信息(plus object name, index name,page id, slot id)

3 - 每种 *** 作的全部信息

4 - 每种 *** 作的全部信息加上该事务的16进制信息

默认 type = 0

要查看MSATER数据库的事务日志可以用以下命令:

DBCC log (master)

你是要看数据文件和日志文件的存放位置呢,还是里边的内容?

查看位置的话,直接使用:

SQL> select from v$logfile;

SQL> select file_id,file_name from dba_data_files;

如果要查看内容的话,得把数据打出来,到trace文件中查看。

记录系统日志,比如日志切换的记录,修改系统参数等系统事件。

位置在参数background_mp_dest指定的路径下,一般为:%ORACLE_BASE%admin%ORACLE_SID%mp

数据库的安全涉及到各方面,数据的丢失或者篡改将会带来无法估量的损失,所以数据库的安全尤为重要,我们可以通过数据库的日志来分析数据库的安全性,然会针对分析结果采取相应的措施。

管理数据库主要做好以下3方面的内容:

一、数据库定期备份

首先利用数据库自带的命令行工具将数据库备份下来,然后将该文件以日期参量重命名。

数据库定期备份的原因:

1)、有些数据是随时变化的,备份可以记录某时间点的数据;

2)、如数据库故障,可以随时还原。

二、数据库优化

1)、进行sql语句的执行优化;

2)、减少应用和数据库的交互次数、同一个sql语句的执行次数;

3)、整理数据库实体的碎片(特别是对某些表经常进行insert和delete动作,尤其注意,索引字段为系列字段、自增长字段、时间字段,对于业务比较频繁的系统,最好一个月重建一次);

4)、减少表之间的关联,特别对于批量数据处理,尽量单表查询数据,统一在内存中进行逻辑处理,减少数据库压力(java处理批量数据不可取,尽量用c或者c进行处理,效率大大提升);

5)、对访问频繁的数据,充分利用数据库cache和应用的缓存;

6)、数据量比较大的,在设计过程中,为了减少其他表的关联,增加一些冗余字段,提高查询性能。

三、数据库日志文件管理

1、查看数据库中日志文件;

默认是三个组,这是数据库创建时自己添加的三个日志文件组;

2、添加日志文件组并添加成员。

有时候我们会不小心对一个大表进行了 update,比如说写错了 where 条件

此时,如果 kill 掉 update 线程,那回滚 undo log 需要不少时间。如果放置不管,也不知道 update 会持续多久。

那我们能知道 update 的进度么?

实验

我们先创建一个测试数据库:

快速创建一些数据:

连续执行同样的 SQL 数次,就可以快速构造千万级别的数据:

查看一下总的行数:

我们来释放一个大的 update:

然后另起一个 session,观察 performance_schema 中的信息:

可以看到,performance_schema 会列出当前 SQL 从引擎获取的行数。

等 SQL 结束后,我们看一下 update 从引擎总共获取了多少行:

可以看到该 update 从引擎总共获取的行数是表大小的两倍,那我们可以估算:update 的进度 = (rows_examined) / (2 表行数)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10628949.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存