128 lines
4.4 KiB
Markdown
128 lines
4.4 KiB
Markdown
# [Nível 3] Relatórios Avançados e Manutenção de Banco de Dados
|
|
|
|
**Público Alvo:** SysAdmin / Gestão
|
|
**Ferramenta:** PowerShell (EMS)
|
|
|
|
---
|
|
|
|
## 1. Relatórios de Uso e População
|
|
|
|
### Contagem de Usuários por Banco de Dados (Cliente)
|
|
|
|
Como o ambiente é multi-tenant separado por Database, este comando mostra quantos usuários cada cliente tem.
|
|
|
|
```powershell
|
|
Get-Mailbox -ResultSize Unlimited | Group-Object -Property Database | Select-Object Name, Count, @{n='Size(GB)';e={"{0:N2}" -f ($_.Group | ForEach-Object {(Get-MailboxStatistics $_.Identity).TotalItemSize.Value.ToGB()} | Measure-Object -Sum).Sum}} | Sort-Object Count -Descending
|
|
```
|
|
|
|
_Este comando pode demorar um pouco pois calcula o tamanho total._
|
|
|
|
### Contagem de Usuários por Domínio de E-mail
|
|
|
|
Se você mistura clientes no mesmo banco, agrupe pelo domínio do e-mail:
|
|
|
|
```powershell
|
|
Get-Mailbox -ResultSize Unlimited | Group-Object -Property @{E={$_.EmailAddresses | Where-Object {$_ -like "SMTP:*"} | ForEach-Object {$_.Split("@")[1]} | Select-Object -First 1}} | Select-Object Name, Count | Sort-Object Count -Descending
|
|
```
|
|
|
|
### Relatório de Caixas "Gigantes" (Top 20)
|
|
|
|
Identificar quem está consumindo mais espaço.
|
|
|
|
```powershell
|
|
Get-Mailbox -ResultSize Unlimited | Get-MailboxStatistics | Sort-Object TotalItemSize -Descending | Select-Object -First 20 DisplayName, @{n='Size(GB)';e={$_.TotalItemSize.Value.ToGB()}}, Database
|
|
```
|
|
|
|
---
|
|
|
|
## 2. Manutenção de Logs e Espaço em Disco
|
|
|
|
### Truncamento de Logs (Log Truncation)
|
|
|
|
Os logs de transação (`.log`) do Exchange crescem infinitamente até que um **Backup Full** seja realizado.
|
|
**NUNCA APAGUE ARQUIVOS .LOG MANUALMENTE.** Isso corrompe o banco.
|
|
|
|
**Procedimento Correto:**
|
|
|
|
1. Execute sua ferramenta de backup (Veeam, Windows Server Backup) com suporte a VSS/Exchange.
|
|
2. Ao finalizar o backup com sucesso, o Exchange apaga os logs antigos automaticamente.
|
|
|
|
**Procedimento de Emergência (Disco Cheio): Habilitar Circular Logging**
|
|
Se o disco de logs encher e o banco desmontar:
|
|
|
|
1. Hablite o Circular Logging (apaga logs assim que escritos no DB).
|
|
```powershell
|
|
Set-MailboxDatabase "NOME_DO_BANCO" -CircularLoggingEnabled $true
|
|
```
|
|
2. Desmonte e Monte o banco para aplicar (Gera downtime de segundos/minutos).
|
|
```powershell
|
|
Dismount-Database "NOME_DO_BANCO" -Confirm:$false
|
|
Mount-Database "NOME_DO_BANCO"
|
|
```
|
|
3. **Importante:** Desabilite assim que resolver o espaço e fizer backup, pois o Circular Logging impede recuperação "point-in-time".
|
|
|
|
### Backup Manual via Linha de Comando (Wbadmin)
|
|
|
|
Como o servidor é Core, não há "wbadmin.msc". Use o comando abaixo para realizar um Backup Full (VSS Real) que trunca os logs corretamente.
|
|
|
|
1. **Instalar o Recurso (se não tiver):**
|
|
|
|
```powershell
|
|
Install-WindowsFeature Windows-Server-Backup
|
|
```
|
|
|
|
2. **Identificar os Volumes:**
|
|
Use `Get-Volume` para saber onde estão seus Logs (ex: E:) e onde salvará o backup (ex: F: ou Share de Rede).
|
|
|
|
3. **Executar Backup VSS Full:**
|
|
Este comando faz backup do volume E: (Logs/DB), salva em F: (Backup), e marca como VSS Full para limpar os logs.
|
|
|
|
```cmd
|
|
wbadmin start backup -backupTarget:F: -include:E: -vssFull -quiet
|
|
```
|
|
|
|
_Nota: Substitua E: e F: pelas letras corretas._
|
|
|
|
**Se falhar:** Verifique se o disco de destino tem espaço ou se o serviço `Volume Shadow Copy` está rodando.
|
|
|
|
---
|
|
|
|
## 3. Importação e Exportação (PST)
|
|
|
|
### Pré-requisitos
|
|
|
|
1. O usuário que roda o comando precisa de permissão explicita:
|
|
```powershell
|
|
New-ManagementRoleAssignment -Role "Mailbox Import Export" -User "DOMINIO\Administrador"
|
|
```
|
|
_Feche e abra o PowerShell após rodar isso._
|
|
2. É obrigatório usar um caminho de rede (UNC) compartilhado (ex: `\\SRVCGDVIEXCH001\PSTs`), mesmo que esteja no próprio servidor. O serviço `Exchange Trusted Subsystem` precisa de permissão de Leitura/Gravação nessa pasta.
|
|
|
|
### Exportar Caixa para PST
|
|
|
|
```powershell
|
|
New-MailboxExportRequest -Mailbox "usuario" -FilePath "\\172.16.150.150\share\usuario.pst"
|
|
```
|
|
|
|
### Importar PST para Caixa
|
|
|
|
```powershell
|
|
New-MailboxImportRequest -Mailbox "usuario" -FilePath "\\172.16.150.150\share\backup_antigo.pst"
|
|
```
|
|
|
|
### Acompanhar o Andamento
|
|
|
|
```powershell
|
|
Get-MailboxExportRequest | Get-MailboxExportRequestStatistics
|
|
# ou
|
|
Get-MailboxImportRequest | Get-MailboxImportRequestStatistics
|
|
```
|
|
|
|
### Limpar Requisições Concluídas
|
|
|
|
O Exchange não limpa o histórico sozinho.
|
|
|
|
```powershell
|
|
Get-MailboxExportRequest -Status Completed | Remove-MailboxExportRequest -Confirm:$false
|
|
```
|