วันพุธที่ 6 เมษายน พ.ศ. 2554

Oracle How To: create user via SQL plus

หลังจากลองลง Oracle Server 64 bit ลงในเครื่องพบว่ามันใช้ Toad กับ PL/SQL Developer connect เข้าไปไม่ได้ เนื่องจากมัน support เฉพาะ 32 bit ดังนั้นก็เลยต้องมาพึ่ง SQL plus อย่างช่วยไม่ได้

เริ่มแรกเลย connect เข้า SQL plus ด้วย user sys ที่สร้างไว้ตอน create database ก่อนเลย

sqlplus sys/password@SERVICE as sysdba

เมื่อเข้ามาได้แล้วก็ สร้าง user ก่อนเลยด้วยคำสั่ง create user

create user myuser identified by password;

หลังจากเรา create user เสร็จแล้ว ก็จะพบว่า login เข้าไปไม่ได้ เนื่องจากเรายังไม่ได้ grant สิทธิ์ให้ connect เข้า database ได้ โดยเราสามารถ grant สิทธิ์ได้ดังนี้

grant connect to myuser;

หรือถ้าจะเอาแบบให้ได้ทุกอย่างเลยก็

grant dba to myuser;

เท่านี้ก็สามารถ connect เข้า database ได้แล้ว

วันศุกร์ที่ 25 กุมภาพันธ์ พ.ศ. 2554

Oracle How To: Change character set ให้อ่านภาษาไทยได้

การแก้ Oracle ให้อ่านภาษาไทยได้นั้น จะแบ่งออกเป็น 2 ส่วน คือ 
1. ฝั่ง client 
2. ฝั่ง server

โดยการที่จะทำให้อ่านภาษาไทยได้ต้อง set character set ทั้งที่ client และ server ประกอบกันทั้งคู่

วิธีการ set ทางฝั่ง client มีดังนี้

1. ทำการแก้ไขใน reg edit ที่ My Computer\HKEY_LOCAL_MACHINES\SOFTWARE\ORACLE\KEY_OraDb10g_home1 โดยแก้ NLS_LANG ให้เป็น THAI_AMERICA.TH8TISASCII

โดย THAI_AMERICA เนี่ย ตัวหน้า คือ ภาษาของพวกข้อมูลที่แสดง ส่วนตัวหลังจะเป็นภาษาของระบบ เช่น พวก error message

จบละ

ส่วนวิธีการ set ทางฝั่ง server มีดังนี้

1. เริ่มจาก query ก่อนเพื่อดู character set ของ server ก่อน โดยใช้ sql

SELECT * FROM NLS_DATABASE_PARAMETERS;


จะเห็นว่ามี NLS_CHARACTERSET และ NLS_NCHAR_CHARACTERSET ซึ่งทั้ง 2 ค่าต้องเป็นอย่างในรูป (ุTH8TISASCII และ AL16UTF16 ตามลำดับ) ซึ่งถ้าไม่ใช่ก็ต้อง set ใหม่ 

2. ทำการ set ค่าโดยเข้าใช้ SQLPlus ผ่าน command line ดังนี้

 2.1 ใช้ sqlplus ต่อ database ด้วย command
C:\> sqlplus dbusername/dbpassword@dbservice
โดยตัว service นี้ดูจากในไฟล์ TNSNAME.ORA

2.2 เข้า mode sysdba
SQL> connect sys/syspassword@dbservice as sysdba;
ถ้าเข้าเรียบร้อยแล้ว จะขึ้นว่า Connected.

2.3 รันคำสั่งแก้ไข character set ดังนี้
update props$ 
set value$='TH8TISASCII'
where name='NLS_CHARACTERSET';
แล้วมันจะขึ้นว่า 1 row update ก็ commit ซะ

3. restart oracle service แล้วก็จะใช้ได้แล้ว

4. ส่วน NLS_NCHAR_CHARACTERSET ก็ทำเหมือนกัน แค่เปลี่ยน sql สุดท้าย

จบฮะ

ปล. Oracle 10g
reference: http://www.narisa.com/forums/index.php?showtopic=14704