Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Pertemuan di Tempat Kerja:Mendapatkan Kembali Ruang dari Database yang Terlalu Besar

PENGANTAR

Dokumen ini mencatat langkah-langkah, skrip, dan ideologi di balik pemeliharaan yang dilakukan pada basis data produksi antara 22 April 2015 dan 23 April 2015. Detailnya khusus untuk aplikasi, tetapi prinsipnya mungkin berguna bagi orang lain yang membutuhkan operasi serupa dalam produksi .

LATAR BELAKANG

Basis data telah berkembang menjadi lebih dari 1,44 TB dengan tabel EPOEvents mengkonsumsi lebih dari setengah dari ukuran ini (792GB). Upaya telah dilakukan di masa lalu untuk menghapus entri dalam tabel ini yang lebih lama dari 90 hari. Sayangnya, itu terbukti sia-sia. Pekerjaan yang dijadwalkan untuk mencapai ini tidak akan pernah bisa diselesaikan selama sesi apa pun. Alasannya adalah kinerja database yang buruk.

Setelah berdiskusi, keputusan dibuat untuk menghapus seluruh EPOEvents tabel dengan memotongnya. Keputusan selanjutnya adalah mempersiapkan database dengan benar untuk pertumbuhan data yang diharapkan di masa depan.

Detail dari server database yang dimaksud adalah di bawah ini:

NAMA SERVER SVR-EPO-02
NAMA INSTANCE SVR-EPO-02\ENG_AVSERVER
VERSI OS Windows 2008 R2 Enterprise (SP1) 64-bit
VERSI DB Microsoft SQL Server 2008 R2 (SP1) 64-bit
ALAMAT IP XX.XX.XX.XX
NAMA DATABASE ePO4_SVR-EPO-02

TABEL EPOEVENTS

Skrip yang mendefinisikan EPOEvents tabel didokumentasikan dalam Lampiran I.

Perlu disebutkan bahwa kolom AutoID dari tabel ini berada dalam hubungan Kunci Asing dengan tabel HIP8_EventInfo, HIP8_IPSEventParameter, dan SCOR_EVENTS. Ini memengaruhi pendekatan yang digunakan untuk memotong tabel EPOEvents. Detail ringkasan ada di tabel di bawah ini:

Informasi ini diekstraksi menggunakan pernyataan di Listing 1.

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

RINGKASAN PROSEDUR

Ringkasan Prosedur yang Digunakan Selama Perubahan:

  • Terapkan Lima Drive 200GB
  • Hentikan Layanan Aplikasi EPO
  • Cadangkan Basis Data EPO
  • Buat Grup File Baru
  • Memotong Tabel EPOEvents
  • Pindahkan EPOEvents ke Filegroup Baru
  • Buat Ulang Kunci Asing pada Tabel Anak
  • Skrip Definisi Tabel EPOEvents
  • Cadangkan Basis Data EPO
  • Shrink Datafiles di PRIMARY Filegroup
  • Cadangkan Basis Data EPO
  • Lepaskan Basis Data EPO
  • Memformat Drive J
  • Pulihkan Basis Data EPO dengan MOVE
  • Relokasi TempDB ke Drive Q
  • Mulai Layanan Aplikasi EPO
  • Konfirmasi bahwa EPOEvents Sudah Diisi

Terapkan lima Drive 200GB

Lima drive baru dikerahkan di server. Daftar lengkap semua drive di server adalah sebagai berikut:

DRIVE GUNAKAN BARU? KOMENTAR
C Drive sistem TIDAK Ukuran Cluster Default (4KB)
D Drive Aplikasi TIDAK Ukuran Cluster Default (4KB)
Saya Data MSSQL (LAMA) TIDAK Ukuran Cluster Default (4KB)
J Log MSSQL TIDAK Ukuran Cluster yang Direkomendasikan untuk SQL (64K)
L Data MSSQL (FG_LARGE FileGroup) YA Ukuran Cluster yang Direkomendasikan untuk SQL (64K)
N Data MSSQL (FG_LARGE FileGroup) YA Ukuran Cluster yang Direkomendasikan untuk SQL (64K)
O Data MSSQL (FG_LARGE FileGroup) YA Ukuran Cluster yang Direkomendasikan untuk SQL (64K)
P Data MSSQL (Group File UTAMA) YA Ukuran Cluster yang Direkomendasikan untuk SQL (64K)
T MSSQL TempDB YA Ukuran Cluster yang Direkomendasikan untuk SQL (64K)

Semua drive baru diformat menggunakan ukuran cluster 64K, seperti yang direkomendasikan oleh Microsoft untuk drive yang berisi data MS SQL Server atau file log[1]. Drive J juga diformat ulang setelah mengambil cadangan database.

[1] Diskusi lengkap dapat diakses di https://msdn.microsoft.com/en-us/library/dd758814.aspx

Hentikan Layanan Aplikasi EPO

Semua layanan aplikasi dihentikan untuk memastikan tidak ada pembaruan pada database selama periode perubahan. Layanan Aplikasi yang dihentikan (atau dikonfirmasi down) adalah sebagai berikut:

  1. McAfee ePolicy Orchestrator 4.6.8 Server Aplikasi
  2. McAfee ePolicy Orchestrator 4.6.8 Pengurai Peristiwa
  3. McAfee ePolicy Orchestrator 4.6.8 Server

Cadangkan Basis Data EPO

Pencadangan pertama database telah dilakukan sebelum tindakan apa pun dilakukan pada struktur yang ada, menggunakan skrip di Daftar 2.

Daftar 2:Cadangan pertama database 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'

Buat Grup File Baru

Grup file baru bernama FG_LARGE dibuat dengan skrip yang setara dengan Daftar 3. Semua file yang ditambahkan ke grup file ditentukan dengan ukuran awal 40GB, peningkatan 1G, dan ukuran maksimal 100GB.

Daftar 3:Pembuatan Filegroup 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

Memotong Tabel EPOEvents

Daftar 4 menunjukkan set lengkap tugas yang diperlukan untuk memotong tabel EPOEvents dengan sukses. Skrip menyertakan catatan untuk kejelasan.

Masalah mendasar yang perlu diperhatikan adalah bahwa tidak mungkin untuk memotong tabel yang berpartisipasi sebagai induk dalam hubungan Kunci Asing. Itu akan melanggar integritas referensial. Penghapusan akan berhasil dan mempertahankan integritas referensial karena Kunci Asing biasanya ditentukan dengan klausa ON DELETE CASCADE atau ON DELETE SET NULL.

Daftar 4:Memotong tabel EPOEvents dan Memindahkan ke Tablespace Baru

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

Pindahkan EPOEvents ke Filegroup Baru

Tabel EPOEvents dipindahkan ke FG_LARGE Filegroup menggunakan skrip di Listing 5.

Daftar 5:Memindahkan EPOEvents Filegroup 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

Buat Ulang Kunci Asing pada Tabel Anak

Kunci Asing pada tabel Anak yang diidentifikasi pada langkah 4.1.5, dibuat ulang dengan skrip di Daftar 6.

Daftar 6:Memotong tabel EPOEvents dan Memindahkan ke Filegroup Baru

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

Skrip Definisi Tabel EPOEvents

Sebagai cadangan, ini ideal untuk membuat skrip ekstrak DDL dari tabel EPOEvents. Ini dilakukan dengan mengklik kanan dan memilih opsi Script Table as> CREATE To> New Query Editor Window dari SSMS[1] Object Explorer. Skrip yang dihasilkan dapat disimpan ke .sql berkas.

Cadangkan Basis Data EPO

Cadangan kedua dari database EPO diambil dengan skrip di Daftar 7 untuk mempersiapkan tahap berikutnya (penyusutan file data).

Daftar 7:Cadangan kedua Basis Data 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'

Kecilkan File Data di Grup File PRIMARY

Menyusut diperlukan untuk mendapatkan kembali ruang yang dibebaskan dengan memotong tabel EPOEvents. Ini juga penting dalam kasus ini, karena file data memerlukan relokasi ke drive yang lebih kecil.

File data dipindahkan dari drive I – drive 3 TB ke drive P, drive 200 GB.

Tiga file data dalam PRIMARY Filegroup secara logika diberi nama ePO4_SVR-EPO-01 (~300GB), ePO4_SVR-EPO-02 (~500GB), dan ePO4_SVR-EPO-03 (~400GB).

Targetnya adalah untuk mengecilkan semua file menjadi masing-masing 40000 MB. Tugas ini menuntut lima hingga tujuh iterasi, masing-masing menghapus 50000 MB.

Daftar 8:Mengecilkan File Data di Grup File PRIMARY

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

Cadangkan Basis Data EPO

Cadangan kedua dari basis data EPO diambil menggunakan skrip di Listing 5 untuk mempersiapkan tahap selanjutnya (menjatuhkan database yang ada). Skrip ada di Listing 9 .

Daftar 9:Pencadangan pertama database 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'

Lepaskan Basis Data EPO

Basis data dijatuhkan menggunakan GUI SSMS - klik kanan basis data dan pilih opsi "hapus" dari menu tarik-turun. SQL yang setara ada di Listing 10 .

Daftar 10:Lepaskan Basis Data EPO

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

Format Drive J

Langkah ini memformat drive J, menggunakan ukuran cluster 64K, seperti yang direkomendasikan oleh Microsoft untuk kinerja I/O yang optimal. Tugas ini sebelumnya dilakukan pada drive baru yang diterapkan pada langkah 4.1.1.

Gambar 3 menunjukkan opsi yang dipilih dalam kotak dialog Format….

Pulihkan Basis Data EPO dengan MOVE

Operasi pemulihan diperlukan karena tiga alasan:

  1. Untuk memformat drive J yang berisi File Log transaksi (seperti di atas).
  2. Untuk menghapus fragmentasi yang disebabkan oleh operasi penyusutan.
  3. Untuk memindahkan database ke drive baru.

Skrip di Listing 11 berfungsi untuk memulihkan. Perhatikan bahwa set cadangan yang digunakan untuk pemulihan ini adalah cadangan terakhir yang diambil pada langkah 4.1.8. Perhatikan juga bahwa opsi MOVE berfungsi untuk merelokasi file data di PRIMARY Filegroup ke drive P.

Daftar 11:Jatuhkan Basis Data 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'

Relokasi TempDB ke Drive Q

Untuk kinerja optimal dari database besar, disarankan juga untuk menempatkan file TempDB pada drive khusus.

Menggunakan skrip di Listing 9, TempDB dipindahkan ke drive Q. Perhatikan bahwa file data TempDB yang berlebihan telah dihapus selama operasi ini. Jumlah file data TempDB harus sesuai dengan jumlah CPU fisik yang tersedia untuk SQL Server.

Daftar 12:Relokasi 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

Mulai Layanan Aplikasi EPO

Semua layanan aplikasi dimulai setelah contoh SQL Server dikonfirmasi OK. Layanan Aplikasi dimulai adalah sebagai berikut:

  1. McAfee ePolicy Orchestrator 4.6.8 Server Aplikasi
  2. McAfee ePolicy Orchestrator 4.6.8 Pengurai Peristiwa
  3. McAfee ePolicy Orchestrator 4.6.8 Server

Konfirmasi Tabel Sudah Diisi

Skrip yang mencantumkan 13 mengonfirmasi bahwa tabel EPOEvents dan tabel anak sedang diisi setelah seluruh proses selesai.

Daftar 13:Relokasi 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;

PASCA TUGAS PERUBAHAN

Ringkasan Tugas Pasca Perubahan

1 Tugas Custom_Purge EPO Events dibuat untuk menjaga jumlah peristiwa yang direkam dalam 100 hari. Sangat penting untuk memastikan pekerjaan ini selalu berhasil.

2 Ruang berlebih yang sebelumnya dialokasikan ke server basis data EPO dapat diklaim kembali, terutama drive I – saat ini 1 TB.

3 Pekerjaan pencadangan Custom_Daily_Backup dibuat selama perubahan. Cadangan yang dibuat oleh tugas ini akan menjatuhkan set cadangan ke I:/MSSQL/Backup/ . Sangat penting untuk mengubah jalur ini jika drive I akan dihapus dari sistem. Anda juga perlu menyimpan cadangan ini sesuai dengan Kebijakan Pencadangan Grup.

LAMPIRAN

LAMPIRAN I

DDL TABEL 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

LAMPIRAN II

ACARA EPO CUSTOM_PURGE PEKERJAAN

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. Membandingkan SQL, pembuat kueri, dan ORM

  2. Menggunakan ODBC dengan Salesforce dan Layanan Federasi Direktori Aktif (ADFS) Sistem Masuk Tunggal (SSO)

  3. Apa itu Basis Data? Pengertian, Jenis dan Komponen

  4. Model Basis Data untuk E-Commerce Bagian 1:Buletin

  5. Tutorial JOIN SQL dengan Contoh