ภาพรวม IBM DB2
IBM DB2 เป็น Relational Database ของ IBM รองรับ Linux, UNIX, Windows (LUW) มีหลาย Editions: Community Edition (ฟรีสำหรับ Developers ตลอดชีวิต), Standard และ Enterprise Edition (ต้อง License)
บทความนี้รวบรวมงาน Administration สำคัญของ DB2 สำหรับการดูแลรักษาฐานข้อมูลประจำวัน
1) ตรวจสอบ License Details
$ db2licm -l
Product name: "DB2 Community Edition"
License type: "Community"
Expiry date: "Permanent"
Product identifier: "db2dec"
Version information: "11.5"
Max amount of memory (GB): "16"
Max number of cores: "4"
Features: IBM DB2 Performance Management Offering: "Not licensed"
2) ความสัมพันธ์ DB2 Server, Instance, Database (Non-partitioned)
- DB2 Server: Database Binary Installation Directory (DB2COPYn) ใช้สำหรับ Upgrade, Migrate แยก Environment สำหรับ Multiple Databases/Instances ติดตั้งหลาย Copies บน Server เดียวได้
- DB2 Instance: ประกอบด้วย Processes, Threads, Memory Areas จัดการและเชื่อมต่อ Multiple Databases กำหนดค่าผ่าน DBM CFG
- DB2 Database: Logical Storage Groups, Tablespaces, Objects, Transaction Logs, Buffer Pools
3) DB2 Operating System Groups
Windows: Default Instance = DB2, Linux: Default Instance = DB2INST1 แต่ละ Instance กำหนด Port 独特ได้ มี OS Groups 4 ประเภทสำหรับ Security:
- SYSADM - Database Administrators (All Privileges)
- SYSCTRL - System Control
- SYSMAINT - System Maintenance
- SYSMON - System Monitor
- DBADM - Database Administration (Top-level Grant สำหรับ Database เฉพาะ)
4) Database Parameter Configurations (3 ระดับ)
i) Global Level (DB2 Server Configuration)
# View settings
db2set -all
# List changeable parameters
db2set -lr
# Update settings
db2set parameter=newvalue
# Example: db2set db2comm=tcpip
# ต้อง Restart Instances: db2stop และ db2start
ii) Instance Level (Database Manager Configuration)
# View settings
db2 get dbm cfg
# Update settings
db2 update dbm cfg using parameter_name new-value
# Example: db2 update dbm cfg using NUM_DB 5
iii) Database Level
# View settings
db2 get db cfg for database-name
# Update settings
db2 update db cfg for database-name using parameter new-value
# Example: db2 update db cfg for sample using AUTO_REORG ON
5) Create, Change, Modify, Drop: DB2 Installations, Instance, Database
Multiple DB2 Copies
DB2 Version 9+ รองรับ Multiple Copies บน Server เดียว (DB2COPY1 v9, DB2COPY2 v10, DB2COPY3 v11) ประโยชน์: รัน Applications เวอร์ชันต่างกัน, ทดสอบก่อน Upgrade Production, แยกกิจกรรมตาม Version
Switch DB2 Installation Copy
$ db2swtch -l
DB2COPY1 C:\IBM\SQLLIB (Default)
$ db2swtch -db2 -d DB2COPY1
Switching successful. Current default DB2 copy is DB2COPY1.
$ dasupdt # Change DB Admin Server to current copy
Maintain DB2 Instance
# Stop/Start Instance
db2stop [force]
db2start
# Start in Admin Mode (DBA only)
db2start admin mode [user | group ]
# QUIESCE DATABASE - เข้าถึงได้เฉพาะ SYSADM, SYSMAINT, DBADM, SYSCTRL
# QUIESCE INSTANCE instance-name - ทุก Databases ใน Instance เข้าถึงได้เฉพาะ SYSADM, SYSMAINT, SYSCTRL
# กลับสู่ Normal Mode
UNQUIESCE DATABASE
UNQUIESCE INSTANCE instance-name
Create Database
3 Workload Categories: Simple (OLTP), Complex (OLAP), Mixed (OLTP+OLAP)
CREATE DATABASE testdb1 -- options: encrypt ฯลฯ
# Examples:
db2 create db emp_utf autoconfigure using workload_type simple apply db only
db2 create db emp_utf using codeset utf-8 territory lets us collate using system
db2 drop db emp_utf
6) Default Tablespaces, Create Tablespace, List Tablespaces
Default Tablespaces & Bufferpools
- SYSCATSPACE: System Catalogue
- TEMPSPACE1: Temporary Tablespace สำหรับ Sorting
- USERSPACE1: Default สำหรับ Non-default Objects
Default Buffer Pool: IBMDEFAULTBP
Create Tablespace
-- ตัวอย่างสร้าง Tablespace
CREATE TABLESPACE MYTBLS1 ...
สร้าง Objects (Tables, Indexes, Views) บน Tablespace ใหม่ได้
List Tablespaces
db2 list tablespaces [show details]
7) Listener Configurations
ตั้งค่า DB2COMM Parameter ที่ Instance Level เปลี่ยน Port เป็น 60000:
$ db2set -i db2inst1 DB2COMM=tcpip
$ db2 update dbm cfg using SVCENAME 60000
$ db2stop
$ db2start
9) Archive Configuration
ตั้งค่า Logging: Circular Logging (Default) หรือ Archive Logging
Circular Logging: logarchmeth1 และ logarchmeth2 = OFF
Archive Logging: ตั้งค่าอย่างน้อยหนึ่งตัวไม่เป็น OFF
# Archive to disk
db2 update db configuration for mydb using logarchmeth1 disk:/u/dbuser/archived_logs
# หรือใช้ IBM Data Studio, UPDATE DATABASE CONFIGURATION, db2CfgSet API
# หลีกเลี่ยง Redo Log Generation
CREATE TABLE/INDEX ... NOT LOGGED INITIALLY
สรุป
DB2 Administration ครอบคลุมกิจกรรมหลายด้าน บทความนี้ครอบคลุมบางส่วน SQL Operations ตรงมาตรฐาน ANSI ฟีเจอร์เพิ่มเติม: Clustered Database, High Availability, Partitioning, Replication, Materialized Views รักษาความปลอดภัยเหมือน RDBMS ชั้นนำ ราคาเหมาะสม และ Connectivity กับเทคโนโลยีเกือบทุกอย่าง ทำให้ DB2 เป็นตัวเลือกน่าสนใจในตลาด Global