标签: db2

为什么数据库的默认页面大小如此之小?

在 PostgreSQL 和 SQL Server 中,默认页面大小为 8 KB,在 MySQL 中为 16 KB,在 IBM DB2 和 Oracle 中仅为 4 KB。

为什么这些页面尺寸如此之小?

是否有历史或内存使用原因?

mysql postgresql sql-server db2 size

28
推荐指数
3
解决办法
4133
查看次数

单行表的术语?

是否有特定术语来描述与基数为 1 的关系?

我特别想到 RDBMS“特殊”单行表,例如DUAL(Oracle)、SYSIBM.SYSDUMMY1(DB2、Derby) 和RDB$DATABASE(Interbase、Firebird)。

oracle db2 terminology firebird

18
推荐指数
1
解决办法
448
查看次数

为什么 DELETE + REORG 不能释放磁盘空间 (DB2)?

在 DB2 中,我有一个包含大型二进制数据的表。现在我清除了整个表并运行了 runstats、reorg、runstats,但是占用的磁盘空间量没有改变。这里可能有什么问题?

该表位于我创建的自己的表空间中,如下所示:

CREATE BUFFERPOOL "MY_BP" SIZE 250 AUTOMATIC PAGESIZE 4096;
CREATE LARGE TABLESPACE MY_TBS IN DATABASE PARTITION GROUP IBMDEFAULTGROUP PAGESIZE 4096 MANAGED BY AUTOMATIC STORAGE EXTENTSIZE 64 PREFETCHSIZE 64 BUFFERPOOL MY_BP OVERHEAD 10.500000 TRANSFERRATE 0.140000 FILE SYSTEM CACHING;
Run Code Online (Sandbox Code Playgroud)

我删除/重组如下:

DELETE FROM MY_TBL
RUNSTATS ON TABLE MY_TBL WITH DISTRIBUTION AND DETAILED INDEXES ALL
REORG TABLE MY_TBL
RUNSTATS ON TABLE MY_TABLE WITH DISTRIBUTION AND DETAILED INDEXES ALL
ALTER TABLESPACE MY_TBS REDUCE
Run Code Online (Sandbox Code Playgroud)

表 MY_TBL 在所有这些之前占用了 2.5GB,在删除/重组之后它只使用了3MB

FWIW:我正在运行 DB2/NT …

db2 maintenance database-size size db2-luw

18
推荐指数
2
解决办法
2万
查看次数

如何在 Windows 上使用 DB2 9.7 向本地 db2admin 授予所有权限?

我有一台装有 Windows XP Professional Edition Service Pack 3 操作系统的笔记本电脑作为我的开发人员站。

我已经下载并安装了 Express-C 版本的 IBM DB2 UDB 9.7 修订包 4。

我有一个名为 db2admin 的本地 Windows 帐户,我将它用作本地数据库管理员,用于本地安装 DB2(仅限开发人员)。

运行命令行窗口时,我可以毫无问题地运行以下命令:

db2 attach to db2 user db2admin using xxxxxxxxxx
Run Code Online (Sandbox Code Playgroud)

这允许我附加到我的名为 DB2 的实例。

我可以运行我的创建数据库命令。

然后我尝试连接到数据库以授予我在 DB2 中的 db2admin 帐户的所有权限。

db2 CONNECT TO MYDB;
SET SCHEMA DB2ADMIN;
db2 GRANT DBADM,CREATETAB,BINDADD,CONNECT,CREATE_NOT_FENCED_ROUTINE,IMPLICIT_SCHEMA,LOAD,CREATE_EXTERNAL_ROUTINE,QUIESCE_CONNECT,SECADM ON DATABASE TO USER DB2ADMIN;
CONNECT RESET;
Run Code Online (Sandbox Code Playgroud)

但是,当我运行它时,DB2 告诉我我的实际 Windows 用户帐户 (synprgcma) 无权向用户 db2admin 授予权限。

因此,如果我将第二个脚本更改为以下内容:

db2 CONNECT TO MYDB USER db2admin USING xxxxxxxx;
SET SCHEMA DB2ADMIN;
db2 …
Run Code Online (Sandbox Code Playgroud)

db2 windows permissions

10
推荐指数
1
解决办法
7万
查看次数

如何判断 DB2 中的表是否有主键?

我们使用的工具要求 DB2 数据库中的特定表定义主键。

有没有办法在数据库上使用 select 语句来查看给定的表是否有一个?

谢谢。

db2 primary-key

9
推荐指数
2
解决办法
3万
查看次数

如何将模式中所有表的所有权限授予 IBM DB2 中的用户?

首先,我想将数据库从 IBM DB2 AIX 导出到 IBM DB2 窗口中。不幸的是,由于不同的操作系统问题,我无法使用 BACKUP 和 RESTORE 命令。所以我不得不求助于db2move命令。

我使用以下命令从远程 IBM DB2 AIX 中的dbemp数据库中导出了myschema模式和所有表:

db2move dbemp export -sn myschema
Run Code Online (Sandbox Code Playgroud)

当我运行该命令时,我以名为dbuser1 的用户身份登录。

它在当前文件夹中生成一堆文件。我将文件抓取到安装了 IBM DB2 LUW 的本地机器(Windows)中。

现在在我本地机器的 IBM DB2 中,我首先使用 IBM Data Studio(我也有一个本地dbemp数据库)删除了现有的模式myschema

然后我使用以下命令导入文件:

db2move dbemp import
Run Code Online (Sandbox Code Playgroud)

它成功地将架构和表导入本地dbemp数据库。

当我执行上述操作时,我以用户winuser1登录。

我的本地计算机(Windows)中也有一个名为dbuser1的本地用户。在 IBM Data Studio 中,我创建了一个使用dbuser1用户连接到本地dbemp的连接配置文件,我可以浏览myschema模式和表,但我无法浏览表的数据(我遇到了权限错误)。用户winuser1可以浏览表的数据,但出于开发目的,我必须使用用户dbuser1连接到数据库。

所以我发现我可以像这样向表上的用户授予权限:

GRANT ALL ON myschema.table1 …
Run Code Online (Sandbox Code Playgroud)

db2 export permissions import

9
推荐指数
1
解决办法
9万
查看次数

如何找出导致数据库(DB2)处于锁定状态的原因

我知道如何检查数据库是否处于锁定状态,但我的问题是如何找出导致表 /db 锁定的查询。

如果数据库发生意外情况,是否会创建任何日志文件?

deadlock db2 locking

8
推荐指数
1
解决办法
3万
查看次数

DB2 不会 INSERT 到我创建的 Created Temp Table

我通常使用 SQL Server,但对于这个项目,我必须学习 DB2。如果我能让下面的代码工作,我就为整个项目做好了准备。以下是我无法上班的基本示例。我想要做的就是创建一个已创建的全局临时表 (CGTT) 并向其附加数据。如果我使用声明的全局临时表,下面的相同代码将起作用,但出于我的目的,我必须有一个 CGTT。

CREATE GLOBAL TEMPORARY TABLE TEST_TBL(
    KEY_ID BIGINT,
    SOMETEXT VARCHAR(10)
);

INSERT INTO USERID.TEST_TBL
VALUES(123456,'TEST TEST');

SELECT * FROM USERID.TEST_TBL;
SELECT COUNT(*) FROM USERID.TEST_TBL;
Run Code Online (Sandbox Code Playgroud)

以上执行正常,没有错误。执行插入时,它甚至告诉我“更新了 1 行”。但是, select * 和 count(*) 都给了我 0 结果;我想知道这是否是一个权限问题,但是我可以拥有创建 CGTT 但不能插入的权限吗??

提供的任何帮助将不胜感激。提前致谢。

db2

8
推荐指数
1
解决办法
2万
查看次数

DB2 是否按主键排序数据

我最近与一位同事进行了讨论,他正在推动从生产查询中删除 order by 子句,因为order by 列与主键相同

经过长时间的讨论,我试图解释他不能保证基于主键的排序,最后的结论是他不会推动更改 MSSQL 查询。
但他仍打算更改 DB2 查询。

我无法立即找到反驳 DB2 按主键排序查询的文章,目前我想知道它是否确实如此。

所以我的问题是,如果没有 order by 子句,DB2 如何对查询进行排序?它使用主键吗?
在并行系统中,如果没有 order by 子句,如何保证数据按顺序正确输出?

db2 order-by

8
推荐指数
2
解决办法
5495
查看次数

如何获得序列的下一个值?

有人可以告诉下面明显的查询有什么问题:

db2 => select next value for schema_name.sequence_name;
Run Code Online (Sandbox Code Playgroud)

结果我得到:

SQL0104N  An unexpected token "END-OF-STATEMENT" was found following
"schema_name.sequence_name".  Expected tokens may include:  "<table_expr>".
SQLSTATE=42601
Run Code Online (Sandbox Code Playgroud)

db2 sequence

8
推荐指数
2
解决办法
5万
查看次数