Oracle Database 18c XE กับปัญหาการ import user

Oracle Database XE คืออะไร Oracle XE หรือ Oracle Express Edition เป็นซอฟต์แวร์ฐานข้อมูล Oracle เวอร์ชันที่ให้สามารถดาวน์โหลดไปใช้งานได้โดยไม่มีค่าใช้จ่าย แต่จะมีข้อจำกัดในการใช้งาน ตัวอย่างเช่นในเวอร์ชัน 18c จะมีข้อจำกัด เช่น จำกัดการใช้งานข้อมูลได้ไม่เกิน 12 GB จำกัดการใช้งาน RAM ได้ไม่เกิน 2 GB ฟังก์ชันการใช้งานหลายอย่างที่ไม่มีให้ใช้งานเหมือนเวอร์ชัน Standard หรือ Enterprise Oracle Database XE 18c กับการติดตั้งในรูปแบบ Multitenant Oracle Database XE 18c จะถูกติดตั้งในรูปแบบที่เรียกว่า Multitenant ซึ่งจะมีรูปแบบดังนี้คือ มีฐานข้อมูลที่เป็น container database ฐานข้อมูลที่สร้างภายใต้ container เรียกว่า pluggable database ในการติดตั้งไม่สามารถเลือกได้ว่าจะลงเฉพาะ container database อย่างเดียวโดยไม่ลง pluggable database แต่ตัว pluggable database จะถูกติดตั้งมาให้ด้วย 1 pluggable database (มีได้สูงสุด 3 pluggable database) รูปตัวอย่างผลการติดตั้ง Oracle Database XE 18c การเรียกใช้ service name จะเป็นดังนี้ XE เป็น service name สำหรับเรียกใช้ container database XEPDB1 เป็น service name สำหรับเรียกใช้งาน pluggable database service name ทั้ง XE และ XEPDB1 จะถูกกำหนดไว้แล้วตั้งแต่ตอนติดตั้ง ปัญหาที่พบกับการ import user เมื่อมีการ import user ด้วยคำสั่ง impdp พบปัญหากับฐานข้อมูล container หรือ XE ส่วน ตัว pluggable หรือ XEPDB1 จะไม่พบปัญหาเช่นนี้ ตัวอย่างข้อความ error ที่พบ ORA-39083: Object type USER:”๊USER” failed to create with error: //”USER” คือชื่อ user ที่ถูก import เข้ามา ORA-65096: invalid common user or role name ตัวอย่างการแก้ปัญหาเมื่อต้องการ import user เข้า XE รันคำสั่ง alter session set “_ORACLE_SCRIPT”=true; สร้าง user ใหม่ โดยตั้งชื่อให้ตรงกับ user ที่ต้องการ import ทำการ import ด้วยคำสั่ง impdp ตามปกติ สิ่งที่น่าสนใจ จะเห็นว่า oracle database 18c XE ถูกติดตั้งมาในรูปแบบ multitenant โดยมี database เริ่มต้นให้ 2 database คือ container database และ pluggable database ดังนั้นการเลือกว่าจะใช้งานแบบไหนก็ขึ้นอยู่กับลักษณะงานที่เราต้องการใช้งาน แต่กรณีที่ต้องการใช้งานทั่วไปแบบปกติ จะเห็นว่าการเลือกทำงานกับฐานข้อมูล pluggable database ดูแล้วน่าจะพบปัญหาน้อยกว่าจะไปทำงานกับตัว container database

Read More »

เชื่อมต่อจากฐานข้อมูล Oracle ไปยังฐานข้อมูลอื่นด้วย Oracle Database Gateway

โดยปกติหากต้องการเชื่อมต่อฐานข้อมูลสองฐานข้อมูลสำหรับ Oracle สามารถทำได้โดยการสร้าง database link แต่กรณีที่ต้องการสร้างการเชื่อมต่อจากฐานข้อมูล Oracle ไปยังฐานข้อมูลที่สร้างโดยระบบจัดการฐานข้อมูลอื่นที่ไม่ใช่ Oracle เช่น MS SQL Server, MySQL สามารถทำได้โดยใช้เครื่องมือที่เรียกว่า Oracle Database Gateway นั่นเอง ตัวอย่างการใช้ Oracle Database Gateway เชื่อมต่อไปยัง MS SQL Server เพื่อให้เห็นภาพการใช้งานจะยกตัวอย่างการใช้งานกับ MS SQL Sever ดังนี้ หมายเหตุ รุ่นของ Software ที่ใช้ในตัวอย่างนี้คือ Oracle Database 12c R2 (12.2.0) Oracle Database Gateways 12c (12.2.0) เตรียมข้อมูลที่จำเป็นก่อนการติดตั้ง ข้อมูลของ SQL Server ที่เราต้องการเชื่อมต่อ ชื่อเครื่องหรือ IP Address ของเครื่องที่ SQL Server ติดตั้งอยู่ หมายเลข port ของ SQL Server ที่เราต้องการเชื่อมต่อ ชื่อฐานข้อมูล SQL Server ที่เราต้องการเชื่อมต่อ 2. ขั้นตอนการติดตั้ง Oracle Database Gateway เมื่อดาวน์โหลดตัวติดตั้งจากเว็บไซต์ของ Oracle แล้ว ดำเนินการติดตั้งจากตัวติดตั้งที่ดาวน์โหลด ดังตัวอย่างต่อไปนี้ ขั้นตอนนี้จะเป็นการใส่ข้อมูลของฐานข้อมูล MS SQL Server ที่ต้องการเชื่อมต่อ หลังจากนั้นทำการติดตั้งไปตามขั้นตอนตามลำดับ จนถึงขั้นตอนการสร้าง listener หลังจากติดตั้ง listener สำเร็จแล้ว ก็เป็นอันเสร็จสิ้นการติดตั้ง Oracle Database Gateway *** หลังจากการติดตั้ง หากเรียกดู Service จะเห็นว่ามี service ของ listener ปรากฎขึ้นมา 3. การตั้งค่าหลังจากติดตั้ง ไปยังโฟลเดอร์ที่ติดตั้ง Oracle Database Gateway เช่น C:\app\tg\Administrator\product\12.2.0\tghome_1\dg4msql\admin เปิดไฟล์ initdg4msql.ora ตรวจสอบการตั้งค่าตรง  HS_FDS_CONNECT_INFO HS_FDS_CONNECT_INFO=[192.168.100.184]/1433/MSSQLSERVER กรณีมีแค่ instance เดียว  อาจจะละชื่อ instance ไว้ และระบุชื่อฐานข้อมูลได้เลย ดังตัวอย่าง HS_FDS_CONNECT_INFO=[192.168.100.184]:1433//FILMSDSQL 4. สร้าง database link เมื่อติดตั้ง Oracle Database Gateway เสร็จแล้ว ขั้นตอนต่อมาคือการสร้าง database link บนฐานข้อมูล Oracle เพื่อทำการเรียกดูข้อมูลบน MS SQL Server ผ่านทาง database link ที่สร้างขึ้นมา รูปแบบคำสั่งในการสร้าง Database Link เป็นดังนี้ CREATE PUBLIC DATABASE LINK DBLinkName CONNECT TO sa IDENTIFIED BY password USING ‘dg4msql’; DbLinkName คือ ชื่อของ database link sa คือชื่อของ user บน MS SQL Server (อาจจะเป็น user อื่นก็ได้) password คือ รหัสผ่านสำหรับ user บนฐานข้อมูล MS SQL Server 5. การเรียกดูข้อมูล สามารถเรียกดูข้อมูลผ่าน database link ที่สร้างขึ้นโดยใช้คำสั่ง sql เช่น select * from table@DBLinkName; เมื่อ table

Read More »

การใช้ grant และ grant with grant option ใน Oracle

การใช้คำสั่ง grant โดยทั่วไปเมื่อต้องการให้สิทธิ์สำหรับดำเนินการกับ object ใด ๆ ของ user หนึ่งให้กับอีก user หนึ่ง จะใช้คำสั่งคือ grant ตัวอย่าง เช่น user1 เป็นเจ้าของตารางชื่อ table01 ในฐานข้อมูลมี user ชื่อ user2 อยู่ในฐานข้อมูลเดียวกับ user1 ต้องการให้ user2 สามารถใช้คำสั่ง select ข้อมูลจากตาราง table01 ของ user1 บน user1 ดำเนินการโดยใช้คำสั่งในการให้สิทธิ์คือ grant select on user1.table01 to user2; หลังจากให้สิทธิ์แล้ว บน user2 สามารถใช้คำสั่งในการ select ข้อมูลจากตาราง table01 ของ user1 ได้ ตังตัวอย่างดังนี้ select * from user1.table01; //ต้องระบุ user คั่นด้วยจุด และตามด้วยชื่อตาราง การให้สิทธิ์ นอกจาก select แล้ว ยังมีสิทธิ์อื่น ๆ อีก เช่น insert, update, delete, execute ฯลฯ ตัวอย่างการให้สิทธิ์มากกว่าหนึ่งสิทธิ์ grant select, insert, update, delete on user1.table01 to user2; การใช้คำสั่ง grant with grant option รูปแบบการใช้คำสั่งคือ หลังคำสั่ง grant ปกติ ตามด้วย with grant option เช่น grant select on user1.table01 to user2 with grant option; ผลจากการใช้คำสั่ง with grant option จะมีผลให้ user ที่ได้รับสิทธิ์ สามารถให้สิทธิ์ที่ได้รับมา grant ต่อไปให้กับ user อื่นต่อได้นั่นเอง ต่อเนื่องจากตัวอย่างแรก มี user3 ในฐานข้อมูลเดียวกันกับ user1 และ user2 เมื่อ user1 ใช้คำสั่ง grant select on user1.table01 to user2 with grant option; มีผลทำให้ user2 สามารถ grant สิทธิ์ในการ select ให้กับ user อื่นต่อได้ เช่น grant select on user1.table01 to user3; user ที่ได้รับสิทธิ์ grant with option สามารถ ใช้ grant with option ต่อให้กับ user อื่นได้หรือไม่ ??? user ที่ได้รับการ grant ด้วยคำสั่ง with grant option สามารถ grant ให้ user อื่นด้วยคำสั่ง with grant option ด้วยเช่นกัน ตัวอย่าง เช่น มี user4 ในฐานข้อมูลเดียวกับ user1, user2, user3 ต่อเนื่องจากตัวอย่างก่อนหน้านี้ user3 สามารถใช้คำสั่ง with grant option ต่อให้กับ user4 ได้

Read More »

Oracle User expire โดยไม่ทราบสาเหตุ

นักพัฒนาบางท่านที่เพิ่งเริ่มพัฒนาระบบบนฐานข้อมูล Oracle อาจจะเคยเจอปัญหาเมื่อใช้ Oracle ตั้งแต่เวอร์ชัน 11 เป็นต้นไป นั่นคือ เมื่อสร้าง user บน Oracle และใช้งานไปได้ซักระยะอยู่ ๆ user นี้ก็เกิดก็ expire โดยที่ไม่ได้มีใครเข้าแก้ไขการตั้งค่าของ user นี้ ซึ่งเหตุการณ์นี้อาจจะมีสาเหตุแบบเดียวกับที่จะนำเสนอในบทควาามนี้ก็เป็นได้ หมายเหตุ ในบทความนี้จะใช้ Oracle SQL Developer ซึ่งเป็นเครื่องมือในการเข้าถึงและจัดการฐานข้อมูล Oracle มาช่วยในการอธิบายเพื่อให้เห็นภาพได้ง่ายขึ้น ขั้นตอนการตรวจสอบที่มาของปัญหาและการแก้ไข login ด้วย sys ตรวจสอบการตั้งค่า Default Profile โดยเลือกเมนู View –> DBA 3. ในหน้าต่าง DBA เลือกเพิ่มการเชื่อมต่อโดย SYS 4. ไปที่การตั้งค่า Default Profile 5. คลิกขวาที่ Default แล้วเลือก Edit 6. จะปรากฏหน้าต่าง Default Profile ซึ่งใน Oracle 11 เป็นต้นไป หลังจากติดตั้งและสร้าง Database แล้ว ใน Default Profile จะมีการตั้งค่าเริ่มต้นไว้ดังรูป โดย Default Profile จะมีผลกับ user ที่ถูกสร้างใหม่ และค่าที่ทำให้ user หมดอายุโดยอัตโนมัติก็คือ “Expire in (days)” นั่นเอง จึงเป็นที่มาของการที่ user expire เองโดยที่ไม่ได้มีการเข้าไปแก้ไขข้อมูลใด ๆ ของ user นี้ 7. การแก้ไขไม่ให้ user ที่สร้างใหม่ expire อัตโนมัติ ทำได้โดยการแก้ค่า “Expire in (days)” ให้เป็น UNLIMITED เมื่อแก้ไขแล้ว user ใหม่ที่ถูกสร้างหลังจากนี้ก็จะใช้งานได้ตลอดไม่มีวัน expire แต่ส่วนของ user ที่เคยสร้างไปก่อนหน้านี้ ผู้พัฒนาจะต้องเข้าไปปรับแก้วันที่ expire เป็นราย user ไป

Read More »

Remote ไปยังเครื่องคอมพิวเตอร์อื่นด้วย Chrome Browser

การใช้งานเทคโนโลยีการทำงานระยะไกลหรือการ remote จากเครื่องคอมพิวเตอร์เครื่องหนึ่งไปยังอีกเครื่อง นับว่ามีความจำเป็นเพิ่มขึ้นมากในปัจจุบัน ซึ่งตัวระบบปฏิบัติการเองก็มีเครื่องมือรองรับ เช่น ใน Windows จะมี Remote Desktop นอกจากนี้ยังมีซอฟต์แวร์ที่รองรับการทำงานลักษณะนี้ เช่น TeamViewer หรือ AnyDesk ซึ่งบางซอฟต์แวร์หากใช้งานในลักษณะฟรี ก็อาจจะมีข้อจำกัดในการใช้งานบ้าง ดังนั้นในบทความนี้จะนำเสนอการใช้งาน remote ผ่าน chrome browser ซึ่งสามารถใช้งานได้ฟรี และค่อนข้างจะรองรับการทำงานทั่ว ๆ ไปได้ โดยไม่จำกัดเรื่องการเข้าใช้งาน (บางซอฟต์แวร์อาจจะมีการจำกัดจำนวนครั้งในการใช้งานในช่วงระยะเวลาหนึ่ง เป็นต้น) เตรียมการเบื้องต้นก่อนการใช้งาน ติดตั้ง chrome browser ทั้งฝั่งเครื่องต้นทางและฝั่งเครื่องปลายทาง เตรียมบัญชีผู้ใช้งานสำหรับ google หรือ google account เพื่อใช้สำหรับ remote ขั้นตอนการติดตั้งและตั้งค่า Extensions “Chrome Remote Desktop” การใช้งาน remote ผ่าน chrome browser นั้น อันดับแรกจะต้องทำการติดตั้ง Extensions เพิ่มก่อน ซึ่งก็คือ Chrome Remote Desktop ซึ่งช่องทางการดาวน์โหลดสามารถทำได้จากเมนูที่อยู่ในหน้าจอ chrome ได้เลยดังรูป โดยการกดที่เมนู Apps ถ้าไม่เจอเมนู Apps ให้ไปที่เมนู Bookmarks และเลือก Show bookmark bar ดังรูป จะปรากฏแถบว่าง ๆ ใต้ช่อง URL ซึ่งแถบนี้ก็คือ bookmark bar นั่นเอง คลิกขวาที่ bookmark bar จากนั้นเลือกเมนู Show apps shortcut เมื่อกดเลือกเมนู Apps แล้ว ในหน้าจอ chrome จะปรากฏรายการดังนี้ เลือก Web Store เพื่อเข้าไปดาวน์โหลด Chrome Remote Desktop 2. ในช่อง Search the store พิมพ์ chrome remote desktop เพื่อค้นหา กดเลือก Chrome Remote Desktop จะเข้าสู่หน้าจอการติดตั้ง extension นี้เพิ่มเติมให้กับ chrome browser เมื่อกดปุ่ม Add to Chrome จะมีกล่องข้อความถามเพื่อยืนยันการติดตั้ง ให้กดปุ่ม Add extension เพื่อยืนยัน เมื่อติดตั้งสำเร็จจะมีข้อความแจ้งดังรูป สังเกตว่าหลังช่อง URL จะปรากฏไอคอน ซึ่งมีไว้สำหรับแสดงและเรียกใช้งาน extensions ที่ติดตั้งไปนั่นเอง 3. ทำการติดตั้ง Chrome Remote Desktop ทั้งฝั่งเครื่องต้นทางและปลายทางที่ต้องการ remote 4. การเรียกใช้งานสามารถทำได้ดังรูป จากนั้นเลือก Chrome Remote Desktop 5. ก่อนที่จะทำการ remote หรือตั้งค่าการ remote จะต้องทำการ login บน chrome browser ก่อนด้วยบัญขี google ที่ได้เตรียมไว้ 6. เริ่มต้นการตั้งค่าครั้งแรกโดยเลือก Remote Access ซึ่งครั้งแรกสุดจะต้องติดตั้งโปรแกรมเพิ่มเติมก่อน กดตรงไอคอนดังรูป เพื่อดาวน์โหลดโปรแกรมติดตั้งเพิ่มเติม ไฟล์ติดตั้งชื่อ chromeremotedesktophost.msi รันไฟล์นี้เพื่อทำการติดตั้งโปรแกรม หรือกดยอมรับและติดตั้งจากหน้าจอ chrome browser ดังรูป ในขั้นตอนการติดตั้งจะมีให้ตั้งชื่อเครื่อง จากนั้นจะเข้าสู่ขั้นตอนในการสร้างรหัส PIN โดย PIN นี้ใช้สำหรับให้เครื่องต้นทางที่ต้องการ remote เข้ามา ทำการกรอกเพื่อเชื่อมต่อ เมื่อตั้งค่าเสร็จสิ้นทั้งเครื่องต้นทางและปลายทางแล้ว ในบัญชี google เดียวกัน จะเห็นเครื่องที่เราได้ตั้งค่า remote ไว้ดังรูป 7. สามารถแก้ไขชื่อเครื่องและตั้งค่ารหัส PIN ใหม่โดยเลือกที่ไอคอน จะเข้าสู่หน้าจอการตั้งค่าดังรูป 8. การปิดการเชื่อมต่อระยะไกล

Read More »