DB2 - Cơ sở dữ liệu

Chương này mô tả việc tạo, kích hoạt và hủy kích hoạt cơ sở dữ liệu bằng cú pháp liên quan.

Kiến trúc cơ sở dữ liệu

Cơ sở dữ liệu là tập hợp các Bảng, Lược đồ, Trang đệm, Bản ghi, Nhóm lưu trữ và Không gian bảng làm việc cùng nhau để xử lý các hoạt động cơ sở dữ liệu một cách hiệu quả.

Thư mục cơ sở dữ liệu

Thư mục cơ sở dữ liệu là một kho lưu trữ có tổ chức các cơ sở dữ liệu. Khi bạn tạo cơ sở dữ liệu, tất cả các chi tiết về cơ sở dữ liệu được lưu trữ trong thư mục cơ sở dữ liệu, chẳng hạn như chi tiết về thiết bị lưu trữ mặc định, tệp cấu hình và danh sách bảng tạm thời, v.v.

Thư mục toàn cầu phân vùng được tạo trong thư mục cá thể. Thư mục này chứa tất cả thông tin toàn cầu liên quan đến cơ sở dữ liệu. Thư mục chung của phân vùng này được đặt tên là NODExxxx / SQLyyy, trong đó xxxx là số phân vùng dữ liệu và yyy là mã thông báo cơ sở dữ liệu.

Trong thư mục phân vùng-chung, một thư mục dành riêng cho thành viên được tạo. Thư mục này chứa thông tin cơ sở dữ liệu cục bộ. Thư mục dành riêng cho thành viên được đặt tên là MEMBERxxxx trong đó xxxx là số thành viên. Môi trường DB2 Enterprise Server Edition chạy trên một thành viên duy nhất và chỉ có một thư mục cụ thể dành cho thành viên. Thư mục dành riêng cho thành viên này được đặt tên duy nhất là MEMBER0000.

Thư mục toàn cầu được phân vùng

Vị trí thư mục: <instance> / NODExxx / SQLxxx

Thư mục phân vùng-chung chứa các tệp liên quan đến cơ sở dữ liệu như được liệt kê bên dưới.

  • Tệp theo dõi sự kiện ghi vào tệp bế tắc toàn cầu
  • Tệp thông tin vùng bảng [SQLSPCS.1, SQLSPCS.2]
  • Tệp điều khiển nhóm lưu trữ [SQLSGF.1, SQLSGF.2]
  • Các tệp vùng chứa không gian bảng tạm thời. [/ đường dẫn lưu trữ / /T0000011/C000000.TMP/SQL00002.MEMBER0001.TDA]
  • Tệp cấu hình chung [SQLDBCONF]
  • Tệp lịch sử [DB2RHIST.ASC, DB2RHIST.BAK, DB2TSCHG.HIS, DB2TSCHG.HIS]
  • Các tệp liên quan đến ghi nhật ký [SQLOGCTL.GLFH.1, SQLOGCTL.GLFH.2]
  • Khóa tệp [SQLINSLK, SQLTMPLK]
  • Bộ chứa lưu trữ tự động

Thư mục cụ thể thành viên

Vị trí thư mục: / NODExxxx / SQLxxxx / MEMBER0000

Thư mục này chứa:

  • Đối tượng liên kết với cơ sở dữ liệu
  • Tệp thông tin nhóm đệm [SQLBP.1, SQLBP.2]
  • Tệp giám sát sự kiện cục bộ
  • Các tệp liên quan đến ghi nhật ký [SQLOGCTL.LFH.1, SQLOGCTL.LFH.2, SQLOGMIR.LFH].
  • Tệp cấu hình cục bộ
  • Tệp theo dõi sự kiện bế tắc. Các tệp giám sát sự kiện bế tắc chi tiết được lưu trữ trong thư mục cơ sở dữ liệu của nút danh mục trong trường hợp ESE và môi trường cơ sở dữ liệu được phân vùng.

Tạo cơ sở dữ liệu

Ví dụ, bạn có thể tạo cơ sở dữ liệu bằng lệnh “CREATE DATABASE”. Tất cả các cơ sở dữ liệu được tạo bằng nhóm lưu trữ mặc định “IBMSTOGROUP”, được tạo tại thời điểm tạo một phiên bản. Trong DB2, tất cả các bảng cơ sở dữ liệu được lưu trữ trong “vùng bảng”, sử dụng các nhóm lưu trữ tương ứng của chúng.

Các đặc quyền cho cơ sở dữ liệu được tự động đặt thành PUBLIC [CREATETAB, BINDADD, CONNECT, IMPLICIT_SCHEMA và SELECT], tuy nhiên, nếu có tùy chọn RESTRICTIVE, các đặc quyền sẽ không được cấp dưới dạng PUBLIC.

Tạo cơ sở dữ liệu không hạn chế

Lệnh này được sử dụng để tạo cơ sở dữ liệu không hạn chế.

Syntax: [Để tạo một Cơ sở dữ liệu mới. 'database_name' chỉ ra tên cơ sở dữ liệu mới mà bạn muốn tạo.]

db2 create database <database name>

Example: [Để tạo một cơ sở dữ liệu không hạn chế mới với tên 'one']

db2 create database one

Output:

DB20000I The CREATE DATABASE command completed successfully.

Tạo cơ sở dữ liệu hạn chế

Cơ sở dữ liệu hạn chế được tạo khi gọi lệnh này.

Syntax: [Trong cú pháp bên dưới, “db_name” cho biết tên cơ sở dữ liệu.]

db2 create database <db_name> restrictive

Example: [Để tạo một cơ sở dữ liệu hạn chế mới với tên 'hai']

db2 create database two restrictive

Tạo cơ sở dữ liệu với vị trí do người dùng xác định khác nhau

Tạo cơ sở dữ liệu với nhóm lưu trữ mặc định “IBMSTOGROUP” trên đường dẫn khác. Trước đó, bạn đã gọi lệnh “tạo cơ sở dữ liệu” mà không có bất kỳ vị trí nào do người dùng xác định để lưu trữ hoặc tạo cơ sở dữ liệu tại một vị trí cụ thể. Để tạo cơ sở dữ liệu bằng cách sử dụng vị trí cơ sở dữ liệu do người dùng xác định, quy trình sau được thực hiện:

Syntax: [Trong cú pháp bên dưới, 'db_name' cho biết 'tên cơ sở dữ liệu' và 'data_location' cho biết nơi phải lưu trữ dữ liệu trong các thư mục và 'db_path_location' cho biết vị trí trình điều khiển của 'data_location'.]

db2 create database '<db_name>' on '<data location>' dbpath on '<db_path_location>'

Example: [Để tạo cơ sở dữ liệu có tên 'four', nơi dữ liệu được lưu trữ trong 'data1' và thư mục này được lưu trữ trong 'dbpath1']

db2 create database four on '/data1' dbpath on '/dbpath1'

Xem các tệp thư mục cơ sở dữ liệu cục bộ hoặc hệ thống

Bạn thực hiện lệnh này để xem danh sách các thư mục có sẵn trong phiên bản hiện tại.

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         =

Kích hoạt cơ sở dữ liệu

Lệnh này khởi động tất cả các dịch vụ cần thiết cho một cơ sở dữ liệu cụ thể để cơ sở dữ liệu có sẵn cho ứng dụng.

Syntax: ['db_name' cho biết tên cơ sở dữ liệu]

db2 activate db <db_name>

Example: [Kích hoạt cơ sở dữ liệu 'một']

db2 activate db one

Hủy kích hoạt cơ sở dữ liệu

Sử dụng lệnh này, bạn có thể dừng các dịch vụ cơ sở dữ liệu.

Syntax:

db2 deactivate db <db_name>

Example: [Để hủy kích hoạt cơ sở dữ liệu 'một']

db2 deactivate db one

Kết nối với cơ sở dữ liệu

Sau khi tạo cơ sở dữ liệu, để đưa vào sử dụng, bạn cần kết nối hoặc khởi động cơ sở dữ liệu.

Syntax:

db2 connect to <database name>

Example: [Để kết nối Cơ sở dữ liệu một với CLI hiện tại]

db2 connect to one

Output:

Database Connection Information  
 Database server        = DB2/LINUXX8664 10.1.0  
 SQL authorization ID   = DB2INST4  
 Local database alias   = ONE

Xác minh xem cơ sở dữ liệu có hạn chế không

Để kiểm tra xem cơ sở dữ liệu này có bị hạn chế hay không, đây là cú pháp:

Syntax: [Trong cú pháp sau, 'db' cho biết Cơ sở dữ liệu, 'cfg' cho biết cấu hình, 'db_name' cho biết tên cơ sở dữ liệu]

db2 get db cfg for <db_name> | grep -i restrict

Example: [Để kiểm tra xem cơ sở dữ liệu 'một' có bị hạn chế hay không]

db2 get db cfg for one | grep -i restrict

Output:

Restrict access                       = NO

Định cấu hình trình quản lý cơ sở dữ liệu và cơ sở dữ liệu

Cấu hình phiên bản (Cấu hình trình quản lý cơ sở dữ liệu) được lưu trữ trong tệp có tên 'db2system' và cấu hình liên quan đến cơ sở dữ liệu được lưu trữ trong tệp có tên 'SQLDBCON'. Những tệp này không thể được chỉnh sửa trực tiếp. Bạn có thể chỉnh sửa các tệp này bằng các công cụ gọi API. Sử dụng bộ xử lý dòng lệnh, bạn có thể sử dụng các lệnh này.

Tham số cấu hình trình quản lý cơ sở dữ liệu

Syntax: [Để lấy thông tin của người quản lý Cơ sở dữ liệu phiên bản]

db2 get database manager configuration
HOẶC LÀ
db2 get dbm cfg

Syntax: [Để cập nhật trình quản lý cơ sở dữ liệu phiên bản]

db2 update database manager configuration
HOẶC LÀ
db2 update dbm cfg

Syntax: [Để đặt lại các cấu hình trước đó]

db2 reset database manager configuration
HOẶC LÀ
db2 reset dbm cfg

Tham số cấu hình cơ sở dữ liệu

Syntax: [Để lấy thông tin của Cơ sở dữ liệu]

db2 get database configuration
HOẶC LÀ
db2 get db cfg

Syntax: [Để cập nhật cấu hình cơ sở dữ liệu]

db2 update database configuration
HOẶC LÀ
db2 update db cfg

Syntax: [Để đặt lại các giá trị đã định cấu hình trước đó trong cấu hình cơ sở dữ liệu

db2 reset database configuration
HOẶC LÀ
db2 reset db cfg

Syntax: [Để kiểm tra kích thước của Cơ sở dữ liệu Hoạt động Hiện tại]

db2 "call get_dbsize_info(?,?,?,-1)"

Example: [Để xác minh kích thước của Cơ sở dữ liệu Hiện đang kích hoạt]

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

Ước tính không gian cần thiết cho cơ sở dữ liệu

Để ước tính kích thước của cơ sở dữ liệu, phải xem xét sự đóng góp của các yếu tố sau:

  • Bảng danh mục hệ thống
  • Dữ liệu bảng người dùng
  • Dữ liệu trường dài
  • Dữ liệu đối tượng lớn (LOB)
  • Không gian chỉ mục
  • Không gian làm việc tạm thời
  • Dữ liệu XML
  • Ghi nhật ký không gian tệp
  • Thư mục cơ sở dữ liệu cục bộ
  • Tập tin hệ thống

Kiểm tra cơ quan cơ sở dữ liệu

Bạn có thể sử dụng cú pháp sau để kiểm tra cơ quan cơ sở dữ liệu nào được cấp cho PUBLIC trên cơ sở dữ liệu không hạn chế.

Step 1: kết nối với cơ sở dữ liệu với xác thực user-id và mật khẩu.

Syntax: [Để kết nối với cơ sở dữ liệu bằng tên người dùng và mật khẩu]

db2 connect to <db_name> user <userid> using <password>

Example: [Để kết nối Cơ sở dữ liệu “một” với id người dùng 'db2inst4' và mật khẩu '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: Để xác minh các cơ quan chức năng của cơ sở dữ liệu.

Syntax: [Cú pháp bên dưới hiển thị kết quả của các dịch vụ cấp quyền cho cơ sở dữ liệu hiện tại]

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.

Bỏ cơ sở dữ liệu

Sử dụng lệnh Drop, bạn có thể xóa cơ sở dữ liệu của chúng tôi khỏi thư mục cơ sở dữ liệu cá thể. Lệnh này có thể xóa tất cả các đối tượng, bảng, khoảng trắng, vùng chứa và các tệp liên quan của nó.

Syntax: [Để loại bỏ bất kỳ cơ sở dữ liệu nào khỏi một phiên bản]

db2 drop database <db_name>

Example: [Để loại bỏ cơ sở dữ liệu 'sáu' khỏi phiên bản]

db2  drop database six

Output:

DB20000I The DROP DATABASE command completed successfully