بایگانی

بایگانی سپتامبر

مقایسه فنی مهم‌ترین بانک‌های اطلاعاتی جهان Oracle و SQL Server

اشاره :
شرکت مایکروسافت مدعی است که ابزارهای جدیدی برای مدیران بانک‌های اطلاعاتی یا همان DBAها در نسخه جدید SQL Server 2005 قرار داده است که بسیار خوب توانسته است مشکلات نسخه قبلی آن را مرتفع نماید، اما جالب اینجا است که همه امکاناتی که SQL Server 2005 به تازگی برای DBAها فراهم کرده است، از نسخه Oracle 8i در نرم‌افزار اوراکل موجود بوده است.

درباره نصب این دو نرم‌افزار باید گفت که نصب اوراکل از SQL Server هنوز بسیار مشکل‌تر است و کار کردن با آن سخت‌تر؛ و شاید این دلایل باعث می‌گردد برخی از برنامه‌نویسان به سمت SQL Server بروند. DBA شدن در بانک‌اطلاعاتی SQL Server کار سختی نیست. کافی است مدتی با آن نرم‌افزار کار کرده باشید، و چند ماهی تجربه داشته باشید. ولی DBA شدن حرفه‌ای در اوراکل کار بسیار دشواری است.

با نگاهی به این دو بانک اطلاعاتی می‌توان به این نکته رسید که درست است که SQL Server ۲۰۰۵ بسیار کارآمد است و پیشرفت‌های زیادی نسبت به نسخه قبلی خود داشته است، اما در برنامه‌های پیچیده یا سیستم‌های ناهمگون، و اگر از پلتفرم‌های متفاوت استفاده شود،‌ نمی‌تواند جوابگوی نیازها باشد و در نتیجه اوراکل گزینه مناسب‌تری خواهد بود، ولی در صورتی که با برنامه‌های کوچک و متوسط سروکار دارید، SQL Server می‌تواند راه‌حل خوبی باشد.

از لحاظ قیمت (البته نه در ایران که اکثراً قانون کپی‌رایت را رعایت نمی‌کنند) قیمت SQL Server کمتر از اوراکل است و سرویس‌های ارائه شده توسط SQL Server را می‌توان در صورت لزوم خریداری نمود، ولی اوراکل تقریباً شما را از تمام چیزهایی که در بانک‌های اطلاعاتی می‌خواهید، بی‌نیازمی‌نماید؛ البته بهای آن گران است.

مقدمه

بدون‌شک می‌توان گفت که بانک‌های اطلاعاتی اوراکل و SQL Server، از مهم‌ترین بانک‌های اطلاعاتی امروز به شمار میآیند. این سؤال که کدام یک از این دو از دیگری بهتر است، ممکن است فکر بسیاری از برنامه‌نویسان و شرکت‌های تولید کننده نرم‌افزار را مشغول کرده باشد.

از طرفی مایکروسافت، به عنوان غول نرم‌افزاری ادعا می‌کند که SQL Server از اوراکل‌ ساده‌تر و بهتر است. اوراکل هم از سوی دیگر می‌گوید محصول او از خیلی جهات بر SQL Server برتری دارد.

این مقاله سعی دارد به سؤالات شما در مورد تفاوت‌های فنی این دو بانک اطلاعاتی تا حدی جواب دهد.  در ابتدای این مقاله معماری این دو بانک اطلاعاتی با هم مقایسه می‌گردد، سپس کامپوننت‌های شبکه هر دو بانک اطلاعاتی با یکدیگر مقایسه می‌شوند.

در این مقاله امکانات مرتبط با کارایی پایگاه‌های اطلاعاتی‌ (Performance)، ابزار (Utility) و Replication در بانک‌های اطلاعاتی بسیار بزرگ یا همان VLDB یا Very Large Data Bases و OLTP یا Online Transaction Processing مورد بررسی قرار خواهند گرفت و ابزارهای جدید SQL Server 2005 که در حقیقت سعی دارد با اوراکل رقابت کند، مورد بررسی قرار خواهند گرفت‌.‌

معماری بانک اطلاعاتی

در اوراکل هر دیتابیس شامل تمامی امکانات پایگاه رابطه Relational Database ،Instance (پروسه‌های پایگاه داده‌های اوراکل و بافرها، فایل‌های تنظیمی مانند config.ora و init.ora، لوگ‌های بازگشت به حالت قبلی یا Redo Logs؛ SYSTEM Teblespace و دیگر انتخاب‌های دلخواه است.

در نسخه جدید SQLServer، دیتابیس در واقع به گروهی از اسکیما (Schema)های پایگاه داده گفته می‌شود که به صورت فیزیکی در فایل‌ها ذخیره می‌شوند. دیتابیس‌ها به دو صورت تعریف شده از طرف کاربر (user defined) و تعریف شده از طرف سیستم (system defined) تقسیم می‌شوند.

در SQL Server یک نمونه یا Instance می‌تواند چندین دیتابیس را پشتیبانی نماید و در هر کامپیوتر چندین Instance می‌تواند با هم کار کند.

وقتی SQL Server را راه‌اندازی می‌کنید، دیتابیس‌هایی همچون MD یا Msdb database، Model Database (برای پشتیبانی کردن Agentها) و Tempdb Database (پایگاه اطلاعات موقت مانند پایگاه موقت اوراکل OracleTemp Tablespace؛ البته با این تفاوت که در SQL Server خود کاربران می‌توانند این پایگاه‌ها را درست کنند، ولی در اوراکل این امکان وجود ندارد)، به صورت پیش‌فرض ساخته می‌شوند.

در SQL Server برای این‌که بتوانیم اطلاعات خود را به صورت فیزیکی غیرمتمرکز (Distribute) نگه‌داریم، هر دیتابیس می‌تواند از چندین Filegroup پشتیبانی نماید. با این کار می‌توان به راحتی از اطلاعات کپی پشتیبان گرفت.  همان‌طور که در شکل ۱ مشاهده می‌کنید، در SQL Server، دیتابیس‌ها در واقع همان کار tabalespaceها در اوراکل را دارند.

شکل ۱

اگر به شکل ۱ نگاه کنید، می‌بینید که در هر دو بانک‌ اطلاعاتی، کاتالوگ سیستم وجود دارد. هر پایگاه اطلاعاتی یا دیتابیس در اوراکل یک سیستم کاتالوگ مرکزی یا دیکشنری داده ‌‌(Data Dictionary) را در قسمت SYSTEM Tablespace اجرا می‌کند، ولی در SQL Server 2005 هر دیتابیس سیستم کاتالوگ خود را درست می‌کند.

این سیستم کاتالوگ اطلاعاتی همچون اشیای پایگاه داده (مانندTable ،View و Procedure)، اطلاعات کاربران و دسترسی‌های آن‌ها، Constraintsها، User-Defined data type و Snapshot definition را شامل می‌شود.

البته اطلاعاتی همچون اسامی دیتابیس‌ها، اطلاعات سرور، مدیریت پیغام‌ها و Stored Proceduresهای سیستم درMaster Database وجود دارند.

نکته اینجاست که  SQL Server 2005 ،objectهای سیستم در این Master Database قرار نمی‌گیرند. این  آبجکت‌ها در دیتابیس‌های مخفی سیستم به نام resource database یا پایگاه اطلاعات منابع سیستم ذخیره می‌گردند.

در واقع‌ سیستم کاتالوگ‌ها در SQL Server 2005 منابعی هستند برای استخراج اطلاعات دیتابیس‌ها و این کاتالوگ‌ها را کاربران نیز می‌توانند مشاهده کنند.

برای حصول اطمینان از کارایی و سلامت سرور در DMV، SQL Server 2005 یا Dynamic Management Views استفاده می‌شوند؛ درست شبیه اوراکل که از viewهای $ V برای کنترل کارایی استفاده می کند.اجزای تنظیم کننده شبکه

شکل ۲

شکل ۲ ساختار اجزای تنظیم کننده شبکه در این بانک‌های اطلاعاتی را نشان می‌دهد. در اوراکل  کامپوننتی به نام Oracle Net Service وجود دارد که عامل ارتباطی سرور اوراکل با کلاینت‌های آن است.

اوراکل این کار را با استفاده از پروتوکل TNS یا Transparent Network Substare انجام می‌دهد، اما در SQL Server این کار توسط پروتکل‌های شبکه موجود در کلاینت و سرور انجام می‌گیرد.

البته در  SQL Server 2005  فناوری جدیدی به نام SNAC یا SQL Server Native Client، معرفی گردیده که در واقع ترکیبی است از ODBC و OLEDB در یک تابع کتابخانه‌ای. SNAC توانایی پشتیبانی TDS یا Tabular Data Stream و Net Lib را برای پروتکل‌های گوناگون در SQL Server دارد.
ساختار فیزیکی و منظقی ذخیره اطلاعات

شکل ۳ نگاهی مقایسه‌ای دارد به دو بانک اطلاعاتی اوراکل و SQL Server از لحاظ ساختار اطلاعاتی. همان طور که در این شکل می‌بینید، در SQL Server اندازه صفحات (۸kb، (page size است که واحد پایه ورودی/ خروجی به شمار می‌رود.

هر صفحه فقط متعلق به یک آبجکت، مانند data ،index ،GAM  و.. است. SQL Server برای افزایش کارایی این صفحات آن‌ها را در دسته‌های هشت‌تایی قرار می‌دهد که به آن Extent می‌گوییم. این Extentها می‌توانند به چند آبجکت متفاوت تعلق داشته باشند.

شکل ۳

هر Extent  که تمام صفحاتش آبجکت‌های مانند هم داشته باشد Uniform نامیده می‌شود و به Extentهایی که آبجکت‌های یکسانی ندارند، Mixed می‌گویند.

SQL Server در دیتابیس‌های خود از Filegroupها استفاده می‌کند تا کنترل فضاهای فیزیکی جداول و ایندکس‌ها را در اختیار کامل داشته باشد. این Filegroupها از یک یا چند فایل تشکیل شده‌اند و اطلاعات موجود در آن می‌تواند در تمام فایل‌های آن Filegroup ذخیره شود.

با استفاده از Filegroup می‌توان جداول بزرگ را در چند فایل ذخیره نمود و از این طریق کارایی ورودی/ خروجی را بالا برد، می‌توان عملیات کپی پشتیبان و بازآوری جداول را انجام داد و داده‌هایی مانند تصویرو فایل‌های متنی بزرگ را در فایل‌های جدا ذخیره نمود.

برخلاف SQL Server، بانک اطلاعات اوراکل از Tablespaceهایی تشکیل شده است که خود از Data File تشکیل شده‌اند. این Data Fileها در واحدهایی به نام Block طبقه‌بندی می‌شوند که مدیر بانک اطلاعاتی (DBA) می‌تواند اندازه آن را وقتی که در حال ساخت دیتابیس است تعیین کند. برخلاف SQL Server، در اوراکل وقتی یک شیء در Tablespace تولید می‌شود، کاربر می‌تواند فضای آن را مشخص کند.

مقایسه SQL Server 2005 و Oracle 10g

اگر چه SQL Server 2000 یکی از قوی‌ترین بانک‌های اطلاعاتی است و خیلی از شرکت‌ها و سازمان‌های بزرگ امروزه از آن به عنوان پایگاه داده‌های خود استفاده می‌کنند، چند محدودیت هم دارد. یکی از محدودیت‌های SQL Server 2000 در طریقه قفل کردن یا Locking Strategy است.

در MS SQL 2000 مانند اوراکل می‌توان دسترسی همزمان به پایگاه را محدود کرد و آن را به اصطلاح قفل نمود.  ولی در MS SQL 2000 امکان Deadlock خیلی زیاد است؛ مخصوصاً در CTF یا Correct Transactional Flows.

از طرف دیگر، اعمال تغییر در بانک‌های  اطلاعاتی  به صورت آنلاین یکی دیگر از محدودیت‌های آن است. البته با استفاده از DBCC INDEXDEFRAG در SQL Server 2000 می‌توان قسمتی از ایندکس‌ها را به صورت آنلاین تغییر داد، ولی نه به صورت کامل.

(البته  این مشکل در  SQL Server 2005 تا حدی حل شده است). در اوراکل از نسخه ۱/۸ تا به حال، امکان تغییر و جابه‌جایی جداول و ایندکس‌ها وجود دارد؛ بدون این‌که به exclusive lock نیاز داشته باشیم. البته ناگفته نماند که نسخه‌های ۲/۹ اوراکل در این قسمت دارای اشکالات و باگ‌هایی نیز بوده‌اند، ولی این اشکالات در نسخه آخر اوارکل برطرف شده است.

در ادامه، ساختار و امکانات هر دو بانک‌اطلاعاتی Oracle 10g و SQL Server 2005 با یکدیگر مقایسه می‌گردند.

مدیریت بانک اطلاعاتی

SQL Server 2005 مانند دیگر محصولات مایکروسافت قسمت مدیریت ساده و شکیلی دارد که می‌توان با آن به راحتی کار کرد و با استفاده از خط دستور در SQLCMD، ابزار مدیریتی DAC یا‌ Dedicated Administrator Connection را اجرا نمود. همچنین می‌توان از قابلیت Policyها برای کاربران و صاحبان بانک‌های اطلاعاتی استفاده نمود.

گذشته از پیچیدگی‌های موجود در اوراکل، قابلیت‌های مدیریتی آن بسیار بیشتر از MS SQL است. اوراکل سیستم رمزدهی بسیار قدرتمندی دارد که از نسخه ۷ به بعد همراه آن بوده است. در اوراکل می‌توان امکان ارتباط با User و سپس با Schema خاص را به راحتی امکانپذیر نمود.

مثلاً  فرض کنید که با کاربر Sys2 به اوراکل متصل هستید و می‌خواهید روی DB2 Schema  کار کنید. کافی است دستور زیر را وارد کنید:
;ALTER SESSION SET CURRENT_SCHEMA=DB2

سیستم LOCKING

یکی از قابلیت‌هایی که در نسخه جدید SQL Server به آن اضافه شده است، قابلیت SI یا Snapshot Isolation است که در حقیقت قابلیت نسخه‌برداری از ردیف (row)های جداول است. با این کار در موقع بروزآوری جداول، امکان انتخاب همزمان اطلاعات آن جدول نیز وجود دارد.

در اوراکل چیزی شبیه این مکانیزم وجود دارد که به آن Oracle Flashback Query می‌گویند. البته بین این دو مکانیزم تفاوت‌هایی نیز وجود دارد: اوراکل از Undo Segment برای برگشت به رکورد قبلی استفاده می‌کند. در صورتی که SQL Server 2005 از TempDB استفاده می‌کند.

MetaData در اوراکل مانند جداول مدیریت می‌گردد. در نتیجه در زمان اجرای درخواست‌ها چند DDL یا Data Definition language می‌توانند به صورت همزمان به فعالیت مشغول باشند، ولی در SQL Server 2005، فعالیت DLLها مستقیماً روی جداول انجام می‌پذیرد.

در اوراکل عملیات Locking در DB Block انجام می‌پذیرد، ولی در SQL Server این کار در هر ردیف جدول انجام می‌شود. البته مایکروسافت ادعا می‌کند که این کار باعث افزایش سرعت و کارایی جداول می‌گردد، ولی وقتی سرعت و کارایی آن را با اوارکل مقایسه می‌کنیم، می‌بینیم که هر دو  از کارایی یکسانی برخوردارند.

تغییر ساختاری  آنلاین

همان‌طور که قبلاً بحث شد، قبل از نسخه جدید SQL Server 2005 تنها از طریق DBCC Indexdefrag می‌توانستیم مثلاً ایندکس را عوض کنیم (البته باید ازExclusive lock  استفاده می‌کردیم)، ولی اکنون این مشکل حل شده است و می‌توان همزمان با بازسازی چند ‌DDL را نیز اجرا نمود.

در اوراکل می‌توان حتی تمام ساختار جداول و ایندکس‌ها را بدون Exclusive lock تغییرداد. البته برای اتمام عملیات باید از Momentary lock استفاده شود.

Partitioning و Clustering

نسخه جدید SQL Server به تازگی قابلیت جداسازی فیزیکی جداول و ایندکس‌ها را پیدا کرده است. در اوراکل قابلیت Partitioning به چند صورت امکانپذیر است و DBA می‌تواند بر اساس range ،list و hash این کار را انجام دهد.

حتی می‌توان این کار را در دو رده انجام داد. مثلاً می‌توانیم جدولی را به دو قسمت براساس list جداسازی کنیم و هر کدام از قسمت‌ها را بر اساس hash دوباره جداسازی نماییم. این قابلیت اوراکل را می‌توان در جداولی که رکوردهای زیادی دارند، به کار برد. البته این قابلیت در SQL Server 2005 وجود ندارد، ولی می‌توان آن را شبیه‌سازی نمود.

SQL Server 2005 در Partitioning از قابلیتی مانند اوراکل برخوردار نیست. با این حال راه‌حل ساده‌تری را ارائه می‌کند. در SQL Server 2005 می‌توان با استفاده از UDF یا User Defined function این کار را انجام داد.

در مورد Clustering ،SQL Server 2005 پشتیبانی خوبی دارد، ولی طراحی و مدیریت این کار سخت است و کارایی زیادی نیز ندارد. از طرف دیگر اوارکل RAC/GRID را در نسخه ۱۰g ارائه کرده است که می‌توان از آن به عنوان امتیازی مسلم در مقابل SQL Server 2005 نام برد. اوراکل همچنین از سیستمی جدید به نام ASM یا Automatic Storage Management استفاده می‌کند که در Clustering مورد استفاده قرار می‌گیرد.

ایندکس و Tuning

ساختار مرتب‌سازی و ایندکس در SQL Server 2005 هنوز بر اساس BTree است و در مقابل indexing قدرتمند در اوراکل ساختاری نسبتاً دارد. اوراکل هم از BTree استفاده می‌کند، ولی از سیستم indexing به نام Bitmap نیز هم استفاده می‌کند که در جست‌وجوی ستون‌هایی با انتخاب کم بسیار خوب عمل می‌کند.

اضافه بر این اوراکل از Oracle key based cluster نیز در ایندکس استفاده می‌کند که کارایی بانک‌اطلاعاتی در انتخاب رکوردهایی انتخابی از چند جدول مرتبط با هم با ستون‌های مشابه را بالا می‌برد.

در اواکل و SQL Server هر دو می‌توان برای Functionهایی که روی ستون‌های جدول است، ایندکس درست کرد و در هر دوی آن‌ها می‌توان MV یا Materialized view تهیه نمود. MVها در حقیقت viewهای آماده هستند که می‌توان از آن به جای متصل کردن چند جدول استفاده کرد.

SQL Server 2005 در مقایسه با  اوراکل ۱۰g، در aggregation و functionها محدودیت‌هایی دارد. مثلاً در index view نمی‌توانیم از Distinct ،NOT و … استفاده کنیم و امکان مثلاً Sum کردن نیست.

کپی پشتیبان و بازیابی اطلاعات

همان‌طور که قبلاً نیز اشاره شد در نسخه‌های قبلی SQL Server نمی‌توانستیم به صورت آنلا‌ین از اطلاعاتمان کپی بگیریم، ولی در نسخه جدید SQL Server 2005 مدیران بانک‌های اطلاعاتی می‌توانند به راحتی عملیات کپی و بازیابی اطلاعات را به صورت آنلاین انجام دهند.

در حالی که سرور در حال کار کردن است. اوراکل نیز  ساختاری شبیه این را با استفاده از Tablespaceها انجام می‌دهد. البته در Tablespaceهای اوراکل نمی‌توان اطلاعات قبلی را در Tablespace بازیابی نمود و از آن‌جایی که در هر Tablespace یک Metadata وجود دارد، این Tablespaceها نمی‌توانند کامل باشند.

البته اوراکل دارای ابزار بازیابی اطلاعات کاملی است و می‌تواند با کمک گرفتن از Redo logها این کار را آسان کند.
اوراکل با استفاده از logical dump‌هایی که می‌سازد، می‌تواند مشکلی که باعث نیاز به بازیابی می‌شود را  شناسایی کند. البته SQL Server هم ابزارهایی مانند DBCC PAGE و DBCC LOG دارد که مانند ابزارهای اوراکل عمل می‌کند.

انتقال و‌ ورود اطلاعات (Export  and  Import)

یکی از امکانات جدید Oracle ۱۰ g برای انتقال یا صادر کردن اطلاعات به data pump معروف است. data pump ساختاری binary دارد. اوراکل این کار را توسط دو گزینه که برای صادر و دو گزینه برای وارد کردن اطلاعات دارد، انجام می دهد. این دو گزینه exp/data و imp/data هستند.

اضافه بر این، در اوراکل ابزار sqlldr نیز وجود دارد که اختصاصاً برای import کردن اطلاعات متنی به کار می‌رود. از طرف دیگر SQL Server2005 دارای دو گزینه برای export و import است؛ به نام‌های bcp و Bcp .DTS می‌تواند اطلاعات را (به صورت متنی) import یا export  کند و حتی می‌تواند اطلاعات را به فرمتی ذخیره کند که بانک‌های اطلاعاتی دیگر نیز بتوانند از آن استفاده کنند.

DTS نیز یکی از پر سرعت‌ترین ابزارهای انتقال اطلاعات در SQL Server است که در مقایسه با اوراکل بسیار سریع‌تر و کار با آن آسان‌تر می‌باشد. اوراکل نیز در نسخه جدید خود از ابزار ‌WisdomForce FastReader استفاده می‌کند که می‌تواند با سرعت زیاد کار export و import را انجام دهد و اطلاعات را با فرمت متنی آماده سازد. از این ابزار می‌توان برای انتقال اطلاعات بین اوراکل و بانک‌های اطلاعاتی دیگر مانند MS SQL ،۲DB ،Sybase استفاده نمود.

امکانات موجود برای برنامه‌نویس‌ها
یکی از امکاناتی که اوراکل در اختیار برنامه‌نویسان قرار می‌دهد، امکان استفاده از Exception Handling است که توسط PL/SQL قابل دسترسی است. در SQL Server 2005 نیز این امکان توسط Transcat-SQL مهیا شده است.

در مبحث Queuing ،SQL Server 2005 ابزاری به نام Server Broker دارد که می‌تواند امکان استفاده از Queing را برای برنامه‌نویسان فراهم سازد، اما در اوراکل ابزاری قوی به نام Oracle Advanced Queuing وجود دارد که کار Queing را به صورت کامل انجام می‌دهد.

SQL Server 2005 می‌تواند کمک بیشتری به برنامه‌نویسان بکند؛ زیرا از NET. استفاده می‌کند، ولی بر خلاف آن، هسته اوراکل از جاوا درست شده است و مستقیماً فقط می‌تواند توسط PL/SQL اجرا شود. در نتیجه در SQL Server 2005 می‌توانیم به صورت مستقل از دستورات NET. استفاده کنیم.

از طرف دیگر از آنجا که جاوا هسته اوراکل را تشکیل می‌دهد، نگهداری آبجکت‌های جاوای درون اوراکل درست مانند نگهداری یک سرور جاوا می‌باشد، ولی SQL Server 2005 تنها در برخی قسمت‌ها مانند اشکال‌یابی از NET trigger. استفاده می‌کند و حجم سنگینی ندارد.

امکانات ویژه  SQL Server 2005

- ‌SQL Server ۲۰۰۵ :Replication ابزار Replication بسیار قدرتمندی دارد که می‌تواند از اوراکل به SQL Server یا بلعکس Replication انجام دهد.

- Notification: در SQL Server 2005 سرویس Notification یکی از سرویس‌هایی است که می‌توان با آن در ‌Alertهایی مانند Stock Market استفاده نمود.

- Reporting Services: یکی از امتیازات SQL Server 2005 در مقایسه با اوراکل، داشتن سرویس گزارش‌های داخلی است که با استفاده از آن می‌توان انواع گزارش‌ها را استخراج نمود. البته اوراکل هم دارای Oracle IAS است که کار گزارش‌گیری را حتی قوی‌تر از SQL Server انجام می‌دهد، ولی مانند SQL Server 2005 در داخل بانک اطلاعاتی نیست و به صورت خارجی عمل می‌کند. همچنین خرید آن نیز هزینه زیادی خواهد داشت.

- Identity: در اوراکل نمی‌توان به صورت خودکار کلید اصلی یا Primary key را تعریف کرد. در صورتی در SQL Server2005  این امکان وجود دارد. البته اوراکل دارای Sequence است، ولی نگهداری این Sequenceها توسط مدیر سیستم کار آسانی نیست.

امکانات ویژه ‌Oracle 10g

- Auditing: در اوراکل این کار با استفاده از پارامتر جدید audit_trail=db_extended, init.ora انجام می‌پذیرد که می‌توان از تمامی جست‌وجوها به همراه مقادیر ورودی هر یک از آن‌ها اطلاعات ذخیره کرد. این کار در SQL Server2005 تنها با استفاده از Trace امکانپذیر است. آن هم نمی‌تواند مقادیر Bind شده اطلاعات را نشان دهد و استفاده از آن نیز می‌تواند کارایی سرور را تا حد زیادی پایین بیاورد.

- Logminer: در‌ اوراکل ابزاری به نام Logminer وجود دارد که می‌تواند تاریخچه تمامی DML یا DDLهای کل پایگاه اطلاعاتی را به ما بدهد. SQL Server2005 این ابزار را ندارد، ولی می‌توان از Lumigent Log Explorer برای مشاهده برخی از این تاریخچه استفاده کرد.

- Flashback Query: این امکان در نسخه جدید Oracle 10g عرضه گردید و با کمک آن می‌توان اطلاعات از دست رفته را بازیابی کرد.

- Rollback Statistics: در اوراکل اگر عملیاتی سنگین در وسط کار انجام نپذیرد، می‌توان آن را Rollback کرد. Rollback statistics می تواند به شما بگوید چه زمانی طول خواهد کشید که Rollback انجام شود و عملیات پایان پذیرد. کافی است جست‌وجوی زیر را به کار ببرید:
V$FAST_START_TRANSACTIONS
این قابلیت در SQL Server2005 وجود ندارد.

- AWR یا Automatic Workload Repository تصور کنید که بانک اطلاعاتی شما بسیار حجیم است، ترافیک زیادی دارد و جوابگویی آن به کلا‌ینت‌ها کُند شده است. با استفاده از AWR در Oracle 10g می‌توانیم مشکل را بررسی کنیم و تشخیص دهیم چه مشکلی در سیستم وجود دارد. اوراکل این کار را با استفاده از درست کردن Viewهای زیر انجام می‌دهد.
v$sysmetric_history for v$sysmetric
v$active_session_history for v$active_session
v$waitclassmetric_history for v$waitclassmetric
v$session_wait_history for v$session_wait
v$servicemetric_history for v$servicemetric

- پشتیبانی از OO یا Oracle :Object Oriented قابلیت‌های شیءگرا (object oriented) دارد. برای همین، این بانک اطلاعاتی را می‌توان بانک اطلاعاتی رابطه‌ای شیءگرا نیز نامید. با استفاده از این قابلیت، برنامه‌نویسان می‌توانند Class و Objectهای برنامه شیء‌‌گرای خود را مستقیماً به جداول بانک اطلاعاتی Map  کنند.

منابع
http://shabakeh-mag.com/links.aspx?l=http://www.microsoft.com/sql/editions/enterprise/default.mspx
http://shabakeh-mag.com/links.aspx?l=http://blogs.ittoolbox.com/visualbasic/operating/archives/oracle-vs-sql-server-whats-different-11054
http://shabakeh-mag.com/links.aspx?l=http://www.oracle.qassociates.co.uk/oracle-10g-features.htm
Oracle Professional (From Microsoft Website) Microsoft SQL Server 2005 for the

دسته هادسته‌بندی نشده برچسب ها:

امنیت ۲۰۰۰ SQL Server

یکی از مهمترین صورتهای مدیریت یک پایگاه داده مراقبت کردن از امنیت داده ها می باشد. شما باید تضمین کنید که برای هر کسی که به طور قانونی نیاز به دسترسی داده ها دارد، بتواند داده هایش را بگیرد البته نه اینکه به کسی دسترسی نامناسب دهید. در این درس، ما امتحان می کنیم که چگونه امنیت ۲۰۰۰ SQL Server به کار برده می شود و می آموزیم که چگونه امتیازهای امنیتی را ایجاد و تخصیص دهیم.

شناختن مدهای امنیت
زمانی در مرحله ای از SQL Server یک درخواست برای اتصال دریافت می کنیم. آن از یک Login ID عبور می کند. Login ID معرف Account می باشد که دسترسی به ۲۰۰۰ SQL Server را کنترل می کند. SQL Server بررسی می کند Login ID که داده شده است معتبر باشد. سپس معین می کند که آیا Login ID که پذیرفته شده است امتیاز امنیتی کافی برای به انجام رساندن عملیات درخواست شده دارد. این عملیات به عنوان authentication نامیده می شود. ۲۰۰۰ SQL Server ، authentication را از دو راه می تواند پشتیبانی کند. آن می تواند به NT ویندوز مایکروسافت یا امنیت ویندوز ۲۰۰۰ برای معتبر کردن ID اطمینان کند یا آن می تواند اعتبار سازی را خودش به انجام رساند.

Authentication (تأیید اعتبار) ویندوز
زمانی که از تأیید اعتبار ویندوز (شناخته شده به عنوان امنیت مجتمع در نسخه های قبلی از SQL Server) مدیر سیستم صورتهای امنیتی برای ویندوز NT و Account های ویندوز ۲۰۰۰ و گروهها را می پذیرد. نرم افزار پردازشگر ویندوز یک اتصال معتبر برای Server را درخواست می کند. یک اتصال معتبر از زمانی پذیرفته خواهد شد اگر ویندوز NT یا ویندوز ۲۰۰۰ قبلاً یک User را تصدیق کرده باشد. ۲۰۰۰ SQL Server نیاز دارد به تضمین Login ID که برای دسترسی پیدا کردن بهServer و پایگاه داده فراهم شده است.
مهم: زمانی که ویندوز ۹۸ نمی تواند ارتباطات معتبر را پشتیبانی کند مواردی از ۲۰۰۰ SQL Server که روی ویندوز ۹۸ اجرا می گردد نمی تواند از مد تأیید اعتبار ویندوز استفاده کند. نرم افزار پردازشگر یا Client می تواند روی ویندوز ۹۸ اجرا شود. اگر چه با استفاده از تأیید اعتبار ویندوز تهیه شده، Server خودش روی ویندوز NT یا ویندوز ۲۰۰۰ اجرا می شود.

تأیید اعتبار SQL Server
به طور کلی توانا بودن تأیید اعتبار Login نماینده برای سیستم امنیتی ویندوز زمانی که آن را از مد تأیید اعتبار ویندوز استفاده می کند، ۲۰۰۰ SQL Server امنیت خودش را به کار می برد، نه به طور حیرت آور، تأیید اعتبار SQL Server (شناخته شده به عنوان امنیت استاندارد در نسخه های قبلی از SQL Server). زمانی که درخواست اتصال صورت گیرد از تأیید اعتبار SQL Server استفاده می کنیم.
۲۰۰۰ SQL Server هر دوی Login ID و Password را دریافت می کند. که آن برخلاف لیست از Login های مشخص شده برای آن به وسیله مدیر سیستم معتبر می شود.
مهم: مایکروسافت توصیه می کند که از تأیید اعتبار ویندوز در هر جای ممکن استفاده کنید.

User Logins
امنیت در داخل ۲۰۰۰ SQL Server از طریق چندین شئی امنیتی کنترل می شود. در بالاترین سطوح Login ها می باشند که یک ۲۰۰۰ SQL Server ، کاربر ویندوز یا یک گروه ویندوز برای Server را مشخص می کند.
مهم: برای تکمیل تمرینات زیر، شما باید همچنین مدیرهای امنیتی یا وظایف مدیرهای سیستم در داخل SQL Server تخصیص داده باشید لطفاً به مدیر پایگاه داده تان رجوع کنید اگر شما درباره حق انحصاری تان در داخل سیستم مطمئن نیستید.

ایجاد کردن User Login
Login ها می تواند به طور دستی هدایت کردن آیکون Login از پوشه Security در یک Server ایجاد کنید و یک Login جدید از منوی Context انتخاب کنید اما ساده ترین راه استفاده کردن از Create Login Wizard می باشد.

ایجاد کردن SQL Server Login
1- Server را در درخت Console انتخاب می کنیم. SQL Server یک لیستی از شئی های Server در قاب Details نشان می دهد.

۲- دکمه Wizard را روی نوار ابزار Manager Enterprise کلیک می کنیم. SQL Server کادر محاوره ای Select Wizard را نشان می دهد.

۳- در بخش پایگاه داده، Create Login Wizard را انتخاب کرده و سپس OK را کلیک می کنیم. SQL Server اولین صفحه از Create Login Wizard را نشان می دهد.

۴- Next را کلیک می کنیم، ویزارد یک صفحه ای را نشان می دهد که از مد تأیید اعتبار Server برای Login سؤال می کند.

۵- دکمهOption برچسب شده اطلاعات SQL Server Login را انتخاب می کنیم که به وسیله سیستم به من تخصیص داده می شود (SQL Server Authentication)

6- Next را کلیک کرده، ویزارد یک صفحه که Login ID ، Password را درخواست می کند نشان می دهد.

۷- Test ID را به صورت نام و Password که شما مایل هستید وارد می کنید.

۸- Next را کلیک کرده، ویزارد یک صفحه درخواست وظایف امنیتی برای اینکه Login باید تخصیص داده شود را نشان می دهد.

۹- Login را برای وظایف مدیرهای سیستم اضافه می کنیم.

۱۰- Next را کلیک می کنیم ویزارد یک صفحه را که درخواست می کند از پایگاههای داده که اینLogin باید دسترسی دهد.

وظایف Server
وظایف Server که به یک Login تخصیص داده می شود معین می کند که چه حق ویژه امنیتی Login در سطح Server دارد. جدول ۳٫۱ حق ویژه تخصیص داده شده به هر وظیفه را تشریح می کند.
Bulk Insert Administrators Bulkadmin می تواند عملیات قرارگیری را به طور عمده به انجام رساند
Database Creators dbCreator می تواند داده های پایگاه را ایجاد، تغییر و حذف کند
Disk Administrators diskadmin می تواند فایلهای دیسک را مدیریت کند
Process Administrators Processadmin می تواند عملیاتهای اجرایی را در SQL Server را مدیریت کند
Security Administrators Securityadmin می تواند Logins و ایجاد پایگاه داده را مدیریت کند
Server Administrator Securityadmin می تواند گزینه های قالب بندی کل SQL Server را تنظیم کند و Server را خاموش کند
Setup Administrator Set upadmin می تواند Server های Link شده، روشهای Startup و روشهای ذخیره شده را مدیریت کند
System Admin Sysadmin می تواند هر فعالیتی را در SQL Server انجام دهد
توضیحات نام نام کامل

۱۱- Login برای پایگاه داده Aromatherapy اضافه می کنیم.

۱۲- Next را کلیک می کنیم. ویزارد یک صفحه را برای تأیید کردن انتخابهایی که شما ساخته اید نشان می دهد.

مهم:Login هایی که برای وظایف Server های ویژه می باشد به ویژه وظیفه مدیرهای سیستم حق ویژه روی همه پایگاه داده ها خواهند داشت، اعم از اینکه آنها برای Login به طور خاص پذیرفته شده اند یا خیر.
۱۳- Finish را کلیک کرده، ویزارد ایجاد Login یک متنی را برای تأیید اینکه Login اضافه شده است نشان می دهد.

ایجاد کردن Login ویندوز
۱- Server را در درخت Console انتخاب می کنیم. SQL Server یک لیستی از پوشه های Object را در قاب Details نشان می دهد.

۲- ۲- دکمه Wizard را در نوار ابزار Manager Enterprise کلیک می کنیم SQL Server کادر محاوره ای Select Wizard را نشان می دهد.

۳- ویزارد ایجادLogin را در بخش پایگاه داده ها انتخاب کرده و سپس OK را کلیک می کنیم. SQL Server اولین صفحه از Wizard Create Login را نشان می دهد.

۴- Next را کلیک می کنیم ویزارد یک صفحه را نشان می دهد که برای مد تأیید اعتبار Server برای Login سؤال می کند تنظیمات پیش فرض را می پذیریم.

۵- Next را کلیک می کنیم. ویزارد یک صفحه را برای درخواستID Account ویندوز نشان می دهد.

۶- Windows ID را در این فرم وارد می کنیم. Account Name وDomain Name (account name ، می تواند کاربر یا گروه باشد). Next را کلیک می کنیم. ویزارد یک صفحه نشان می دهد که وظایف امنیتی برای اینکه Login باید تخصیص داده شود را درخواست می کند.
راهنمایی: رد دسترسی به گزینه Server در این صفحه می تواند به طور آشکار برای رد دسترسی به یک گروه کاربر تکی استفاده شود.

۷- Login را برای وظیفه ایجاد کننده ها پایگاه داده ها اضافه می کنیم.

۸- Next را کلیک می کنیم. ویزارد یک صفحه را نشان می دهد که درخواست می کند از پایگاه داده ها که دسترسی به این Login باید پذیرفته شود.

۹- Login را برای پایگاه داده Aromatherapy اضافه می کنیم.

۱۰- Next را کلیک می کنیم. ویزارد یک صفحه که انتخابهای ساخته شده را نشان می دهد تأیید می کند.

مهم:Login هایی که برای نقشهای Server خاص می باشد، به ویژه نقش مدیرهای سیستم حق انحصاری در همه پایگاه داده ها خواهند داشت اعم از اینکه آنها برای Login به طور خاص پذیرفته شده اند یا خیر.
۱۱- Finish را کلیک کرده Create Login Wizard یک متنی را نشان می دهد که Login ها اضافه شده است.

مدیریت Logins
در همان راهی که شئی های پایگاه داده ها دیگر نیاز به نگهداری گاهگاهی دارند. شما ممکن است نیاز به تغییر خصوصیات از یک User Login داشته باشید. برای مثال، شما ممکن است نیاز به تغییر Security Role برای اینکه Login مقرر شود، یا پایگاه داده ها برای اینکه به آن دسترسی پیدا کند داشته باشید. البته شما بعضی اوقات نیاز خواهید داشت به برداشتن یک Login به طور کامل که همه این عملیاتها با استفاده از Manager Enterprise ساده می باشد.

تغییر دادن خصوصیات (Properties) Login
1- آیکون Logins را در پوشه Security در درخت Console راهبری می کنیم. SQL Server یک لیستی از Login در قاب Details نشان می دهد.

۲- Test ID Login را در قاب Detail دابل کلیک می کنیم. SQL Server کادر محاوره ای SQL Server Login Properties را نشان می دهد.

۳- زبانه Server Roles را انتخاب می کنیم. SQL Server ، Server Roles را برای اینکه Login برقرار شده نشان می دهد.

۴- Login را از نقش مدیرهای سیستم (System Administrators Role) برمی داریم.

۵- زبانه Database Access را انتخاب می کنیم. SQL Server پایگاه داده هایی را نشان می دهد. برای اینکه دسترسی به Login مقرر شود.

۶- North Wind را به لیست پایگاه داده ها اضافه می کنیم.

۷- Ok را برای بستن کادر محاوره ای SQL Server Login Properties کلیک می کنیم. SQL Server خصوصیات Login را تغییر می دهد.

برداشتن یک Login
1- آیکون Login را در پوشه Security در درخت Console می بریم. SQL Server یک لیستی از Login در قاب Details نشان می دهد.

۲- Test ID Login را در قاب Details انتخاب می کنیم و سپس کلید Delete را فشار می دهیم. SQL Server یک متنی را نشان می دهد که از شما برای تأیید حذفیات سؤال می کند.

۳- Yes را کلیک می کنیم. SQL Server ، Login را حذف می کند.

سطح امنیتی پایگاه داده
در سطح پایگاه داده، هر User account ویندوز یا SQL Server Login برای یک User Account در یک پایگاه داده ترسیم می گردد. حتی دسترسی که به یک نمونه Server SQL که با یک Login تخصیص داده می شود ضرورتاً نیاز به دسترسی داشتن به یک پایگاه داده مشخص نخواهد داشت مگر اینکه یک شخص یک کاربر برای آن پایگاه داده ساخته باشد. همان طور Login ها می تواند به Server Roles تخصیص داده شود که یک حق انحصاری ویژه برای آنها اعطاء می کند، کاربرها می تواند به نقشهایی در سطح پایگاه داده تخصیص داده شوند که به آنها حق انحصاری ویژه اعطاء می گردد.
راهنمایی: از طریق حقوق انحصاری امنیتی که در سطح جداگانه می تواند تخصیص داده شود که به طور کلی توصیه نمی شود از زمانی که مدیریت امنیت را پیچیده می کند. آن خیلی ساده تر می باشد اضافه یا برداشتن افراد برای گروههایی از پیش تعریف شده که دارند یک تنظیم ویژه ای از حقوق انحصاری امنیت از زمانی که تخصیص می گردد و مجدداً حقوق انحصاری را تخصیص می دهد.

User های پایگاه داده
زمانی که شما یک Login جدید را با استفاده از Create Login Wizard ایجاد می کنید و به آن دسترسی پایگاه داده را واگذار می کنید Login به طور خودکار به لیست کاربرهای پایگاه داده اضافه خواهد شد. اگر چه زمانی که شما یک پایگاه داده جدید ایجاد می کنید احتمالاً شما خواهید خواست به اضافه کردن Login های موجود برای آن به عنوان کاربر.

ایجاد یک User پایگاه داده
۱- آیکون User را در پایگاه داده Aromatherapy می بریم. SQL Server یک لیستی از User ها در قاب Details نشان می دهد.

۲- دکمه New را در نوار ابزار Manager Enterprise کلیک می کنیم.

راهنمایی: شما همچنین می توانید کادر محاوره ای Database User Properties را به وسیله کلیک راست کردن باز کنید. آیکون Users در درخت Console و Database User جدید را در منوی Context انتخاب می کنیم.
۳- نام Login تان را در Combo Boy انتخاب می کنیم. SQL Server نام Login را به عنوان نام User پیش فرض پیشنهاد خواهد داد اما شما می توانید آن را تغییر دهید اگر بخواهید.
۴- db-Owner را برای نقشهای واگذار شده به User جدید اضافه می کنیم.

-۵ OK را کلیک می کنیم. SQL Server ، User را به پایگاه داده اضافه می کند.
راهنمایی: نقشهایی که به یک User پایگاه داده تخصیص می شود تعیین می کند که چه حقوق انحصاری امنیتی، کاربر برای پایگاه داده دارد. بخش زیر Database Roles را برای جزئیات بیشتر ببینید.

برداشتن یک User پایگاه داده
۱- آیکون Users را برای پایگاه Aromatherapy در درخت Console می بریم. SQL Server یک لیستی از کاربرها را در قاب Details نشان می دهد.

۲- User که شما در آخرین تمرین در لیست ایجاد کردید را انتخاب می کنیم و سپس کلید Delete را فشار می دهیم. SQL Server یک متنی را نشان می دهد که از شما برای تأیید حذفیات سؤال می کند.

۳- Yes را کلیک می کنیم. SQL Server ، User را از پایگاه داده حذف می کند.

Database Roles
یک Database Roles مانند یک کاربر مجازی که شما برای مدیریت دسترسی پایگاه داده ایجاد می کنید می باشد. هر تعدادی از کاربرهای پایگاه داده می تواند به یک نقش تخصیص داده شود. هر کاربر معین می تواند به چندین نقش تخصیص داده شود. زمانی که شما حقوق انحصاری به یک نقش پایگاه داده تخصیص می دهید و سپس یک کاربر برای آن نقش تخصیص می دهید. کاربر همه حقوق انحصاری از نقش را به ارث می برد. این خیلی ساده تر از نگهداری حقوق انحصاری برای کاربرهای شخصی می باشد. SQL Server 2000 یک تعدادی از نقشهایی از قبل تعریف شده را تهیه می کند. به طوری که در جدول ۳٫۲ نشان داده شده همچنین شما می توانید نقش سفارشی که برای پایگاه داده واحد می باشند را ایجاد کنید.
راهنمایی: نقشهای پایگاه داده ای که شما در پایگاه داده اصلی ایجاد می کنید اضافه خواهد شد. برای هر پایگاه داده های جدید که شما برای آن Server ایجاد می کنید.
توضیحات نام نام کامل
Access Administrator db-Accessadmin می تواند User IDS را اضافه یا بردارد
ûackup Operator Db-Baclcupoprator می تواند DBCC ، CHECKPOINT و حالتهای BACKUP صادر کند
Data Reader db-Data Reader می تواند همه داده ها از هر جدول کاربر در پایگاه داده ها را انتخاب کند
Data Writer db-Data Writer می تواند هر داده در هر جدول کاربر در پایگاه داده ها اصلاح کند
Data DefinitionAdministrator db-dd Ladmin می تواند حالتهای زبان تعریف داده ها DDL را به انجام رساند اما نمی تواند GRANT ، REVOKE یا حالتهای DENY صادر کند
Deny Data Rader db-deny Data Writer می تواند اجازات SELECT را روی هر شئی در پایگاه داده لغو کند
Data Base Owner db-Owner همه اجازات دسترسی در پایگاه داده ها را دارد
Deny Data Writer db-deny Data Writer می تواند INSERT UP DATE و اجازات دسترسی DELETE را روی هر شئی در پایگاه داده رد یا ملغی کند
Security Administrator db-Securityadmin می تواند همه اجازات، حق مالکیت شئی نقشها و عضویتهای نقش را کنترل کند
Public نقش پیش فرض که به هر پایگاه داده کاربر متعلق می باشد

ایجاد کردن یک Role پایگاه داده
۱- آیکون Roles برای پایگاه داده Aromatherapy را در درخت Console کلیک می کنیم. SQL Server یک لیستی از نقشهای پایگاه داده موجود را نشان می دهد.

۲- دکمه New را روی نوار ابزار Manager Enterprise را کلیک می کنیم. SQL Server کادر محاوره ای Database Role Properties را نشان می دهد.

۳- ۳ Lesson را به عنوان نام نقش وارد می کنیم.

۴- OK را کلیک کرده، SQL Server کادر محاوره ای Database Role Properties را می بندد.
۵- Role 3 Lesson را در قاب Details دابل کلیک می کنیم. SQL Server کادر محاوره ای Database Role Properties را نشان می دهد.

مهم: شما باید کادر محاوره ای Database Role Properties را به ترتیب برای قادر ساختن دکمه Permissions ببندید.

۶- دکمه Permissions را کلیک می کنیم. SQL Server کادر محاوره ای Permissions را نشان می دهد.

راهنمایی: کادر محاوره ای Database Role Properties دو نوع از نقشها Standard Roles و Application را پشتیبانی می کند. نقشهایی که دراین درس بحث شده اند همه Standard Roles می باشند. یک application Role یک تابع ویژه ای است که احتیاجات برنامه های کاربردی پیچیده را پشتیبانی می کند.
Establishing Application Security And Application Roles را در کتاب SQL Server Online برای جزئیات درباره application Role ببینید.
۷- نقش که اجازات دسترسی در جدول Oils را انتخاب می کند فراهم می کنیم.

۸- OK را کلیک کرده SQL Server کادر محاوره ای Permissions را می بندد.
۹- OK را کلیک می کنیم. SQL Server یک نقش جدید را اضافه می کند.

تخصیص یک کاربر به یک نقش پایگاه داده
۱- آیکون Users را برای پایگاه Aromatherapy در درخت Console راهبری می کنیم. SQL Server یک لیستی از User ها را در قاب Details نشان می دهد.

۲- نام کاربرتان را در لیست کاربرها دابل کلیک می کنیم. SQL Server کادر محاوره ای Database User Properties را نشان می دهد.

۳- کاربر را برای Role 3 Lesson با کلیک کردن آن در کادر لیستDatabase Role Membership اضافه می کنیم.

۴- Ok را کلیک کرده SQL Server کاربر را برای نقش اضافه می کند و کادر محاوره ای Database Role Membership را می بندیم.

برداشتن یک User از یک Database Role
1- آیکون Users را برای پایگاه داده Aromatherapy در درخت Console راهبری می کنیم. SQL Server یک لیستی از User ها را در قاب Details نشان می دهد.

۲- نام کاربرتان را در لیست دابل کلیک می کنیم. SQL Server کادر محاوره ای Database User Properties را نشان می دهد.

۳- ۳ Role Lesson را در لیست Database Role Membership انتخاب نمی کنیم.

۴- OK را کلیک کرده SQL Server ، Users Membership را از نقش برمی دارد و کادر محاوره ای را می بندد.

برداشتن یک Data Base Role
1- آیکون Roles برای پایگاه Aromatherapy در درخت Console را راهبری می کنیم. SQL Server یک لیستی از نقشها را در قاب Details نشان می دهد.

۲- Role 3 Lesson را در قاب Details انتخاب کرده و کلید Delete را فشار می دهیم. SQL Server یک متنی را نشان می دهد که از شما برای تأیید حذفیات می پرسد.

۳- Yes را کلیک می کنیم. SQL Server ، نقش را از پایگاه داده حذف می کنیم.

دسته هادسته‌بندی نشده برچسب ها: