我一直在尝试确定压缩数据库转储的未压缩大小。我已经能够在转储头信息中使用lsize来执行此操作。在我的测试中,我以下列方式创建了一个空的测试数据库:
create database foo on default=100
我们使用master作为默认值。我意识到这不是一个生产现实的场景。然后我创建了一个数据库转储,如下所示:
dump database foo to '/var/tmp/foo_compressed_9.dmp' with compression=9
我注意到标题显示有两个部分(如果我的术语错误,请原谅):
segmap: 0x00000007 lstart=0 vstart=[vpgdevno=0 vpvpn=61444] lsize=5120 unrsvd=4240
segmap: 0x00000007 lstart=5120 vstart=[vpgdevno=0 vpvpn=68612] lsize=33536 unrsvd=33405
我见过的大多数转储只有一个段(标题中有一个“segmap:”行)。什么条件可能导致转储有两个?可能有两个以上,会导致什么?
由于
答案 0 :(得分:2)
Segmap
与devices
使用的database
相关。
在您的情况下,database foo
应该有两个devices
(可能一个用于data
,另一个用于log
),这就是为什么有两个Segmap
您可以使用以下query
查看database foo
使用了多少设备:
select distinct s.name, u.segmap from master..sysusages u
inner join master..sysdatabases s on u.dbid = s.dbid and s.name = 'foo'