جستجو

چهارشنبه، بهمن ۰۹، ۱۳۸۱

قابل توجه طرفداران SQL Server Microsoft
بد نيست به خبر دهشتناک توجه کنيد. حمله بزرگ اينترنتی و نقص در SQL Server , بازم حرف از SQL Server می زنيد.
بيل گيتس ثروتمند
1 - بيل گيتس در هر ثانيه 250 دلار آمريكا درامد داره، يعني 20 ميليون دلار در روز و 8/7 ميليارد دلار در سال!
2 – اگر 1000 دلار از دست وي بر زمين بيوفته به خودش اين دردسر رو نميده كه برش داره، چون در 4 ثانيه اي كه برداشتنش طول ميكشه، اين پول عايدش شده!
3 – آمريكا در حدود 62/5 هزار ميليارد دلار بدهي داره و بيل گيتس به تنهايي ميتونه ظرف 10 سال تمام بدهي آمريكا را بازپرداخت كنه!
4 – او ميتونه نفري 15 دلار به همه جمعيت جهان بده و باز هم 5 ميليون دلار در جيبش باقي خواهد ماند!
5 – اگر مايكل جردن يعني گرانترين ورزشكار آمريكايي هيچ غذا و آبي نخوره و همه 30 ميليون دلار درامد سالانه اش رو پس انداز كنه، 227 سال طول خواهد كشيد تا به ثروتمندي بيل گيتس بشه!
6 – اگر بيل گيتس رو به صورت يك كشور تصور كنيم، 37 مين كشور ثروتمند جهان ميشه! يا به تنهايي درامدي برابر سيزدهمين كمپاني عظيم آمريكايي خواهد داشت، حتي بيشتر از آي بي ام!
7 – اگر همه ثروت بيل گيتس رو تبديل به يك دلاري كنيم ، ميشه جاده اي از ماه تا زمين باهاش كشيد كه 14 بار رفته و برگشته! ولي ساخت اين جاده، 1400 سال طول خواهد كشيد و 713 بوئينگ 747 بايد براي جابجايي اين پول ها پرواز كنند.
8 – بيل گيتش امسال 40 ساله ميشه. اگر فرض رو بر اين بگيريم كه هنوز 35 سال ديگه هم زنده خواهد بود، ميتونه روزي 78/6 ميليون دلار خرج كنه قبل از اينكه به بهشت بره!

اما!!! اگر كاربران ويندوزهاي مايكروسافت بتونن بابت هرباري كه كامپيوترشون هنگ ميكنه، يك دلار از بيل گيتس خسارت بگيرن، وي تنها در 3 سال ورشكست خواهد شد!!

چهارشنبه، بهمن ۰۲، ۱۳۸۱

با عرض معذرت
يکی از دوستان اشاره کردند که محصول Locale Builder با نسخه Oracle9i به بازار آمده است و من به اشتباه گفته بودم که با Oracle 8i آمده است.از بس که نسخه های مختلف را نصب و پاک کردم که خودم هم يادم رفته چه محصولی را کدام نسخه داشت.از دوستانی که اين نکات ظريف را تذکر می دهند سپاس گزارم.

یکشنبه، دی ۲۹، ۱۳۸۱

آيا WindowsXP خداست؟
شنيدم بعضی ها می گويند که Windows XP خداست. تا آنجائيکه همه به ياد داريم خدا يعنی کامل و خودش خالق مطلق است. از آنجائيکه Windows XP را مهندسين شرکت ماکروسافت خلق کردند و هر روز بايد آنرا از طريق انترنت به روز (Update) کرد نه تنها خدا نيست بلکه يک موجود ناقص الخلقه است.
از خانم هاشمی سپاس گزارم
اکثر شما خانم هاشمی را می شناسيد و لازم به معرفی نيست با 15 سال سابقه کار که تا الان 11 سال آن فقط در فيلد اوراکل بوده است. مهندس و استاد و مدرس برتر اوراکل در ايران. در حال حاضرايشان با شرکت FourStar در دبی و شرکت عصردانش افزار در ايران همکاری دارند. اواخر آذر سال 1380 من و ايشان شروع به حل مشکل سورت در اوراکل شديم پايه اوليه فايلهای NLB و NLT را ايشان به من گفتند در آن سال در اوراکل 8i يک کاراکترست جديد ساختيم که آزمايشهای اوليه آنرا انجام داديم. ولی با اين کار مجبور بوديم اطلاعات قبلی را Convert کنيم. درآن زمان محصول Locale Builder تازه با اوراکل 9i آمده بود. داشيم کار را ادامه می داديم که با آمدن من به آلمان اين پروژه کوچک قريب به يک سال متوقف شد. يکی ماه پيش داشتم توی اينترنت گشت و گذار می کردم درمستندات اوراکل چشمم به کلمه Persian خورد. حس کنجکاويم را تحريک کرد. بعد از مطالعه آن ديدم که مربوط به قسمت تاريخ شمسی در اوراکل است که تا اين زمان اطلاعی از آن نداشتم بعد از مطالعه و آزمايشهای اوليه نتيجه آنرا در وب لاگ قرار دادم. ولی سورت فارسی هميشه ذهن مرا مشغول کرده بود با الاخره با خواندن مستندات محصول Locale Builder و آزمايشهای زياد روی کاراکترستهای مختلف و مطمئن شدن از صحت آن نتايج آنرا در وب لاگ قرار دادم.
با سلام دوباره
بيش از يک هفته است که مطلب ننوشته ام . علت آن تغيير Linux7.3 به Linux8 بود که مجبور به پارتيشن بندی جديد و نصب مجدد Windows2000 و Linux8 شدم . که خيلی از وقتم را گرفت و تا حالا داشتم نرم افزارهای مورد استفاده را نصب می کردم. ولی بايد بگويم که به خاطر تغيير مکان شايد نتوانم تا اطلاع بعدی مطلبی بنويسم.

پنجشنبه، دی ۱۹، ۱۳۸۱

نکته بسيار مهم در مورد Export / Inpoert اوراکل و صفحات وب
گاهی اوقات ممکن است بيشتر از يک Instance اوراکل روی يک کامپيوتر ايجاد کنيد مثلا با کاراکترست WE8ISO8859P1 و AR8MSWIN1256 و يا UTF8 و در Reggistery Windows پارامتر NLS_LANG را به ARABIC_UNITED ARAB EMIRATES.AR8MSWIN1256 تغيير داده باَشيد. حال اگر می خواهيد از اطلاعات خود با ابزار Export کپی پشيبان بگيريد با يد توجه کنيد که فقط اطلاعات با کاراکترست AR8MSWIN1256 و UTF8 درست خواهد بود و اگر از اطلاعات WE8ISO8859P1 کپی پشتيبان تهيه کنيد و يکبار ديگر با Import آنرا در بانک اوراکل قرار دهيد همه چيز به علامت سوال تبديل می شود. برای اين کار دو راه وجود دارد يکی اين که NLS_LANG را روی همان ماشين به AMERICAN_AMERICA.WE8ISO8859P1 تبديل کنيد و مجددا برنامه Export را استفاده کنيد يا اينکه از يک ماشين ديگر که Registery آن مطابق کاراکترست بانک اوراکل باشد برنامه Export را اجراکنيد و کپی پشتيبان بگيريد.
اگر اوراکل 8i داريد و بيشتر از يک Instance مثل WE8ISO8859P1 و AR8MSWIN1256 روی يک ماشين ايجاد کرده ايد و صفحات وب خود را نيز روی همين ماشين داريد مثل ASP بايد توجه کنيد صفحات وب شما نمی تواند با هردو Instance کار کند چون اوراکل 8i به NLS_LANG وابسته است ولی در اوراکل 9i چنين حالتی وجود ندارد و خود اوراکل می گويد نسخه 9i مستقل از NLS_LANG است. من خودم اين را يکسال پيش آزمايش کردم درست بود. حال اگر دو سری صفحه وب داشته باشيد که يکسری از آنها با کاراکترست WE8ISO8859P1 کار می کند و يکسری ديگر با AR8MSWIN1256 و اوراکل 8i داريد چاره چيست؟
استفاده از دو کامپيوتر مجزا است ولی اين کامپيوترها را می توانيد به شکل زير به کار بريد
1- نصب اوراکل سرور روی هر کدام و تنظيم NLS_LANG وکپی صفحات وب مربوط به صورت مجزا که اين کار احتياج به دو سرور قوی دارد.
2- نصب اوراکل سرور و ايجاد دو Instance و کپی يکسری از صفحات وب روی يک دستگاه کامپيوتر و تنظيم درست NLS_LANG که می توانيد يک کامپيوتر قوی در نظربگيريد و نصب Oracle Client و کپی صفحات ديگر وب روی يک کامپيوتر ديگر که می تواند اين کامپيوتر قوی نباشد و تنظيم NLS_LANG روی آن.

چهارشنبه، دی ۱۸، ۱۳۸۱

چند نکته راجع به SQL PLUS و Notepad
1- هنگامی که SQL PLUS را در Windows2000 اجرا می کنيد وقتی چهار حرف گچپژ و حرف کاف را تايپ می کنيد به صورت نقطه چين می بينيد که اين عمل هيچ مشکلی درذخيره اطلاعات بوجود نمی آورد قفط در هنگام نمايش آنها را به تقطه چين تبديل می کند ولی اطلاعات را در Windows98 , وب و فرمهای اوراکل بطور صحيح می بينيد.
2- وقتی در SQL PLUS فارسی تايپ می کنيد و آنرا به طريق Copy / Paste در Notepad قرار می دهيد همه چيز درست است ولی هنگامی که اين کاررا برعکس انجام می دهيد علامت سوال می بينيد يا وقتی با دستور Select اطلاعات را در يک فايل متنی ذخيره می کنيد مثل Spool file و می خواهيد يک بار ديگر آنرا در SQL PLUS تحت Windows2000 اجرا کنيد همه چيز تبديل به علامت سوال می شود خب چاره چيست؟ کافی است وقتی می خواهيد يک متن را در Notepad ذخيره کنيد قسمت Encoding را به UTF-8 تبديل کنيد.
هيچ اطلاعاتی لازم نيست تغيير کند
با مطلبی که راجع به , چطور در اوراکل تاريخ شمسی و سورت فارسی داشته باشيد نوشته شد هيچ احتياجی به تغيير اطلاعات و فرمهای اوراکل خود نداريد فقط در يک حالت اگر Instance اوراکل را به صورت پيش فرض WE8ISO8859P1 ايجاد کرده باشيد و بخواهيد در محيط وب کار کنيد با چهار حرف گچپژ مشکل خواهيد داشت ولی اگر به صورت Client/Server يعنی با فرمهای اوراکل کار می کنيد چنين مشکلی را نداريد و می توانيد تاريخ شمسی و سورت فارسی را داشته باشيد برای اينکه در محيط وب نيز فارسی را داشته باشيد بايد يک Instance جديد با کاراکترست AR8MSWIN1256 ايجاد کنيد و اطلاعات خود را از حالت قبل يعنی WE8ISO8859P1 به جديد انتقال دهيد و اين کار با Export و Inport براحتی قابل انجام نيست و در ضمن بايد فرمهای اوراکل خود را نيز تغيير دهيد برای اين کار می توانيد از ابزار Oracle Translater استفاده کنيد . يک راه برای تغيير اطلاعات به Instance جديد اينست که در حالت قبل اطلاعات را به صورت متن ساده (text) تبديل کنيد و آنرا در Instance جديد با ابزار Oracle Loader ذخيره کنيد. ولی به کمی تجربه نياز دارد. انشاء الله در آينده نزديک راجع به Oracle Loader صحبت خواهد شد.
قابل توجه همه دوستان
بعضی از شرکتهای ايرانی فکر می کنند که با حل سورت فارسی موشک هوا کردند و از اين موضوع برای درآمد بيشتر گوش مشتريان خود را به نوعی می برند . تازه بعضی از آنها به غلط اين موضوع را حل کردند يعنی به جای اينکه روی سورت اوراکل کار کنند يک کاراکتر ست جديد تعريف کردن آنهم از روی کاراکترست عربی و بعضی از حروف آن را جابجا کردند. با اين کار تمام اطلاعاتی قبلی غير قابل استفاده می شود و بايد تمامی اطلاعات را به کاراکترست جديد تبديل کنند که باز هم با اين کار پول اضافه تری می گيرند و اگر هم اوراکل فرم داشته باشند ديگه بدتر بايد آنها را هم تبديل کنند و باز بايد پول بيشتر بپردازنند می بينيد چطور برای خود کيسه دوخته اند.يکی از آنها ادعا می کند که شرکت اوراکل ما را پشتيبانی می کند و آنها به ما کمک کردند. يکی از کارشناسان نه بهتر بگويم يکی از مديران شرکت ديگر که مستقيما به خود من گفت که ما کرنل اوراکل را دستکاری کرديم ادب حکم کرد چيزی نگويم ولی اينجا بايد به آن عزيز بگويم شما عمرن بتوانيد اينکار را بکنيد شما اگر فقط بتوانيد خود اوراکل را يک بار نصب کنيد و چهار تا پارامتر آنرا تنظيم کنيد هنر کرديد. آقا برای دستکاری کردن در کرنل اوراکل اولا بايد سورس برنامه را داشته باشيد که فرض محال است ثانيا فرض کنيم که سورس را هم داريد , بايد برنامه نويسی C و Java را در حد حرفی بدانيد و با شناختی من از شما دارم بعيد می دانم اين کاره باشيد.
من از هيچ شرکتی کينه ای ندارم اين مطلب را فقط جهت اطلاع ارسانی به همه دوستان نوشتم .

دوشنبه، دی ۱۶، ۱۳۸۱

ساختن کاراکتر Sort فارسی در اوراکل
مقدمه:
قبل از هر چيز اجازه بدهيد مروری بر نحوه اينکه اوراکل چطور مقادير را مرتب می کند داشته باشيم. زبانهای مختلف سورتهای مختلف دارند کشورهای مختلف ممکن است از الفبای مشترک استفاده کنند ولی سورت مختلف داشته باشند.
اوراکل سه نوع سورت دارد.
- Binary sort
- Monolingual linguistic sort
- Multilingual linguistic sort

Binary sort:
يک روش مرتب کردن داده ها براساس مقادير عددی کاراکترها است که به اين روش باينری سورت می گويند. اين روش خيلی سريع است برای الفبای انگليسی که براساس استاندارد ASCII و EBCDIC کد هستند حروف خودشان مرتب هستند مثلا مقادير A تا Z بطور صعودی مرتب هستند. در استاندارد ASCII همه حروف بزرگ قبل از کوچک هستند و در استاندارد EBCDIC برعکس يعنی حروف کوچک قبل از حروف بزرگ هستند.

Linguistic Sorts
در زبانهای ديگر اگر براساس باينری سورت استفاده شود مثل فارسی, موقع نمايش حروف مرتب نيستند در اين حالت بايد از تکنيک ديگری برای سورت استفاده کرد که به آن Linguistic Sorts می گويند. در اين تکنيک کاراکترها با مقادير عدديشان جابجا می شوند. اوراکل دو نوع linguistic sorts دارد:
1- Monolingual linguistic sort
2- Multilingual linguistic sort

اوراکل در زبان عربی از Monolingual linguistic sort استفاده می کند از آنجايکه زبان فارسی نيز از عربی تبعيت می کند لذا در زبان فارسی نيز از اين نوع استفاده می کنيم. بنابراين از شرح حالت دوم صرف نظر می شود ولی برای اطلاعات بيشتر برای تمامی حالتها می توانيد به اينجا مراجعه کنيد.

Monolingual linguistic sort
در اين روش اوراکل رشته ها را در دو مرحله مقايسه می کند. اولين مرحله مقايسه مقدار بزرگتر يا major value بر اساس جدول major value است. دومين مرحله مقايسه مقدار کوچکتر براساس جدول minor value است. معمولا حروفی که شکل يکسان دارند مقدار Major يکسان دارند .
به جدول زير مشاهده کنيد. حرف a, A, ä, Ä مقدار Major يکسان دارند ولی مقدار Minor آنها فرق می کند.



هر جدول major برای هر کاراکتر شامل Unicode code point و مقدار Major است. Unicode code point يک مقدار 16 بيتی برای نمايش کاراکتر است.
با شرح مختصر بالا به نحوه ساختن يک کاراکتر ست سورت می پردازيم.
ابتدا برنامه Oracle Locale Builder را به طريق زير بر روی ماشينی که Oracle Server را نصب کرديد اجرا می کنيم
Start->Programs->Oracle-OraHome92->Configuration and Migration Tools->Locale Builder
توجه داشته باشيد اگر اين برنامه را نصب نکرده ايد می توانيد CD اوراکل سرور در درايو قرار دهيد و به صورت Custom نصب کنيد و Component مربوطه را بيابيد. يادآوری کنم که اين عمل تغييری در اطلاعات قبلی اوراکل شما نمی دهد برای اطمينان بيشتر سرويس های اوراکل را متوقف کنيد يعنی بانک اوراکل را Shutdown کنيد. نحوه نصب به صورت Custom و نصب Componentها قبلا گفته شده است برای اطلاعات بيشتر روی به قسمت مشکل در اتصال صفحات وب به اوراکل مراجعه کنيد بعد از اجرا برنامه Locale Builder شکل زير را خواهيد داشت


از قسمت سمت چپ آيکون New Language را انتخاب کنيد که شکل زير را می بينيد.


دکمه Show Existing Definitions را فشار دهيد پنجره ای به شکل زير ظاهر خواهد شد


همانطور که در شکل می بينيد پنجره به شش قسمت تقسيم شده است که دو قسمت مخفف Language و Territory است بنا براين تعريف کاراکترست در اوراکل چهار نوع است. که هر کدام شامل يک فايل فيزيکی روی هارد ديسک هستند. که اين فايلها با LX شروع می شوند و دارای پسوند NLB هستند که کامپايل شده NLT هستند. طول نام فايل بدون پسوند 7 کاراکتر است. اين فايلها را می توانيد در محيط Windows در مسير زير ببينيد.
D:\oracle\ora92\ocommon\nls\ADMIN\DATA که D نشان دهنده درايوی است که اوراکل را آنجا نصب کرده ايد.
LX0 نشان دهنده زبان يا Language است.
LX1 نشان دهنده Territory است.
LX2 نشان دهنده کاراکترست است که هنگام ساختن نمونه(Instance) اوراکل استفاده می کنيم مثل AR8MSWIN1256 يا UTF8 و يا WE8ISO8859P1 که قبلا راجع به آنها
صحبت شده است.
LX3 نشان دهنده نحوه سورت است که ما فقط با اين قسمت کار داريم.

برای داشتن سورت فارسی کافی است از سورت عربی استفاده کنيم و چهار حرف گچپژ را به آن اضافه کنيم و آنرا به نام ديگر ذخيره کنيم.
در قسمت (Linguistic Sort(ID آيتم اول (Arabic(21 را انتخاب کنيد . جلوی هر کدام از آيتمهايی که می بينيد داخل پرانتز يک عدد می بينيد که اين عدد ID آن است و منحصر به فرد است.اين عدد در کد هگز است و برای نام فايل استفاده می شود. مثلا ARABIC دارای عدد 21 است اگر اين عدد را به کد دسيمال يا ده دهی تبديل کنيد عدد 15 بدست می آيد و از آنجايی که فايلهای سورت با LX3 شروع می شوند و طول نام فايل 7 کاراکتر است بنابراين نام فايل LX30015 را خواهيد داشت و پسوند آنهم NLB است. با انتخاب آن نام کامل فايل را در همان پنجره خواهيد ديد. بعداز انتخاب آن دکمه Open را بزنيد. اين حالت را نيز می توانيد از منوی عمودی سمت چپ با انتخاب New Linguistic Sort داشته باشيد و سپس دکمه Monolingual Linguistic Sort را بزنيد بعد از آن در پايين پنجره دکمه Show Existing Definitions را بزنيد که فهرستی از زبانهای سورت باز می شود و زبان
(ARABIC(21 را انتخاب و آنرا باز کنيد. بعد انجام اين کار شکل زير را خواهيد داشت.


در اين پنجره و tab page General دو قسمت collection name و collection ID را می بينيد. که با انتخاب زبان سورت عربی دو مقدار ARABIC و عدد 21 را خواهيد ديد حال آنها را تغيير دهيد در قسمت
collection name هر نامی را که دوست داريد می توانيد انتخاب کنيد ولی چون اوراکل در قسمت تاريخ فارسی از Persian استفاده می کند برای مطابقت با آن اين قسمت را Persian انتخاب کنيد . دکمه tab را بزنيد و به قسمت collection ID برويد مقدار ID بايد منحصر به فرد باشد يعنی غير تکراری که می توانيد مقادير بين 1000 و 2000 انتخاب کنيد. بعنوان مثال می توانيد 1004 را انتخاب کنيد بعد از تغييرات شکلی مثل زير را خواهيد ديد.


بعد از تغيير مقادير آنرا ذخيره کنيد توجه داشته باشيد اصلا نبايد نام فايل را تغيير دهيد به همان دليل که در بالا گفته شد.نام فايل براساس ID ساخته می شود. برای ذخيره منو File->Save as را انتخاب کنيد. با انتخاب آن ممکن است پيغامی به شکل زير ببينيد


دکمه Cancel يا Continue را انتخاب کنيد و فايل را در يک مسير ديگر مثل C:\oracle_sort ذخيره کنيد. حال tab page قسمت Major/Minor را انتخاب کنيد و در پايين پنجره قسمت Table Sort Option فهرستی از نوع نمايش اطلاعات را نمايش می دهد از فهرست مربوط Ascending Collation را انتخاب کنيد.سپس شکل زير را خواهيد ديد.


همان طور که در شکل می بينيد چهار قسمت بنامهای Unicode Value, Glyph, Major Sort, Minor Sort وجود دارد. و در پايين آن محلی برای اضافه, تغيير و جستجو وجود دارد. اگر در رديف حرف a و A توجه کنيد
می بينيد مقدار Major يکی است و مقدار Minor آنها فرق می کند که راجع به آن در قسمت مقدمه صحبت شد. کاراکترهايی که دارای شکل نمايش يکسان هستند دارای مقدار Major يکسان هستند. در قسمت Minor مقدار 1 برای حرف A و 2 برای حرف a نشان می دهد که حرف A قبل از a است توجه کنيد که اينجا از باينری سورت استفاده نمی شود بلکه از Monolingual linguistic sort استفاده می شود . برای فارسی در يونی کد حروف کوچک و بزرگ يکسان هستند و احتياجی به تعريف آنها نيست بنابر اين مقدار Minor آنها برابر 1 است .بيشتر حروف مرتب هستند فقط بايد حروف گچپژ را به آن اضافه کنيد و نکته ديگر اينکه در سورت عربی حرف 'ه' قبل ازحرف 'و' است و حرف کاف عربی را بايد به کاف فارسی تغيير دهيد. با ماوس Scroll کنيد تا حروف فارسی را ببينيد همانطور که در شکل می بينيد در قسمت Major حرف ب دارای مقدار 160 و حرف ت دارای مقدار 162 دارد. کافی است بين آنها حرف پ را اضافه کنيم و مقدار 161 را بدهيم برای اين کار يک بار روی دکمه New فشار دهيد تا قسمت تغييرات که بالای دکمه ها قرار دارد خالی شود و روی قسمت Glyph با ماوس کليک کنيد ابتدا صفحه کليد را به مد فارسی تغيير دهيد و حرف پ را تايپ کنيد و اگر روی قسمت Unicode Value کليک کنيد بطور خودکار خود برنامه مقدار عددی آنرا می دهد در غير اينصورت مقدار 0x067e را بدهيد. مقادير يونی کد چهار حرف گچپژ به قرار زير است.
پ 0x067e , چ 0x0686 , گ 0x06af و ژ 0x0698
برای مقدار Major عدد 161 و برای Minor عدد 1 را بدهيد سپس دکمه Add را فشار دهيد بعد از اينکار حرف پ را بايد بعد از حرف ب ببينيد اين عمل را برای حروف گ چ ژ تکرار کنيد. مقدار Minor آنها را برابر 1 بگيريد بعد از اضافه کردن حروف دو قسمت باقی مانده است. حرف کاف عربی را با Scroll کردن پيدا کنيد که بعد از ق قرار دارد و مقدار Major آن 202 است . روی آن با ماوس کليک کنيد تا مقادير آن در قسمت تغييرات بيايد حال روی قسمت Glyph يک بار کليک کنيد سپس با استفاده از صفحه کليد آنرا پاک کنيد و حرف ک را تايپ کنيد. بعد کليد Modify را بزنيد. آخرين قسمت تغيير Major مقادير حروف 'ه' و 'و' هستند .برای اينکار ابتدا روی رديف حرف 'و' کليک کنيد و مقدار Major آنرا به 210 که برابر مقدار حرف 'ه' است تغيير دهيد و دکمه Modify را بزنيد سپس رديف حرف 'ه' را انتخاب کنيد و مقدار Major آنرا به 212 تغيير دهيد و دکمه Modify را بزنيد. اگر برعکس انجام دهيد پيغام اشکال خواهيد ديد. فراموش نکنيد فايل را ذخيره کنيد می توانيد با انتخاب آيکون File Save در سمت چپ يا از منو File اين کار را بکنيد. برای نمونه تغييرات, شکل زير را ببينيد.


حال بايد آنرا کامپايل کنيد ولی قبل از هر چيز بايد از دو فايل LX0BOOT.NLB و LX1BOOT.NLB کپی پشتيبان بگيريد می توانيد اين فايلها را روی محيط Windows در مسير زير پيدا کنيد.
D:\oracle\ora92\ocommon\nls\ADMIN\DATA که D نشان دهنده درايوی است که اوراکل را آنجا نصب کرده ايد. باز هم تکرار می کنم کپی پشتيبان فراموش نکنيد بهتر است آنها را در مسير ديگری کپی کنيد چون اگر بخواهيد به حالت پيش فرض اوراکل برگرديد می توانيد اين فايلها را دوباره در مسير گفته شده کپی مجدد کنيد. چون با کامپايل کردن فايل اين فايلها تغييرمی کنند. ولی نگران نباشيد اگر به اشتباه قبل از گرفتن کپی پشتيبان فايل را کامپايل کنيد تغيير يافته فايلهای LX0BOOT.NLB و LX1BOOT.NLB در کنار همين فايل در مسيری که قبلا آنرا ذخيره کرده ايد قرار می گيرد ولی به شرطی که مسير ذخيره فايل روی
D:\oracle\ora92\ocommon\nls\ADMIN\DATA نباشد.
حال برای کامپايل فايل از منو عمودی روی آيکون Generate NLB کليک کنيد با اين عمل يک پنجره باز می شود و مسير کامپايل را می پرسد بايد مسيری که فايل را ذخيره کرديد بدهيد از دکمه Browse استفاده نکنيد چون کار نمی کند آنرا دستی تايپ کنيد. اگر فايل با موفقيت کامپايل شود پيغام زير را خواهيد ديد.


بعد از دريافت پيغام موفقيت کامپايل بايد فايلهای LX0BOOT.NLB, LX1BOOT.NLB را در مسيری که فايل را ذخيره کرده ايد ببينيد.

خاتمه کار
بايد فايلها با پسوند NLB را از مسير ذخيره فايل روی مسير
D:\oracle\ora92\ocommon\nls\ADMIN\DATA کپی کنيد فراموش نشود که قبلا از فايلهای LX0BOOT.NLB, LX1BOOT.NLB
کپی پشتيبان گرفته باشيد. سپس بانک اوراکل را بايد يکبار Shutdown و Stratup کنيد در محيط Windows می توانيد از قسمت سرويسها , سرويس مربوط به اوراکل را يک بار Stop و Start کنيد.

آزمايش برنامه
1- برنامه Locale Builder را ببنديد و يک بار ديگر باز کنيد قسمت New Linguistic Sort را از منوی عمودی انتخاب کنيد و بعد دکمه Monolingual Linguistic Sort را فشار دهيد سپس دکمه
Show Existing Definitions را بزنيد از فهرستی که باز می شود بايد فايلی که قبلا نام آنرا PERSIAN گرفته بوديم, در اين فهرست ديده شود.
2- با برنامه SQL PLUS با کاربر SCOTT وارد برنامه شويد و با دستور زير آنرا آزمايش کنيد بايد بدون پيغام اشکال اجرا شود.
;ALter session set nls_sort=persian
حال يک جدول با کاربر scott ايجاد کنيد و اطلاعات متفرقه فارسی وارد کنيد بعد با دستور Select و Order by آنرا آزمايش کنيد .
از آنجايکه خيلی از شما حال درست کردن فايلهای سورت و آزمايش را نداريد بنابراين می توانيد فايلها را از اينجا دانلود کنيد. اين فايل Zip شامل فايلهای LX303EC.NLT, LX303EC.NLB, test.sql است شما می توانيد فايل LX303ec.nlt را با برنامه Locale Builder باز کنيد اگر باز نشد از فايل nlb آن استفاده کنيد و آنرا به روش بالا کامپايل کنيد. از فايل test.sql می توانيد برای ساختن جدول و ذخيره اطلاعات فارسی و آزمايش برنامه استفاده کنيد.

تنظيم پارامتر nls_sort
همانطور که قبلا گفته شد و در فايل test.sql نيز آمده است می توانيد پارامتر nls_sort با دستور ALTER SESSION تغيير دهيد ولی اين تغيير موقتی است و اگر برنامه SQL PLUS را ببنديد و دوباره باز کنيد باز بايد دستور ALTER SESSION را دوباره اجرا کنيد برای اين که بطور دائم برای تمامی کاربران و برنامه های خود آنرا داشته باشيد کافی است آنرا در Registery Windows اضافه کنيد نحوه اضافه کردن به شکلی است که در تنظيم
پارامترهای تاريخ گفته شده است.

نکته باقی مانده:
nls_srot مستقل از Instance اوراکل است من آنرا روی دو Instance مختلف که يکی با کاراکترست AR8MSWIN1256 و ديگری با کاراکترست UTF8 بود آزمايش کردم همه چيز درست عمل کرد.
اميدوارم که مفيد واقع شده باشد.

یکشنبه، دی ۱۵، ۱۳۸۱

نتظيم پارامترهای مربوط به تاريخ فارسی در اوراکل
قبلا در مطلب تاريخ فارسی در اوراکل گفته شد که چطور می توان در برنامه خود پارامتر nls_calendar و nls_date_format را چطور در برنامه خود استفاده کنيد با اين کارمجبوريد برنامه يا صفحات وب خود را تغيير دهيد حال با روشی که گفته می شود اصلا لزومی ندارد برنامه خود را تغيير دهيد. کافی است اين پارامترها را در Registery Windows قرار دهيد. با اجرای دستور Regedit در قسمت RUN ويندوز وارد محيط Registery شويد. در مسير HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0 روی HOME0 کليک کنيد در سمت راست صفحه پارامترهای اوراکل را می بينيد مثلا NLS_LANG که قبلا راجع به آن صحبت شد. برای اضافه کردن پارامترهای NLS_CALENDAR و NLS_DATE_FORMAT کافی است از منو
EDIT->NEW->String Value را انتخاب کنيد. با انتخاب آن New Value #1 را می سازد که آنرا به NLS_CALENDAR تغيير دهيد سپس دوبار روی آن کليک کنيد که يک پنجره باز می شود در قسمت
Value data مقدار Persian را تايپ کنيد همين روند را برای NLS_DATE_FORMAT تکرار کنيد و مقدار آنرا YYYY/MM/DD قرار دهيد. لطفا اين پارامترها را روی Registery ماشين Server و Client تغيير دهيد.
نکته:
همانطور که قبلا گفته شد اگر بيش از يک محصول اوراکل را روی ماشين خود نصب کرده باشيد HOME0,HOME1,HOME2 را خواهيد داشت که بايد پارامترها را برای همه آنها نتظيم کنيد.

شنبه، دی ۱۴، ۱۳۸۱

فارسی سازی در اوراکل بطور کامل حل شد
همانطور که در چندين مقاله نحوه فارسی سازی در اوراکل از نصب و انتخاب کاراکترست گرفته تا تاريخ شمسی دراوراکل بيان شد.برای اطلاعات لازم می توانيد اين صفحه يا قسمت آرشيو را ببينيد. فقط قسمت Sorting باقی مانده بود که آنهم حل شد همين الان که دارم اين مطلب را می نويسم دقيقا چند دقيقه قبل ساختن يک کاراکترست Sort فارسی و آزمايشهای لازم تمام شد. در حال حاضر در حال نوشتن مستند مربوط به نحوه ساختن يک کاراکترست برای داشتن Sort فارسی و کامپايل کردن آن و نحوه استفاده آن در اوراکل هستم که انشا الله تا يکی دو روز آينده روی سايت خواهد بود.
نکته مهم:
با اين کار اصلا لازم نيست کوچکترين تغييری در اطلاعات قبلی خود بدهيد می توانيد روند ورود اطلاعات خود را مثل سابق ادامه دهيد. بعضی از شرکتها به مشتری خود می گويند که ما اين خصوصيت را نصب می کنيم و هزينه آنرا نيز دريافت می کنند و همچنين می گويند اطلاعات را بايد تغيير(Convert) کنند که با اين کار هزينه اضافی می گيرند. بايد بگويم که آنها يک کاراکترست جديد می سازند و آنرا روی ماشين شما نصب می کنند که با اطلاعات قبلی شما سازگار نيست و اگر اوراکل را مجددا يا روی ماشين ديگری نصب کنيد ديگر اين خصوصيت را نداريد و با يد به شرکت مربوطه بگوييد بيايد و دوباره اين کاراکترست را نصب کند ولی با حالتی که گفته می شود اوراکل را می توانيد با کاراکترست قبلی خودش مثل AR8MSWIN1256 روی هر ماشينی که می خواهيد نصب کنيد فقط کافی است که کاراکترست Sort را روی ماشين خود کامپايل و کپی کنيد. زندگی شرين می شود اينطور نيست.
مژده:
يک مستند کامل فارسی سازی در اوراکل به فرمت DOC يا PDF نوشته خواهد شد و برای دانلود در سايت قرار خواهد گرفت. ديگر چه می خواهد ديگر غر نزنيد هی, بگوييد اوراکل مشکل فارسی دارد بجای آن بگوييد حوصله حل کردن آنرا نداريد و همش راجع به MS SQL Server صحبت کنيد.
بازم هم ايميل نزنيند, نظرندهيد. قسمت نتيجه گيری در همين صفحه را نيز بخوانيد.

چهارشنبه، دی ۱۱، ۱۳۸۱

Sort فارسی در اوراکل
قبلا در چند مقاله گفته شد که چطورمی توانيد در اوراکل فارسی داشته باشيد فقط قسمت Sorting حروف فارسی باقی مانده است برای داشتن Sort فارسی در اوراکل می توانيد با نرم فزار و مستندات Oracle Locale Builder که اين نرم افزار با نسخه 8i به بازار آمد کار کنيد. می توانيد با آن يک کاراکترست جديد تعريف کنيد يا کاراکترستهای قبلی را تغيير دهيد. ولی کافی است فقط روی Sorting کار کنيد. برای راهنمايی بايد روی فايلها با پسوند NLB,NLT اوراکل کار کنيد. فايلهای NLT که مخفف National Language Text است وبعد از کامپيال به NLB که مخفف National Language Binary است تبديل می شود.فايلهای NLB را می توانيد در شاخه زير پيدا کنيد.
ORAHOME:\oracle\ora92\ocommon\nls\ADMIN\DATA منظور از ORAHOME داريوی است که اوراکل را روی آن نصب کرده ايد. برنامه Oracle Locale Builde با نصب Oracle Enterprise Edition نصب می شود و روی Server قرارمی گيرد نه Client . بعد از اجرا اين برنامه در سمت چپ يک سری منو عمودی به صورت Icon می بينيد قسمت
New Linguistic Sort را انتخاب کنيد سپس دکمه Show Existing Definition را فشار دهيد ليستی از زبانهای مختلف می بينيد حال( ARABIC(21 را انتخاب کنيد در همان پنجره اين پيغام را بايد ببينيد Corresponding File Name: lx30015.nlb اين همان فايلی است که بايد ترتيب بعضی از حروف آن را عوض و چهار حرف گچپژ را به آن اضافه کنيد. اگر tap page مربوط به Major/Minor را انتخاب کنيد چهار ستون Unicode Value,Glyph, Major sort, Minor sort خواهيد ديد. در قسمت پايين صفحه می توانيد حرف جديد تعريف کنيد فراموش نکنيد که بايد يونی کد حروف فارسی را بدانيد. برای اطلاعات راجع به يونی کد تمامی زبانها به اين آدرس مراجعه کنيد
http://www.unicode.org/charts ولی برای فارسی يا عربی از لينک Arabic آن استفاده کنيد.

نکته:
نسخه يونی کد در سايت http://www.unicode.org/charts و اوراکل بايد سازگار باشند به مستندات اوراکلی را که نصب کرده ايد مراجعه کنيد ببينيد آخرين نسخه يونی کد که پشتيبانی می کند کدام است.