Author: grianggrai.n

  • SSH:- no matching key exchange method found

    เดี๋ยวนี้ใน Windows 10 ก็มี ssh ให้ใช้งาน แต่พอใช้กับเซิร์ฟเวอร์รุ่นเก่าๆ ก็เข้าไม่ได้ซะงั้น ไปลอง ssh ฝั่ง Linux (WSL2) ก็ให้ผลเหมือนกันคือ!!!

    Linux
    Windows
    • ถ้าเป็นเมื่อก่อน วิ่งไปหา putty อย่างไว…. แต่ Windows อุตส่าห์ทำมาให้ใช้แล้วทั้งทีจะไม่ใช้ได้ยังไง
    • สิ่งที่ต้องตรวจสอบก่อนคือ man ssh_config สำหรับ Linux ฝั่ง client ว่ารองรับ ciphers และ kexalgorithms แบบไหนรองรับหรือไม่ ส่วนฝั่ง Windows 10 จะอิงตาม OpenBSD manual ซึ่งเหมือนกับ Linux แหละ
    KexAlgorithms
    Ciphers
    • สร้างแฟ้ม .ssh/config โดย
      • Linux ก็จะให้สร้างที่ /home/username/.ssh/
      • Windows ก็อยู่ที่ C:\Users\username\.ssh
    • สำหรับ error ว่า no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1 ให้เพิ่มข้อความต่อไปนี้ลงในแฟ้ม .ssh/config โดย somhost.example.org เป็นชื่อและโดเมนเนมของ server เป้าหมาย
    Host somehost.example.org
    	KexAlgorithms +diffie-hellman-group1-sha1
    • สำหรับ error ว่า no matching cipher found. Their offer: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se ให้เลือกมา 1 cipher ที่ปรากฎใน error มาใส่ในแฟ้ม .ssh/config
    Host somehost.example.org
        Ciphers aes256-cbc
    • บาง server ต้องรวมทั้งสองอย่างเช่น
    Host somehost.example.org
        KexAlgorithms +diffie-hellman-group1-sha1
        Ciphers aes256-cbc
    • ถ้าไม่อยากสร้างแฟ้ม .ssh/config สามารถสั่งผ่าน command line ได้เลยเช่น
    ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 oracle@somehost.example.org

    หรือ ถ้ามี error 2 อย่าง

    ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 -c aes256-cbc oracle@somehost.example.org

    เมื่อสร้างแฟ้ม .ssh/config แล้วลอง ssh เข้าไปใหม่

    Linux
    Windows
  • Windows Subsystem for Linux Installation Guide for Windows 10

    เพื่อเป็นการไม่เสียเวลา เริ่ม

    • เปิด Powershell ด้วยสิทธิ์ของ Administrator แล้วพิมพ์คำสั่ง ต่อไปนี้เพื่อเปิดใช้งาน “Windows Subsystem for Linux” หรือ wsl โดยจะเป็นรุ่น 1 หรือ wsl1
    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    wsl1
    • ปรับรุ่นให้เป็นรุ่น 2 โดย Windows 10 ที่ใช้งาน ต้องเป็น Windows 10 version 2004, Build 19041 1903, Build 18362 ขึ้นไปเท่านั้น
    • ตรวจสอบรุ่นของ Windows ด้วยคำสั่ง winver (start->run)
    winver
    • เปิดใช้งาน Virtual Machine Platform พิมพ์คำสั่งต่อไปนี้ ใน powershell ของ administrator
    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
    Virtual Machine Platform
    • restart เครื่องเพื่อให้การปรับรุ่น wsl1 เป็น wsl2 สมบูรณ์
    • ตั้งค่าให้ wsl2 เป็นค่าเริ่มต้นด้วยคำสั่ง
    wsl --set-default-version 2
    Set default wsl2
    • ซึ่งจะเจอข้อความตามภาพ ให้ไปดาวน์โหลด kernel ได้จาก https://aka.ms/wsl2kernel โหลดมาแล้วติดตั้งให้เรียบร้อย (Next technology)
    download kernel
    • สั่งคำสั่งเดิมอีกครั้งเพื่อตั้งค่าให้ wsl เป็นรุ่น 2 เป็นค่าเริ่มต้น
    Set default wsl2
    • สามารถดูรายละเอียดความแตกต่างของ wsl2 ได้ที่ https://aka.ms/wsl2
    • ติดตั้ง Linux ที่ต้องการจาก Microsoft Store หรือคลิกลิงค์ด้านล่างเพื่อเข้า Microsoft Store
    ubuntu 20.04
    • ติดตั้งเสร็จแล้วคลิก Launch ใน Microsoft Store
    • จะเป็นการเปิดหน้าของลินุกส์ขึ้นมาและให้ตั้งค่าต่างๆ username และ password
    Setup
    • ตั้งค่าเสร็จได้ดังภาพ
    Fin
    • ตั้งค่าลินุกส์ให้เป็น wsl2 ตรวจสอบว่าเป็นรุ่นไหนอยู่ด้วยคำสั่ง
    wsl --list --verbose
    check version
    • ซึ่งถ้าหากยังเป็นรุ่น 1 สามารถเปลี่ยนได้ด้วยคำสั่ง
    wsl --set-version <distribution name> <versionNumber>
    • โดยแทนที่ <distribution name> ด้วยชื่อเต็มที่ได้จากคำสั่ง wsl –list –verbose เช่น Ubuntu-20.04 และ <versionNumber> ด้วย 1 หรือ 2 ตามต้องการ
    • จบขอให้สนุก

    ต้นฉบับ

    https://docs.microsoft.com/en-us/windows/wsl/install-win10

  • Windows Terminal (1)

    เบื่อ cmd ใช้ Windows Terminal แทนกันดีกว่า… ให้ดูรูปก่อน

    สวยงามตระการตา!!!

    บางคนใช้แล้วอาจจะมีความสุข

    เริ่มได้

    • เหมาะสำหรับ Windows 10 version 1909 ขึ้นไป
    • ติดตั้ง Git
    • ติดตั้ง Windows Terminal จาก Microsoft Store หรือ จาก Github

    ถ้าหากติดตั้งจาก Github ต้องติดตั้ง Desktop Bridge VC++ v14 Redistributable Package ด้วย และโปรแกรมจะไม่อัพเดตตัวเองต้องโหลดมาปรับรุ่นเองทุกครั้ง

    ระวัง!!!
    • ติดตั้งแล้วเปิดใช้งานจะได้หน้าตาประมาณนี้
    • เราจะเปลี่ยนหน้าตากันเริ่มจากพิมพ์คำสั่งต่อไปนี้ (ต้องเชื่อมต่ออินเตอร์เน็ต)
    Install-Module posh-git -Scope CurrentUser
    Install-Module oh-my-posh -Scope CurrentUser

    Posh-Git เอาไว้แสดงข้อมูลของ Git ใน prompt
    Oh-My-Posh เป็น theme สวยๆ ของ powershell นั่นเอง

    • ต่อด้วยคำสั่ง
    Set-ExecutionPolicy Unrestricted -Scope CurrentUser
    • ตรวจสอบโฟลเดอร์สำหรับเก็บ Profile ของ PowerShell ด้วยคำสั่ง
    echo $PROFILE
    • สร้างแฟ้ม $PROFILE (ไฟล์ขื่อ Microsoft.PowerShell_profile.ps1 ในโฟลเดอร์ C:\Users\haruo\OneDrive\Documents\WindowsPowerShell\) โดยมีข้อความต่อไปนี้
    Import-Module posh-git
    Import-Module oh-my-posh
    Set-Theme Paradox
    • ปิดแล้วเปิดใหม่ก็จะได้ดังภาพ
    • จะเห็นว่ามีเครื่องหมาย  อยู่ที่ prompt ด้วยจำเป็นต้องลงฟอนท์เพิ่มเติมนั่นคือฟอนท์ Powerline ซึ่งสามารถติดตั้งโดยโหลด Cascadia Code มาติดตั้ง
    • เมื่อติดตั้งแล้วให้เปลี่ยนฟอนท์ของ Windows Terminal โดยคลิก แล้วเลือก Settings
    • จะเป็นการเปิดการตั้งค่า default ที่เรียกใช้งานอยู่ ด้วย default text editor
    • เลื่อน cursor ลงมาประมาณบรรทัดที่ 38 แล้วกด enter เพิ่มข้อความว่า
    "fontFace": "Cascadia Code PL",
    "fontSize": 10,
    • save แล้วไปดูผลได้เลย
    • สวยแล้ว!
    • จบขอให้สนุก
    • Oh-My-Posh ยังมี Theme อื่นๆ ลองเข้าไปเลือกดูได้
    • เปลี่ยน theme ได้โดยแก้แฟ้ม $PROFILE เปลี่ยนจาก Paradox เป็นอย่างอื่นเช่น Darkblood เป็นต้น save ปิดแล้วเปิด Windows Terminal ใหม่
  • 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)

    SELECT 'alter table '||owner||'.'|| table_name ||
           ' modify '||column_name||' varchar2('|| 
           data_length ||' CHAR); '
      FROM all_tab_columns
     WHERE data_type = 'VARCHAR2'
       AND char_used = 'B'
       and owner in ('SCOTT')
    ;

    เมื่อสั่งสคริปต์ทำงานจะได้ผลลัพธ์ประมาณว่า

    alter table

    ทีนี้จากสคริปต์ข้างต้น จะดึงข้อมูลของ Table และ View มาทั้งหมดทำให้เมื่อได้สคริปต์ไปแล้วสั่งทำงานจะมี error ต้องกรองเอา view ออก

    error

    เปลี่ยนสคริปต์ใหม่เป็น

    select 'alter table '||all_objects.OWNER||'.'||'"'||all_objects.OBJECT_NAME ||'"'||' modify '||'("'||column_name||'"'||' varchar2('|| ALL_TAB_COLUMNS.DATA_LENGTH ||' CHAR)); '
    from   all_objects,all_tab_columns
    where  all_objects.object_type in ('TABLE')
    and all_tab_columns.data_type = 'VARCHAR2'
    AND all_tab_columns.char_used = 'B'
    and object_name not in (select all_objects.object_name from all_objects where all_objects.object_type = 'VIEW')
    and all_objects.object_name=all_tab_columns.table_name
    and all_objects.owner in ('SCOTT');

    เมื่อสั่งรันสคริปต์จะได้ผลลัพธ์

    alter script

    ก็จะสามารถนำสคริปต์ที่ได้ไปสั่งรันได้ปกติ

    Complete

    หลังจากเปลี่ยนข้อมูล TH8ASCII จาก Byte เป็น Char แล้วสามารถนำเข้าใน AL32UTF8 ได้เลย

    จบขอให้สนุก

    ต้นฉบับ

    http://webgeest.blogspot.com/2014/12/change-byte-to-char-for-all-columns-all.html

  • 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 ให้สั่งคำสั่ง
    su -
    ตามด้วยรหัสผ่านของ root

    หรือ

    sudo -i
    ตามด้วยรหัสผ่านของผู้ใช้ที่เรียกคำสั่งนี้

    จึงจะสามารถทำคำสั่งต่อไปได้

    • ตรวจสอบว่ามีฮาร์ดดิสก์ลูกไหนถูกใช้งานอยู่บ้างด้วยคำสั่ง
    df -h
    • ได้ผลลัพธ์ประมาณดังรูป
    df
    df
    • จากภาพข้างต้น /dev/sda ถูกใช้งานอยู่แล้วคือ /dev/sda1 และ /dev/sda2 ให้ตรวจสอบว่ามีดิสก์ลูกอื่นอีกหรือไม่ด้วยคำสั่ง
    fdisk -l|grep /dev
    fdsik
    fdisk
    • จะเห็นว่ามี /dev/sdb, /dev/sdc และ /dev/sdd ที่ว่างอยู่
    • จะใช้ /dev/sdb
    • เริ่มจากสร้างพื้นที่สำหรับทำ LVM ก่อนด้วยคำสั่ง
    fdisk /dev/sdb

    กด n ตามด้วย p ตามด้วย 1 แล้ว enter 2 ครั้ง

    กด t แล้วพิมพ์ 8e แล้วกด w ดังภาพ

    fdisk
    fdisk
    • สร้าง LVM physical volume โดยใช้คำสั่ง pvcreate
    pvcreate /dev/sdb1
    • สร้าง LVM volume group ชื่อ vg_u01
    vgcreate vg_u01 /dev/sdb1
    • สร้าง LVM logical volume group ชื่อ lv_u01 ใน volume group ที่ชื่อ vg_u01 โดยให้มีขนาดทั้งหมดที่มีอยู่ใน vg_u01
    lvcreate -n lv_u01 -l 100%FREE vg_u01

    ดังภาพ

    pvcreate, vgcreate, lvcreate
    pvcreate, vgcreate, lvcreate
    • ดูสถานะว่า LVM สร้างเสร็จแล้วด้วยคำสั่ง
     pvscan
    pvscan
    • ดูสถานะว่ามี Physical Volume เท่าไหร่ ด้วยคำสั่ง
    pvdisplay
    pvdisplay
    • ก่อนใช้งานอย่าลืม format โดย device ที่จะต้อง format จะกลายเป็น /dev/vg_u01/lv_u01 ให้มีชื่อว่า u01
    mkfs.ext4 -L u01 /dev/vg_u01/lv_u01
    mkfs.ext4
    • สร้าง mount point ให้กับ lv_u01
    mkdir /u01
    • mount lv_u01 เข้ากับ /u01
    mount LABEL=u01 /u01
    • ตรวจสอบว่า /u01 ถูกเรียกใช้งานแล้ว ใส่ -h เพื่อให้ระบุขนาดเป็น GMK
    df -h
    mkdir, mount, df
    • สั่งให้ mount อัตโนมัติทุกครั้งที่บูตเครื่องเพิ่มข้อความต่อไปนี้ในแฟ้ม /etc/fstab
    LABEL=u01       /u01    ext4    defaults 0 0
    fstab
    • จบขอให้สนุก
    • อาจจะยังไม่เห็นภาพว่าแล้วมันกระจายไปดิสก์หลายๆ ลูกได้อย่างไร อธิบายง่ายๆ /u01 สามารถอยู่ได้บนฮาร์ดดิสก์มากกว่าหนึ่งลูก โดยเห็นเป็นพื้นที่เดียวกันคือ /u01 ซึ่งอาจจะประกอบไปด้วย /dev/sdb1, /dev/sdc1 ใน vg_u01
    • ยังมีเรื่องการเพิ่มขนาดภายหลังให้ดูที่ http://portal.psu.ac.th/blog/howto/6281 ไปพลางก่อน
  • Byeๆ TLS1.0 TLS1.1

    ใช้ Firefox beta อยู่เลยจะได้รับ Feature อะไรใหม่ๆ อยู่เรื่อยๆ จนเมื่อ beta 73 กว่าๆ เริ่มเข้าเว็บบางเว็บในมหาวิทยาลัยไม่ได้ จะปรากฏหน้าดังนี้

    เว็บสามัญประจำบ้านแห่งหนึ่ง

    อ่านดูถึงได้รู้ว่าออ เค้าจะเลิก TLS1.0 และ TLS1.1 แล้วจริงประกาศไว้นานละว่าจะเลิกปีนี้!! สำหรับ Firefox จะเลิกในรุ่น 74 และ Chrome น่าจะรุ่น 81 ส่วน Microsoft และ Safari ก็จะปิดในครึ่งปีแรก ในปีนี้เช่นกัน

    https://www.techtalkthai.com/old-tls-protocol-has-been-dropped-by-all-major-browsers-in-2020/

    เอ้าเลยเช็คเว็บตัวเองสักหน่อยเริ่มจาก ทดสอบกับเว็บที่เคยได้ A+ ผลเป็นดังรูป

    ม่ายยย

    อัยย่ะละก๊ะ…. เหลือ B เพราะเปิด TLS1.0 และ TLS1.1 เอาไว้ ปิดให้ไว

    วิธีการคือ (สำหรับ Apache2)

    แก้ไขแฟ้ม /etc/apache/mod-enabled/ssl.conf หาข้อความว่า

     SSLProtocol All -SSLv3

    (บางคนอาจจะมี -SSLv2 ด้วยแต่ apache2 ไม่สนับสนุน SSLv2 โดยปริยาย (default) แล้ว) เปลี่ยนข้อความข้างต้นเป็น

    SSLProtocol All -SSLv3 -TLSv1 -TLSv1.1

    บันทึกแล้ว restart apache ให้เรียบร้อย เมื่อไปตรวจใหม่ได้ผลตามภาพ

    เย่ กลับมา A+ แล้ว จบขอให้สนุก

    เกี่ยวข้อง

    https://sysadmin.psu.ac.th/hardening-your-http-response-headers/

    https://sysadmin.psu.ac.th/เปลี่ยน-certificate/

  • Open Google Calendar

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

    เมื่อติดตั้งเสร็จแล้วจะมีปุ่มเพิ่มขึ้นมาที่มุมบนขวาดังรูป

    คลิกที่ Open Google Calendar แล้ว Sign In เข้าระบบให้เรียบร้อย จะได้ดังภาพ.

    Google Calendar

    สามารถเพิ่มอีเว้นท์อีไม่เว้นท์ได้เหมือนเปิดเว็บ กรั่กๆ ง่ายกว่าวิธีเก่า พอสมควรแก่การใช้งานบนเครื่องที่เราใช้คนเดียว!! ย้ำคนเดียว เพราะยังหาวิธี sign out ไม่เจอ 555

    วันนี้สั้นๆ แค่นี้ครับ จบขอให้สนุก…

  • 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 ด้วยคำสั่ง

    CREATE OR REPLACE PROCEDURE sys.sp_kill_dev_session(p_sid NUMBER, p_serial NUMBER)
    AS
        v_user VARCHAR2(30);
    BEGIN
        SELECT MAX(username)
        INTO v_user
        FROM v$session
        WHERE sid = p_sid
          AND serial# = p_serial;
    
        IF v_user IN ('SCOTT') THEN --the list can be extended
             EXECUTE IMMEDIATE 'ALTER SYSTEM KILL SESSION ''' || p_sid || ',' || p_serial || '''';
        ELSIF v_user IS NULL THEN
             RAISE_APPLICATION_ERROR(-20001,'Session has Expired or Invalid sid/serial Arguments Passed');
        ELSE
             RAISE_APPLICATION_ERROR(-20002,'Unauthorized Attempt to Kill a Non-Dev Session has been Blocked.');
        END IF;
    END sp_kill_dev_session;
    /

    จาก code ข้างต้น ให้เปลี่ยน SCOTT เป็น username ที่เป็นเจ้าของ session เช่น

    IF v_user IN ('HIRXPXT','PHU_XDMIHHION') THEN --the list can be extended

    เป็นต้น จากตัวอย่าง จะมี 2 user คือ HIRXPXT และ PHU_XDMIHHION

    แล้ว grant สิทธิ์ ให้สามารถ exec กับ user ที่ต้องการฆ่า session เหล่านั้นด้วยคำสั่ง ตัวอย่างจะให้ user ชื่อว่า HIRXPXT มีสิทธิ์ exec

    GRANT EXECUTE ON sp_kill_dev_session TO HIRXPXT;

    แล้วจะทำให้ user ที่ชื่อ HIRXPXT สามารถฆ่า (kill) session ของ user ได้ 2 คนคือ HIRXPXT และ PHU_XDMIHHION

    วิธีใช้งาน เข้าระบบด้วย user ที่ชื่อ HIRXPXT แล้วเรียกใช้คำสั่ง

    exec sys.sp_kill_dev_session(sid,serial num);

    เช่น

    Session Properties 
    exec sys.sp_kill_dev_session(154,42802);

    โดย 14 คือ sid และ 26043 คือ serial ซึ่งสองค่านี้สามารถเรียกดูได้จากคำสั่ง

    SELECT SID, SERIAL#, STATUS, SERVER
    FROM V$SESSION
    WHERE USERNAME = upper('<username>');

    เปลี่ยน <username> เป็น username ที่ต้องการ แต่การที่จะดูค่าเหล่านี้ได้ต้องมีสิทธิ์ จากตัวอย่าง user ที่ชื่อ HIRXPXT สามารถ select view และ table เหล่านี้ได้

    SYS.V_$PROCESS
    SYS.V_$SESSION
    SYS.V_$TRANSACTION
    SYS.V_$SESSION_LONGOPS
    SYS.V_$LOCK
    SYS.V_$SESSTAT
    SYS.V_$STATNAME
    SYS.V_$ACCESS
    SYS.V_$ROLLNAME
    SYS.V_$SQLTEXT
    SYS.V_$SQLTEXT_WITH_NEWLINES
    SYS.V_$SQL
    SYS.V_$OPEN_CURSOR
    SYS.V_$SESSION_WAIT
    SYS.V_$SESSION_EVENT
    SYS.V_$SESSION_CONNECT_INFO
    SYS.V_$EVENT_NAME
    SYS.V_$SESS_IO
    SYS.V_$EVENTMETRIC
    SYS.DBA_ROLLBACK_SEGS

    เท่านี้ก็เพียงพอที่จะให้ทีมพัฒนาสามารถฆ่า (kill) session ของตัวเองที่ค้างอยู่บน server ได้โดยไม่ต้องมาจิกหัว DBA กรั่กๆ

    ต้นฉบับ

    https://sqlpatterns.wordpress.com/2015/03/02/how-to-safely-grant-alter-system-kill-session-privilege-to-non-dba-users/

    จบ…. ขอให้สนุก

  • Thunderbird returns

    หลังจากปันใจไปให้ Microsoft Outlook และใช้ Microsoft Outlook มาตลอดเกือบ 5 ปี มีเหตุให้การใช้ Google Calendar มีความสะดวกมากกว่า Office365 Calendar (จริงๆ ปฎิทินของ Office365 อาจจะทำได้ก็ได้แต่ไม่มีคนสอนกรั่กๆ) และเมื่อจะใช้ Google Calendar (โดยไม่ใช้เว็บ) ก็ต้องใช้คู่กับ Thunderbird สินะ!!!

    Download

    https://www.thunderbird.net/en-US/ คลิกตรงปุ่ม Free Download รุ่นปัจจุบัน 68.1.0 จะได้ English (US) รุ่น 32-bit หากต้องการรุ่น 64-bit คลิกที่ system & language แล้วเลือกภาษาที่ต้องการ แน่นอนไม่มีภาษาไทย English (US) หรือถ้าอ่านภาษาอื่นๆ ออกเชิญเลือกตามอัธยาศัย

    โหลดมาแล้วก็ติดตั้งให้เรียบร้อยด้วย Next Technology (Yes, Next, Next, Next, Next, Install, Finish)

    เมื่อเปิดโปรแกรม Thunderbird ครั้งแรกจะได้ประมาณดังรูป

    Set Up an Existing Email Account

    Mail Setup

    เริ่มการใช้งานได้เลยขั้นแรกตั้งค่าเมล์ สำหรับผู้ที่เปิดใช้งาน Gmail แล้วเท่านั้น หากยังไม่ได้เปิดใช้งาน อ่าน ที่นี่ ก่อน

    หากมีการเปิด 2-step Verification ต้องไปสร้าง App password ที่ gmail.com ให้เรียบร้อยก่อนแล้วเอา password ที่ได้มาใช้กับ thunderbird

    Calendar Setup

    Thunderbird (สำหรับ Windows) รุ่นใหม่ๆ จะให้ Lightning มาโดยปริยายไม่ต้องติดตั้งเพิ่ม แต่สิ่งที่ต้องติดตั้งเพิ่มคือ Provider for Google Calendar

    ส่วน Thunderbird (สำหรับ linux) ต้องติดตั้งเพิ่มเอง

    ที่หน้าต่าง Thunderbird กดปุ่ม alt-T (ปุ่ม alt และปุ่มอักษร t พร้อมกัน) เพื่อเรียกเมนู Tools

    เลือก Add-ons

    Add-ons

    จะได้หน้า Add-ons Manager

    Manage Your Extensions 

    ค้นหา Provider for Google Calendar ในช่อง Find more extensions จะได้หน้าต่างเพิ่มเป็นดังรูป

    Search Results

    คลิกปุ่ม + Add to Thunderbird แล้วคลิก Add

    Add

    คลิก Restart Now

    Restart

    เมื่อคลิกที่หน้าต่าง Add-ons Manager จะเห็นว่ามี Provider for Google Calendar เพิ่มมาแล้ว

    Add-ons Manager

    กลับมาที่หน้าหลักสังเกตมุมบนขวาจะมีรูป ให้คลิกที่ เพื่อเปิดหน้าปฎิทิน

    Calendar

    คลิกขวาที่พื้นที่ว่าง ๆ ใต้คำว่า Calendar เลือก New Calendar

    New Calendar

    จะได้หน้า Create New Calendar ให้เลือก On the Network แล้วคลิก Next

    Create a new calendar

    เลือก Google Calendar แล้วคลิก Next

    Google Calendar

    ใส่ E-mail address แล้วคลิก Next

    Locate your calendar

    ตรวจสอบว่า Username ที่ใส่ให้ถูกต้องหรือไม่คลิกถ้าถูกคลิก Next

    Sign in

    กรอกรหัสผ่านของ E-mail คลิก Next

    Enter your password

    หากเปิด 2-step Verification ไว้ก็เปิดแอ็ปกรอกตัวเลขให้เรียบร้อย

    2-step

    เลื่อนลงมาล่างสุดคลิก Allow

    Allow

    เลือกปฎิทินที่ต้องการคลิก Next

    Locate your calendar

    คลิก Finish

    Finish

    จะเห็นว่ามีปฎิทินเพิ่มขึ้นมาแล้วสามารถใช้งานได้ทันที

    Calendar

    จบขอให้สนุก

    หมายเหตุ!!!

    ต้องตั้งค่า general.useragent.compatMode.firefox ใน advance configuration ของ Thunderbird เป็น true สำหรับตอนนี้ เนื่องจาก Google เปลี่ยนอะไรสักอย่างทำให้ authen ไม่ได้