DB2 - ฐานข้อมูล
บทนี้จะอธิบายถึงการสร้างการเปิดใช้งานและการปิดใช้งานฐานข้อมูลด้วยไวยากรณ์ที่เกี่ยวข้อง
สถาปัตยกรรมฐานข้อมูล
                ฐานข้อมูลคือชุดของ Tables, Schemas, Bufferpools, Logs, Storage groups และ Tablespaces ที่ทำงานร่วมกันเพื่อจัดการการทำงานของฐานข้อมูลอย่างมีประสิทธิภาพ
ไดเร็กทอรีฐานข้อมูล
ไดเร็กทอรีฐานข้อมูลเป็นที่เก็บฐานข้อมูลที่มีการจัดระเบียบ เมื่อคุณสร้างฐานข้อมูลรายละเอียดทั้งหมดเกี่ยวกับฐานข้อมูลจะถูกเก็บไว้ในไดเร็กทอรีฐานข้อมูลเช่นรายละเอียดของอุปกรณ์จัดเก็บข้อมูลเริ่มต้นไฟล์การกำหนดค่าและรายการตารางชั่วคราวเป็นต้น
พาร์ติชันโกลบอลไดเร็กทอรีถูกสร้างขึ้นในโฟลเดอร์อินสแตนซ์ ไดเร็กทอรีนี้มีข้อมูลส่วนกลางทั้งหมดที่เกี่ยวข้องกับฐานข้อมูล ไดเร็กทอรีส่วนกลางของพาร์ติชันนี้มีชื่อว่า NODExxxx / SQLyyy โดยที่ xxxx คือหมายเลขพาร์ติชันข้อมูลและ yyy คือโทเค็นฐานข้อมูล
ในไดเร็กทอรีพาร์ติชันโกลบอลไดเร็กทอรีเฉพาะสมาชิกถูกสร้างขึ้น ไดเร็กทอรีนี้มีข้อมูลฐานข้อมูลโลคัล ไดเร็กทอรีเฉพาะสำหรับสมาชิกมีชื่อว่า MEMBERxxxx โดยที่ xxxx คือหมายเลขสมาชิก สภาพแวดล้อม DB2 Enterprise Server Edition รันบนสมาชิกเดียวและมีไดเร็กทอรีเฉพาะสมาชิกเดียว ไดเร็กทอรีเฉพาะของสมาชิกนี้มีชื่อไม่ซ้ำกันว่า MEMBER0000
พาร์ติชันโกลบอลไดเร็กทอรี
ตำแหน่งไดเร็กทอรี: <instance> / NODExxx / SQLxxx
ไดเร็กทอรีพาร์ติชันโกลบอลมีไฟล์ที่เกี่ยวข้องกับฐานข้อมูลตามรายการด้านล่าง
- ไฟล์การมอนิเตอร์เหตุการณ์การเขียนไปยังไฟล์ที่หยุดชะงักส่วนกลาง
 - ไฟล์ข้อมูลพื้นที่ตาราง [SQLSPCS.1, SQLSPCS.2]
 - ไฟล์ควบคุมกลุ่มที่เก็บข้อมูล [SQLSGF.1, SQLSGF.2]
 - ไฟล์คอนเทนเนอร์พื้นที่ตารางชั่วคราว [/ เส้นทางการจัดเก็บ /
      
/T0000011/C000000.TMP/SQL00002.MEMBER0001.TDA]  - ไฟล์คอนฟิกูเรชันส่วนกลาง [SQLDBCONF]
 - ไฟล์ประวัติ [DB2RHIST.ASC, DB2RHIST.BAK, DB2TSCHG.HIS, DB2TSCHG.HIS]
 - ไฟล์ที่เกี่ยวข้องกับการบันทึก [SQLOGCTL.GLFH.1, SQLOGCTL.GLFH.2]
 - การล็อกไฟล์ [SQLINSLK, SQLTMPLK]
 - ตู้คอนเทนเนอร์อัตโนมัติ
 
ไดเร็กทอรีเฉพาะสำหรับสมาชิก
ตำแหน่งไดเร็กทอรี: / NODExxxx / SQLxxxx / MEMBER0000
ไดเร็กทอรีนี้ประกอบด้วย:
- วัตถุที่เกี่ยวข้องกับฐานข้อมูล
 - ไฟล์ข้อมูลบัฟเฟอร์พูล [SQLBP.1, SQLBP.2]
 - ไฟล์การตรวจสอบเหตุการณ์ภายในเครื่อง
 - ไฟล์ที่เกี่ยวข้องกับการบันทึก [SQLOGCTL.LFH.1, SQLOGCTL.LFH.2, SQLOGMIR.LFH]
 - ไฟล์การกำหนดค่าภายในเครื่อง
 - ไฟล์มอนิเตอร์เหตุการณ์ Deadlocks ไฟล์มอนิเตอร์เหตุการณ์การหยุดชะงักโดยละเอียดจะถูกเก็บไว้ในไดเร็กทอรีฐานข้อมูลของโหนดแค็ตตาล็อกในกรณีของ ESE และสภาพแวดล้อมฐานข้อมูลที่แบ่งพาร์ติชัน
 
การสร้างฐานข้อมูล
คุณสามารถสร้างฐานข้อมูลโดยใช้คำสั่ง“ สร้างฐานข้อมูล” ฐานข้อมูลทั้งหมดถูกสร้างขึ้นด้วยกลุ่มหน่วยเก็บข้อมูลเริ่มต้น“ IBMSTOGROUP” ซึ่งสร้างขึ้นในขณะที่สร้างอินสแตนซ์ ใน DB2 ตารางฐานข้อมูลทั้งหมดจะถูกเก็บไว้ใน "พื้นที่ตาราง" ซึ่งใช้กลุ่มหน่วยเก็บข้อมูลตามลำดับ
สิทธิ์สำหรับฐานข้อมูลจะถูกตั้งค่าโดยอัตโนมัติเป็น PUBLIC [CREATETAB, BINDADD, CONNECT, IMPLICIT_SCHEMA และ SELECT] อย่างไรก็ตามหากมีตัวเลือก RESTRICTIVE อยู่จะไม่ได้รับสิทธิ์เป็นแบบสาธารณะ
การสร้างฐานข้อมูลที่ไม่ จำกัด
คำสั่งนี้ใช้เพื่อสร้างฐานข้อมูลที่ไม่ จำกัด
Syntax: [เพื่อสร้างฐานข้อมูลใหม่ 'database_name' ระบุชื่อฐานข้อมูลใหม่ที่คุณต้องการสร้าง]
db2 create database <database name> 
    Example: [เพื่อสร้างฐานข้อมูลใหม่ที่ไม่ จำกัด ด้วยชื่อ 'one']
db2 create database one 
    Output:
DB20000I The CREATE DATABASE command completed successfully. 
    การสร้างฐานข้อมูลที่ จำกัด
ฐานข้อมูลแบบ จำกัด ถูกสร้างขึ้นเมื่อเรียกใช้คำสั่งนี้
Syntax: [ในไวยากรณ์ด้านล่าง“ db_name” ระบุชื่อฐานข้อมูล]
db2 create database <db_name> restrictive 
    Example: [เพื่อสร้างฐานข้อมูลแบบ จำกัด ใหม่โดยใช้ชื่อ 'two']
db2 create database two restrictive 
    การสร้างฐานข้อมูลด้วยตำแหน่งที่ผู้ใช้กำหนดต่างกัน
สร้างฐานข้อมูลด้วยกลุ่มหน่วยเก็บข้อมูลเริ่มต้น“ IBMSTOGROUP” บนเส้นทางที่แตกต่างกัน ก่อนหน้านี้คุณเรียกใช้คำสั่ง“ สร้างฐานข้อมูล” โดยไม่มีตำแหน่งที่ตั้งที่ผู้ใช้กำหนดเพื่อจัดเก็บหรือสร้างฐานข้อมูลในตำแหน่งเฉพาะ ในการสร้างฐานข้อมูลโดยใช้ตำแหน่งฐานข้อมูลที่ผู้ใช้กำหนดให้ปฏิบัติตามขั้นตอนต่อไปนี้:
Syntax: [ในไวยากรณ์ด้านล่าง 'db_name' ระบุ 'ชื่อฐานข้อมูล' และ 'data_location' ระบุตำแหน่งที่ต้องจัดเก็บข้อมูลในโฟลเดอร์และ 'db_path_location' ระบุตำแหน่งไดรเวอร์ของ 'data_location']
db2 create database '<db_name>' on '<data location>' dbpath on '<db_path_location>' 
    Example: [ในการสร้างฐานข้อมูลชื่อ 'four' ซึ่งข้อมูลจะถูกเก็บไว้ใน 'data1' และโฟลเดอร์นี้จะถูกเก็บไว้ใน 'dbpath1']
db2 create database four on '/data1' dbpath on '/dbpath1' 
    การดูไฟล์ไดเร็กทอรีฐานข้อมูลโลคัลหรือระบบ
คุณดำเนินการคำสั่งนี้เพื่อดูรายการไดเร็กทอรีที่มีอยู่ในอินสแตนซ์ปัจจุบัน
Syntax:
db2 list database directory 
    Example:
db2 list database directory 
    Output:
System Database Directory  
 Number of entries in the directory = 6  
 Database 1 entry:  
 Database alias                       = FOUR  
 Database name                        = FOUR  
 Local database directory             = 
 /home/db2inst4/Desktop/dbpath  
 Database release level               = f.00  
 Comment                              =  
 Directory entry type                 = Indirect  
 Catalog database partition number    = 0  
 Alternate server hostname            =  
 Alternate server port number         =  
Database 2 entry: 
Database alias                       = SIX  
Database name                        = SIX  
Local database directory             = /home/db2inst4  
Database release level               = f.00  
Comment                              =  
Directory entry type                 = Indirect  
Catalog database partition number    = 0  
Alternate server hostname            =  
Alternate server port number         = 
    กำลังเปิดใช้งานฐานข้อมูล
คำสั่งนี้เริ่มต้นบริการที่จำเป็นทั้งหมดสำหรับฐานข้อมูลเฉพาะเพื่อให้ฐานข้อมูลพร้อมใช้งานสำหรับแอปพลิเคชัน
Syntax: ['db_name' ระบุชื่อฐานข้อมูล]
db2 activate db <db_name> 
    Example: [การเปิดใช้งานฐานข้อมูล 'one']
db2 activate db one 
    กำลังปิดใช้งานฐานข้อมูล
เมื่อใช้คำสั่งนี้คุณสามารถหยุดบริการฐานข้อมูลได้
Syntax:
db2 deactivate db <db_name> 
    Example: [เพื่อปิดใช้งานฐานข้อมูล 'one']
db2 deactivate db one 
    กำลังเชื่อมต่อกับฐานข้อมูล
หลังจากสร้างฐานข้อมูลแล้วในการใช้งานคุณต้องเชื่อมต่อหรือเริ่มฐานข้อมูล
Syntax:
db2 connect to <database name> 
    Example: [เพื่อเชื่อมต่อฐานข้อมูลหนึ่งกับ CLI ปัจจุบัน]
db2 connect to one 
    Output:
Database Connection Information  
 Database server        = DB2/LINUXX8664 10.1.0  
 SQL authorization ID   = DB2INST4  
 Local database alias   = ONE 
    ตรวจสอบว่าฐานข้อมูลมีข้อ จำกัด หรือไม่
หากต้องการตรวจสอบว่าฐานข้อมูลนี้มีข้อ จำกัด หรือไม่นี่คือไวยากรณ์:
Syntax: [ในไวยากรณ์ต่อไปนี้ 'db' หมายถึงฐานข้อมูล 'cfg' ระบุการกำหนดค่า 'db_name' ระบุชื่อฐานข้อมูล]
db2 get db cfg for <db_name> | grep -i restrict 
    Example: [เพื่อตรวจสอบว่าฐานข้อมูล "หนึ่ง" ถูก จำกัด หรือไม่]
db2 get db cfg for one | grep -i restrict 
    Output:
Restrict access                       = NO 
    การกำหนดค่าตัวจัดการฐานข้อมูลและฐานข้อมูล
การกำหนดค่าอินสแตนซ์ (การกำหนดค่าตัวจัดการฐานข้อมูล) ถูกเก็บไว้ในไฟล์ชื่อ 'db2system' และการกำหนดค่าที่เกี่ยวข้องกับฐานข้อมูลจะถูกเก็บไว้ในไฟล์ชื่อ 'SQLDBCON' ไฟล์เหล่านี้ไม่สามารถแก้ไขได้โดยตรง คุณสามารถแก้ไขไฟล์เหล่านี้โดยใช้เครื่องมือที่เรียก API เมื่อใช้ตัวประมวลผลบรรทัดคำสั่งคุณสามารถใช้คำสั่งเหล่านี้
พารามิเตอร์การกำหนดค่าตัวจัดการฐานข้อมูล
Syntax: [หากต้องการรับข้อมูลของ Instance Database manager]
db2 get database manager configuration หรือ 
    db2 get dbm cfg 
    Syntax: [เพื่ออัปเดตตัวจัดการฐานข้อมูลอินสแตนซ์]
db2 update database manager configuration หรือ 
    db2 update dbm cfg 
    Syntax: [เพื่อรีเซ็ตการกำหนดค่าก่อนหน้า]
db2 reset database manager configuration หรือ 
    db2 reset dbm cfg 
    พารามิเตอร์การกำหนดค่าฐานข้อมูล
Syntax: [เพื่อรับข้อมูลของฐานข้อมูล]
db2 get database configuration หรือ 
    db2 get db cfg 
    Syntax: [เพื่ออัปเดตการกำหนดค่าฐานข้อมูล]
db2 update database configuration หรือ 
    db2 update db cfg 
    Syntax: [เพื่อรีเซ็ตค่าที่กำหนดไว้ก่อนหน้านี้ในการกำหนดค่าฐานข้อมูล
db2 reset database configuration หรือ 
    db2 reset db cfg 
    Syntax: [เพื่อตรวจสอบขนาดของฐานข้อมูลปัจจุบันที่ใช้งานอยู่]
db2 "call get_dbsize_info(?,?,?,-1)" 
    Example: [เพื่อตรวจสอบขนาดของฐานข้อมูลปัจจุบันที่เปิดใช้งาน]
db2 "call get_dbsize_info(?,?,?,-1)" 
    Output:
Value of output parameters   
--------------------------   
Parameter Name  : SNAPSHOTTIMESTAMP   
Parameter Value : 2014-07-02-10.27.15.556775  
Parameter Name  : DATABASESIZE   
Parameter Value : 105795584  
Parameter Name  : DATABASECAPACITY   
Parameter Value : 396784705536  
Return Status = 0 
    การประมาณพื้นที่ที่ต้องการสำหรับฐานข้อมูล
ในการประมาณขนาดของฐานข้อมูลต้องพิจารณาการมีส่วนร่วมของปัจจัยต่อไปนี้:
- ตารางแค็ตตาล็อกระบบ
 - ข้อมูลตารางผู้ใช้
 - ข้อมูลฟิลด์ยาว
 - ข้อมูลวัตถุขนาดใหญ่ (LOB)
 - อินเด็กซ์สเปซ
 - พื้นที่ทำงานชั่วคราว
 - ข้อมูล XML
 - พื้นที่ล็อกไฟล์
 - ไดเร็กทอรีฐานข้อมูลท้องถิ่น
 - ไฟล์ระบบ
 
กำลังตรวจสอบผู้มีอำนาจในฐานข้อมูล
คุณสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อตรวจสอบว่าหน่วยงานฐานข้อมูลใดที่ได้รับอนุญาตให้กับ PUBLIC บนฐานข้อมูลที่ไม่ จำกัด
Step 1: เชื่อมต่อกับฐานข้อมูลด้วย ID ผู้ใช้และรหัสผ่านของอินสแตนซ์
Syntax: [เพื่อเชื่อมต่อกับฐานข้อมูลด้วยชื่อผู้ใช้และรหัสผ่าน]
db2 connect to <db_name> user <userid> using <password> 
    Example: [เพื่อเชื่อมต่อฐานข้อมูล "หนึ่ง" ด้วยรหัสผู้ใช้ "db2inst4" และรหัสผ่าน "db2inst4"]
db2 connect to one user db2inst4 using db2inst4 
    Output:
Database Connection Information  
 Database server        = DB2/LINUXX8664 10.1.0  
 SQL authorization ID   = DB2INST4  
 Local database alias   = ONE 
    Step2: เพื่อตรวจสอบสิทธิ์ของฐานข้อมูล
Syntax: [ไวยากรณ์ด้านล่างแสดงผลลัพธ์ของบริการสิทธิสำหรับฐานข้อมูลปัจจุบัน]
db2 "select substr(authority,1,25) as authority, d_user, d_group, 
d_public, role_user, role_group, role_public,d_role from table( 
sysproc.auth_list_authorities_for_authid ('public','g'))as t 
order by authority" 
    Example:
db2 "select substr(authority,1,25) as authority, d_user, d_group, 
d_public, role_user, role_group, role_public,d_role from table( 
sysproc.auth_list_authorities_for_authid ('PUBLIC','G'))as t 
order by authority" 
    Output:
AUTHORITY                 D_USER D_GROUP D_PUBLIC ROLE_USER ROLE_GROUP ROLE_PUBLIC D_ROLE  
------------------------- ------ ------- -------- --------- ---------- ----------- ------  
ACCESSCTRL                *      *       N        *         *          N           *       
BINDADD                   *      *       Y        *         *          N           *       
CONNECT                   *      *       Y        *         *          N           *       
CREATETAB                 *      *       Y        *         *          N           *       
CREATE_EXTERNAL_ROUTINE   *      *       N        *         *          N           *       
CREATE_NOT_FENCED_ROUTINE *      *       N        *         *          N           *       
CREATE_SECURE_OBJECT      *      *       N        *         *          N           *       
DATAACCESS                *      *       N        *         *          N           *       
DBADM                     *      *       N        *         *          N           *       
EXPLAIN                   *      *       N        *         *          N           *       
IMPLICIT_SCHEMA           *      *       Y        *         *          N           *       
LOAD                      *      *       N        *         *          N           *       
QUIESCE_CONNECT           *      *       N        *         *          N           *       
SECADM                    *      *       N        *         *          N           *       
SQLADM                    *      *       N        *         *          N           *       
SYSADM                    *      *       *        *         *          *           *       
SYSCTRL                   *      *       *        *         *          *           *       
SYSMAINT                  *      *       *        *         *          *           *       
SYSMON                    *      *       *        *         *          *           *       
WLMADM                    *      *       N        *         *          N           *         
20 record(s) selected. 
    การลดฐานข้อมูล
การใช้คำสั่ง Drop คุณสามารถลบฐานข้อมูลของเราออกจากไดเร็กทอรีฐานข้อมูลอินสแตนซ์ คำสั่งนี้สามารถลบอ็อบเจ็กต์ตารางช่องว่างคอนเทนเนอร์และไฟล์ที่เกี่ยวข้องทั้งหมด
Syntax: [เพื่อวางฐานข้อมูลจากอินสแตนซ์]
db2 drop database <db_name> 
    Example: [เพื่อวางฐานข้อมูล 'หก' จากอินสแตนซ์]
db2  drop database six 
    Output:
DB20000I The DROP DATABASE command completed successfully