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

DB2创建数据库常用参数详解(原创)

本文只介绍DB2 create database语法中的常用参数
http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp

CREATE DATABASE语法树
Read syntax diagramSkip visual syntax diagram
>>-CREATE--+-DATABASE-+----------------------------------------->
?????????? '-DB-------'??

>----database-name--+-----------------------------+------------><
??????????????????? +-AT DBPARTITIONNUM-----------+
??????????????????? '-| Create Database options |-'????
Create Database options
?? .-AUTOMATIC STORAGE--YES-.
|--+------------------------+----------------------------------->
?? '-AUTOMATIC STORAGE--NO--'??

>--+---------------------------------------------+-------------->
?? |???? .-,---------.?????????????????????????? |
?? |???? V?????????? |?????????????????????????? |
?? '-ON----+-path--+-+--+----------------------+-'
?????????? '-drive-'??? '-DBPATH ON--+-path--+-'
???????????????????????????????????? '-drive-'??????

>--+-----------------------+------------------------------------>
?? '-ALIAS--database-alias-'??

>--+----------------------------------------------+------------->
?? '-USING CODESET--codeset--TERRITORY--territory-'??

>--+-----------------------------------------------+------------>
?? |??????????????? .-SYSTEM---------------------. |
?? '-COLLATE USING--+-COMPATIBILITY--------------+-'
??????????????????? +-IDENTITY-------------------+
??????????????????? +-IDENTITY_16BIT-------------+
??????????????????? +-UCA400_NO------------------+
??????????????????? +-UCA400_LSK-----------------+
??????????????????? +-UCA400_LTH-----------------+
??????????????????? +-language-aware-collation---+
??????????????????? +-locale-sensitive-collation-+
??????????????????? '-NLSCHAR--------------------'????

参数详解
1. DATABASE database-name
给数据库指定名称,在本地和系统库中,都必须唯一的,不能包含空格。
2. AT DBPARTITIONNUM
指定数据库将要被创建在发出命令的分区。当创建一个新库,不要指定这个参数。可以用它重建一个因为损坏而删除的数
据库分区。当用这个参数创建库,数据库将处于restore pending状态。不切断应用可能导致不一致,用时谨慎。
3. AUTOMATIC STORAGE NO | YES
指定自动存储打开或关闭。默认是打开的。
4. ON path or drive
这个子句和AUTOMATIC STORAGE的值有关,它指定了DB表空间的容器位置。详细的目录结构如下
/Path or Drive ---------->? 数据库目录
??? |?
??? |------ InstanceName ---------->? 实例名
??????? |
??????? |------ NODEnnnn ---------->? 节点名
????????????? |
????????????? |------ DataBaseName ---------->? 数据库名
????????????? ? ???? |
????????????? ?? ??? |------Tnnnnnnn ---------->? 表空间容器
对于AUTOMATIC STORAGE NO:只有一个path可以包含在ON后,它指定了DB的位置。如果没有指定这个参数,DB创建到默认路径中,该默认路径为dbm cfg的dftdbpath指定。
对于AUTOMATIC STORAGE YES:可以列出多个路径,有逗号分隔,这些路径作为存储路径和保存自动存储表空间的容器。对于多分区DB,相同的存储路径被用在所有分区中。
创建数据库后将创建三个缺省表空间:
T0000000子目录中包含带有系统目录表的目录表空间。
T0000001子目录中包含缺省临时表空间。
T0000002子目录中包含缺省用户数据表空间。
每个子目录或容器中都会创建一个名为 SQLTAG.NAM 的文件。这个文件可以标记正在使用中的子目录,因此在以后创建其他表空间时,不会尝试使用这些子目录。
此外,名为 SQL*.DAT 的文件中还存储有关子目录或容器包含的每个表的信息。星号(*)将被唯一的一组数字取代,用来识别每个表。对于每个 SQL*.DAT 文件,可能有一个或多个下列文件,这取决于表类型、表的重组状态或者表是否存在索引、LOB 或 LONG 字段:
SQL*.BKM(如果它是一个 MDC 表,那么它包含块分配信息)
SQL*.LF(包含 LONG VARCHAR 或 LONG VARGRAPHIC 数据)
SQL*.LB(包含 BLOB、CLOB 或 DBCLOB 数据)
SQL*.XDA(包含 XML 数据)
SQL*.LBA(包含有关 SQL*.LB 文件的分配和可用空间信息)
SQL*.INX(包含索引表数据)
SQL*.IN1(包含索引表数据)
SQL*.DTR(包含用于重组 SQL*.DAT 文件的临时数据)
SQL*.LFR(包含用于重组 SQL*.LF 文件的临时数据)
SQL*.RLB(包含用于重组 SQL*.LB 文件的临时数据)
SQL*.RBA(包含用于重组 SQL*.LBA 文件的临时数据)
5、DBPATH ON指定了数据库基础文件(控制文件,日志文件等)的创建位置。如果没有指定,则数据库在ON后面第一
个路径指定。如果没有指定路径,则在默认位置创建,该默认路径为dbm cfg的dftdbpath指定。数据库路径里面创建了
分层目录结构。这个结构保存了数据库操作需要的文件,目录结构具体