日期:2014-05-16  浏览次数:20415 次

DB2个人总结

DB2身份验证

在数据库管理程序配置(DBM CFG)文件中使用 AUTHENTICATION 参数设置身份验证, DBM CFG 文件是一个实例级配置文件。因此,AUTHENTICATION 参数影响这个实例中的所有数据库。参数修改完毕需要重新启动实例。

get dbm cfg

Server Connection Authentication (SRVCON_AUTH) = KERBEROS

Database manager authentication (AUTHENTICATION) = SERVER_ENCRYPT 类型 描述

---------------------

SERVER??????????????????? 身份验证在服务器上进行。
SERVER_ENCRYPT??? 身份验证在服务器上进行。密码在客户机上进行加密,然后再发送到服务器。
CLIENT???????????????????? 身份验证在客户机上进行(例外情况见 处理不可信的客户机)。

?

DB2授权

在 DB2 可用的 5 种权限中,SYSADM、SYSCTRL 和 SYSMAINT 是实例级权限,这些权限只能分配给组;

可以通过 DBM CFG 文件分配这些权限,不能通过grant语句来授权。

针对特定数据库的 DBADM 和 LOAD 权限可以分配给用户或用户组。可以使用 GRANT 命令显式地分配这些权限。?

----------------------

SYSADM权限:

DB2 中的 SYSADM 权限就像是 UNIX 上的根权限,可以使用这个实例、数据库、对象的任何DB2命令,只允许 SYSADM 用户更新 DBM CFG 文件。SYSADM 权限由 DBM CFG 文件中的 SYSADM_GROUP 参数控制。在 Windows 上,在创建实例时,这个参数设置为 Administrator(但是,如果发出命令 db2 get dbm cfg,它看起来是空的)。在 UNIX 上,它设置为创建这个实例的用户的主组。

SYSCTRL权限:

拥有 SYSCTRL 权限的用户可以在实例中执行所有管理和维护命令。但是,与 SYSADM 用户不同,他们不能访问数据库中的任何数据,除非他们被授予了访问数据所需的特权。SYSCTRL 用户可以对实例中的任何数据库执行的命令示例如下:
? db2start/db2stop
? db2 create/drop database
? db2 create/drop tablespace
? db2 backup/restore/rollforward database
? db2 runstats(针对任何表)
? db2 update db cfg for database dbname

SYSMAINT权限:

拥有 SYSMAINT 权限的用户可以发出的命令是拥有 SYSCTRL 权限的用户可以发出的命令的子集。SYSMAINT 用户只能执行与维护相关的任务,比如:
? db2start/db2stop
? db2 backup/restore/rollforward database
? db2 runstats(针对任何表)
? db2 update db cfg for database dbname
注意,拥有 SYSMAINT 权限的用户不能创建或删除数据库或表空间。他们也不能访问数据库中的任何数据,除非他们被显式地授予访问数据所需的特权。

DBADM 权限:

数据库级权限,而不是实例级权限。DBADM 用户对一个数据库有几乎完全的控制能力。DBADM 用户不能执行某些维护或管理任务,比如:
? drop database
? drop/create tablespace
? backup/restore database
? update db cfg for database db name
但是,他们可以执行以下任务:
? db2 create/drop table
? db2 grant/revoke(任何特权)
? db2 runstats(任何表)
DBADM 用户还被自动地授予对数据库对象及其内容的所有特权。因为 DBADM 权限是一个数据库级权限,所以它可以被分配给用户和用户组。以下命令演示授予 DBADM 权限的不同方法。 db2 grant DBADM on database ? 用grant语句向用户授权

?

?

DB2体系结构

数据库包含许多物理对象和逻辑对象:
-------------------------------

? 表、视图、索引、模式
? 锁、触发器、存储过程、包
? 缓冲池、日志文件、表空间

?

数据库存储模型

--------------------------------

???? ??????? DB

???? partition groups

?????? Tablespaces

??????? Containers

?

表空间的区分:

-----------------------------------

系统管理的空间(System-Managed Space,SMS):在这里,由操作系统的文件系统管理器分配和管理空间。在 DB2 9 之前,如果不带任何参数创建数据库或表空间,就会导致所有表空间作为 SMS 对象创建。

数据库管理的空间(Database-Managed Space,DMS):在这里,由数据库管理程序控制存储空间。这种表空间本质上是一种特殊用途的文件系统实现,可以最好地满足数据库管理程序的需要。
DMS 的自动存储(Automatic Storage With DMS):自动存储实际上不是一种单独的表空间类型,而是一种处理 DMS 存储的不同方式。

?

数据库的创建:

DB2默认表空间:

------------------------------------

在创建数据库时,DB2 会创建许多文件,包括日志文件、配置信息、历史文件和三个表空间。这些表空间是:
SYSCATSPACE:这是保存 DB2 系统编目的地方,系统编目跟踪与 DB2 对象相关联的所有元数据。
TEMPSPACE1:DB2 用来放置中间结果的临时工作区域。
USERSPACE1:默认情况下存放所有用户对象(表、索引)的地方。

?

DB2穿件创建数据库实例:

-------------------------------------------------

( 1) CREATE DATABASE MY1STDB

( 2) DFT_EXTENT_SZ 4

?( 3) CATALOG TABLESPACE MANAGED BY DATABASE USING

( 4) (FILE 'C:\CAT\CATALOG.DAT' 2000, FILE 'D:\CAT\CATALOG.DAT' 2000)

( 5) EXTENTSIZE 8

( 6) PREFETCHSIZE 16

( 7) TEMPORARY TABLESPACE MANAGED BY SYSTEM USING

( 8) ('C:\TEMPTS','D:\TEMPTS')

?( 9) USER TABLESPACE MANAGED BY DATABASE USING

(10) (FILE 'C:\TS\USERTS.DAT' 121)

?(11) EXTENTSIZE 24 (12) PREFETCHSIZE 48

--------------------------------------

我们来详细地看看每一行:
1. CREATE DATABASE:这个语句定义要创建的数据库的名称。
2. DFT_EXTENT_SZ 4:这个参数告诉 DB2 默认的区段大小是 4 个页面,除非在其他地方显式地声明。
3. CATALOG TABLEPSACE MANAGED BY DATABASE USING:DB2 编目空间将由数据库管理。

4