sql >> Database >  >> RDS >> Database

Ontmoetingen op de werkplek:ruimte terugwinnen uit een te grote database

INLEIDING

Dit document legt de stappen, scripts en ideologie vast achter het onderhoud dat is uitgevoerd op een productiedatabase tussen 22 april 2015 en 23 april 2015. De details zijn specifiek voor een toepassing, maar de principes kunnen nuttig zijn voor anderen die soortgelijke bewerkingen in de productie moeten uitvoeren .

ACHTERGROND

De database was gegroeid tot meer dan 1,44TB met de tabel EPOEvents verbruikt meer dan de helft van deze grootte (792 GB). Er zijn in het verleden pogingen gedaan om gegevens in deze tabel te verwijderen die ouder zijn dan 90 dagen. Helaas bleek het tevergeefs. De taak die is gepland om dit te bereiken, kan tijdens geen enkele sessie worden voltooid. De reden was de slechte prestatie van de database.

Na overleg werd besloten om de hele EPOEvents . te verwijderen tabel door deze af te kappen. De verdere beslissing was om de database correct voor te bereiden op de verwachte datagroei in de toekomst.

De details van de betreffende databaseserver staan ​​hieronder:

SERVERNAME SVR-EPO-02
NAAM INSTANTIE SVR-EPO-02\ENG_AVSERVER
OS-VERSIE Windows 2008 R2 Enterprise (SP1) 64-bits
DB-VERSIE Microsoft SQL Server 2008 R2 (SP1) 64-bit
IP-ADRES XX.XX.XX.XX
NAAM DATABASE ePO4_SVR-EPO-02

EPOEVENTS TABEL

Het script dat de EPOEvents . definieert tabel is gedocumenteerd in Bijlage I.

Het is vermeldenswaard dat de AutoID-kolom van deze tabel in Foreign Key-relaties staat met de tabellen HIP8_EventInfo, HIP8_IPSEventParameter en SCOR_EVENTS. Dit had invloed op de aanpak die werd gebruikt om de EPOEvents-tabel af te kappen. De samenvattingsdetails staan ​​in de onderstaande tabel:

Deze informatie is geëxtraheerd met behulp van de verklaring in Listing 1.

USE [ePO4_SVR-EPO-02]
GO
EXEC sp_fkeys 'EPOEvents'

PROCEDUREOVERZICHT

Samenvatting van de tijdens de wijziging gebruikte procedure:

  • Vijf schijven van 200 GB implementeren
  • Stop EPO-toepassingsservices
  • Maak een back-up van de EPO-database
  • Maak een nieuwe bestandsgroep
  • De tabel EPOEvents afkappen
  • Verplaats EPOEvents naar de nieuwe bestandsgroep
  • Recreëer buitenlandse sleutels op onderliggende tafel
  • Script de EPOEvents-tabeldefinitie
  • Maak een back-up van de EPO-database
  • Gegevensbestanden verkleinen in de PRIMAIRE bestandsgroep
  • Maak een back-up van de EPO-database
  • Laat de EPO-database vallen
  • Schijf J formatteren
  • Herstel de EPO-database met MOVE
  • Verplaats TempDB naar Drive Q
  • Start EPO Application Services
  • Bevestig dat EPOEvents is ingevuld

Vijf schijven van 200 GB implementeren

Er zijn vijf nieuwe schijven op de server geïmplementeerd. De volledige lijst van alle schijven op de server is als volgt:

DRIVE GEBRUIK NIEUW? COMMENTAAR
C Systeemschijf NEE Standaard clustergrootte (4KB)
D Applicatiestation NEE Standaard clustergrootte (4KB)
Ik MSSQL-gegevens (OUD) NEE Standaard clustergrootte (4KB)
J MSSQL-logboek NEE Aanbevolen clustergrootte voor SQL (64K)
M MSSQL-gegevens (FG_LARGE FileGroup) JA Aanbevolen clustergrootte voor SQL (64K)
N MSSQL-gegevens (FG_LARGE FileGroup) JA Aanbevolen clustergrootte voor SQL (64K)
O MSSQL-gegevens (FG_LARGE FileGroup) JA Aanbevolen clustergrootte voor SQL (64K)
P MSSQL-gegevens (PRIMARY FileGroup) JA Aanbevolen clustergrootte voor SQL (64K)
Q MSSQL TempDB JA Aanbevolen clustergrootte voor SQL (64K)

Alle nieuwe schijven zijn geformatteerd met een clustergrootte van 64K, zoals aanbevolen door Microsoft voor schijven die MS SQL Server-gegevens of logbestanden bevatten [1]. Drive J is ook opnieuw geformatteerd na het maken van een back-up van de database.

[1] De volledige discussie is toegankelijk op https://msdn.microsoft.com/en-us/library/dd758814.aspx

Stop EPO-toepassingsservices

Alle applicatieservices zijn gestopt om ervoor te zorgen dat de database tijdens de wijzigingsperiode niet wordt bijgewerkt. Application Services gestopt (of bevestigd) zijn als volgt:

  1. McAfee ePolicy Orchestrator 4.6.8 Toepassingsserver
  2. McAfee ePolicy Orchestrator 4.6.8 Gebeurtenisparser
  3. McAfee ePolicy Orchestrator 4.6.8-server

Maak een back-up van de EPO-database

De eerste back-up van de database was gemaakt voordat er actie werd ondernomen op de bestaande structuur, met behulp van het script in Listing 2.

Vermelding 2:Eerste back-up van ePO4_SVR-EPO-02 database

BACKUP DATABASE [ePO4_SVR-EPO-02] to
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_A01.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_A02.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_A03.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_A04.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_A05.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_A06.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_A07.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_A08.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_A09.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_A10.bak'
WITH STATS = 5, COMPRESSION, NAME = N'ePO4_SVR-EPO-02 First Backup Before Purge'

Maak een nieuwe bestandsgroep

Er is een nieuwe bestandsgroep met de naam FG_LARGE gemaakt met het equivalent van het script in Listing 3. Alle bestanden die aan de bestandsgroep zijn toegevoegd, zijn gedefinieerd met een initiële grootte van 40 GB, een toename van 1 G en een maximale grootte van 100 GB.

Lijst 3:Aanmaken van bestandsgroep FG_LARGE

USE [master]
GO
ALTER DATABASE [ePO4_SVR-EPO-02] ADD FILEGROUP [FG_LARGE]
GO

USE [master]
GO
ALTER DATABASE [ePO4_SVR-EPO-02] ADD FILE ( NAME = N'ePO4_SVR-EPO_FG_LARGE_01', FILENAME = N'M:\MSSQL\DATA\ePO4_SVR-EPO_FG_LARGE_01.ndf' , SIZE = 41943040KB , MAXSIZE = 104857600KB , FILEGROWTH = 1048576KB ) TO FILEGROUP [FG_LARGE]
GO
ALTER DATABASE [ePO4_SVR-EPO-02] ADD FILE ( NAME = N'ePO4_SVR-EPO_FG_LARGE_02', FILENAME = N'M:\MSSQL\DATA\ePO4_SVR-EPO_FG_LARGE_02.ndf' , SIZE = 41943040KB , MAXSIZE = 104857600KB , FILEGROWTH = 1048576KB ) TO FILEGROUP [FG_LARGE]
GO
ALTER DATABASE [ePO4_SVR-EPO-02] ADD FILE ( NAME = N'ePO4_SVR-EPO_FG_LARGE_03', FILENAME = N'N:\MSSQL\DATA\ePO4_SVR-EPO_FG_LARGE_03.ndf' , SIZE = 41943040KB , MAXSIZE = 104857600KB , FILEGROWTH = 1048576KB ) TO FILEGROUP [FG_LARGE]
GO
ALTER DATABASE [ePO4_SVR-EPO-02] ADD FILE ( NAME = N'ePO4_SVR-EPO_FG_LARGE_04', FILENAME = N'N:\MSSQL\DATA\ePO4_SVR-EPO_FG_LARGE_04.ndf' , SIZE = 41943040KB , MAXSIZE = 104857600KB , FILEGROWTH = 1048576KB ) TO FILEGROUP [FG_LARGE]
GO
ALTER DATABASE [ePO4_SVR-EPO-02] ADD FILE ( NAME = N'ePO4_SVR-EPO_FG_LARGE_05', FILENAME = N'O:\MSSQL\DATA\ePO4_SVR-EPO_FG_LARGE_05.ndf' , SIZE = 41943040KB , MAXSIZE = 104857600KB , FILEGROWTH = 1048576KB ) TO FILEGROUP [FG_LARGE]
GO
ALTER DATABASE [ePO4_SVR-EPO-02] ADD FILE ( NAME = N'ePO4_SVR-EPO_FG_LARGE_06', FILENAME = N'O:\MSSQL\DATA\ePO4_SVR-EPO_FG_LARGE_06.ndf' , SIZE = 41943040KB , MAXSIZE = 104857600KB , FILEGROWTH = 1048576KB ) TO FILEGROUP [FG_LARGE]
GO

De tabel EPOEvents afkappen

Lijst 4 toont de volledige reeks taken die nodig zijn om de EPOEvents-tabel met succes af te kappen. Het script bevat toelichtingen voor de duidelijkheid.

Het fundamentele probleem om op te merken is dat het onmogelijk is om een ​​tabel af te kappen die als ouder deelneemt aan een Foreign Key-relatie. Het zou de referentiële integriteit schenden. Verwijderen zou werken en de referentiële integriteit behouden, aangezien externe sleutels doorgaans worden gedefinieerd met de clausules ON DELETE CASCADE of ON DELETE SET NULL.

Lijst 4:EPOEvents-tabel afkappen en verhuizen naar nieuwe tabelruimte

/****** Check Foreign Keys Referencing EPOEvents ******/

USE [ePO4_SVR-EPO-02]
GO
EXEC sp_fkeys 'EPOEvents'


/****** Script Identified Foreign Keys ******/

USE [ePO4_SVR-EPO-02]
GO

ALTER TABLE [dbo].[HIP8_IPSEVENTPARAMETER]  WITH CHECK ADD  CONSTRAINT [FK_HIP8_IPSEVENTPARAMETER_EPOEVENTS] FOREIGN KEY([EVENTID])
REFERENCES [dbo].[EPOEVENTS] ([AUTOID])
ON DELETE CASCADE
GO

ALTER TABLE [dbo].[HIP8_IPSEVENTPARAMETER] CHECK CONSTRAINT [FK_HIP8_IPSEVENTPARAMETER_EPOEVENTS]
GO


USE [ePO4_SVR-EPO-02]
GO

ALTER TABLE [dbo].[HIP8_EVENTINFO]  WITH CHECK ADD  CONSTRAINT [FK_HIP8_EVENTINFO_EPOEVENTS] FOREIGN KEY([EVENTID])
REFERENCES [dbo].[EPOEVENTS] ([AUTOID])
ON DELETE CASCADE
GO

ALTER TABLE [dbo].[HIP8_EVENTINFO] CHECK CONSTRAINT [FK_HIP8_EVENTINFO_EPOEVENTS]
GO

USE [ePO4_SVR-EPO-02]
GO

ALTER TABLE [dbo].[SCOR_EVENTS]  WITH CHECK ADD  CONSTRAINT [SCOR_EVENTS_EPO_EVENTS] FOREIGN KEY([EPO_EVENT_AUTO_ID])
REFERENCES [dbo].[EPOEVENTS] ([AUTOID])
ON UPDATE CASCADE
ON DELETE CASCADE
GO

ALTER TABLE [dbo].[SCOR_EVENTS] CHECK CONSTRAINT [SCOR_EVENTS_EPO_EVENTS]
GO

/****** Backup the Child Tables ******/

USE [ePO4_SVR-EPO-02]
GO
SELECT * INTO HIP8_IPSEVENTPARAMETER_BAK FROM HIP8_IPSEVENTPARAMETER;
SELECT * INTO HIP8_EVENTINFO_BAK FROM HIP8_EVENTINFO;
SELECT * INTO SCOR_EVENTS_BAK FROM SCOR_EVENTS;
GO

/****** Truncate Child Tables ******/

USE [ePO4_SVR-EPO-02]
GO
TRUNCATE TABLE HIP8_IPSEVENTPARAMETER;
TRUNCATE TABLE HIP8_EVENTINFO;
TRUNCATE TABLE SCOR_EVENTS;

/****** Drop Foreign Keys ******/

USE [ePO4_SVR-EPO-02]
GO
ALTER TABLE HIP8_IPSEVENTPARAMETER DROP CONSTRAINT [FK_HIP8_IPSEVENTPARAMETER_EPOEVENTS];
ALTER TABLE HIP8_EVENTINFO DROP CONSTRAINT [FK_HIP8_EVENTINFO_EPOEVENTS];
ALTER TABLE SCOR_EVENTS DROP CONSTRAINT [SCOR_EVENTS_EPO_EVENTS];

/***** Truncate EPOEvents Table ******/


USE [ePO4_SVR-EPO-02]
GO
TRUNCATE TABLE EPOEVENTS;

Verplaats EPOEvents naar de nieuwe bestandsgroep

De EPOEvents-tabel is verplaatst naar de FG_LARGE Filegroup met behulp van het script in Listing 5.

Vermelding 5:EPOEvents-bestandsgroep FG_LARGE verplaatsen

/***** Move EPOEvents to the New Filegroup FG_LARGE ******/
-- This is achieved by recreating the Clustered Index used by Primary Key on this table
-- First Step is to Script the Clustered Index

USE [ePO4_SVR-EPO-02]
GO
ALTER TABLE [dbo].[EPOEvents] ADD  CONSTRAINT [PK_EPOEvents_AutoID] PRIMARY KEY CLUSTERED 
(
	[AutoID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
GO

-- Second Step is to drop and recreate the Clustered Index after changing
-- the Filegroup the Script (observe the ON Clause in the create statement below:
-- Filegroup was previously PRIMARY and is now FG_LARGE)

-- Drop Statement
USE [ePO4_SVR-EPO-02]
GO
ALTER TABLE [dbo].[EPOEvents] DROP  CONSTRAINT [PK_EPOEvents_AutoID] 

-- Create Statement
USE [ePO4_SVR-EPO-02]
GO
ALTER TABLE [dbo].[EPOEvents] ADD  CONSTRAINT [PK_EPOEvents_AutoID] PRIMARY KEY CLUSTERED 
(
	[AutoID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [FG_LARGE]
GO

Recreëer buitenlandse sleutels op onderliggende tabellen

De Foreign Keys op onderliggende tabellen die in stap 4.1.5 zijn geïdentificeerd, zijn opnieuw gemaakt met het script in Listing 6.

Lijst 6:EPOEvents-tabel afkappen en verhuizen naar nieuwe bestandsgroep

USE [ePO4_SVR-EPO-02]
GO

ALTER TABLE [dbo].[HIP8_IPSEVENTPARAMETER]  WITH CHECK ADD  CONSTRAINT [FK_HIP8_IPSEVENTPARAMETER_EPOEVENTS] FOREIGN KEY([EVENTID])
REFERENCES [dbo].[EPOEVENTS] ([AUTOID])
ON DELETE CASCADE
GO

ALTER TABLE [dbo].[HIP8_IPSEVENTPARAMETER] CHECK CONSTRAINT [FK_HIP8_IPSEVENTPARAMETER_EPOEVENTS]
GO

ALTER TABLE [dbo].[HIP8_EVENTINFO]  WITH CHECK ADD  CONSTRAINT [FK_HIP8_EVENTINFO_EPOEVENTS] FOREIGN KEY([EVENTID])
REFERENCES [dbo].[EPOEVENTS] ([AUTOID])
ON DELETE CASCADE
GO

ALTER TABLE [dbo].[HIP8_EVENTINFO] CHECK CONSTRAINT [FK_HIP8_EVENTINFO_EPOEVENTS]
GO

ALTER TABLE [dbo].[SCOR_EVENTS]  WITH CHECK ADD  CONSTRAINT [SCOR_EVENTS_EPO_EVENTS] FOREIGN KEY([EPO_EVENT_AUTO_ID])
REFERENCES [dbo].[EPOEVENTS] ([AUTOID])
ON UPDATE CASCADE
ON DELETE CASCADE
GO

ALTER TABLE [dbo].[SCOR_EVENTS] CHECK CONSTRAINT [SCOR_EVENTS_EPO_EVENTS]
GO

Script de EPOEvents-tabeldefinitie

Als back-up was het ideaal voor het scripten van het uittreksel van de DDL van de EPOEvents-tabel. Dit werd gedaan door met de rechtermuisknop te klikken en de optie Script Table as> CREATE To> New Query Editor Window te selecteren. van de SSMS[1] Objectverkenner. Het resulterende script kan worden opgeslagen in een .sql bestand.

Maak een back-up van de EPO-database

Er is een tweede back-up van de EPO-database gemaakt met het script in Listing 7 ter voorbereiding op de volgende fase (verkleining van het gegevensbestand).

Lijst 7:Tweede back-up van EPO-database

BACKUP DATABASE [ePO4_SVR-EPO-02] TO
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_C01.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_C02.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_C03.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_C04.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_C05.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_C06.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_C07.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_C08.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_C09.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_C10.bak'
WITH STATS = 5, COMPRESSION, NAME = N'ePO4_SVR-EPO-02 Backup After Purge'

Gegevensbestanden verkleinen in de PRIMAIRE bestandsgroep

Krimpen is nodig om de vrijgekomen ruimte terug te winnen door de EPOEvents-tabel af te kappen. In dit geval was het ook cruciaal, omdat de gegevensbestanden moesten worden verplaatst naar een kleinere schijf.

De gegevensbestanden zijn verplaatst van schijf I - een schijf van 3 TB naar schijf P, een schijf van 200 GB.

De drie gegevensbestanden in de PRIMARY Filegroup kregen de logische naam ePO4_SVR-EPO-01 (~300GB), ePO4_SVR-EPO-02 (~500GB), en ePO4_SVR-EPO-03 (~400GB).

Het doel was om alle bestanden te verkleinen tot 40000 MB elk. De taak vergde vijf tot zeven iteraties, elk verwijderd 50000 MB.

Lijst 8:Gegevensbestanden verkleinen in de PRIMAIRE bestandsgroep

USE [ePO4_SVR-EPO-02]
GO
DBCC SHRINKFILE (N'ePO4_SVR-EPO-01' , 40000)
DBCC SHRINKFILE (N'ePO4_SVR-EPO-02' , 40000)
DBCC SHRINKFILE (N'ePO4_SVR-EPO-03' , 40000)
GO

Maak een back-up van de EPO-database

Er is een tweede back-up van de EPO-database gemaakt met behulp van het script in Lijst 5 om zich voor te bereiden op de volgende fase (het laten vallen van de bestaande database). Het script is aanwezig in Lijst 9 .

Lijst 9:Eerste back-up van ePO4_SVR-EPO-02-database

BACKUP DATABASE [ePO4_SVR-EPO-02] TO
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E01.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E02.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E03.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E04.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E05.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E06.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E07.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E08.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E09.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E10.bak'
WITH STATS = 5, COMPRESSION, NAME = N'ePO4_SVR-EPO-02 Backup After Shrink'

Laat de EPO-database vallen

De database is verwijderd met behulp van de SSMS GUI - klik met de rechtermuisknop op de database en selecteer de optie "verwijderen" in het vervolgkeuzemenu. De equivalente SQL staat in Lijst 10 .

Lijst 10:verwijder de EPO-database

USE [master]
GO
DROP DATABASE [ePO4_SVR-EPO-02]
GO

Schijf J formatteren

Met deze stap formatteert u station J met behulp van de 64K clustergrootte, zoals aanbevolen door Microsoft voor optimale I/O-prestaties. Deze taak is eerder uitgevoerd op de nieuwe schijven die in stap 4.1.1 zijn geïmplementeerd.

Afbeelding 3 toont de optie die is geselecteerd in het dialoogvenster Opmaak....

Herstel de EPO-database met MOVE

De herstelbewerking was nodig om drie redenen:

  1. Om drive J te formatteren die de transactielogbestanden bevat (zoals hierboven).
  2. Om eventuele fragmentatie veroorzaakt door de krimpbewerking te verwijderen.
  3. Om de database naar nieuwe schijven te verplaatsen.

Het script in Lijst 11 dient om te herstellen. Houd er rekening mee dat de back-upset die voor dit herstel wordt gebruikt, de laatste back-up is die in stap 4.1.8 is gemaakt. Merk ook op dat de MOVE-optie dient om de gegevensbestanden in de PRIMAIRE bestandsgroep te verplaatsen naar P.

Lijst 11:verwijder de EPO-database

RESTORE DATABASE [ePO4_SVR-EPO-02] FROM
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E01.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E02.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E03.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E04.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E05.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E06.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E07.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E08.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E09.bak',
DISK = 'I:\MSSQL\BACKUP\ePO4_SVR-EPO-02_22Apr2015_E10.bak'
WITH STATS = 5,
MOVE 'ePO4_SVR-EPO-02' TO 'P:\MSSQL\DATA\ePO4_SVR-EPO-02.mdf',
MOVE 'ePO4_SVR-EPO-01' TO 'P:\MSSQL\DATA\ePO4_SVR-EPO-01.ndf',
MOVE 'ePO4_SVR-EPO-03' TO 'P:\MSSQL\DATA\ePO4_SVR-EPO-03.ndf'

Verplaats TempDB naar Drive Q

Voor optimale prestaties van grote databases wordt het ook aanbevolen om TempDB-bestanden op een speciale schijf te lokaliseren.

Met behulp van het script in Listing 9 is TempDB verplaatst naar station Q. Merk op dat de overtollige TempDB-gegevensbestanden tijdens deze bewerking zijn verwijderd. Het aantal TempDB-gegevensbestanden moet overeenkomen met het aantal fysieke CPU's dat beschikbaar is voor SQL Server.

Lijst 12:Verplaats TempDB

-- Drop unnecessary TempDB files
-- The following script was run several times and required several restarts of the -- SQL instance

USE [tempdb]
GO
ALTER DATABASE [tempdb]  REMOVE FILE [tempdev_xx]
GO


-- Relocate TempDB files

USE master;
GO
ALTER DATABASE tempdb 
MODIFY FILE (NAME = tempdev, FILENAME = 'Q:\MSSQL\DATA\tempdev.mdf');
GO
ALTER DATABASE tempdb 
MODIFY FILE (NAME = tempdev_01, FILENAME = 'Q:\MSSQL\DATA\tempdev_01.mdf');
GO
ALTER DATABASE  tempdb 
MODIFY FILE (NAME = templog, FILENAME = 'J:\MSSQL\LOG\templog.ldf');
GO

-- Restart SQL Server
-- Confirm the location of TempDB files

SELECT name as 'File Name', physical_name as 'File Directory'
FROM sys.master_files
WHERE database_id = DB_ID('tempdb');
GO

Start EPO Application Services

Alle toepassingsservices zijn gestart zodra het SQL Server-exemplaar OK is bevestigd. Application Services gestart zijn als volgt:

  1. McAfee ePolicy Orchestrator 4.6.8 Toepassingsserver
  2. McAfee ePolicy Orchestrator 4.6.8 Gebeurtenisparser
  3. McAfee ePolicy Orchestrator 4.6.8-server

Bevestig dat tabellen zijn ingevuld

Het script vermeldt 13 en bevestigt dat de tabel EPOEvents en de onderliggende tabellen worden gevuld nadat het hele proces is voltooid.

Lijst 13:Verplaats TempDB

USE [ePO4_SVR-EPO-02]
GO
SELECT COUNT(*) EPOEvents_CNT FROM EPOEvents;
SELECT COUNT(*) HIP8_EventInfo_CNT FROM HIP8_EventInfo;
SELECT COUNT(*) HIP8_IPSEventParameter_CNT FROM HIP8_IPSEventParameter;
SELECT COUNT(*) SCOR_EVENTS_CNT FROM SCOR_EVENTS;

TAKEN WIJZIGEN NA WIJZIGING

Overzicht van taken na wijziging

1 De taak Custom_Purge EPO-gebeurtenissen is gemaakt om het aantal vastgelegde gebeurtenissen binnen 100 dagen te houden. Het is cruciaal om ervoor te zorgen dat deze baan altijd succesvol is.

2 Overtollige ruimte die eerder aan de EPO-databaseserver was toegewezen, kan worden teruggewonnen, met name de schijf I - momenteel 1 TB.

3 Een back-uptaak ​​Custom_Daily_Backup is gemaakt tijdens de wijziging. Back-ups gemaakt door deze taak zullen back-upsets naar I:/MSSQL/Backup/ laten vallen . Het is essentieel om dit pad te wijzigen als de schijf I van het systeem wordt verwijderd. Het is ook noodzakelijk om deze back-ups te bewaren volgens het Groepsback-upbeleid.

BIJLAGEN

BIJLAGE I

EPOEVENTS TABEL DDL

USE [ePO4_SVR-EPO-02]
GO

/****** Object:  Table [dbo].[EPOEvents]    Script Date: 04/23/2015 01:40:46 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[EPOEvents](
	[AutoID] [int] IDENTITY(1,1) NOT NULL,
	[AutoGUID] [uniqueidentifier] NOT NULL,
	[ServerID] [nvarchar](16) NOT NULL,
	[ReceivedUTC] [datetime] NOT NULL,
	[DetectedUTC] [datetime] NOT NULL,
	[AgentGUID] [uniqueidentifier] NOT NULL,
	[Analyzer] [nvarchar](16) NOT NULL,
	[AnalyzerName] [nvarchar](64) NOT NULL,
	[AnalyzerVersion] [nvarchar](20) NOT NULL,
	[AnalyzerHostName] [nvarchar](128) NULL,
	[AnalyzerIPV4] [int] NULL,
	[AnalyzerIPV6] [binary](16) NULL,
	[AnalyzerMAC] [nvarchar](16) NULL,
	[AnalyzerDATVersion] [nvarchar](20) NULL,
	[AnalyzerEngineVersion] [nvarchar](20) NULL,
	[AnalyzerDetectionMethod] [nvarchar](128) NULL,
	[SourceHostName] [nvarchar](266) NULL,
	[SourceIPV4] [int] NULL,
	[SourceIPV6] [binary](16) NULL,
	[SourceMAC] [nvarchar](16) NULL,
	[SourceUserName] [nvarchar](128) NULL,
	[SourceProcessName] [nvarchar](128) NULL,
	[SourceURL] [nvarchar](1024) NULL,
	[TargetHostName] [nvarchar](266) NULL,
	[TargetIPV4] [int] NULL,
	[TargetIPV6] [binary](16) NULL,
	[TargetMAC] [nvarchar](16) NULL,
	[TargetUserName] [nvarchar](128) NULL,
	[TargetPort] [int] NULL,
	[TargetProtocol] [nvarchar](16) NULL,
	[TargetProcessName] [nvarchar](128) NULL,
	[TargetFileName] [nvarchar](266) NULL,
	[ThreatCategory] [nvarchar](128) NOT NULL,
	[ThreatEventID] [int] NOT NULL,
	[ThreatSeverity] [tinyint] NOT NULL,
	[ThreatName] [nvarchar](128) NOT NULL,
	[ThreatType] [nvarchar](32) NOT NULL,
	[ThreatActionTaken] [nvarchar](24) NOT NULL,
	[ThreatHandled] [bit] NULL,
	[TheTimestamp] [timestamp] NOT NULL,
 CONSTRAINT [PK_EPOEvents_AutoID] PRIMARY KEY CLUSTERED 
(
	[AutoID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO

ALTER TABLE [dbo].[EPOEvents] ADD  CONSTRAINT [DF_EPOEvents_EventID]  DEFAULT (newid()) FOR [AutoGUID]
GO

ALTER TABLE [dbo].[EPOEvents] ADD  CONSTRAINT [DF_EPOEvents_ServerID]  DEFAULT (N'SVR-EPO-02') FOR [ServerID]
GO

ALTER TABLE [dbo].[EPOEvents] ADD  CONSTRAINT [DF_EPOEvents_ReceivedUTC]  DEFAULT (getutcdate()) FOR [ReceivedUTC]
GO

ALTER TABLE [dbo].[EPOEvents] ADD  CONSTRAINT [DF_EPOEvents_ThreatSeverity]  DEFAULT ((1)) FOR [ThreatSeverity]
GO

ALTER TABLE [dbo].[EPOEvents] ADD  CONSTRAINT [DF_EPOEvents_ThreatActionTaken]  DEFAULT ('none') FOR [ThreatActionTaken]
GO

BIJLAGE II

VACATURE CUSTOM_PURGE EPO-EVENEMENTEN

USE [msdb]
GO

/****** Object:  Job [Custom_Purge EPO Events]    Script Date: 04/25/2015 19:47:51 ******/
BEGIN TRANSACTION
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
/****** Object:  JobCategory [[Uncategorized (Local)]]]    Script Date: 04/25/2015 19:47:51 ******/
IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]' AND category_class=1)
BEGIN
EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'[Uncategorized (Local)]'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

END

DECLARE @jobId BINARY(16)
EXEC @ReturnCode =  msdb.dbo.sp_add_job @job_name=N'Custom_Purge EPO Events', 
		@enabled=1, 
		@notify_level_eventlog=0, 
		@notify_level_email=0, 
		@notify_level_netsend=0, 
		@notify_level_page=0, 
		@delete_level=0, 
		@description=N'No description available.', 
		@category_name=N'[Uncategorized (Local)]', 
		@owner_login_name=N'sa', @job_id = @jobId OUTPUT
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
/****** Object:  Step [Step 1]    Script Date: 04/25/2015 19:47:51 ******/
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @[email protected], @step_name=N'Step 1', 
		@step_id=1, 
		@cmdexec_success_code=0, 
		@on_success_action=1, 
		@on_success_step_id=0, 
		@on_fail_action=2, 
		@on_fail_step_id=0, 
		@retry_attempts=0, 
		@retry_interval=0, 
		@os_run_priority=0, @subsystem=N'TSQL', 
		@command=N'DECLARE @NbLignes int ; 
SELECT @NbLignes = COUNT(*) FROM EPOEvents WHERE DATEDIFF(day, DetectedUTC, GETDATE()) > ''100''; 

PRINT ''Total number of lines to delete:''; 
PRINT @NbLignes; 

WHILE (@NbLignes > 0) 
BEGIN 

        PRINT ''Total number of lines LEFT to delete: :''; 
        PRINT @NbLignes; 
        PRINT ''Start deleting 50000 lines'';
        BEGIN TRAN DEL_SET;
        DELETE TOP(500000) FROM EPOEvents WHERE DATEDIFF(day, DetectedUTC, GETDATE()) > ''100''; 
        COMMIT;
        SET @NbLignes = @NbLignes - ''50000''; 
        WAITFOR DELAY ''00:05'';
END 
PRINT ''End of Maintenance'' ; 
', 
		@database_name=N'ePO4_SVR-EPO-02', 
		@output_file_name=N'D:\MSSQL\JOBLOG\purgeepoevents.txt', 
		@flags=2
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @[email protected], @name=N'Purge Schedule', 
		@enabled=1, 
		@freq_type=4, 
		@freq_interval=1, 
		@freq_subday_type=1, 
		@freq_subday_interval=0, 
		@freq_relative_interval=1, 
		@freq_recurrence_factor=0, 
		@active_start_date=20130312, 
		@active_end_date=99991231, 
		@active_start_time=200000, 
		@active_end_time=235959, 
		@schedule_uid=N'3d0b8826-691d-4d3c-aca9-00cb5ce246b2'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
COMMIT TRANSACTION
GOTO EndSave
QuitWithRollback:
    IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
EndSave:

GO

  1. selecteer uit de ene tabel, voeg in een andere tabel in oracle sql-query

  2. Hoe kun je dezelfde query meerdere keren uitvoeren met lus in PL/SQL?

  3. Afdruk samenvoegen doen in Access 2016

  4. Upload CSV-bestand naar SQL-server