Database
 sql >> डेटाबेस >  >> RDS >> Database

कार्यस्थल मुठभेड़:एक बड़े आकार के डेटाबेस से अंतरिक्ष को पुनः प्राप्त करना

परिचय

यह दस्तावेज़ 22 अप्रैल 2015 और 23 अप्रैल 2015 के बीच उत्पादन डेटाबेस पर किए गए रखरखाव के पीछे के चरणों, लिपियों और विचारधारा को रिकॉर्ड करता है। विवरण एक आवेदन के लिए विशिष्ट हैं, लेकिन सिद्धांत दूसरों के लिए उपयोगी हो सकते हैं जिन्हें उत्पादन में समान संचालन करने की आवश्यकता होती है। ।

पृष्ठभूमि

EPOEvents . तालिका के साथ डेटाबेस 1.44TB से अधिक हो गया था इस आकार के आधे से अधिक (792GB) की खपत। पूर्व में इस तालिका में 90 दिनों से अधिक पुरानी प्रविष्टियों को हटाने का प्रयास किया गया था। दुर्भाग्य से, यह व्यर्थ साबित हुआ। इसे प्राप्त करने के लिए निर्धारित कार्य किसी भी सत्र के दौरान कभी पूरा नहीं हो सका। इसका कारण डेटाबेस का खराब प्रदर्शन था।

चर्चा के बाद, संपूर्ण EPOEvents . को शुद्ध करने का निर्णय लिया गया तालिका को छोटा करके। आगे का निर्णय भविष्य में अपेक्षित डेटा वृद्धि के लिए डेटाबेस को सही ढंग से तैयार करना था।

विचाराधीन डेटाबेस सर्वर का विवरण नीचे दिया गया है:

SERVERNAME SVR-EPO-02
INSTANCE NAME SVR-EPO-02\ENG_AVSERVER
ओएस संस्करण Windows 2008 R2 Enterprise (SP1) 64-बिट
डीबी संस्करण Microsoft SQL Server 2008 R2 (SP1) 64-बिट
आईपी पता XX.XX.XX.XX
डेटाबेस नाम ePO4_SVR-EPO-02

ईपीओईवेंट टेबल

EPOEvents . को परिभाषित करने वाली स्क्रिप्ट तालिका परिशिष्ट I में प्रलेखित है।

यह उल्लेखनीय है कि इस तालिका का ऑटोआईडी कॉलम HIP8_EventInfo, HIP8_IPSEventParameter, और SCOR_EVENTS तालिकाओं के साथ विदेशी कुंजी संबंधों में है। इसने EPOEvents तालिका को छोटा करने के लिए उपयोग किए जाने वाले दृष्टिकोण को प्रभावित किया। सारांश विवरण नीचे दी गई तालिका में हैं:

यह जानकारी लिस्टिंग 1 में दिए गए कथन का उपयोग करके निकाली गई थी।

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

प्रक्रिया सारांश

परिवर्तन के दौरान प्रयुक्त प्रक्रिया का सारांश:

<उल प्रकार ="1">
  • पांच 200GB डिस्क परिनियोजित करें
  • ईपीओ एप्लिकेशन सेवाएं बंद करें
  • ईपीओ डेटाबेस का बैकअप लें
  • एक नया फ़ाइल समूह बनाएं
  • तालिका ईपीओईवेंट्स को छोटा करें
  • ईपीओईवेंट को नए फाइलग्रुप में ले जाएं
  • चाइल्ड टेबल पर विदेशी कुंजी फिर से बनाएं
  • ईपीओईवेंट तालिका परिभाषा स्क्रिप्ट करें
  • ईपीओ डेटाबेस का बैकअप लें
  • प्राथमिक फ़ाइल समूह में डेटा फ़ाइलों को सिकोड़ें
  • ईपीओ डेटाबेस का बैकअप लें
  • ईपीओ डेटाबेस छोड़ें
  • डिस्क J को प्रारूपित करें
  • ईपीओ डेटाबेस को मूव के साथ पुनर्स्थापित करें
  • TempDB को ड्राइव Q में स्थानांतरित करें
  • ईपीओ एप्लिकेशन सेवाएं प्रारंभ करें
  • पुष्टि करें कि ईपीओईवेंट पॉप्युलेट हो गए हैं
  • पांच 200GB डिस्क परिनियोजित करें

    सर्वर पर पांच नए ड्राइव तैनात किए गए थे। सर्वर पर सभी ड्राइव की पूरी सूची इस प्रकार है:

    ड्राइव उपयोग करें नया? टिप्पणी
    सी सिस्टम ड्राइव नहीं डिफ़ॉल्ट क्लस्टर आकार (4KB)
    डी एप्लिकेशन ड्राइव नहीं डिफ़ॉल्ट क्लस्टर आकार (4KB)
    मैं MSSQL डेटा (OLD) नहीं डिफ़ॉल्ट क्लस्टर आकार (4KB)
    जम्मू MSSQL लॉग नहीं SQL (64K) के लिए अनुशंसित क्लस्टर आकार
    एम MSSQL डेटा (FG_LARGE फ़ाइल समूह) हां SQL (64K) के लिए अनुशंसित क्लस्टर आकार
    N MSSQL डेटा (FG_LARGE फ़ाइल समूह) हां SQL (64K) के लिए अनुशंसित क्लस्टर आकार
    MSSQL डेटा (FG_LARGE फ़ाइल समूह) हां SQL (64K) के लिए अनुशंसित क्लस्टर आकार
    पी MSSQL डेटा (प्राथमिक फ़ाइल समूह) हां SQL (64K) के लिए अनुशंसित क्लस्टर आकार
    प्रश्न MSSQL TempDB हां SQL (64K) के लिए अनुशंसित क्लस्टर आकार

    सभी नई ड्राइवों को 64K क्लस्टर आकार का उपयोग करके स्वरूपित किया गया था, जैसा कि Microsoft द्वारा MS SQL सर्वर डेटा या लॉग फ़ाइलों वाले ड्राइव के लिए अनुशंसित किया गया था[1]। डेटाबेस का बैकअप लेने के बाद डिस्क J को भी पुन:स्वरूपित किया गया था।

    [1] पूरी चर्चा https://msdn.microsoft.com/en-us/library/dd758814.aspx

    पर उपलब्ध है।

    ईपीओ एप्लिकेशन सेवाएं बंद करें

    परिवर्तन की अवधि के दौरान डेटाबेस पर कोई अद्यतन नहीं सुनिश्चित करने के लिए सभी एप्लिकेशन सेवाओं को रोक दिया गया था। बंद की गई एप्लिकेशन सेवाएं (या पुष्टि की गई) इस प्रकार हैं:

    1. मैक्एफ़ी ई-पॉलिसी ऑर्केस्ट्रेटर 4.6.8 एप्लिकेशन सर्वर
    2. मैक्एफ़ी ई-पॉलिसी ऑर्केस्ट्रेटर 4.6.8 इवेंट पार्सर
    3. मैक्एफ़ी ई-पॉलिसी ऑर्केस्ट्रेटर 4.6.8 सर्वर

    ईपीओ डेटाबेस का बैकअप लें

    लिस्टिंग 2 में स्क्रिप्ट का उपयोग करके मौजूदा संरचना पर कोई कार्रवाई होने से पहले डेटाबेस का पहला बैकअप लिया गया था।

    लिस्टिंग 2: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'

    नया फ़ाइल समूह बनाएं

    FG_LARGE नामक एक नया फ़ाइल समूह लिस्टिंग 3 में स्क्रिप्ट के समकक्ष के साथ बनाया गया था। फ़ाइल समूह में जोड़ी गई सभी फ़ाइलों को 40GB प्रारंभिक आकार, 1G वृद्धि और 100GB अधिकतम आकार के साथ परिभाषित किया गया था।

    सूची 3:फ़ाइल समूह 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

    तालिका EPOईवेंट्स को छोटा करें

    लिस्टिंग 4 EPOEvents तालिका को सफलतापूर्वक छोटा करने के लिए आवश्यक कार्यों का पूरा सेट दिखाता है। स्क्रिप्ट में स्पष्टता के लिए नोट्स शामिल हैं।

    ध्यान देने योग्य मौलिक मुद्दा यह है कि एक विदेशी कुंजी संबंध में माता-पिता के रूप में भाग लेने वाली तालिका को छोटा करना असंभव है। यह संदर्भात्मक अखंडता का उल्लंघन करेगा। हटाना काम करेगा और संदर्भात्मक अखंडता को बनाए रखेगा क्योंकि विदेशी कुंजी को आमतौर पर ON DELETE CASCADE या ON DELETE SET NULL क्लॉज के साथ परिभाषित किया जाता है।

    लिस्टिंग 4:EPOEvents टेबल को छोटा करना और नए टेबलस्पेस में स्थानांतरित करना

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

    ईपीओईवेंट को नए फ़ाइलग्रुप में ले जाएं

    लिस्टिंग 5 में स्क्रिप्ट का उपयोग करके EPOEvents तालिका को FG_LARGE फ़ाइल समूह में ले जाया गया था।

    लिस्टिंग 5: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

    चाइल्ड टेबल पर विदेशी कुंजी फिर से बनाएं

    चरण 4.1.5 में पहचाने गए चाइल्ड टेबल पर फॉरेन कीज़ को लिस्टिंग 6 में स्क्रिप्ट के साथ फिर से बनाया गया।

    लिस्टिंग 6:EPOEvents टेबल को छोटा करना और नए फाइलग्रुप में स्थानांतरित करना

    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

    ईपीओईवेंट तालिका परिभाषा स्क्रिप्ट करें

    बैकअप के रूप में, यह EPOEvents तालिका के DDL के एक्स्ट्रेक्ट की स्क्रिप्टिंग के लिए आदर्श था। यह राइट-क्लिक करके और विकल्प चुनकर किया गया था स्क्रिप्ट तालिका के रूप में> इसके लिए बनाएं> नई क्वेरी संपादक विंडो एसएसएमएस [1] ऑब्जेक्ट एक्सप्लोरर से। परिणामी स्क्रिप्ट को .sql . में सहेजा जा सकता है फ़ाइल।

    ईपीओ डेटाबेस का बैकअप लें

    EPO डेटाबेस का दूसरा बैकअप अगले चरण (डेटाफ़ाइल सिकुड़ने) के लिए तैयार करने के लिए लिस्टिंग 7 में स्क्रिप्ट के साथ लिया गया था।

    सूची 7:ईपीओ डेटाबेस का दूसरा बैकअप

    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'

    प्राथमिक फ़ाइल समूह में डेटा फ़ाइलों को सिकोड़ें

    EPOEvents तालिका को छोटा करके खाली किए गए स्थान को पुनः प्राप्त करने के लिए सिकोड़ना आवश्यक है। इस मामले में भी यह महत्वपूर्ण था, क्योंकि डेटा फ़ाइलों को एक छोटी ड्राइव पर स्थानांतरित करने की आवश्यकता थी।

    डेटा फ़ाइलों को ड्राइव I से स्थानांतरित किया गया था - P ड्राइव करने के लिए एक 3 TB ड्राइव, एक 200 GB ड्राइव।

    प्राथमिक फ़ाइल समूह में तीन डेटा फ़ाइलों को तार्किक रूप से ePO4_SVR-EPO-01 नाम दिया गया था (~300GB), ePO4_SVR-EPO-02 (~500GB), और ePO4_SVR-EPO-03 (~400GB)।

    लक्ष्य सभी फाइलों को 40000 एमबी तक छोटा करना था। कार्य ने पांच से सात पुनरावृत्तियों की मांग की, प्रत्येक ने 50000 एमबी हटा दिया।

    सूचीकरण 8:प्राथमिक फ़ाइल समूह में डेटा फ़ाइलों को सिकोड़ना

    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

    ईपीओ डेटाबेस का बैकअप लें

    लिस्टिंग 5 . में स्क्रिप्ट का उपयोग करके EPO डेटाबेस का दूसरा बैकअप लिया गया था अगले चरण की तैयारी के लिए (मौजूदा डेटाबेस को छोड़कर)। स्क्रिप्ट लिस्टिंग 9 . में मौजूद है ।

    लिस्टिंग 9: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'

    ईपीओ डेटाबेस छोड़ें

    SSMS GUI का उपयोग करके डेटाबेस को हटा दिया गया था - डेटाबेस पर राइट-क्लिक करें और ड्रॉप-डाउन मेनू से "डिलीट" विकल्प चुनें। समतुल्य SQL लिस्टिंग 10 में है ।

    सूचीकरण 10:ईपीओ डेटाबेस छोड़ें

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

    डिस्क J को फ़ॉर्मैट करें

    इष्टतम I/O प्रदर्शन के लिए Microsoft द्वारा अनुशंसित 64K क्लस्टर आकार का उपयोग करते हुए यह चरण ड्राइव J को स्वरूपित करता है। यह कार्य पहले चरण 4.1.1 में परिनियोजित नई ड्राइव पर किया गया था।

    चित्र 3 फ़ॉर्मेट... डायलॉग बॉक्स में चयनित विकल्प को दिखाता है।

    ईपीओ डेटाबेस को मूव के साथ पुनर्स्थापित करें

    पुनर्स्थापना कार्रवाई तीन कारणों से आवश्यक थी:

    1. ड्राइव J को प्रारूपित करने के लिए जिसमें लेन-देन लॉग फ़ाइलें शामिल हैं (ऊपर के रूप में)।
    2. सिकुड़ने की प्रक्रिया के कारण होने वाले किसी भी विखंडन को दूर करने के लिए।
    3. डेटाबेस को नई ड्राइव में स्थानांतरित करने के लिए।

    लिस्टिंग 11 . में स्क्रिप्ट बहाल करने का काम करता है। ध्यान दें कि इस पुनर्स्थापना के लिए उपयोग किया गया बैकअप सेट चरण 4.1.8 में लिया गया अंतिम बैकअप है। साथ ही, देखें कि MOVE विकल्प P को ड्राइव करने के लिए PRIMARY Filegroup में डेटा फ़ाइलों को स्थानांतरित करने का कार्य करता है।

    सूचीकरण 11:ईपीओ डेटाबेस छोड़ें

    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'

    TempDB को ड्राइव Q में स्थानांतरित करें

    बड़े डेटाबेस के इष्टतम प्रदर्शन के लिए, एक समर्पित ड्राइव पर TempDB फ़ाइलों का पता लगाने की भी सिफारिश की जाती है।

    लिस्टिंग 9 में स्क्रिप्ट का उपयोग करते हुए, TempDB को Q ड्राइव करने के लिए स्थानांतरित किया गया था। ध्यान दें कि इस ऑपरेशन के दौरान अनावश्यक TempDB डेटा फ़ाइलों को हटा दिया गया था। TempDB डेटा फ़ाइलों की संख्या SQL सर्वर के लिए उपलब्ध भौतिक CPU की संख्या से मेल खाना चाहिए।

    लिस्टिंग 12: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

    ईपीओ एप्लिकेशन सेवाएं प्रारंभ करें

    SQL सर्वर इंस्टेंस की पुष्टि ठीक होने के बाद सभी एप्लिकेशन सेवाएं शुरू हो गईं। शुरू की गई एप्लिकेशन सेवाएं इस प्रकार हैं:

    1. मैक्एफ़ी ई-पॉलिसी ऑर्केस्ट्रेटर 4.6.8 एप्लिकेशन सर्वर
    2. मैक्एफ़ी ई-पॉलिसी ऑर्केस्ट्रेटर 4.6.8 इवेंट पार्सर
    3. मैक्एफ़ी ई-पॉलिसी ऑर्केस्ट्रेटर 4.6.8 सर्वर

    पुष्टि करें कि तालिकाएं आबाद हैं

    स्क्रिप्ट सूचीबद्ध कर रहा है 13 पुष्टि करता है कि पूरी प्रक्रिया पूरी होने के बाद तालिका EPOEvents और चाइल्ड टेबल को पॉप्युलेट किया जा रहा है।

    सूचीकरण 13: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;

    पोस्ट चेंज टास्क

    पोस्ट चेंज टास्क का सारांश

    1 कार्य Custom_Purge EPO Events घटनाओं की संख्या को 100 दिनों के भीतर कैप्चर करने के लिए बनाया गया था। यह सुनिश्चित करना महत्वपूर्ण है कि यह कार्य हमेशा सफल रहे।

    2 ईपीओ डेटाबेस सर्वर को पहले आवंटित अत्यधिक स्थान को पुनः प्राप्त किया जा सकता है, विशेष रूप से ड्राइव I - वर्तमान में 1 टीबी।

    3 एक बैकअप कार्य कस्टम_दैनिक_बैकअप परिवर्तन के दौरान बनाया गया था। इस कार्य द्वारा किए गए बैकअप, बैकअप सेट को I:/MSSQL/Backup/ . पर छोड़ देंगे . यदि ड्राइव I को सिस्टम से हटा दिया जाएगा तो इस पथ को बदलना आवश्यक है। समूह बैकअप नीति के अनुसार इन बैकअप को संरक्षित करना भी आवश्यक है।

    परिशिष्ट

    परिशिष्ट I

    EPOEVENTS TABLE 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

    परिशिष्ट II

    नौकरी CUSTOM_PURGE ईपीओ ईवेंट

    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. प्रिज्मा, डेटाबेस को कैसे साफ़ करें

    2. SQL में "Like" का उपयोग कैसे करें

    3. महीने के हिसाब से उत्पाद की बिक्री की तुलना करने के लिए SQL क्वेरी

    4. .NET में स्ट्रिंग्स के पहलू

    5. एआई सॉफ्टवेयर विकास और परीक्षण को कैसे बदलेगा