manuais-e-documentacao-itguys/documentacao exchange/Nivel_3_[Nível 3] Relatorio...

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
```