Change BYTE to CHAR for all columns, all tables

เมื่อมีการสร้างฟิลด์ให้มีชนิดเป็น char หรือ varchar2 จริงๆ แล้ว มันมีหน่วยย่อยไปอีกว่าจะให้เป็น Byte หรือ Char ซึ่งโดยปกติจะเป็น Byte สามารถเปลี่ยนค่า default นี้ได้ด้วยการเปลี่ยนตัวแปรของระบบตัวแปรชื่อ nls_length_semantics https://docs.oracle.com/cd/B19306_01/server.102/b14237/initparams127.htm#REFRN10124 ดูรายละเอียดเพิ่มเติม ทีนี้ Byte กับ Char มันสำคัญอย่างไร…สำคัญเรื่องการแปลง Character Set เช่น จาก TH8ASCII เป็น AL32UTF8 จากข้อมูลเดิม 1 ตัวอักษรเท่ากับ 1Byte สำหรับ TH8ASCII และ 3Byte สำหรับ AL32UTF8 ทำให้เมื่อเราสร้างฟิลด์ ตอนมี Character set บน TH8ASCII ชนิดของข้อมูลเป็น varchar2 มีขนาด 3Byte ถ้าจะนำข้อมูลเข้าอีกฐานข้อมูลที่มี Character Set เป็น AL32UTF8 จะนำเข้าไม่ได้เพราะขนาดเกินจำนวน Byte ที่สร้างคือกลายเป็น 9Byte ต้องกลับไปเปลี่ยนต้นทางจากหน่วย Byte เป็น Char คือเก็บเป็นตัวอักษรแทน ทีนี้เราจากสร้างสคริปต์เพื่อ สร้างสคริปต์ อีกที… ด้วยคำสั่ง (สคริปต์ในตัวอย่างนี้จะเป็นการสร้างจาก Username SCOTT) เมื่อสั่งสคริปต์ทำงานจะได้ผลลัพธ์ประมาณว่า ทีนี้จากสคริปต์ข้างต้น จะดึงข้อมูลของ Table และ View มาทั้งหมดทำให้เมื่อได้สคริปต์ไปแล้วสั่งทำงานจะมี error ต้องกรองเอา view ออก เปลี่ยนสคริปต์ใหม่เป็น เมื่อสั่งรันสคริปต์จะได้ผลลัพธ์ ก็จะสามารถนำสคริปต์ที่ได้ไปสั่งรันได้ปกติ หลังจากเปลี่ยนข้อมูล TH8ASCII จาก Byte เป็น Char แล้วสามารถนำเข้าใน AL32UTF8 ได้เลย จบขอให้สนุก ต้นฉบับ http://webgeest.blogspot.com/2014/12/change-byte-to-char-for-all-columns-all.html

Read More »

How to create LVM volume group and logical volume

LVM ย่อมาจาก Logical Volume Manager ความสามารถของ LVM คือสามารถสร้าง logical partition ขยายไปบนฮาร์ดดิสก์หลายๆ ลูกได้ ขั้นตอนต่อไปนี้เป็นขั้นตอนที่ทำบน CentOS หรือ Oracle Linux หรือ ค่าย Redhat Enterprise Linux ส่วนฝั่ง Debian ก็สามารถใช้คำสั่งเดียวกันทำงานเหมือนกัน แต่อาจจะต้องติดตั้งโปรแกรมเพิ่ม โดยขนาดสูงสุดที่ LVM ทำได้ขึ้นกับชนิดของ CPU และ Kernel ที่ใช้งาน สำหรับ Kernel 2.4 บน CPU 32-Bit มีขนาดได้ไม่เกิน 2TB สำหรับ Kernel 2.6 บน CPU 32-Bit มีขนาดได้ไม่เกิน 16TB สำหรับ Kernel 2.6 บน CPU 64-Bit มีขนาดได้ไม่เกิน 8EB ป้จจุบัน Kernel รุ่น ? CPU 64-Bit ยังไม่มีคำตอบ แต่เมื่อ format ให้มีระบบไฟล์แบบ ext4 จะสร้างพาทิชั่นได้ไม่เกิน 1EB เท่านั้น ขึ้นกับ file system ใช้งานด้วย เริ่มได้ เข้าระบบด้วยบัญชีผู้ใช้ที่มีสิทธิ์ของ root ซึ่งอาจจะเป็น root เอง หรือ user ที่อยู่ในกลุ่ม wheel หากเข้าด้วยบัญชีผู้ใช้อื่นๆ ที่ไม่ใช่ root ให้สั่งคำสั่ง หรือ จึงจะสามารถทำคำสั่งต่อไปได้ ตรวจสอบว่ามีฮาร์ดดิสก์ลูกไหนถูกใช้งานอยู่บ้างด้วยคำสั่ง ได้ผลลัพธ์ประมาณดังรูป จากภาพข้างต้น /dev/sda ถูกใช้งานอยู่แล้วคือ /dev/sda1 และ /dev/sda2 ให้ตรวจสอบว่ามีดิสก์ลูกอื่นอีกหรือไม่ด้วยคำสั่ง จะเห็นว่ามี /dev/sdb, /dev/sdc และ /dev/sdd ที่ว่างอยู่ จะใช้ /dev/sdb เริ่มจากสร้างพื้นที่สำหรับทำ LVM ก่อนด้วยคำสั่ง กด n ตามด้วย p ตามด้วย 1 แล้ว enter 2 ครั้ง กด t แล้วพิมพ์ 8e แล้วกด w ดังภาพ สร้าง LVM physical volume โดยใช้คำสั่ง pvcreate สร้าง LVM volume group ชื่อ vg_u01 สร้าง LVM logical volume group ชื่อ lv_u01 ใน volume group ที่ชื่อ vg_u01 โดยให้มีขนาดทั้งหมดที่มีอยู่ใน vg_u01 ดังภาพ ดูสถานะว่า LVM สร้างเสร็จแล้วด้วยคำสั่ง ดูสถานะว่ามี Physical Volume เท่าไหร่ ด้วยคำสั่ง ก่อนใช้งานอย่าลืม format โดย device ที่จะต้อง format จะกลายเป็น /dev/vg_u01/lv_u01 ให้มีชื่อว่า u01 สร้าง mount point ให้กับ lv_u01 mount lv_u01 เข้ากับ /u01 ตรวจสอบว่า /u01 ถูกเรียกใช้งานแล้ว ใส่ -h เพื่อให้ระบุขนาดเป็น GMK สั่งให้ mount อัตโนมัติทุกครั้งที่บูตเครื่องเพิ่มข้อความต่อไปนี้ในแฟ้ม /etc/fstab จบขอให้สนุก อาจจะยังไม่เห็นภาพว่าแล้วมันกระจายไปดิสก์หลายๆ ลูกได้อย่างไร อธิบายง่ายๆ /u01 สามารถอยู่ได้บนฮาร์ดดิสก์มากกว่าหนึ่งลูก โดยเห็นเป็นพื้นที่เดียวกันคือ

Read More »
A+

Byeๆ TLS1.0 TLS1.1

ใช้ Firefox beta อยู่เลยจะได้รับ Feature อะไรใหม่ๆ อยู่เรื่อยๆ จนเมื่อ beta 73 กว่าๆ เริ่มเข้าเว็บบางเว็บในมหาวิทยาลัยไม่ได้ จะปรากฏหน้าดังนี้ อ่านดูถึงได้รู้ว่าออ เค้าจะเลิก TLS1.0 และ TLS1.1 แล้วจริงประกาศไว้นานละว่าจะเลิกปีนี้!! สำหรับ Firefox จะเลิกในรุ่น 74 และ Chrome น่าจะรุ่น 81 ส่วน Microsoft และ Safari ก็จะปิดในครึ่งปีแรก ในปีนี้เช่นกัน เอ้าเลยเช็คเว็บตัวเองสักหน่อยเริ่มจาก ทดสอบกับเว็บที่เคยได้ A+ ผลเป็นดังรูป อัยย่ะละก๊ะ…. เหลือ B เพราะเปิด TLS1.0 และ TLS1.1 เอาไว้ ปิดให้ไว วิธีการคือ (สำหรับ Apache2) แก้ไขแฟ้ม /etc/apache/mod-enabled/ssl.conf หาข้อความว่า (บางคนอาจจะมี -SSLv2 ด้วยแต่ apache2 ไม่สนับสนุน SSLv2 โดยปริยาย (default) แล้ว) เปลี่ยนข้อความข้างต้นเป็น บันทึกแล้ว restart apache ให้เรียบร้อย เมื่อไปตรวจใหม่ได้ผลตามภาพ เย่ กลับมา A+ แล้ว จบขอให้สนุก เกี่ยวข้อง https://sysadmin.psu.ac.th/hardening-your-http-response-headers/ https://sysadmin.psu.ac.th/เปลี่ยน-certificate/

Read More »

Open Google Calendar

หลังจากครั้งก่อนได้แนะนำ extension สำหรับสร้างตารางนัดหมายบน Google Calendar ผ่านโปรแกรมเมล์ยอดนิยมตลอดกาล นั่นคือ Thunderbird นั่นเอง!!! อ่านได้ที่ Thunderbird Return วันนี้ก็จะมาเล่าถึง Extension อีกตัวทำงานอย่างเดียวกันแต่รอบนี้ไม่ต้องทำอะไรให้วุ่นวาย extension ชื่อเหมือนบทความคือ Open Google Calendar ขอข้ามวิธีติดตั้งเลยละกัน ติดตั้งเหมือน extension ตัวเก่ากลับไปอ่านบทความก่อนหน้าได้นะครับ เมื่อติดตั้งเสร็จแล้วจะมีปุ่มเพิ่มขึ้นมาที่มุมบนขวาดังรูป คลิกที่ Open Google Calendar แล้ว Sign In เข้าระบบให้เรียบร้อย จะได้ดังภาพ. สามารถเพิ่มอีเว้นท์อีไม่เว้นท์ได้เหมือนเปิดเว็บ กรั่กๆ ง่ายกว่าวิธีเก่า พอสมควรแก่การใช้งานบนเครื่องที่เราใช้คนเดียว!! ย้ำคนเดียว เพราะยังหาวิธี sign out ไม่เจอ 555 วันนี้สั้นๆ แค่นี้ครับ จบขอให้สนุก…

Read More »

How to safely grant ALTER SYSTEM KILL SESSION “privilege” to non-DBA users

อยากฆ่าคน เอ้ย session บน oracle แต่ไม่มีสิทธิ์ (Privilege) ไปขอสิทธิ์ DBA แล้ว DBA บอกว่าไม่มีสิทธิ์ kill session จะแจกให้!!! ทำไงดี เข้าระบบฐานข้อมูล Oracle ด้วยผู้ใช้ system หรือ sys แล้วสร้าง Procedure ชื่อว่า sp_kill_dev_session ด้วยคำสั่ง จาก code ข้างต้น ให้เปลี่ยน SCOTT เป็น username ที่เป็นเจ้าของ session เช่น เป็นต้น จากตัวอย่าง จะมี 2 user คือ HIRXPXT และ PHU_XDMIHHION แล้ว grant สิทธิ์ ให้สามารถ exec กับ user ที่ต้องการฆ่า session เหล่านั้นด้วยคำสั่ง ตัวอย่างจะให้ user ชื่อว่า HIRXPXT มีสิทธิ์ exec แล้วจะทำให้ user ที่ชื่อ HIRXPXT สามารถฆ่า (kill) session ของ user ได้ 2 คนคือ HIRXPXT และ PHU_XDMIHHION วิธีใช้งาน เข้าระบบด้วย user ที่ชื่อ HIRXPXT แล้วเรียกใช้คำสั่ง เช่น โดย 14 คือ sid และ 26043 คือ serial ซึ่งสองค่านี้สามารถเรียกดูได้จากคำสั่ง เปลี่ยน <username> เป็น username ที่ต้องการ แต่การที่จะดูค่าเหล่านี้ได้ต้องมีสิทธิ์ จากตัวอย่าง user ที่ชื่อ HIRXPXT สามารถ select view และ table เหล่านี้ได้ เท่านี้ก็เพียงพอที่จะให้ทีมพัฒนาสามารถฆ่า (kill) session ของตัวเองที่ค้างอยู่บน server ได้โดยไม่ต้องมาจิกหัว DBA กรั่กๆ ต้นฉบับ https://sqlpatterns.wordpress.com/2015/03/02/how-to-safely-grant-alter-system-kill-session-privilege-to-non-dba-users/ จบ…. ขอให้สนุก

Read More »