এসকিউএল সার্ভার লেনদেন ফাঁস করেছে


9

আমার কাছে টিসিডি-র মাধ্যমে টিডিএসের মাধ্যমে প্রায় 50 টি ক্লায়েন্ট দ্বারা অ্যাক্সেস করা একটি ডাটাবেস রয়েছে যা লগ স্পেস ছেড়ে দিবে বলে মনে হয় না। প্রক্রিয়াগুলির সংখ্যা প্রত্যাশিত 50 এর আশেপাশে থাকে এবং তাদের মধ্যে কিছুগুলি দীর্ঘকাল বেঁচে থাকে (> 120 দিন)।

ডাটাবেসটিতে এখন 40 জিবি লগ স্পেস রয়েছে (এটিতে কেবল 14 জিবি ডেটা রয়েছে), 39 গিগাবাইট মুক্ত। ড্রাইভে স্পেস সীমাবদ্ধতার কারণে, আমি আরও যুক্তিসঙ্গত কিছুতে সঙ্কুচিত করতে চাই (10 জিবি-ইশ)। যখন আমি মৃত্যুদন্ড কার্যকর করি তখন DBCC SHRINKFILE('db_log', 10000)এটি একটি ত্রুটি প্রদান করে যে লগের শেষটি ব্যবহৃত হয়।

লগের শেষে অ্যাক্সেস মুক্ত করার জন্য, আমি নিম্নলিখিতগুলির সাথে একক ব্যবহারকারী মোডে ডাটাবেস স্থাপনের চেষ্টা করেছি:

ALTER DATABASE db SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
ALTER DATABASE db SET MULTI_USER
GO

তবে স্ক্রিপ্টটি নিম্নলিখিত বার্তাটি কয়েকবার বারবার ফিরে আসছে:

Nonqualified transactions are being rolled back. Estimated rollback completion: 100%.

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

প্রশ্ন: আমি কীভাবে আপত্তিকর প্রক্রিয়া বা স্ক্রিপ্টটি সনাক্ত করব বা লগটি প্রকাশ করা হচ্ছে না কেন?

sys.dm_tran_active_transactionsবোধগম্য উদ্দেশ্য সহ যুক্তিসঙ্গত 18 লেনদেন দেখানো হচ্ছে। sp_whoআমি যে প্রক্রিয়া সম্পর্কে সচেতন তা কেবলমাত্র সেইগুলি দেখায়।


এসকিউএল সার্ভার সংস্করণ:

Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) 
Apr  2 2010 15:48:46 
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)

সার্ভার সংস্করণ:

উইন্ডোজ সার্ভার ২০০৮ আর ২ এক্স --৪ - ডাটাসেন্টার ৪ টি ভিসিপিইউ, ১GB জিবি মেমরি, ডেটা এবং লগের জন্য ডিস্কের মধ্য দিয়ে যান, ওএস ডিস্কটি ভিএইচডি

হাইপার-ভিতে (উইন্ডোজ সার্ভার 2008 আর 2 এসপি 1 এক্স 64 ডেটাসেন্টার) ডুয়াল ইন্টেল এক্স 5650 (6 কোর, 2.67GHz এ 12 থ্রেড) 72 গিগাবাইট মেমরি

হাইপারভাইজারের কেবল তিনটি ভিএম রয়েছে এবং এটি উচ্চ সংস্থান ব্যবহার দেখায় না। এসকিউএল সার্ভার ভিএম লোডের আওতায় ~ 40% সিপিইউ এবং 99% ক্যাশে হিট দেখায়।


আমি কোনও স্কিল ডিবি না কিন্তু আপনি কি লগ ব্যাকআপ করেছেন? serverfault.com/questions/54958/...

@ রেন, হ্যাঁ, আমার এটি উল্লেখ করা উচিত ছিল, তবে ডাটাবেসে প্রতিদিন একটি পুরো ব্যাকআপ এবং প্রতি ছয় ঘন্টা একটি লগ ব্যাকআপ থাকে।

হাই মিচ, সম্ভবত এই সমস্যাটির সাথে সম্পর্কিত নয়, তবে এটি যদি দায়ী হত তবে অবাক হত না। আপনার সংস্করণটি আরটিএম (উত্পাদনে প্রকাশ করুন)। মাইক্রোসফ্ট, অন্যান্য কার্যত সমস্ত সফ্টওয়্যার বিক্রেতাদের মতো পণ্যের বড় ছোট ত্রুটিগুলি সহ পরবর্তী বড় রিলিজ প্রকাশের দিকে চাপ দেবে। [লিংক] মাইক্রোসফট / এএন / ইউনস / ডাউনলোড /ডেটেলস.এএসপিএক্স?id=44271 এটি এসকিউএল ২০০৮ আর 2 এর সর্বশেষ সার্ভিস প্যাকের লিঙ্ক। সুরক্ষা, বাগ ফিক্স এবং পারফরম্যান্স কারণে আপনার সার্ভারগুলিকে টু ডেট রাখার সেরা।
গুডস

উত্তর:


4

একটি এসকিউএল কমান্ড রয়েছে যা ওপেন লেনদেনগুলি দেখায়। (ডিবিসিসি ওপেনট্রান)

http://msdn.microsoft.com/en-us/library/ms182792.aspx

সর্বাধিক প্রাচীন সক্রিয় লেনদেন এবং সর্বাধিক প্রাচীন বিতরণকৃত এবং ননবিস্ট্রিবিউট প্রতিলিপি লেনদেনের বিষয়ে নির্দিষ্ট ডেটাবেসের মধ্যে তথ্য প্রদর্শন করে। সক্রিয় লেনদেন থাকলে বা ডাটাবেজে প্রতিলিপি সম্পর্কিত তথ্য থাকলেই ফলাফলগুলি প্রদর্শিত হয়


4

যে কারণেই হোক না কেন, লগ ফাইলটি খোলার মতো কিছুই ছিল না। একাধিক লগ ব্যাকআপ (> 10) চালিয়ে লগের শেষটি প্রকাশিত হয়েছিল এবং সঙ্কুচিত হতে পারে। নিশ্চিত কেন না ... তবে এটি কাজ করেছিল।

backup log db to disk = '\\l-backup1\drop\2012-12-23_db_log.bak' with stats = 1
go 15
dbcc shrinkfile('db_log', 10240)
go

3

আমি যদি আপনার প্রশ্নটি সঠিকভাবে বুঝতে পারছি তবে 39 জিবি ফ্রি সহ আপনার 40 জিবি লেনদেন লগ আছে? লগটি একটি বৃত্তাকার কাঠামো, যা ছোট ভার্চুয়াল লগ ফাইলগুলি নিয়ে গঠিত। প্রতিবার কোনও ভিএলএফ পূর্ণ হলে এসকিউএল পরবর্তী ভিএলএফ ব্যবহার শুরু করে। (ভিএলএফগুলি ফাইলে রয়েছে ঠিক একই ক্রমে নয়)। আপনি লগ ফাইলটি সঙ্কুচিত করার সময় এটি লগের সমাপ্তি থেকে মুক্ত স্থান প্রকাশ করে। লগের সক্রিয় অংশটি যদি শেষে হয় তবে কোনও স্থান মুক্ত করা যায় না, যদি এটি মাঝখানে থাকে তবে আপনি কেবল কিছু স্থান পুনরায় দাবি করতে সক্ষম হবেন। ডিবিসিসি লোগিনএফও আপনাকে লগের সমস্ত ভিএলএফ এবং একটি স্ট্যাটাস দেখিয়ে দেবে যা ভিএলএফ বর্তমানে কোনও সক্রিয় লগ রয়েছে showing আমি বিশ্বাস করি যে স্থিতি 2 সক্রিয় এবং 0 টি নিষ্ক্রিয়। আমি নিশ্চিত গুগল প্রয়োজনে আরও তথ্য সরবরাহ করতে পারে।

আপনার সমস্যাটি যদি সক্রিয় অংশটি বর্তমানে শেষ পর্যায়ে থাকে তবে আপনার সেরা বাজিটি এটি আবার শুরুতে ঘূর্ণায়মান না হওয়া পর্যন্ত অপেক্ষা করা উচিত, তারপরে লগটি সঙ্কুচিত করুন। এটি আশ্চর্যজনক পরিমাণ সময় নিতে পারে, ধৈর্য ধরুন। এটা সেখানে পাবেন।
এও মনে রাখবেন যে যদি কোনও ভিএলএফ এর কোনও অংশ বর্তমানে সক্রিয় থাকে তবে পুরো ভিএলএফকে সক্রিয় রাখা হয়।

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

ভিএলএফ সম্পর্কিত আরও তথ্য এখানে কিম্বারলি ট্রিপস ব্লগ পোস্টে পাওয়া যাবে


DBCC LOGINFOকমান্ডের জন্য আপনাকে ধন্যবাদ , আমি সে সম্পর্কে অজ্ঞাত ছিলাম। এটি বলা হচ্ছে, আমি লগের কাঠামো সম্পর্কে সচেতন এবং ফাইলটিকে সংক্ষেপে সঙ্কুচিত করার বিষয়টি বিবেচনা করি না। উল্লিখিত হিসাবে, আমরা কেবলমাত্র আমাদের বর্তমান ব্যাকআপ স্ট্রাকচারে প্রায় 1 জিবি লগ ব্যবহার করি এবং আমি কিছু মুক্ত স্থান পুনরায় দাবি করতে চাই। সমস্যাটি হ'ল লগের শেষে লগ স্পেসটি কয়েক সপ্তাহ অপেক্ষা করার পরেও প্রকাশ করা হচ্ছে না। এই সময়কালে, ডাটাবেসটিতে অনেকগুলি পূর্ণ এবং লগ ব্যাকআপ থাকে যা আমাকে বিশ্বাস করতে পরিচালিত করে যে প্রাকৃতিক চক্রকে আটকাচ্ছে।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.