申明:欢迎转载,但请先告知,谢谢。
----------------------------------------------------------------------
--学习笔记:DB2 V9 管理 - 5
--彭建军
--最新更新时间:2006-12-22 16:50
----------------------------------------------------------------------
DB2 9 管理 第 2 部分: 数据放置
一、创建数据库
1、数据库目录
对于数据库管理器的每个实例,都有一个系统数据库目录(system database directory)文件,在该文件中,每个被编目到这个实例的数据库都对应着一个条目。当发出 create database 命令时,便自动对数据库进行编目,也可以通过 catalog database 命令来编目数据库。
在定义了数据库的每个驱动器或路径中,都有一个本地数据库目录(local database directory)文件。在这个文件中,对于可从这个位置访问的每个数据库,都有一个条目。
2、创建数据库
当创建一个数据库时,会执行以下任务:
● 设置数据库所需的所有系统编目表
● 为数据库恢复日志分配空间
● 创建数据库配置文件和默认的值集
● 将数据库实用程序绑定到数据库
创建一个数据库,可使用命令:create database
您可以选择指定以下信息:
● 存储路径
● 用于编目分区的数据库分区号
● 用于创建数据库的驱动器或路径
● 代码集和国家
● 排序序列
● 默认的盘区大小
● 是否应该自动配置数据库
● CATALOG、TEMPORARY 和 USERSPACE1 表空间的表空间定义
create database 命令会创建三个默认的表空间:
SYSCATSPACE:用于系统编目表。SYSCATSPACE 不能被删除。
TEMPSPACE1:用于系统创建的临时表。当创建了另一个临时表空间时,可删除 TEMPSPACE1 表空间。
USERSPACE1:用于用户创建对象的默认表空间。当创建了另一个用户创建的表空间时,可删除 USERSPACE1 表空间。
3、目录结构
取决于操作系统,create database 命令允许指定用于在其中创建数据库的驱动器或目录。
如果没有指定驱动器或目录,那么数据库就创建在 DFTDBPATH 实例(数据库管理器)配置参数所指定的路径中。
如果没有指定驱动器或目录,并且 DFTDBPATH 实例级配置参数也没有设定,那么数据库就创建在执行 create database 命令时所在的驱动器或目录上。
create database 命令创建一系列的子目录。第一个子目录按被创建数据库所在实例的实例所有者来命名。在这个子目录下,DB2 创建一个目录,以表明该数据库被创建在哪个数据库分区上。
对于非分区数据库,该目录为 NODE0000。对于分区数据库,该目录将被命名为 NODExxxx,其中 xxxx 是一个四位数的数据库实例的分区号,这个分区号在 db2nodes.cfg 文件中指定。例如,如果分区号为 43,那么该目录就是 NODE0043。
在 Windows 中,实例并没有真正的实例所有者,所以这里将使用实例的名称(例如 DB2)代替实例所有者的 ID。
由于在同一个驱动器或目录中可以创建不止一个数据库,因此每个数据库必须有其惟一的子目录。在 NODExxxx 目录下,对于在该驱动器或目录中创建的每个数据库,都有一个 SQLxxxxx 目录。例如,假设有两个数据库 DBASM 和 SAMPLE,它们都是在 Windows 上的 C: 盘中创建的。那么就会有以下两个目录:SQL00001 和 SQL00002。
默认情况下:
● 系统编目表空间(SYSCATSPACE)将使用目录 SQLT0000.0。
● 系统临时表空间(TEMPSPACE1)将使用目录 SQLT0001.0。
● 默认用户表空间(USERSPACE1)将使用目录 SQLT0002.0。
[命令]-[列出默认实例下的所有数据库]
db2 list db directory
二、自动存储
1、概述
自动存储(automatic storage)是 DB2 V9 中的新特性,它允许为一个数据库指定一个或多个存储路径。当您创建表空间时,DB2 自动将表空间放在指定的存储路径上。在创建数据库时,可以为之启用或配置自动存储,命令如下:
db2 create database db_name automatic storage yes
db2 create database db_name on db_path1, db_path2
还可以使用 add storage 参数为设置了自动存储的数据库添加附加的存储路径,方法如下:
db2 alter database db_name add storage on db_path3
2、使用自动存储
一旦为数据库设置了自动存储,就可以使用这种机制来创建表空间。为数据库设置了自动存储后,您可以有多种方法来利用自动存储。您可以在数据库中创建一个表空间(在连接到数据库之后),如下所示:
db2 create tablespace ts_name
或者,您可以创建一个表空间,并指定它的初始大小和增长特征,如下所示:
db2 create tablespace ts_name
initialsize 10M
increasesize 10M
maxsize 100M
在这个例子中,表空间初始大小为 10MB,当表空间接近大小限制时,DB2 每次自动将表空间扩大 10MB,直到表空间达到 100MB 的最大值。
如果数据库没有设置自动存储,那么,如果您创建一个表空间并指定它的存储,则仍然可以为之使用自动存储:
db2 create tablespace ts_name
managed by automatic storage
三、使用模式
1、什么是模式?
模式(schema)是用于在数据库中创建的数据库对象的一个高级限定符。它是数据库对象,例如表、视图、索引或触发器的一个集合。它提供了数据库对象的一个逻辑分类。
除了将数据组织到表中外,将表和其他相关对象组织在一起同样能带来好处。为此,可以使用 create schema 命令来定义一个模式。关于模式的信息存储在您所连接的数据库的系统编目表中。当创建其他对象时,可以将它们放在这个模式中。
2、系统模式
对于每个数据库,都会创建一组系统模式,并将它们放在 SYSCATSPACE 表空间中:
SYSIBM:基本系统编目。不建议直接访问它。
SYSCAT:这种模式上的 SELECT 权限被授给 PUBLIC。只读编目视图。建议通过它来获得编目信息。
SYSSTAT:可更新编目视图 —— 会影响优化器。
SYSFUN:用户定义函数。
3、DB2 中如何使用模式?
使用模式来完全限定一个表或其他对象名,如下所示:
schemaname.tablename
您可以有多个具有相同名称、不同模式名称的表。因而,表 user1.staff 与表 user2.staff 是不同的。因此,您可以使用模式在 DB2 数据库中创建逻辑数据库。
为创建一个模式,可使用 create schema 命令。
4、谁可以使用模式?
当您可以创建一个模式时,就可以使用 authorization 关键字指定模式的所有者;否则,执行 create schema 语句的授权 ID 将成为模式的所有者。同时,还可以将模式上的特权授给用户或组。
当有了一个模式时,模式的所有者可以将模式上的 CREATE_IN 特权授给其他用户或组。
5、在创建对象时指定模式
可以像下面这样显式地为一个对象指定模式名:
create table DWAINE.table1 (c1 int, c2 int)
如果用户 DWAINE 连接到数据库 SAMPLE,并发出以下语句:
create table t2 (c1 int)
这样将创建模式 DWAINE(只要用户 DWAINE 不撤销 IMPLICT_SCHEMA),同时还在数据库中创建表 t2。
用于连接到数据库的 ID 被称作授权 ID。
6、使用 DML 命令时指定模式
当在数据库对象上使用 DML 命令(例如 select、insert、update、delete)时:
● 可以在对象名上显式地指定对象的模式,例如 schema1.table1。
● 可以使用 set current schema 或 set current sqlid 命令指定对象的模式。
● 如果没有显式地指定对象的模式,那么对象的模式将被设为当前的授权 ID。
例如,如果用户 DWAINE 连接到数据库 SAMPLE 并发出以下语句:
select * from t2
如果这个表存在的话,则该语句将选择 DWAINE.T2。如果这个表不存在,那么将返回一个错误。
四、表空间状态
1、确定一个表空间的状态
为发现一个数据库中的表空间的状态,可以使用命令:
list tablespaces show detail
2、表空间状态
一个表空间可以有多种不同的状态,如下所示:
相关推荐
《Android 群英传》读书笔记:自定义 View ---- 音频条形图 博客地址:http://blog.csdn.net/like_program/article/details/53352899
学习笔记请看我写的文章: Java开发 - 尚硅谷JavaWeb学习笔记 - Part1: ...Java开发 - 尚硅谷JavaWeb学习笔记 - Part5: Java开发 - 尚硅谷JavaWeb学习笔记 - Part6: Java开发 - 尚硅谷JavaWeb学习笔记 - Part7:
A Chinese Notes of MLAPP,MLAPP 中文笔记项目 https:--z-MLAPP-CN
- **概述**:DB2 Control Center 是一个图形化界面工具,用于监控和管理DB2数据库实例。 - **功能**:包括但不限于查看数据库状态、执行SQL查询、管理备份和恢复任务等。 - **适用场景**:适用于日常维护和故障排查...
云的学习笔记-云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-云的学习笔记管理系统java代码-云的学习笔记系统设计与实现-基于ssm的云的学习笔记系统-基于Web的云的学习笔记系统设计与实现-云的学习...
资源名称:Oracle学习笔记-日常应用、深入管理、性能优化内容简介:Oracle学习笔记-日常应用、深入管理、性能优化Oracle 11g是最具代表性的高端关系型数据库管理系统,它在世界各地的大型商务数据库应用系统中被广泛...
语言程序设计资料:ExtJs学习笔记-2积分.doc
云的学习笔记-云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-云的学习笔记管理系统java代码-云的学习笔记系统设计与实现-基于ssm的云的学习笔记系统-基于Web的云的学习笔记系统设计与实现-云的学习...
SQL SERVER 2008 学习笔记:日常维护、深入管理、性能优化。
Microsoft.SQL.Server.2008.学习笔记:日常维护、深入管理、性能优化.part2.rar; 中文版; 第二部分(共两部分)
语言程序设计资料:Java-笔记-孙鑫版.doc