Showing posts with label Database. Show all posts
Showing posts with label Database. Show all posts

Thursday, December 15, 2011

အပ်င္းေျပ Remote Access MySql

အပ်င္းေျပ Remote Access MySql

အခုတေလာ အိမ္မွာ program ေလးဘာေလး မေမ႔ေအာင္ ျပန္ေရးပါတယ္။

MySql ကို remote ကေန၀င္ခ်င္ရင္ fire wall မွာ Port blocking လုပ္ထားလားၾကည္႕ပါ။ Window Firewall မွာ port ကို configure လုပ္ေပးလုိ႕ရပါတယ္။ default ဆိုရင္ Port 3306 ကို ဖြင္႔ေပးလုိက္ပါ။ ေနာက္တစ္ခုက security suite ေတြမွာပါတဲ႔ firewall ေတြမွာ portေတြပိတ္ထားရင္လည္း ဖြင္႔ေပးပါ။

MySQL ကုိ စသြင္းကတည္းက remote Login လုပ္မယ္ဆုိတာေရြးထားလိုက္ရင္လြယ္ပါတယ္။

Database တစ္ခုမွာ root access ကို remote ကေန ဖြင္႔မေပးတာေတာ႔အေကာင္းဆံုးပါပဲ။ သီးျခား user account တစ္ခု create လုပ္ျပီး privilege ေတြေပးပါ။ လြယ္လြယ္ကူကူ လုပ္ခ်င္ရင္ SQLYog ျဖစ္ျဖစ္သြင္းထားျပီး Manage User ကေန user ေတြ create လုပ္ျပီး access rights ေတြ define လုပ္ႏုိင္ပါတယ္။

အားလံုးအိုေကျပီဆိုရင္ေတာ႔ တျခား စက္တစ္လံုးကေန MySQL run ထားတဲ႔စက္ကို ping ၾကည္႕ပါ။
ping လုိ႕ရရင္ telnet နဲ႕ Port ပြင္႔ေနလား မပြင္႔ေနလားၾကည္႕ပါ။ Windows 7 မွာေတာ႔ telnet client ကိ္ု အရင္ on ရပါမယ္။ default က off ထားပါတယ္။

ping IP address.
telnet IP adress(space)port No.

အဲဒီလိုရျပီဆိုရင္ေတာ႔ program ကေန ခ်ိတ္ၾကည္႕လုိ႕ရပါျပီ။ SQL client နဲ႕ျဖစ္ျဖစ္ java ရဲ႕ JDBC နဲ႕ျဖစ္ျဖစ္ခ်ိတ္ျပီး ေရးလို႕ရပါျပီ။


My SQL မွာပဲျဖစ္ျဖစ္ တျခား RDBMS ေတြမွာပဲျဖစ္ျဖစ္။ Access right ကို အမ်ားၾကီးေပးထားျပီး ျပန္ေလ်ာ႔ခ်င္တယ္ဆိုရင္သတိထားဖုိ႕လိုပါတယ္။ ဥပမာအားျဖင္႔ user A ကို ပထမ delete ေရာ update access ပါေပးထားျပီး၊ select တစ္ခုပဲ ျပန္ေပးတယ္ဆိုပါေတာ႔။ userA ဟာ သူ႕ access right ကို modify မလုပ္ခင္ login ၀င္ထားရင္ အဲဒီ session ရိွေနသေရြ႕ေတာ႔ သူ႕မွာ အရင္ privilegeေတြက်န္ေနပါေသးတယ္။ remote log-in ၀င္တဲ႔ user account ေတြဆိုရင္ session ကို kill လုပ္တာျဖစ္ျဖစ္၊ မလုပ္တတ္ရင္ MySQL service ကို restart လုပ္လုိက္တာျဖစ္ျဖစ္ လုပ္ရပါမယ္။ အဲဒီလိုမလုပ္သေရြ႕ေတာ႔ user access update လုပ္လိုက္တာဟာ privilege ေတြ ေလ်ာ႔သြားဖုိ႕၊ေျပာင္းသြားဖုိ႕အတြက္ မေသခ်ာပါဘူး။ အဲဒီ အေျခခံအခ်က္ေတြကို သတိထားဖုိ႕လိုပါတယ္။

သိပ္မ်ား အၾကမ္းဖ်င္းဆန္ေနမလားမသိဘူးဗ်ာ။
screen captured လုပ္ရမွာပ်င္းတာနဲ႕ ဒီအတိုင္းပဲေရးလုိက္ပါတယ္။
အဆင္ေျပမယ္ထင္ပါတယ္။
အဆင္မေျပဘူးဆိုရင္လည္း မေျပတာေလး comment ေရးခဲ႔ပါ။

Regards,
The zero.

Wednesday, November 30, 2011

Data Profiling Tool, The SQL Power Architect

Data Profiling Tool, The SQL Power Architect

အလကားရျပီး သံုးေပ်ာ္တဲ႔ Tool တစ္ခုပါပဲ။
အခုတေလာ အဲဒါနဲ႕ပဲ ေန႕တုိင္း အလုပ္မ်ားေနပါတယ္။

ဘာအတြက္သံုးသလဲဆိုရင္ေတာ႔ Data ေတြဟာ Database ထဲမွာ သိမ္းထားျပီးရင္း သိမ္းထားနဲ႕ ဘယ္ေလာက္ အေျခအေနဆိုးေနလဲမသိေတာ႔ေလာက္ေအာင္ျဖစ္လာပါတယ္။ Name field မွာ null ျဖစ္ေနတာ၊ NRIC မွာ null ျဖစ္ေနတာေတြ၊ date ေတြက 1900 ေတြ၊ 2900 ေတြျဖစ္ေနတယ္ဆိုရင္ data volume မ်ားလာရင္ analyze လုပ္ဖုိ႕ခက္ပါတယ္။ အဲဒါေတြအတြက္ ဒီ SQL Power Architect ကို အလကား download လုပ္ျပီးစစ္ေဆးၾကည္႕ႏုိင္ပါတယ္။ Oracle အတြက္ သံုးေနပါတယ္။ MS SQL အတြက္လည္းရိွပါတယ္။

လိုအပ္ရင္သံုးလို႕ရေအာင္ပါ။
ထူးထူးျခားျခားမဟုတ္ေပမယ္႔ အသံုးတဲ႔တဲ႔ Profiler Tools တစ္ခုအေၾကာင္း သတင္းေပးတဲ႔သေဘာပါပဲ။

Setup ကလည္းမခက္ပါဘူး။
JDBC driver ေတာင္းရင္လည္း driver api ကို download လုပ္ျပီး locate လုပ္ေပးလုိက္ရံုပါပဲ။

DB connection ရျပီဆိုရင္ Table Name မွာ right click လုပ္ျပီး profile လုပ္ရံုပါပဲ။ အဲဒီ result ကို view selected လုပ္လုိက္ရင္ Graphical view နဲ႕ေရာ csv view နဲ႕ပါ အေသးစိတ္ၾကည္႕ႏိုင္ပါတယ္။ export လုပ္လို႕လည္းရပါတယ္။ အလကားရတဲ႔ႏြားကို သြားျဖဲျပီးၾကည္႕ျပီးသကာလမွာ ဒီႏြားၾကီးမဆိုးဘူးလို႕ သေဘာေပါက္ရပါတယ္။

(မၾကာမီ post မ်ားကို ေန႕စဥ္ update လုပ္သြားပါမယ္။)

Regards,
Zero

Wednesday, February 23, 2011

decode in oracle.

decode in oracle.

တခါတေလ oracle မွာ decode ဆိုတာကိုေတြ႕ရတတ္တယ္။
အဲဒါကို ရွာၾကည္႕ရမွာပ်င္းတဲ႔သူေတြအတြက္ ၾကိဳဖတ္ထားလုိ႕ရေအာင္ပါ။

SELECT name,
decode(id,'B0001','ID_1,
'B0002','ID_2,
'B0003','ID_3,
'ID_DEFAULT')ID_MASK


FROM customer;

အဲဒါၾကည္႕ရင္ CASE မသံုးခ်င္လုိ႕ အလြယ္လုပ္ထားတာကို ေတြ႕ရပါမယ္။
ဆိုလိုတာက id ကိုၾကည္႕ျပီး B001 ကို ID_1 လို႕ေျပာင္းတာကို ေရးရင္ ရွည္လို႕ လြယ္လြယ္ကူကူ decode function ေလးနဲ႕သပ္သပ္ရပ္ရပ္ေရးလုိက္တာပါပဲ။ ID_MASK က ေတာ႔ alias တစ္ခုေပးလုိက္တာပါပဲ။ ဘာမွမဟုတ္ပါဘူး။

အဲဒါကို IF-THEN-ELSE နဲ႕ေရးရင္ ဒီလိုရပါမယ္
if (id='B0001') then
ID_MASK:='ID_1'
esle if (id='B0002') then
ID_MASK:='ID_2'
else if (id='B0003') then
ID_MASK:='ID_3'
else
ID_MASK:='ID_DEFAULT'
decode ဆိုလို႕ ဘာမ်ားလဲမသိျဖစ္တတ္တာပါ။ အမွန္က ေထြေထြထူးထူးမဟုတ္ပါဘူး။

decode( expression , search , result [, search , result]... [, default] )

အဲဒီလိုမွတ္လုိ႕ရပါတယ္။ NULL ဆိုရင္ 0 ေျပာင္းထည္႕မယ္။ မဟုတ္ရင္ default အတိုင္းျပမယ္ဆိုတာေတြေရးလုိ႕လည္းရပါတယ္။

DECODE(EXTRA_PREMIUM,NULL,0,EXTRA_PREMIUM)

အေပၚက decode မွာဆိုရင္ extra premium field က Null ဆိုရင္ zero လို႕ျပမယ္။ Null မဟုတ္ရင္ သူ႕တန္ဖိုးအတုိင္းျပမယ္။

အလုပ္လုပ္ေနရင္း အသံုးလိုတာေလးေတြ share လိုက္တာပါ။ အေသးအဖြဲေတြေပမယ္႔ သိထားရင္ အသံုး၀င္ႏိုင္ပါတယ္။