
在缺省情况下,Exchange 2007邮箱服务器在数据库维护期间会自动对邮箱数据库进行在线的整理。我们可以通过下面的方法来设置维护的时间。
1、 打开EMC,定位到服务器配置---邮箱,右键选中您要设置的数据库,选择属性,
2、 点击general栏,点击customize,如图1所示,您可以根据自己的实际需要来设置维护时间。
其实,我们也可以使用 Exchange Server 数据库实用程序 Eseutilexe /D,以脱机方式对数据库进行碎片整理和压缩。碎片整理选项可形成连续的已用存储空间,释放不用的存储空间,并压缩数据库,从而减小数据库文件的大小。
一、Eseutil 碎片整理的工作原理
在碎片整理过程中,Eseutil 将新建一个数据库,该数据库包含原数据库中的所有信息。碎片整理完成后,将删除原数据库或将其保存到用户指定的位置,然后将新版本重命名为原名称。如果该工具遇到错误记录,则将停止并显示错误消息。
执行脱机碎片整理时,Exchange 会生成一个数据库文件的临时副本。数据库文件中的表将被保留并复制到临时数据库中,但会丢弃空页并重建索引。因为此 *** 作将更改数据库中的物理页码,所以,不会原封不动地复制页。页之间的页链接将全部更新,并会对数据库中保留的所有页进行完整性检查。
二、数据库碎片整理所需的时长
完成碎片整理所需的时长取决于数据库的空白空间数量,与数据库文件的大小无关。例如,对同样包含 10 GB 数据的 100 GB 数据库和 11 GB 数据库进行碎片整理,所用的时间几乎相同。
默认情况下,碎片整理完成之后,临时数据库将自动成为新的生产数据库,原生产数据库文件将被删除。如果相同逻辑驱动器上拥有与原数据库文件大小相同的可用空间,则可明显缩短碎片整理所需的时间。在这种情况下,临时数据库可以放在相同的逻辑驱动器上,最终副本几乎瞬时完成。
建议不要使用网络驱动器存储临时数据库。如果使用网络驱动器存储临时数据库,则将延长碎片整理所需的时间,并且任何暂时或永久的网络错误都将导致碎片整理过程终止。而由于碎片整理不可恢复,所以必须从头重新开始。
注意:只需要与碎片整理后的文件最终大小相同的额外逻辑驱动器磁盘空间。尽管无法精确地预测将回收的磁盘空间量,但仍应以 110%(建议值)的比例保留可用磁盘驱动器空间。
三、何时运行 脱机碎片整理命令
1 数据库中存在大量可以回收并且不会再使用的可用空间。
2 存在影响数据库文件索引的 ESE -1018 错误。在这种情况下,脱机碎片整理会重建索引。运行脱机碎片整理可以有效地消除此类损坏。
3 数据库文件已使用 Eseutil /P 进行修复。运行了修复之后,应对数据库文件执行 Eseutil 脱机碎片整理。
4 驻留在 Exchange 2007 中心传输服务器或边缘传输服务器上的队列数据库文件上出现邮件风暴。邮件风暴是指大量邮件,其填满传输队列的速度超过了传输服务可以达到的电子邮件处理速度。此行为使队列中填满了邮件,队列数据库将根据需要进行扩展。处理了风暴中的邮件并对数据库运行了联机碎片整理之后,部分可用空间会保留在数据库中。若要回收此可用空间并缩小数据库,则可运行 Eseutil /D 执行脱机数据库碎片整理。
四、何时不应该运行 脱机碎片整理命令
不应将运行 Eseutil 脱机碎片整理作为任何类型的标准维护活动。Exchange 会在夜间运行自动联机碎片整理,处理 Exchange 的日常维护。对于日常维护、月度维护或年度维护,都不需要运行脱机碎片整理。
如果数据库未处于一致状态,则不应运行 Eseutil 碎片整理。
如果可将邮箱移动到某个可用数据库,则不应运行 Eseutil 脱机碎片整理。这样做可以减少最终用户的停机时间。因为脱机碎片整理是通过脱机方式完成的,所以在碎片整理过程中,用户将无法访问其邮箱。为了减少对最终用户的影响,建议您通过执行移动邮箱 *** 作,将邮箱移动到其他可用数据库。
如果 ESE -1018 错误影响了数据库文件的数据部分,则不应运行 Eseutil 脱机碎片整理。在这种情况下,脱机碎片整理将检测到该错误,从而无法继续。
为了以防万一 你可以先备份一下数据库文件 这样比较安全。
碎片整理理论上是不会的有问题的。
但是使用优化大师一类的东西优化软件 清楚垃圾文化的话 很容易删除DMP tmp这样的数据,所以万事还是小心为妙。
SQLServer提供了一个数据库命令——DBCC SHOWCONTIG——来确定一个指定的表或索引是否有碎片。
示例:
显示数据库里所有索引的碎片信息
DBCC SHOWCONTIG WITH ALL_INDEXES
显示指定表的所有索引的碎片信息
DBCC SHOWCONTIG (authors) WITH ALL_INDEXES
显示指定索引的碎片信息
DBCC SHOWCONTIG (authors,aunmind)
DBCC 执行结果:
扫描页数:如果你知道行的近似尺寸和表或索引里的行数,那么你可以估计出索引里的页数。看看扫描页数,如果明显比你估计的页数要高,说明存在内部碎片。
扫描扩展盘区数:用扫描页数除以8,四舍五入到下一个最高值。该值应该和DBCC SHOWCONTIG返回的扫描扩展盘区数一致。如果DBCC SHOWCONTIG返回的数高,说明存在外部碎片。碎片的严重程度依赖于刚才显示的值比估计值高多少。
扩展盘区开关数:该数应该等于扫描扩展盘区数减1。高了则说明有外部碎片。
每个扩展盘区上的平均页数:该数是扫描页数除以扫描扩展盘区数,一般是8。小于8说明有外部碎片。
扫描密度[最佳值:实际值]:DBCC SHOWCONTIG返回最有用的一个百分比。这是扩展盘区的最佳值和实际值的比率。该百分比应该尽可能靠近100%。低了则说明有外部碎片。
逻辑扫描碎片:无序页的百分比。该百分比应该在0%到10%之间,高了则说明有外部碎片。
扩展盘区扫描碎片:无序扩展盘区在扫描索引叶级页中所占的百分比。该百分比应该是0%,高了则说明有外部碎片。
每页上的平均可用字节数:所扫描的页上的平均可用字节数。越高说明有内部碎片,不过在你用这个数字决定是否有内部碎片之前,应该考虑fill factor(填充因子)。
平均页密度(完整):每页上的平均可用字节数的百分比的相反数。低的百分比说明有内部碎片。
解决碎片问题 :
1 删除并重建索引
2 使用DROP_EXISTING子句重建索引
3 执行DBCC DBREINDEX
4 执行DBCC INDEXDEFRAG
删除并重建索引 :
用DROP INDEX和CREATE INDEX或ALTER TABLE来删除并重建索引有些缺陷包括在删除重建期间索引会消失。在索引删除重建时,对于查询它不在可用,查询性能也许会受到明显的影响,直到重建索引为止。另一个潜在的缺陷是当都请求索引的时候会引起阻塞,直到重建索引为止。通过其他的处理也能解决阻塞,就是索引被使用的时候不删除索引。另一个主要的缺陷是在用DROP INDEX和CREATE INDEX重建聚集索引时会引起非聚集索引重建两次。删除聚集索引时非聚集索引的行指针会指向数据堆,聚集索引重建时非聚集索引的行指针又会指回聚集索引的行位置。
删除并重建索引的确有一个好处就是通过重新排序索引页,使索引页紧凑并删除不需要的索引页来完全重建索引。你也许需要考虑那些内部和外部碎片都很高的情况下才使用,以使那些索引回到它们应该在的位置。
使用DROP_EXISTING子句重建索引 :
为了避免在重建聚集索引时表上的非聚集索引重建两次,可以使用带DROP_EXISTING子句的CREATE INDEX语句。这个子句会保留聚集索引键值,以避免非聚集索引重建两次。和删除并重建索引一样,该方法也可能会引起阻塞和索引消失的问题。该方法的另一个缺陷是也强迫你去分别发现和修复表上的每一个索引。
除了和上一个方法一样的好处之外,该方法的好处是不必重建非聚集索引两次。这样可以对那些带约束的索引提供正确的索引定义以符合约束的要求。
执行DBCC DBREINDEX :
DBCC DBREINDEX类似于第二种方法,但它物理地重建索引,允许SQLServer给索引分配新页来减少内部和外部碎片。DBCC DBREINDEX也能动态的重建带约束的索引,不象第二种方法。
DBCC DBREINDEX的缺陷是会遇到或引起阻塞问题。DBCC DBREINDEX是作为一个事务来运行的,所以如果在完成之前中断了,那么你会丢失所有已经执行过的碎片。
执行DBCC INDEXDEFRAG :
DBCC INDEXDEFRAG(在SQLServer2000中可用)按照索引键的逻辑顺序,通过重新整理索引里存在的叶页来减少外部碎片,通过压缩索引页里的行然后删除那些由此产生的不需要的页来减少内部碎片。它不会遇到阻塞问题但它的结果没有其他几个方法彻底。这是因为DBCC INDEXDEFRAG跳过了锁定的页且不使用任何新页来重新排序索引。如果索引的碎片数量大的话你也许会发现DBCC INDEXDEFRAG比重建索引花费的时间更长。DBCC INDEXDEFRAG比其他方法的确有好处的是在其他过程访问索引时也能进行碎片整理,不会引起其他方法的阻塞问题。
清除数据库日志语句
--清除sqlserver 2000/2005 数据库日志
替换下红字部分数据库名称
declare @databasename varchar(15)
select @databasename='hdjjgl_journal'
DUMP TRANSACTION @databasename WITH NO_LOG
BACKUP LOG @databasename WITH NO_LOG
DBCC SHRINKDATABASE(@databasename)
或者
USE 数据库名
DUMP TRANSACTION 数据库名 WITH NO_LOG
BACKUP LOG 数据库名 WITH NO_LOG
DBCC SHRINKFILE(2)
--清除sqlserver 2008 数据库日志 ,执行两遍
替换下红字部分数据库名称,建立datalogbak清楚的日志备份文件夹,注意路径自定义。
use gdzjg_journal
declare @databasename varchar(100)
declare @databasenamelog varchar(100)
declare @databasenamedir varchar(100)
select @databasename='gdzjg_journal'
select @databasenamelog=@databasename+'_log'
select @databasenamedir='g:\datalogbak\'+@databasename
BACKUP LOG @databasename to disk=@databasenamedir
DBCC SHRINKFILE (@databasenamelog,1)
或者
ALTER DATABASE 数据库名称SET RECOVERY SIMPLE
ALTER DATABASE 数据库名称SET RECOVERY FULL
DBCC SHRINKDATABASE(数据库名称,0)
sqlserver 2000、2008会保存所有的数据库 *** 作过程,将指令保存在ldf文件中,如果误删除数据,想恢复数据的话,可以通过Lumigent Log Explorer For SQLServer 软件分析ldf文件,可以看到所有执行过的insert、update、delete数据,导出来再逆向执行即可,本人曾经用过一回,确实奏效。
1、sql server 2000清理数据库日志
USE 数据库名
DUMP TRANSACTION 数据库名 WITH NO_LOG
BACKUP LOG 数据库名 WITH NO_LOG
DBCC SHRINKFILE(2)
SHRINKFILE(2),后面的2是file_id,可以在当前数据库用select from sysfiles看得到,看数据库的log文件的fileid是多少,正常情况下log的ldf文件是2,mdf文件的fileid是1。
这个查询语句可以随时执行,不影响数据库的运行。
sql server 2005、2008清理数据库日志
USE 数据库名
ALTER DATABASE 数据库名 SET RECOVERY SIMPLE
ALTER DATABASE 数据库名 SET RECOVERY FULL
DBCC SHRINKDATABASE(数据库名,0)
这个查询语句可以随时执行,不影响数据库的运行。
清理ldf的 *** 作可以使用sql server代理,每天自动执行一次,就不怕文件增长撑爆硬盘了。
2、一般mdf用不着收缩,收缩多了容易产生文件碎片,因为delete数据之后,mdf文件中可用页面空间会保留在那里,等下次有新数据进来时,会继续使用。如果实在要清理,可以参考下面的语句:
sql server 2000、2005、2008 收缩mdf文件
DBCC SHRINKDATABASE(数据库名)
DBCC SHRINKFILE(1,0)
DBCC UPDATEUSAGE(0)
执行上述 *** 作后,你会发现mdf的文件减少了,ldf的文件增大了,再用上面1的日志清理 *** 作一次即可。
3、最后再附送一个查看数据表的行数、占用文件空间、存储情况的查询语句
-- drop table #test
create table #test(
name varchar(50),
rows int,
reserved varchar(20),
data varchar(20),
index_size varchar(20),
unused varchar(20)
)
set nocount on
insert into #test
EXEC sp_MSforeachtable @command1="sp_spaceused ''"
select from #test order by cast(replace(reserved,'KB','') as int) desc
1、在数据库里边,所谓“实体”就是E-R模型。
2、E-R模型的构成成分是实体集、属性和联系集,其表示如下列步骤:
(1)实体集用矩形框表示,矩形框内填写实体的名称。
(2)实体的属性用椭圆框表示,框内写上属性名,并用无向边与其实体集相连。
(3)实体间的联系用菱形框表示,联系以适当的含义命名,名字写在菱形框中,用无向连线将参加联系的实体矩形框分别与菱形框相连,并在连线上标明联系的类型,即1—1、1—N或M—N。
以上就是关于对Exchange2007的数据库进行脱机碎片整理全部的内容,包括:对Exchange2007的数据库进行脱机碎片整理、数据库文件存放的磁盘分区可否进行碎片整理、请教SQL里怎样使用碎片整理等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)