ডাটাবেসে অসামঞ্জস্য পৃষ্ঠাগুলি মেরামত করা হচ্ছে


8

আমাদের একটি এসকিউএল 2000 ডিবি রয়েছে। রাইড অ্যারে ব্যর্থতার কারণে সার্ভার ক্র্যাশ হয়েছে। এখন যখন আমরা ডিবিসিসি চেকডিবি পরিচালনা করি, আমরা একটি ত্রুটি পেয়েছি যে 9 পৃষ্ঠায় 27 ধারাবাহিক ত্রুটি রয়েছে।

আমরা যখন এই পৃষ্ঠাগুলিতে ডিবিসিসি পৃষ্ঠা পরিচালনা করি তখন আমরা এটি পাই:

Msg 8939, Level 16, State 106, Line 1
Table error: Object ID 1397580017, index ID 2, page (1:8404521). Test (m_freeCnt == freeCnt) failed. Values are 2 and 19.
Msg 8939, Level 16, State 108, Line 1
Table error: Object ID 1397580017, index ID 2, page (1:8404521). Test (emptySlotCnt == 0) failed. Values are 1 and 0.

যেহেতু নির্দেশিত সূচকটি অ-ক্লাস্টারযুক্ত এবং একটি অনন্য প্রতিবন্ধ দ্বারা তৈরি করা হয়েছে যার মধ্যে 2 টি কলাম রয়েছে, তাই আমরা সূচকটি ছাড়ার এবং পুনরুদ্ধারের চেষ্টা করেছি। এটি নিম্নলিখিত ত্রুটির ফলস্বরূপ:

CREATE UNIQUE INDEX terminated because a duplicate key was found for index ID 2. Most significant primary key is '3280'. 
The statement has been terminated. 

তবে চলছে

Select var_id,result_on
from tests
group by var_id,result_on
having count(*)>1

0 টি সারি প্রদান করে।

আমরা যা করার পরিকল্পনা করছি তা এখানে:

  • ডিবি-র একটি প্রাক-সার্ভার ক্র্যাশ অনুলিপি পুনরুদ্ধার করুন এবং ডিবিসিসি CHECKDB চালান
  • যদি এটি পরিষ্কার ফিরে আসে, তবে পুনরুদ্ধার না করে আবার পুনরুদ্ধার করুন
  • সমস্ত subecess TLOG ব্যাকআপ প্রয়োগ করুন
  • প্রোডাকশন অ্যাপটি বন্ধ করুন, একটি লেজ লগ ব্যাকআপ নিন এবং এটিও প্রয়োগ করুন
  • প্রোড ডিবি ফেলে দিন এবং নতুন করে পুনরুদ্ধার করা ডিবিটিকে নতুন করে তৈরি করার জন্য নতুন নাম দিন
  • প্রোড অ্যাপ শুরু করুন

কেউ কি এই পদ্ধতির গর্তগুলি ঘুষি করতে পারেন? হতে পারে, একটি ভিন্ন পদ্ধতির পরামর্শ? আমাদের যা প্রয়োজন তা ন্যূনতম ডাউনটাইম।

এসকিউএল 2000 ডিবি আকার 94 গিগাবাইটের টেবিলটিতে দুর্নীতিগ্রস্ত পৃষ্ঠাগুলিতে 460 মিলিয়ন + সারি ডেটা রয়েছে

সাহায্যের জন্য ধন্যবাদ.

রাজ


1
আমি আপনার পদ্ধতির পছন্দ। আমার কাছে যৌক্তিক. সম্ভবত ক্ষতিগ্রস্থ ডাটাবেসটি পাশাপাশি রাখুন, বীমা হিসাবে ...
ব্যবহারকার 24161

এছাড়াও, যখন জিনিসগুলি স্থির হয়ে যায়, আপনার 2008 বা 2008 এর আপগ্রেডের পরিকল্পনা করুন :-)
ব্যবহারকারী 24161

(এটি, 2005 বা 2008 আপগ্রেড)
ব্যবহারকারী 24161

একটি বৈধ এবং খুব উপযুক্ত পুনরুদ্ধারের পরিকল্পনা থাকার জন্য +1
অ্যান্ড্রু

উত্তর:


2

আপনার পুনরুদ্ধার সমাধানটি পাঠ্যপুস্তকের এগিয়ে যাওয়ার উপায়। ধরে নিই যে আপনার উপযুক্ত ব্যাকআপ রয়েছে এবং প্রদত্ত আপনি দুর্নীতিগ্রস্থ ডাটাবেসের জন্য লেনদেন লগটিকে ব্যাকআপ করতে পারেন, তবে আপনার কৌশলটি হ'ল পাঠ্যপুস্তকটি কার্যকর করতে হবে।

এগিয়ে যাওয়ার আগে আপনি কি কেবল প্রভাবিত টেবিলটি পুনরায় তৈরি করার সম্ভাবনা বিবেচনা করেছেন?

কখনও কখনও আপনি একটি করে প্রভাবিত টেবিলের একটি অনুলিপি তৈরি করে পালাতে পারেন

select *
into NewTableFromOld
from DamagedTable

তারপরে নতুনটির সাথে ক্ষতিগ্রস্থ টেবিলটি কেবল সরিয়ে / অদলবদল করুন, যথাযথ সীমাবদ্ধতা এবং সূচকগুলি যুক্ত করার কথা মনে রেখে।


উত্তরের জন্য ধন্যবাদ. আপনি দেখতে ভাল দেখতে চান, তবে উদ্বেগটি হ'ল, টেবিলটিতে 461 মিলিয়ন সারি ডেটা রয়েছে তা বিবেচনা করে, আমি যখন একটি সিলেক্ট * করব তখন উত্পাদনে কী প্রভাব ফেলবে? এটি কি কোনও লক এবং হিট পারফরম্যান্স অর্জন করবে না?

আপনি যদি (নোলক) ক্যোয়ারী ইঙ্গিত নং দিয়ে ব্যবহার করেন তবে তা নয়। তবে আপনি যাচাই করতে চাইতে পারেন যে উত্স এবং লক্ষ্য টেবিলের মধ্যে কোনও কিছুই বদলানো হয়নি যখন আপনি অনুলিপিটি নিয়েছেন। যদি আপনি অ্যাপ্লিকেশনটিকে পরিবর্তন করা থেকে বিরত না করেন তবে টেবিল তৈরির সময় সম্ভবত এটি প্রয়োজন হবে। এই জাতীয় অপারেশনে ডিস্ক কর্মক্ষমতা ওভারহেড থাকবে।
জন স্যানসোম

ব্যক্তিগতভাবে আমি প্রথমে এই পদ্ধতির চেষ্টা করব, আপনি এটি পরীক্ষার জন্য নলক বিকল্প দিয়ে করতে পারেন, আপনি প্রয়োজনীয় সময়টিও পরীক্ষা করতে পারেন। এটি যদি এটির মতো কাজ করে তবে আমি প্রক্রিয়াটি চলাকালীন কোনও পরিবর্তন না ঘটে তা নিশ্চিত করার জন্য আবার এটি করার সময় আমি ডিবিটিকে একক ব্যবহারকারী মোডে রেখে দেব। ডাউনটাইম এই পদ্ধতির সময় খুব কম হবে, যদি এটি কাজ করে।
বাল্ডি

আপনি যদি এটি করতে যাচ্ছেন তবে আমি প্রথমে টেবিলটি তৈরি করার পরামর্শ দেব (মূল টেবিলটি স্ক্রিপ্ট করে)। তারপরে "INSERT INTO NewTable SELECT" বনাম "নির্বাচন নির্বাচন করুন" ব্যবহার করুন আপনি একটি "নির্বাচন অন্তর্ভুক্ত" দিয়ে পারফরম্যান্স সমস্যার সমাধান করতে পারেন।
এসকিউএল

0

আমি প্রথমে ফাইল ফাইল করার জন্য ডেটা বাল্ক করার চেষ্টা করব এবং তারপরে এটি একটি নতুন টেবিলের মধ্যে ফিরে এসেছি। নির্বাচন করুন রেকর্ডের সংখ্যার জন্য উপযুক্ত (আইএমও) নয় ...

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.