Что может привести к тому, что сжатый дамп базы данных будет разбит на два стека (или сегмента)? - PullRequest
2 голосов
/ 14 декабря 2011

Я пытался определить несжатый размер сжатого дампа базы данных.Я был в состоянии использовать 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:" в заголовке).Какие условия могут привести к тому, что у дампа будет два из них?Может ли быть когда-нибудь больше двух, и что может вызвать это?

Спасибо

1 Ответ

2 голосов
/ 15 декабря 2011

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'
...