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