当前位置:首页 » 编程语言 » sql清理日志

sql清理日志

发布时间: 2022-01-08 12:43:10

Ⅰ 如何删除sql数据库的日志文件

其中database为你的库名 --压缩日志 1:截断事务日志: BACKUP LOG 数据库名 WITH NO_LOG2:清空日志DUMP TRANSACTION 库名 WITH NO_LOG再:企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了3: 删除LOG1:分离数据库 企业管理器->服务器->数据库->右键->分离数据库 2:删除LOG文件 3:附加数据库 企业管理器->服务器->数据库->右键->附加数据库 此法生成新的LOG,大小只有500多K 再将此数据库设置自动收缩或用代码:下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。 EXEC sp_detach_db @dbname = 'pubs' EXEC sp_attach_single_file_db @dbname = 'pubs', @physname = 'c:/Program Files/Microsoft SQL Server/MSSQL/Data/pubs.mdf' 4: 如果想以后不让它增长 企业管理器--服务器--右键数据库--属性--事务日志--将文件增长限制为xM(x是你允许的最大数据文件大小) --SQL语句的设置方式: alter database 数据库名 modify file(name=逻辑文件名,maxsize=20) 5.设置为自动收缩

Ⅱ 如何清空sql数据库的日志文件

其中database为你的库名 --压缩日志
1:截断事务日志:
BACKUP LOG 数据库名 WITH NO_LOG2:清空日志DUMP TRANSACTION 库名 WITH NO_LOG再:企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了3: 删除LOG1:分离数据库 企业管理器->服务器->数据库->右键->分离数据库
2:删除LOG文件
3:附加数据库 企业管理器->服务器->数据库->右键->附加数据库
此法生成新的LOG,大小只有500多K
再将此数据库设置自动收缩或用代码:下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。
EXEC sp_detach_db @dbname = 'pubs'
EXEC sp_attach_single_file_db @dbname = 'pubs',
@physname = 'c:/Program Files/Microsoft SQL Server/MSSQL/Data/pubs.mdf'
4: 如果想以后不让它增长
企业管理器--服务器--右键数据库--属性--事务日志--将文件增长限制为xM(x是你允许的最大数据文件大小)
--SQL语句的设置方式:
alter database 数据库名 modify file(name=逻辑文件名,maxsize=20)
5.设置为自动收缩

Ⅲ 如何清除SQL数据库日志,清除后对数据库有什么影响

教你如何清除SQL日志

1.打开查询分析器,输入命令
DUMP TRANSACTION 数据库名 WITH NO_LOG
2.再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了。

清除Log有两种方法:

1.自动清除法

开放数据库选项 Trunc Log on Chkpt,使数据库系统每隔一段时间自动清除Log。此方法的优点是无须人工干预,由SQL Server自动执行,并且一般不会出现Log溢满的情况;缺点是只清除Log而不做备份。

2.手动清除法

执行命令“mp transaction”来清除Log。以下两条命令都可以清除日志:

mp transaction with truncate_only
mp transaction with no_log

通常删除事务日志中不活跃的部分可使用“mp transaction with trancate_only”命令,这条命令写进事务日志时,还要做必要的并发性检查。SYBASE提供“mp transaction with no_log”来处理某些非常紧迫的情况,使用这条命令有很大的危险性,SQL Server会弹出一条警告信息。为了尽量确保数据库的一致性,你应将它作为“最后一招”。

以上两种方法只是清除日志,而不做日志备份,若想备份日志,应执行“mp transaction database_name to mpdevice”命令。

清除后对数据库没有影响

Ⅳ SqlClear清除数据库日志

1、数据库不能启动

SQL> startup
ORACLE 例程已经启动。

Total System Global Area 289406976 bytes
Fixed Size 1248576 bytes
Variable Size 83886784 bytes
Database Buffers 197132288 bytes
Redo Buffers 7139328 bytes
数据库装载完毕。
ORA-16038: 日志 2 序列号 44 无法归档
ORA-19809: 超出了恢复文件数的限制
ORA-00312: 联机日志 2 线程 1:
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG'

2、查看$ORACLE_HOME\admin\SID\bmp\alert_SID.log日志

Thu Feb 19 09:45:33 2009
Errors in file d:\oracle\proct\10.2.0\admin\orcl\bmp\orcl_arc1_660.trc:
ORA-19815: WARNING: db_recovery_file_dest_size of 2147483648 bytes is 99.95% used, and has 1129472 remaining bytes available.

Thu Feb 19 09:45:33 2009
Errors in file d:\oracle\proct\10.2.0\admin\orcl\ump\orcl_ora_4708.trc:
ORA-19815: 警告: db_recovery_file_dest_size 字节 (共 2147483648 字节) 已使用 99.95%, 尚有 1129472 字节可用。

Thu Feb 19 09:45:33 2009
************************************************************************
You have following choices to free up space from flash recovery area:
1. Consider changing RMAN RETENTION POLICY. If you are using Data Guard,
Thu Feb 19 09:45:33 2009
************************************************************************
then consider changing RMAN ARCHIVELOG DELETION POLICY.
2. Back up files to tertiary device such as tape using RMAN
You have following choices to free up space from flash recovery area:
BACKUP RECOVERY AREA command.
3. Add disk space and increase db_recovery_file_dest_size parameter to
1. Consider changing RMAN RETENTION POLICY. If you are using Data Guard,
reflect the new space.
then consider changing RMAN ARCHIVELOG DELETION POLICY.
4. Delete unnecessary files using RMAN DELETE command. If an operating
system command was used to delete files, then use RMAN CROSSCHECK and
2. Back up files to tertiary device such as tape using RMAN
DELETE EXPIRED commands.
************************************************************************
BACKUP RECOVERY AREA command.
Thu Feb 19 09:45:34 2009
Errors in file d:\oracle\proct\10.2.0\admin\orcl\bmp\orcl_arc1_660.trc:
ORA-19809: limit exceeded for recovery files
ORA-19804: cannot reclaim 44217856 bytes disk space from 2147483648 limit

从上面信息知道是flash recovery area闪回恢复空间中默认2G的空间被归档日志占满了,没有空间进行存放归档日志。

3、退出sqlplus,进入rman

SQL> exit
从 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Proction
With the Partitioning, OLAP and Data Mining options 断开

C:\Documents and Settings\mengzhaoliang>rman target/

恢复管理器: Release 10.2.0.1.0 - Proction on 星期四 2月 19 09:57:48 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.

已连接到目标数据库: ORCL (DBID=1193443472, 未打开)

4、查看归档日志
RMAN> list archivelog all;

使用目标数据库控制文件替代恢复目录

已存档的日志副本列表
关键字 Thrd Seq S 短时间 名称
------- ---- ------- - ---------- ----
40 1 1 A 17-11月-08 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\O
RCL\ARCHIVELOG\2008_11_18\O1_MF_1_1_4L44Z9CQ_.ARC
41 1 2 A 18-11月-08 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\O
RCL\ARCHIVELOG\2008_11_18\O1_MF_1_2_4L4W4O0H_.ARC
42 1 3 A 18-11月-08 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\O

5、可以先把归档日志备份到其他的空间,然后用rman删除归档日志;

RMAN> delete archivelog all;

释放的通道: ORA_DISK_1
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=151 devtype=DISK

已存档的日志副本列表
关键字 Thrd Seq S 短时间 名称
------- ---- ------- - ---------- ----
40 1 1 A 17-11月-08 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\O
RCL\ARCHIVELOG\2008_11_18\O1_MF_1_1_4L44Z9CQ_.ARC
是否确定要删除以上对象 (输入 YES 或 NO)? yes
已删除的存档日志
存档日志文件名 =D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\200
_11_18\O1_MF_1_1_4L44Z9CQ_.ARC 记录 ID=40 时间戳 =671101294

6、退出rman,进入sqlplus,打开数据库

RMAN> exit

恢复管理器完成。

C:\Documents and Settings\mengzhaoliang>sqlplus "/as sysdba"

SQL*Plus: Release 10.2.0.1.0 - Proction on 星期四 2月 19 10:03:02 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.

连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Proction
With the Partitioning, OLAP and Data Mining options

SQL> alter database open;

数据库已更改。

数据库已经打开!

Ⅳ sql server怎么删除数据库日志

一、简单方法
–SQL Server收缩方法
1、右键数据库→属性→选项→故障还原模型→设为简单→确定;
2、右键数据库→所有任务→收缩数据库→确定;
3、右键数据库→属性→选项→故障还原模型→设为大容量日志记录→确定。
二、复杂方法
–SQL Server日志清空方法
在查询分析器中顺序执行以下三步,其中 databasename 为你的数据库文件名
1.清空日志:DUMP TRANSACTION databasename WITH NO_LOG
2.截断事务日志:BACKUP LOG databasename WITH NO_LOG
3.收缩数据库:DBCC SHRINKDATABASE(databasename)
(BACKUP LOG databasename WITH NO_LOG|TRUNCATE_ONLY可以截断事务日志。
第一步只是将非活动的事务日志截断,并没有收缩数据库,只有进行第二项操作后,数据库才进行事务日志的清理工作,将截断的非活动事务删除,并将事务日志文件收缩到适当尺寸。)
3、收缩数据库文件(如果不压缩,数据库的文件不会减小)
企业管理器–右键你要压缩的数据库–所有任务–收缩数据库–收缩文件–选择日志文件–在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
–选择数据文件–在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了。
收缩数据库完成后,建议将您的数据库属性重新设置为标准模式,操作方法同简单方法里第一点,因为日志在一些异常情况下往往是恢复数据库的重要依据
也可以用SQL语句来完成
–收缩数据库
DBCC SHRINKDATABASE(数据库名)
–收缩指定数据文件,1是文件号,可以通过这个语句查询到:
select * from sysfiles DBCC SHRINKFILE(1)
4、为了最大化的缩小日志文件(如果是sql 7.0,这步只能在查询分析器中进行)
在使用 SQL Server 时,数据库里的日志文件会越来越大,需要把它删除。 我先把这个数据库分离,在数据库上点右键 -> 所有任务 -> 分离数据库,分离之后,就可以把 Log 文件删除,同时也可以把数据进行备份。之后,就可以在所有任务里的附加数据库再把那个数据库添进来,SQL Server 会提示 LOG 文件不存在,问你是不是要新建一个,选是就行了,这样,LOG 文件就清空了。 这个方法只需几分钟的时间,但在这几分钟里,就不能访问这个数据库了,我觉得只适用于小型的应用,对于大型的系统就要找其它方法了。)
a.分离数据库
企业管理器–服务器–数据库–右键–分离数据库
b.在我的电脑中删除LOG文件
c.附加数据库
企业管理器–服务器–数据库–右键–附加数据库

Ⅵ SQLServer 如何自动清理日志文件

数据库日志文件是随着时间增长而增长的,如果长时间不清理,文件会变得特别大,因此需要定期清空,但是日至文件是恢复数据库的重要依据,不用日志文件也是不明智的。手工清除单个数据库的还好说,但数据库多了,或者临时没有来得及清理,可能硬盘空间就会占满了,影响访问。因此设置自动清理数据库日志文件还是比较实用的。

手动清理方法:右键单击需要清理的数据库,选择“属性”,在“选项”卡上,把故障还原模型设定为简单,确定后关闭;再右键单击该数据库,“所有任务”-“收缩数据库”,确认后即可清除日志文件,最后记得重新选择“属性”,将故障还原模型设置为完全。

自动清理方法:利用sql server代理服务,执行自动作业。

打开企业管理器,进入“管理”-“sql server代理服务”-“作业”,在右侧窗口点击右键,选择“新建作业”。“常规”选项卡中,填写作业名称,具体

上边的数据库名称填写需要维护的数据库名称,数据库日志文件名填写其对应的日志文件名,注意,不是资源管理器里看到的带后缀名的那个名字,而是企业管理器里,数据库属性里日志选项卡中日志的名字(通常也只是差一个后缀名……),确定后添加一个作业步骤。 如果需要维护多个数据库,用上述方法重复添加作业步骤,注意每个步骤成功或失败后的动作即可,最后选择一下开始的步骤。

在“调度”选项卡中,类似备份的维护计划,填写调度周期,即定期清理的周期,不再细述。如果需要,可以在最后的“通知”选项卡上设置作业完成后的通知项,需要设置操作员,以及设置相应的服务,这里也不具体说明了,通常不用……

Ⅶ 如何清除sql2008日志文件

在SQL2008中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完全模式。
方案一:完全命令模式

    USE[master]
    GO
    ALTERDATABASE DNName SET RECOVERY SIMPLE WITH NO_WAIT
    GO
    ALTERDATABASE DNName SET RECOVERY SIMPLE   --简单模式
    GO
    USE DNName 
    GO
    DBCC SHRINKFILE (N'DNName_Log' , 11, TRUNCATEONLY)
    GO
    USE[master]
    GO
    ALTERDATABASE DNName SET RECOVERY FULLWITH NO_WAIT
    GO
    ALTERDATABASE DNName SET RECOVERY FULL  --还原为完全模式
    GO
方案二:部分命令模式 + 任务-收缩-文件(单个数据库)

ALTERDATABASE DNName SET RECOVERY SIMPLE   --简单模式
GO
右键-任务-收缩-文件-确定 下来数据库的日志只保留了1M

ALTERDATABASE DNName SET RECOVERY FULL  --还原为完全模式
GO
优点:此清除日志所运行消耗的时间短,90GB的日志在分钟左右即可清除完毕,做完之后做个完全备份在分钟内即可完成。缺点: 不过此动作最好不要经常使用,因为它的运行会带来系统碎片。普通状态下LOG和DIFF的备份即可截断日志。此语句使用的恰当环境:当系统的日志文件异常增大或者备份LOG时间太长可能影响生产的情况下使用。

Ⅷ 如何清理sql server日志

USE P2PDTSB

select * from sys.database_files--查看日志名称

USE [master]

ALTER DATABASE P2PDTSB SET RECOVERY SIMPLE WITH NO_WAIT

ALTER DATABASE P2PDTSB SET RECOVERY SIMPLE --简单模式

USE P2PDTSB

DBCC SHRINKFILE (N'P2P_log' , 12, TRUNCATEONLY)--日志名是表sys.database_files里的name值

USE [master]

ALTER DATABASE P2PDTSB SET RECOVERY FULL WITH NO_WAIT

ALTER DATABASE P2PDTSB SET RECOVERY FULL --还原为完全模式。

Ⅸ 如何清除SQL日志

方法1:
第一步:
backup log database_name with no_log
或者 backup log database_name with truncate_only --no_log和truncate_only是在这里是同义的,随便执行哪一句都可以
第二步:
1.收缩特定数据库的所有数据和日志文件,执行 dbcc shrinkdatabase (database_name,[,target_percent])--database_name是要收缩的数据库名称;target_percent是数据库收缩后的数据库文件中所要的剩余可用空间百分比
2.收缩一次一个特定数据库中的数据或日志文件,执行 dbcc shrinkfile(file_id,[,target_size]) --file_id是要收缩的文件的标识 (ID) 号,若要获得文件 ID,请使用 FILE_ID 函数或在当前数据库中搜索 sysfiles;target_size是用兆字节表示的所要的文件大小(用整数表示)。如果没有指定,dbcc shrinkfile 将文件大小减少到默认文件大小

两个dbcc都可以带上参数notruncate或truncateonly,具体意思看帮助。

方法2
(这个方法在sqlserver2000的环境下做一般能成功,在sqlserver7及以下版本就不一定了):
第一步:
先备份整个数据库以备不测
第二步:
备份结束后,在Query Analyzer中执行如下的语句:
exec sp_detach_db yourDBName,true --卸除这个DB在MSSQL中的注册信息
第三步:
到日志的物理文件所在的目录中去删除该日志文件或者将该日志文件移出该目录
第四步:
在Query Analyzer中执行如下的语句:
exec sp_attach_single_file_db yourDBName,'d:\mssql7\data\yourDBName_data.mdf'
--以单文件的方式注册该DB,如果成功则MSSQL将自动为这个DB生成一个500K的日志文件。

以上方法在清除log日志中均有效。
但,能否让sql server 不产生log日志呢?以上方法好像均无效。
我这儿正好有个case:
我客户的sql server每天都会产生4,500M的log日志,每天都清除一下,非常不便。有没有办法实现不产生log日志呢?

我分析了一下客户产生log日志的原因,并且做了相应测试。
客户是每天将数据库清空,从总系统中将数据导入到sql server里。我感决sqlserver在插入时产生log不大,在delete整个库时产生log极大。
比如:
SELECT * into test_2 from b_bgxx
共45000条记录,产生十几M log,如果
delete from test_2
产生80多M log ,这明显存在问题。

虽然可以换成:
truncate table test_2
但我还是希望能找到不产生log的方法。就如oracle不产生归档一样。

Ⅹ 如何清除SQLserver 日志

打开企业管理器,右键单击你要删除日志的数据库->属性,选择事务日志,选择你要删除的日志文件,点删除。 记得备份

EXEC sp_detach_db @dbname = '数据库名'
/*
先执行上面语句,再访问到那个数据库目录下删除日志文件后,执行下面语句!
*/
EXEC sp_attach_single_file_db @dbname = '数据库名',
@physname = 'd:\Microsoft SQL Server\MSSQL\Data\数据库名'_Data.mdf'

热点内容
安卓手机怎么假位置共享 发布:2024-11-10 14:26:21 浏览:994
vmwaretoolslinux 发布:2024-11-10 14:12:02 浏览:185
php视频百度云 发布:2024-11-10 14:05:19 浏览:714
买车要哪些配置呢 发布:2024-11-10 14:04:42 浏览:171
修图用什么配置的电脑配置 发布:2024-11-10 14:03:09 浏览:19
如何知道自己的九游账号密码 发布:2024-11-10 14:03:08 浏览:764
大数据的存储和管理 发布:2024-11-10 14:00:59 浏览:396
upyun上传文件 发布:2024-11-10 14:00:12 浏览:857
php之道 发布:2024-11-10 13:50:45 浏览:791
n的阶乘c语言程序 发布:2024-11-10 13:50:45 浏览:513