db2数据库create database on语句是啥意思

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了db2数据库create database on语句是啥意思相关的知识,希望对你有一定的参考价值。

比如这句话: db2 create database OADB on c: using codeset GBK territory CN;

是指创建一个OADB数据库,然后后面的ON.......是什么意思?,求教大神,谢谢
爆这个错怎么破?

参考技术A C:\Documents and Settings\tstbd>db2 ? create database
CREATE DATABASE database-name
[AT DBPARTITIONNUM | [AUTOMATIC STORAGE NO | YES]
[ON drive[,drive...][DBPATH ON drive]]
[ALIAS database-alias] [USING CODESET codeset TERRITORY territory]
[COLLATE USING SYSTEM | IDENTITY | IDENTITY_16BIT | COMPATIBILITY | NLSCHAR | U
[PAGESIZE integer [K]]
[NUMSEGS numsegs] [DFT_EXTENT_SZ dft_extentsize] [RESTRICTIVE]
[CATALOG TABLESPACE tblspace-defn] [USER TABLESPACE tblspace-defn]
[TEMPORARY TABLESPACE tblspace-defn] [WITH "comment-string"] ]
[AUTOCONFIGURE [USING config-keyword value [,config-keyword value...]]
[APPLY DB ONLY | DB AND DBM | NONE]]

on 代表数据创建在哪个目录下面。
参数详解
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的组合,必须是有效的。追问

爆这个错是什么原因,求教

追答

你的语法都是对的, 你把最后CN后面的;去掉试试

追问

还是不行吗

追答

db2 create database OADB on D: using codeset GBK territory CN

把最后符号分号去掉试试

追问

分号去掉可以了,但导入备份数据包的时候又报错了,是不是版本不一致造成的,原来那个是db2v9.5的,现在是db2v10.5是这个原因吗

追答

是的,提示信息已经说得很明白了。

本回答被提问者采纳

如何在 VSTS DB Edition Deploy 中自定义 CREATE DATABASE 语句?

【中文标题】如何在 VSTS DB Edition Deploy 中自定义 CREATE DATABASE 语句?【英文标题】:How do I customise the CREATE DATABASE statement in VSTS DB Edition Deploy? 【发布时间】:2008-12-03 01:10:53 【问题描述】:

我使用的是 VSTS 数据库版 GDR 版本 9.1.31024.02

我有一个项目,我们将在将客户添加到系统时动态创建多个具有相同架构的数据库。每个客户一个数据库。我想我应该能够使用部署脚本来做到这一点。不幸的是,我总是得到 CREATE DATABASE 语句中指定的完整文件名。例如:

CREATE DATABASE [$(DatabaseName)]
ON 
PRIMARY(NAME = [targetDBName], FILENAME = N'$(DefaultDataPath)targetDBName.mdf')
LOG ON (NAME = [targetDBName_log], FILENAME = N'$(DefaultDataPath)targetDBName_log.ldf')
GO

我希望会有更多这样的东西

CREATE DATABASE [$(DatabaseName)]
ON 
PRIMARY(NAME = [targetDBName], FILENAME = N'$(DefaultDataPath)$(DatabaseName).mdf')
LOG ON (NAME = [targetDBName_log], FILENAME = N'$(DefaultDataPath)$(DatabaseName)_log.ldf')
GO

甚至

CREATE DATABASE [$(DatabaseName)]

我不会持续运行这个,所以我想让它尽可能简单,以供下一个人使用。项目属性中有很多部署选项,但我无法按照我想要的方式进行部署。

有人知道怎么设置吗?

【问题讨论】:

【参考方案1】:

迟到总比没有好,我知道如何从您的第二个示例中获取 $(DefaultDataPath)$(DatabaseName) 文件名。

您在第一个代码 sn-p 中显示的 SQL 表明您没有用于在 VSTS:DB 项目中创建数据库文件的脚本,可能是故意将它们从您所做的任何架构比较中排除。我发现它有点违反直觉,但解决方案是让 VSTS:DB 在您的开发环境中编写 MDF 和 LDF 脚本,然后编辑这些脚本以使用 SQLCMD 变量。

在您的数据库项目中,转到文件夹Schema Objects > Database Level Objects > Storage > Files。在那里,添加这两个文件:

Database.sqlfile.sql

ALTER DATABASE [$(DatabaseName)]
ADD FILE (NAME = [$(DatabaseName)], 
    FILENAME = '$(DefaultDataPath)$(DatabaseName).mdf',
    SIZE = 2304 KB, MAXSIZE = UNLIMITED, FILEGROWTH = 1024 KB) 
    TO FILEGROUP [PRIMARY];

Database_log.sqlfile.sql

ALTER DATABASE [$(DatabaseName)]
    ADD LOG FILE (NAME = [$(DatabaseName)_log], 
    FILENAME = '$(DefaultDataPath)$(DatabaseName)_log.ldf', 
    SIZE = 1024 KB, MAXSIZE = 2097152 MB, FILEGROWTH = 10 %);

VSTS:DB 或 VSDBCMD.exe 生成的完整数据库创建脚本现在将使用 SQLCMD 变量来命名 MDF 和 LDF 文件,允许您在命令行或 MSBuild 中指定它们。

【讨论】:

【参考方案2】:

我们使用模板数据库执行此操作,当新客户上线时,我们会备份、复制和恢复该数据库。我们不使用脚本创建任何模式,而是使用实时的空数据库。

【讨论】:

【参考方案3】:

嗯,看来到目前为止最好的答案(鉴于压倒性的反应)是事后编辑文件......仍在寻找

【讨论】:

以上是关于db2数据库create database on语句是啥意思的主要内容,如果未能解决你的问题,请参考以下文章

Postgres 13.2 on rails 5.2.4.1: ActiveRecord::NoDatabaseError: FATAL: database * does not exist on r

mysql数据库崩溃:InnoDB: Database page corruption on disk or a failed

db2 for update of的用法

求助各位大神,小弟初学IBM DB2,求助关于数据库创建问题,多谢!!

使用 DB2 语法截断 H2Database 中的表

db2报SQL0964C The trnsaction log for the database is full. SQLSTATE=57011