Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

Nơi làm việc gặp phải:Đòi lại không gian từ cơ sở dữ liệu quá khổ

GIỚI THIỆU

Tài liệu này ghi lại các bước, tập lệnh và tư tưởng đằng sau quá trình bảo trì được thực hiện trên cơ sở dữ liệu sản xuất từ ​​ngày 22 tháng 4 năm 2015 đến ngày 23 tháng 4 năm 2015. Các chi tiết dành riêng cho một ứng dụng, nhưng các nguyên tắc có thể hữu ích cho những người khác cần thực hiện các hoạt động tương tự trong sản xuất .

BỐI CẢNH

Cơ sở dữ liệu đã tăng lên hơn 1,44TB với bảng EPOEvents tiêu thụ hơn một nửa kích thước này (792GB). Trước đây đã có nhiều nỗ lực để xóa các mục nhập trong bảng này cũ hơn 90 ngày. Thật không may, nó tỏ ra vô ích. Công việc được lên lịch để đạt được điều này không bao giờ có thể hoàn thành trong bất kỳ phiên nào. Nguyên nhân là do hiệu suất kém của cơ sở dữ liệu.

Sau khi thảo luận, một quyết định đã được đưa ra để thanh lọc toàn bộ EPOEvents bảng bằng cách cắt bớt nó. Quyết định tiếp theo là chuẩn bị cơ sở dữ liệu một cách chính xác cho sự tăng trưởng dữ liệu dự kiến ​​trong tương lai.

Dưới đây là chi tiết của máy chủ cơ sở dữ liệu được đề cập:

SERVERNAME SVR-EPO-02
TÊN CƠ SỞ SVR-EPO-02 \ ENG_AVSERVER
PHIÊN BẢN HĐH Windows 2008 R2 Enterprise (SP1) 64-bit
PHIÊN BẢN DB Microsoft SQL Server 2008 R2 (SP1) 64-bit
ĐỊA CHỈ IP XX.XX.XX.XX
TÊN CƠ SỞ DỮ LIỆU ePO4_SVR-EPO-02

BẢNG EPOEVENTS

Tập lệnh xác định EPOEvents bảng được ghi trong Phụ lục I.

Điều đáng nói là cột AutoID của bảng này nằm trong mối quan hệ Khóa ngoại với các bảng HIP8_EventInfo, HIP8_IPSEventParameter và SCOR_EVENTS. Điều này ảnh hưởng đến cách tiếp cận được sử dụng để cắt ngắn bảng EPOEvents. Chi tiết tóm tắt có trong bảng dưới đây:

Thông tin này được trích xuất bằng cách sử dụng câu lệnh trong Liệt kê 1.

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

TÓM TẮT THỦ TỤC

Tóm tắt quy trình được sử dụng trong quá trình thay đổi:

  • Triển khai năm ổ đĩa 200GB
  • Ngừng Dịch vụ Ứng dụng EPO
  • Sao lưu Cơ sở dữ liệu EPO
  • Tạo một nhóm tệp mới
  • Cắt ngắn EPOEvents Bảng
  • Di chuyển EPOEvents sang Nhóm tệp mới
  • Tạo lại các phím ngoại trên bảng con
  • Tập lệnh cho Định nghĩa Bảng EPOEvents
  • Sao lưu Cơ sở dữ liệu EPO
  • Thu nhỏ các tệp dữ liệu trong nhóm tệp CHÍNH
  • Sao lưu Cơ sở dữ liệu EPO
  • Bỏ Cơ sở dữ liệu EPO
  • Định dạng Drive J
  • Khôi phục Cơ sở dữ liệu EPO với MOVE
  • Định vị lại TempDB sang Drive Q
  • Khởi động Dịch vụ Ứng dụng EPO
  • Xác nhận EPOEvents đã được phổ biến

Triển khai năm ổ đĩa 200GB

Năm ổ đĩa mới đã được triển khai trên máy chủ. Danh sách đầy đủ của tất cả các ổ đĩa trên máy chủ như sau:

DRIVE SỬ DỤNG MỚI? BÌNH LUẬN
C Ổ đĩa hệ thống KHÔNG Kích thước cụm mặc định (4KB)
Đ Ổ ứng dụng KHÔNG Kích thước cụm mặc định (4KB)
I Dữ liệu MSSQL (CŨ) KHÔNG Kích thước cụm mặc định (4KB)
J Nhật ký MSSQL KHÔNG Kích thước cụm được đề xuất cho SQL (64K)
M Dữ liệu MSSQL (FG_LARGE FileGroup) Kích thước cụm được đề xuất cho SQL (64K)
N Dữ liệu MSSQL (FG_LARGE FileGroup) Kích thước cụm được đề xuất cho SQL (64K)
O Dữ liệu MSSQL (FG_LARGE FileGroup) Kích thước cụm được đề xuất cho SQL (64K)
P Dữ liệu MSSQL (Nhóm Tệp CHÍNH) Kích thước cụm được đề xuất cho SQL (64K)
Q MSSQL TempDB Kích thước cụm được đề xuất cho SQL (64K)

Tất cả các ổ đĩa mới đều được định dạng bằng kích thước cụm 64K, theo khuyến nghị của Microsoft cho các ổ đĩa chứa dữ liệu MS SQL Server hoặc tệp nhật ký [1]. Ổ J cũng đã được định dạng lại sau khi sao lưu cơ sở dữ liệu.

[1] Có thể truy cập toàn bộ cuộc thảo luận tại https://msdn.microsoft.com/en-us/library/dd758814.aspx

Ngừng Dịch vụ Ứng dụng EPO

Tất cả các dịch vụ ứng dụng đã bị dừng để đảm bảo không có cập nhật nào trên cơ sở dữ liệu trong thời gian thay đổi. Các Dịch vụ Ứng dụng bị dừng (hoặc xác nhận ngừng hoạt động) như sau:

  1. Máy chủ ứng dụng McAfee ePolicy Orchestrator 4.6.8
  2. McAfee ePolicy Orchestrator 4.6.8 Trình phân tích cú pháp sự kiện
  3. Máy chủ McAfee ePolicy Orchestrator 4.6.8

Sao lưu Cơ sở dữ liệu EPO

Bản sao lưu đầu tiên của cơ sở dữ liệu đã được thực hiện trước khi bất kỳ hành động nào diễn ra trên cấu trúc hiện có, bằng cách sử dụng tập lệnh trong Liệt kê 2.

Liệt kê 2:Bản sao lưu đầu tiên của cơ sở dữ liệu ePO4_SVR-EPO-02

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'

Tạo nhóm tệp mới

Một nhóm tệp mới có tên FG_LARGE đã được tạo với tập lệnh tương đương với tập lệnh trong Liệt kê 3. Tất cả các tệp được thêm vào nhóm tệp được xác định với kích thước ban đầu 40GB, gia số 1G và kích thước tối đa 100GB.

Liệt kê 3:Tạo Nhóm tệp 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

Cắt ngắn EPOEvents Bảng

Liệt kê 4 cho thấy tập hợp đầy đủ các nhiệm vụ cần thiết để cắt ngắn bảng EPOEvents thành công. Tập lệnh bao gồm các ghi chú để rõ ràng.

Vấn đề cơ bản cần lưu ý là không thể cắt bớt một bảng tham gia với tư cách là cha trong mối quan hệ Khoá ngoại. Nó sẽ vi phạm tính toàn vẹn tham chiếu. Việc xóa sẽ hoạt động và duy trì tính toàn vẹn của tham chiếu vì Khóa ngoại thường được định nghĩa bằng mệnh đề ON DELETE CASCADE hoặc ON DELETE SET NULL.

Liệt kê 4:Cắt bớt bảng EPOEvents và chuyển đến vùng bảng mới

/****** 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;

Di chuyển EPOEvents sang Nhóm tệp mới

Bảng EPOEvents đã được chuyển đến Nhóm tệp FG_LARGE bằng cách sử dụng tập lệnh trong Liệt kê 5.

Liệt kê 5:Di chuyển nhóm tệp EPOEvents FG_LARGE

/***** 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

Tạo lại các khóa ngoại trên bảng con

Các khóa ngoại trên bảng con được xác định trong bước 4.1.5, đã được tạo lại bằng tập lệnh trong Liệt kê 6.

Liệt kê 6:Cắt bớt bảng EPOEvents và chuyển đến nhóm tệp mới

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

Tập lệnh cho Định nghĩa Bảng EPOEvents

Như một bản sao lưu, nó lý tưởng để viết kịch bản trích xuất DDL của bảng EPOEvents. Điều này được thực hiện bằng cách nhấp chuột phải và chọn tùy chọn Bảng tập lệnh dưới dạng> TẠO thành> Cửa sổ trình soạn thảo truy vấn mới từ SSMS [1] Object Explorer. Tập lệnh kết quả có thể được lưu vào .sql tệp.

Sao lưu Cơ sở dữ liệu EPO

Bản sao lưu thứ hai của cơ sở dữ liệu EPO đã được thực hiện với tập lệnh trong Liệt kê 7 để chuẩn bị cho giai đoạn tiếp theo (thu nhỏ tệp dữ liệu).

Liệt kê 7:Bản sao lưu thứ hai của Cơ sở dữ liệu EPO

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'

Thu nhỏ các tệp dữ liệu trong nhóm tệp CHÍNH

Thu hẹp là cần thiết để lấy lại không gian được giải phóng bằng cách cắt bớt bảng EPOEvents. Nó cũng rất quan trọng trong trường hợp này, vì các tệp dữ liệu yêu cầu phải di dời sang một ổ đĩa nhỏ hơn.

Các tệp dữ liệu đã được chuyển từ ổ I - ổ 3 TB sang ổ P, ổ 200 GB.

Ba tệp dữ liệu trong Nhóm tệp CHÍNH được đặt tên hợp lý là ePO4_SVR-EPO-01 (~ 300GB), ePO4_SVR-EPO-02 (~ 500GB) và ePO4_SVR-EPO-03 (~ 400GB).

Mục tiêu là thu nhỏ tất cả các tệp xuống 40000 MB mỗi tệp. Tác vụ yêu cầu từ năm đến bảy lần lặp lại, mỗi lần bị xóa 50000 MB.

Liệt kê 8:Thu hẹp tệp dữ liệu trong nhóm tệp CHÍNH

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

Sao lưu Cơ sở dữ liệu EPO

Bản sao lưu thứ hai của cơ sở dữ liệu EPO đã được thực hiện bằng cách sử dụng tập lệnh trong Liệt kê 5 để chuẩn bị cho giai đoạn tiếp theo (bỏ cơ sở dữ liệu hiện có). Tập lệnh có trong Liệt kê 9 .

Liệt kê 9:Bản sao lưu đầu tiên của cơ sở dữ liệu ePO4_SVR-EPO-02

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'

Thả Cơ sở dữ liệu EPO

Cơ sở dữ liệu đã bị xóa bằng cách sử dụng SSMS GUI - nhấp chuột phải vào cơ sở dữ liệu và chọn tùy chọn “xóa” từ trình đơn thả xuống. SQL tương đương có trong Liệt kê 10 .

Liệt kê 10:Bỏ qua Cơ sở dữ liệu EPO

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

Định dạng Drive J

Bước này định dạng ổ đĩa J, sử dụng kích thước cụm 64K, theo khuyến nghị của Microsoft để có hiệu suất I / O tối ưu. Tác vụ này trước đây đã được thực hiện trên các ổ đĩa mới được triển khai ở bước 4.1.1.

Hình 3 cho thấy tùy chọn được chọn trong hộp thoại Định dạng….

Khôi phục Cơ sở dữ liệu EPO với MOVE

Thao tác khôi phục là cần thiết vì ba lý do:

  1. Để định dạng ổ đĩa J chứa các Tệp nhật ký giao dịch (như trên).
  2. Để loại bỏ bất kỳ sự phân mảnh nào do hoạt động thu nhỏ gây ra.
  3. Để chuyển cơ sở dữ liệu sang các ổ đĩa mới.

Tập lệnh trong Liệt kê 11 phục vụ cho việc khôi phục. Lưu ý rằng bộ sao lưu được sử dụng để khôi phục này là bản sao lưu cuối cùng được thực hiện trong bước 4.1.8. Ngoài ra, hãy quan sát rằng tùy chọn MOVE phục vụ để định vị lại các tệp dữ liệu trong Nhóm tệp CHÍNH sang ổ đĩa P.

Liệt kê 11:Bỏ qua Cơ sở dữ liệu EPO

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'

Chuyển TempDB sang Drive Q

Để có hiệu suất tối ưu cho cơ sở dữ liệu lớn, bạn cũng nên định vị tệp TempDB trên một ổ đĩa chuyên dụng.

Sử dụng tập lệnh trong Liệt kê 9, TempDB đã được chuyển đến ổ đĩa Q. Lưu ý rằng các tệp dữ liệu TempDB dư thừa đã bị xóa trong thao tác này. Số lượng tệp dữ liệu TempDB phải khớp với số CPU vật lý có sẵn cho SQL Server.

Liệt kê 12:Định vị lại 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

Khởi động Dịch vụ Ứng dụng EPO

Tất cả các dịch vụ ứng dụng đã được khởi động sau khi phiên bản SQL Server được xác nhận OK. Dịch vụ ứng dụng bắt đầu như sau:

  1. Máy chủ ứng dụng McAfee ePolicy Orchestrator 4.6.8
  2. McAfee ePolicy Orchestrator 4.6.8 Trình phân tích cú pháp sự kiện
  3. Máy chủ McAfee ePolicy Orchestrator 4.6.8

Xác nhận các bảng đã được điền

Tập lệnh liệt kê 13 xác nhận rằng bảng EPOEvents và các bảng con đang được điền sau khi toàn bộ quá trình hoàn tất.

Liệt kê 13:Định vị lại 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;

ĐĂNG NHIỆM VỤ THAY ĐỔI

Tóm tắt các Nhiệm vụ Thay đổi Đăng

1 Công việc Custom_Purge EPO Events được tạo ra để giữ số lượng sự kiện được nắm bắt trong vòng 100 ngày. Điều quan trọng là đảm bảo công việc này luôn thành công.

2 Có thể lấy lại dung lượng dư thừa trước đó đã phân bổ cho máy chủ cơ sở dữ liệu EPO, đặc biệt là ổ I - hiện là 1 TB.

3 Một công việc sao lưu Custom_Daily_Backup đã được tạo trong quá trình thay đổi. Các bản sao lưu được thực hiện bởi công việc này sẽ thả các bộ sao lưu xuống I:/ MSSQL / Backup / . Điều cần thiết là phải thay đổi đường dẫn này nếu ổ đĩa tôi sẽ bị xóa khỏi hệ thống. Cũng cần bảo quản các bản sao lưu này theo Chính sách sao lưu nhóm.

PHỤ LỤC

PHỤ LỤC I

DDL BẢNG EPOEVENTS

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

PHỤ LỤC II

SỰ KIỆN EPO CUSTOM_PURGE CÔNG VIỆC

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Triển khai Cơ sở dữ liệu từ Kiểm soát Nguồn

  2. Ước tính số lượng thẻ cho nhiều dự đoán

  3. SQL, Xử lý các ô trống

  4. Mô hình Cơ sở dữ liệu cho Khảo sát Trực tuyến. Phần 2

  5. Percona DB là gì