转自
http://czmmiao.iteye.com/blog/1335801DB2创建数据库常用参数详解
本文只介绍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指定。数据库路径里面创建了分层目录结构。这个结构保存了数据库操作需要的文件,目录结构具体如下/Path or Drive ----------> 数据库目录 | |------ InstanceName ----------> 实例名 | |------ NODEnnnn ----------> 节点名 | |------ SQLxxxxx ----------> 数据库编号 | | | |------SQLOGDIR ----------> 数据库日志目录 | |------sqldbdir ----------> 本地数据库编目其中SQLOGDIR目录用来存放数据库日志文件,建库后可以更改日志文件位置SQLxxxxx目录下包含如下文件SQLBP.1 和 SQLBP.2 文件中都包含缓冲池信息。这两个文件中具有相同的副本,从而提供备份。SQLSPCS.1 和 SQLSPCS.2 文件中都包含表空间信息。这两个文件中具有相同的副本,从而提供备份。SQLSGF.1 和 SQLSGF.2 文件中都包含与数据库的自动存储器相关的存储路径信息。这两个文件中具有相同的副本,从而提供备份。SQLDBCON 文件中包含数据库配置信息。切勿编辑此文件。要更改配置参数,请使用控制中心或者使用 UPDATE DATABASE CONFIGURATION 和 RESET DATABASE CONFIGURATION 命令。db2rhist.asc 历史记录文件及其备份 db2rhist.bak 中包含关于备份、复原、表装入、表重组、表空间改变和其他数据库更改的历史记录信息。DB2TSCHNG.HIS文件中包含日志文件级别的表空间更改的历史记录。对于每个日志文件,DB2TSCHG.HIS中包含有助于确定日志文件影响哪些表空间的信息。表空间恢复使用此文件中的信息来确定在进行表空间恢复期间要处理哪些日志文件。可以在文本编辑器中检查这两个历史记录文件中的内容。日志控制文件 SQLOGCTL.LFH 和 SQLOGMIR.LFH 中包含有关活动日志的信息。恢复处理过程使用这些文件中的信息来确定要在日志中后退多远来开始恢复。SQLOGDIR子目录中包含实际的日志文件。注:您应确保不要将日志子目录映射到用于存储数据的磁盘。这样,在磁盘发生问题时,只会影响到数据或日志,而不会同时影响这两者。由于日志文件与数据库容器不会争用同一磁盘磁头的移动,因此这可提供很多性能方面的好处。要更改日志子目录的位置,请更改 newlogpath数据库配置参数。SQLINSLK文件用于确保一个数据库只能由数据库管理器的一个实例使用。在创建数据库的同时,还在db2event目录下创建了详细死锁事件监视器。详细死锁事件监视器文件存储在目录节点的数据库目录中。当事件监视器达到它要输出的最大文件数 时,它将取消激活,并且将把一条消息写入通知日志中。这样可防止事件监视器消耗过多的磁盘空间。除去不再需要的输出文件将允许在下一次数据库激活时再次激 活事件监视器。 DBPATH ON选项可以被用来把以上文件和信息,放在一个与数据库数据存储路径分开的路径中。当使用automatic storage时,建议将数据库的information和数据库的data分开。对于MPP系统,数据库不能建在NFS文件夹中,不能是相对路径。每个给出的路径必须在每个数据库分区中存在并可访问。database path最长215字符,storage path最长175字符。5. ALIAS database-alias在database directory中,数据库的别名。如果没指定,就用数据库名称。6. USING CODESET codeset指定数据进入数据库所使用的编码集。创建数据库后,不能修改。7. TERRITORY territory指定数据库进入数据库所使用的区域标示符或本地标示符。创建数据库后,不能修改。code set和territory的组合,必须是有效的。读者可以通过以下连接查看DB2支持的代码页列表http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic=%2Fcom.ibm.db2.luw.admin.nls.doc%2Fdoc%2Fr0004565.html&resultof=%22%E4%BB%A3%E7%A0%81%E9%A1%B5%22
其中显示代码页(“S”)表示单字节、(“D”)表示双字节、(“N”)表示中性。如果两个代码页属于同一组,则他们可以浮想转换,否则无法转换。注意,S和D组的代码都可以转换成中性的,但N组不一定能转换成S或者D组。
国内常用的数据库编码集是GBK和UTF-8,GBK支持中文字符,UTF-8几乎支持所有语言。9.5版本之前,如果不指定编码DB2默认根据系统的Locale来设置。9.5版本开始,默认的数据库编码为UTF-8,可以通过如下命令来查看编码集和编码页的信息$db2 get db cfg for testdb Database Configuration for Database testdb Database configuration release level = 0x0d00 Database release level = 0x0d00Database territory = CN
Database code page = 1208 Database code set = UTF-8 Database country/region code = 86 Database collating sequence = IDENTITY 其中code set是操作系统级别的编码设置,是通用的;而code page是对DB2编码集的内部数字表示,只在DB2内部有意义。本例中编码集设置未UTF-8对应DB2内部的编码页未1208。8. COLLATE USING指定数据库使用的比较顺序规则。创建数据库后,不能修改。在unicode的数据库中,catalog tables和views总是用IDENTITY collation,无论数据库指定了哪种collation。在non-unicode数据库里,catalog tables和views使用数据库的collation创建。COMPATIBILITYDB2 version 2的比较规则。一些已经加强了。这个选项指定了之前的版本会用使用。IDENTITY字符串是逐字节比较的。IDENTITY_16BITCESU-8 (Compatibility Encoding Scheme for UTF-16: 8-Bit(www.unicode.org),只能在unicode数据库使用。UCA400_NOThe UCA (Unicode Collation Algorithm) collation sequence that is based on the Unicode Standard version 4.0.0 with normalization implicitly set to ON. 只能在unicode数据库使用。UCA400_LSKThe UCA (Unicode Collation Algorithm) collation sequence based on the Unicode Standard version 4.0.0 but will sort Slovak characters in the appropriate order. 只能在unicode数据库使用。UCA400_LTHThe UCA (Unicode Collation Algorithm) collation sequence that is based on the Unicode Standard version 4.0.0 but will sort all Thai characters according to the Royal Thai Dictionary order. 只能在unicode数据库使用。language-aware-collation只能在unicode数据库使用。对于non-unicode数据库,是基于system cllation。字符串必须是SYSTEM_codepage_territory的格式,否则创建数据库会失败。当create database在V9上使用,这个选项不会被使用。默认,unicode数据库在v9上会事SYSTEM collation。locale-sensitive-collation只能在unicode数据库使用。NLSCHAR只能用在Thai code page(CP874),否则出错。为指定的set/territory设置独特的collation。SYSTEM这是创建数据库时,collation的默认选项。对于non-unicode数据库,collation是基于territory。对于unicode数据库,根据客户的code set和territory,对应一个language-aware-collation,如何没有合适的language-aware可用,会使用IDENTITY。示例 db2=>create database testdb automatic storage yes on /dbauto dbpath on /database using codeset UTF-8 TERRITORY CN COLLATE USING SYSTEM参考至:《DB2数据库最佳管理实践》
http://www.dblotus.com/?p=457 http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp