建树第一个数据库
First Steps
在 DB2 的安顿进程中,会表示 First Steps 面板,它答运用户生成要操作的示例数据库:
选择 Database Creation 选项将表示一个附加菜单,可以建树 SAMPLE 数据库。
大大都用户希冀建树 SAMPLE 数据库并运用这个数据库研讨 DB2 的特征。调用这个面板的方法是在 DB2 门径组中的 Setup Tools 文件夹中选择 First Steps(在 Windows 情况中)。另外,在命令行提示下收回命令 db2sampl
也会生成 SAMPLE 数据库。
选择了 SAMPLE 按钮之后,表示另一个面板,在这里决定将在那里建树 SAMPLE 数据库。
在建树 SAMPLE 数据库时,创议选择 XML and SQL objects and data 选项。这个选项将以 UTF-8(Unicode)格局生成数据库,多么就许可操作 XML 对象。假如没有选择 XML 选项,就不能在 SAMPLE 数据库中添加 XML 对象。
关于 First Steps 对象的更多信息,请参考本系列中的第一个教程。
上面在不运用 GUI 的情况下建树 DB2 数据库。
第一个真正的数据库
苦守令行建树 DB2 数据库是相称简单的。要建树数据库,必须调用 DB2 命令行处置门径(Command Line Processor,CLP)。调用方法是在 DB2 门径组的 Command Line Tools 文件夹中选择 Command Line Processor(见下图),梗概从操作琐细命令行施行命令 db2cmd db2
。(关于命令行处置门径的更多信息,请参考本系列中的第一个教程。)
建树 DB2 数据库的语法如下:
CREATE DATABASE MY1STDB
您会问,“就这么简单?” 是的,就这么简单!CREATE DATABASE 语句中专一必须的要素就是数据库的称号。数据库的命名规律是:
-
数据库称号可以由以下字符组成:a-z、A-Z、0-9、@、# 和 $。
-
称号中的第一个字符必须是字母表字符、@、# 或 $;不能是数字或字母序列 SYS、DBM 或 IBM。
-
数据库称号或数据库又名是一个专一的字符串,包罗后面描画的一个到八个字母、数字或键盘字符。
固然,有很多选项可供运用;不消只输着称号。我们来研讨一下这个命令理想上会招致什么情况。
DB2 建树了什么?
在收回 CREATE DATABASE 命令时,DB2 会建树很多文件。这些文件包罗日记文件、设信赖息、汗青文件和三个表空间。这些表空间是:
- SYSCATSPACE:这是保管 DB2 琐细编目标处所,琐细编目跟踪与 DB2 对象相关联的一切元数据。
- TEMPSPACE1:DB2 用来铺排地方了局的一时工作区域。
- USERSPACE1:默许情况下存放一切用户对象(表、索引)的处所。
一切这些文件都放在默许驱动器上的 DB2
目次中。默许驱动器凡是是安顿 DB2 产物的卷。
拼凑简单的运用门径,这个默许设置应该可以适意需求。但是,可以希冀改动数据库文件的职位,梗概改动 DB2 治理这些对象的方法。接上去,我们将更详尽地研讨 CREATE DATABASE 命令。
拼凑从 DB2 8 住手迁移的用户,有一个特别的留神事故:在 DB2 9 之前,CREATE DATABASE 命令会为上面列出的一切对象建树 SMS 表空间。在 DB2 9 中,一切表空间都将界说为自动存储(DMS)表空间。
CREATE DATABASE 命令
DB2 CREATE DATABASE 命令的无缺语法可以在 DB2 Command Reference 中找到,但是下图说领略 DBA 感兴味的大大都选项。
CREATE DATABASE 命令
>>-CREATE-- -DATABASE- -database-name- ---------------------- -->'-DB-------' '-| Database options |-'
数据库选项
CREATE DATABASE 选项:
|-- ---------------------------- ------------------------------->'-AUTOMATIC STORAGE--NO|YES--'
>-- --------------------------------------------- -------------->| .-,---------. || 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----- '-NLSCHAR--------'
>-- --------------------------------------- -------------------->'-CATALOG TABLESPACE--| tblspace-defn |-'
>-- ------------------------------------ ----------------------->'-USER TABLESPACE--| tblspace-defn |-'
>-- ----------------------------------------- ------------------>'-TEMPORARY TABLESPACE--| tblspace-defn |-'
表空间界说
tblspace-defn:
|--MANAGED BY--------------------------------------------------->.-,------------------.V |
>-- -SYSTEM USING--(----'container-string'- --)-------------------------------- -->| .-,-----------------------------------------------. || V | |-DATABASE USING--(---- -FILE--- --'container-string'--number-of-pages- --)- | '-DEVICE-' |'-AUTOMATIC STORAGE---------------------------------------------------------'
>-- ----------------------------- ------------------------------>'-EXTENTSIZE--number-of-pages-'
>-- ------------------------------- ---------------------------->'-PREFETCHSIZE--number-of-pages-'
>-- --------------------- -- --------------------------------- ->'-AUTORESIZE-- -NO-- -' '-INITIALSIZE--integer-- -K|M|G- -''-YES-'
>-- ------------------------------------ ----------------------->'-INCREASESIZE--integer-- -PERCENT- -''- -K|M|G-'
>-- ------------------------------- ----------------------------|'-MAXSIZE-- -NONE------------- -''-integer-- -K|M|G-'
在下面几节中,将学习这些选项以及如何运用它们。
数据库职位
CREATE DATABASE 命令的参数之一是 ON path/drive
选项。这个选项陈说 DB2 您希冀在那里建树数据库。假如没有指定途径,就会在数据库治理门径设置(DFTDBPATH 参数)中指定的默许数据库途径上建树数据库。
比喻,以下的 CREATE DATABASE 命令将数据库放在 Windows 操作琐细的 D: 驱动器上的 TEST 目次中:
CREATE DATABASE MYDB ON D:\TEST
选择 Automatic storage(默许设置)许可 DBA 为数据库设置在建树一切表空间容器时可以运用的存储途径。DBA 不消显式地界说表空间的职位和大小,琐细将自动地分派表空间。比喻,上面的数据库建树语句将为数据库中的一切表空间设置自动存储。
CREATE DATABASE TEST AUTOMATIC STORAGE ON /db2/storagepath001,/db2/storagepath002,/db2/storagepath003AUTORESIZE YES INITIALSIZE 300 MINCREASESIZE 75 MMAXSIZE NONE
在 AUTOMATED STORAGE ON 选项后面,给出了三个文件目次(途径)。这三个途径是一个表空间的容器的职位。其他的选项是:
- AUTORESIZE YES
当表空间用光空间时,琐细将自动地扩展容器的大小。
- INITIALSIZE 300 M
没有界说初始大小的任何表空间的大小默许为 300 MB。每个容器是 100 MB(有三个存储途径)。
- INCREASESIZE 75 M (或百分数)
当表空间用光空间时,表空间的总空间添加 75 MB。还可以指定一个百分数,在这种情况下,表空间会增进它的当前大小的百分数。
- MAXSIZE NONE
表空间的最大大小没有限定。假如 DBA 希冀限定一个表空间可以占用的存储空间,那么可以指定一个最大值。
当运用 AUTOMATIC STORAGE 界说表空间时,不需求供应其他参数:
CREATE TABLESPACE TEST MANAGED BY AUTOMATIC STORAGE;
在这个命令中,可以供授与表空间相关联的任何参数;但是,运用自动存储可以大大简化一样往常的表空间维护。与首要的大型消耗表相关联的表空间可以需求 DBA 更多地干涉干涉干涉。
在没有启用自动存储的数据库中建树表空间时,必须指定 MANAGED BY SYSTEM 或 MANAGED BY DATABASE 子句。运用这些子句会判袂建树 SMS 表空间和 DMS 表空间。在这两种情况下,都必须供应容器的显式列表。
假如数据库启用了自动存储,那么有另一个选择。可以指定 MANAGED BY AUTOMATIC STORAGE 子句,梗概完全去失 MANAGED BY 子句(这意味着自动存储)。在这种情况下,不供应容器界说,由于 DB2 会自动地分派容器。
代码页和收拾整顿顺序
一切 DB2 字符数据典范(CHAR、VARCHAR、CLOB、DBCLOB)都有一个相关联的字符代码页。可以以为代码页是一个对照表,用来将字母数字数据转换为数据库中存储的二进制数据。一个 DB2 数据库只能运用一个代码页。代码页是在 CREATE DATABASE 命令中运用 CODESET
和 TERRITORY
选项设置的。代码页可以运用单一字节透露表示一个字母数字字符(单一字节可以透露表示 256 个共同元素),也可以运用多个字节。
英语等言语包罗的共同字符相称少;因而单字节代码页拼凑存储数据充沛了。日语等言语需求逾越 256 个元素才略透露表示一切的共同字符;因而需求多字节代码页(凡是是双字节代码页)。
在默许情况下,数据库的收拾整顿顺序依据 CREATE DATABASE 命令中运用的代码集住手界说。假如指定选项 COLLATE USING SYSTEM
,就依据为数据库指定的 TERRITORY
对数据值住手角力盘算。假如运用选项 COLLATE USING IDENTITY
,那么以逐字节的方法运用二进制透露表示来角力盘算一切值。
DB2 Administration Guide 列出了建树数据库时可用的种种代码页。在大大都情况下,DBA 会让这个设置坚持为数据库所在的操作琐细的默许代码页。
拼凑需求运用 XML 数据的运用门径,有一个特别的留神事故。当前,DB2 只在界说为 Unicode(UTF-8)的数据库中支撑 XML 列。假如数据库在建树时没有启用 Unicode 支撑,就不能在其中建树 XML 列。
表空间界说
三个表空间(SYSCATSPACE、TEMPSPACE1、USERSPACE1)都是在默许目次中自动建树的(ON 枢纽字),除非指定它们的职位。拼凑每个表空间,DBA 可以指定表空间应该运用的文件琐细的特征。
三个表空间运用以下语法住手界说:
>-- --------------------------------------- --------------------> '-CATALOG TABLESPACE--| tblspace-defn |-'
>-- ------------------------------------ -----------------------> '-USER TABLESPACE--| tblspace-defn |-'
>-- ----------------------------------------- ------------------>'-TEMPORARY TABLESPACE--| tblspace-defn |-'
假如省略任何枢纽字,DB2 将运用默许值来生成表空间。表空间界说接纳这些选项,其语法如下:
|--MANAGED BY--------------------------------------------------->.-,------------------.V |
>-- -SYSTEM USING--(----'container-string'- --)-------------------------------- -->| .-,-----------------------------------------------. || V | |'-DATABASE USING--(---- -FILE--- --'container-string'--number-of-pages- --)-''-DEVICE-'
>-- ----------------------------- ------------------------------> '-EXTENTSIZE--number-of-pages-'
>-- ------------------------------- ----------------------------> '-PREFETCHSIZE--number-of-pages-'
留神,上面的语法不包罗与自动存储数据库相关联的选项。
我们来详尽看看这个语法。MANAGED BY 选项让 DB2 生成这些表空间并决定如何治理空间。SMS 表空间运用 SYSTEM USING 枢纽字,如下所示:
SYSTEM USING ('container string')
拼凑 SMS 表空间,容器字符串(container string) 标识一个或多个将属于这个表空间的容器,表空间数据将存储在这些容器中。每个容器字符串可以是绝对的或绝对的目次名。假如目次名不是绝对的,它就相拼充数据库目次。假如目次的任何局部不存在,数据库治理门径就会建树这个目次。容器字符串的格局取决于操作琐细。
运用 DATABASE USING 枢纽字界说 DMS 表空间:
DATABASE USING ( FILE/DEVICE 'container string' number of pages )
拼凑 DMS 表空间,容器字符串标识一个或多个将属于这个表空间的容器,表空间数据将存储在这些容器中。指定容器的典范(FILE
或 DEVICE
)和大小(依照 PAGESIZE
大小的页面)。大小还可以指定为一个整数,后面随着 K
(透露表示千字节)、M
(透露表示兆字节)或 G
(透露表示千兆字节)。可以夹杂指定 FILE 和 DEVICE 容器。
拼凑 FILE 容器,容器字符串必须是绝对或绝对的文件名。假如文件名不是绝对的,它就相拼充数据库目次。假如目次名的任何局部不存在,数据库治理门径就会建树这个目次。假如文件不存在,数据库治理门径就会建树这个文件并初始化为指定的大小。拼凑 DEVICE 容器,容器字符串必须是设置配备安排名而且这个设置配备安排必须曾经存在。
首要提示:一切容器必须是在所无数据库上专一的;一个容器只能属于一个表空间。
EXTENTSIZE number of pages
EXTENSIZE
指定数据库可以写到一个容器中的 PAGESIZE 页面数量,到达这个数量之后将跳到下一个容器。EXTENSIZE
值还可以指定为一个整数,后面随着 K
、M
或 G
。数据库治理门径在存储数据时重复地循环运用各个容器。
PREFETCHSIZE number of pages
PREFETCHSIZE
指定在施行数据预获取时将从表空间中读取的 PAGESIZE 页面数量。预获取大小还可以指定为一个整数,后面随着 K
、M
或 G
。
预获取会在查询援用数据之前读取查询所需的数据,多么查询就不需求守候底层操作琐细施行 I/O 操作。
CREATE DATABASE 命令示例
上面是一个 CREATE DATABASE 命令的示例,它运用了后面计议的很多选项。
( 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
我们来详尽地看看每一行:
-
CREATE DATABASE
:这个语句界说要建树的数据库的称号。 -
DFT_EXTENT_SZ 4
:这个参数陈说 DB2 默许的区段大小是 4 个页面,除非在其他处所显式地声明。 -
CATALOG TABLEPSACE MANAGED BY DATABASE USING
:DB2 编目空间将由数据库治理。 -
FILE 'C:\....'
:表空间的职位将跨两个文件,每个文件有 2,000 个页面的空间。 -
EXTENTSIZE 8
:EXTENTSIZE
是 8 个页面。 -
PREFETCHSIZE 16
:在查询处置期间,同时读取 16 个页面。 -
TEMPORARY TABLESPACE MANAGED BY SYSTEM USING
:DB2 运用的一时空间将由操作琐细处置。 -
'C:\TEMPTS' ...
:一时空间将跨两个文件,文件的大小在 DB2 施行期间自动地调停。 -
USER TABLESPACE MANAGED BY DATABASE USING
:用户空间(铺排真正的表的处所)将由 DB2 直经受理。 -
FILE 'C:\TS\...'
:这个空间只要一个容器,它由 121 个页面组成。 -
EXTENTSIZE 24
:USER
表空间的EXTENTSIZE
是 24 个页面。 -
PREFETCHSIZE 48
:查询将同时预获取 48 个页面。
数据库建树小结
本节引见了关于如何建树 DB2 数据库的背景知识。在大大都情况下,CREATE DATABASE 命令的默许值供应了一个可以适意开发和测试需求的数据库。
一旦决定将数据库转入消耗情况,就需求对 DB2 运用的数据结谈判表空间界说领取更大的积极。固然这需求做更多的计划工作,但是发作的数据库更任意治理,遵命也可以更好。
版权声明: 原创作品,许可转载,转载时请务必以超链接方式标明文章 原始情由 、作者信息和本声明。否则将深究轨则责任。