AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题

问题[db2-luw](dba)

Martin Hope
FL Support
Asked: 2023-07-04 21:18:26 +0800 CST

RHEL8 上的 IBM DB2 v11.5 - 恢复 BLOB 表

  • 5

首先感谢各位高手..

问题是:一个接受从前端上传的 pdf/jpeg/png 文件的表。BLOB 定义的表如下:

   "IMAGEDATA" BLOB(3048576) LOGGED NOT COMPACT )

表变得太大,我们执行以下步骤通过归档旧数据来恢复空间。

重命名表 A1 创建新表 A2 根据 inserttimestamp 将旧数据导出到 a1.ixf 将最新数据导出到 A2.ixf 从 A2.ixf 导入表 A2 现在我们无法从表 A2 中检索 pdf 文件。我可以知道如何将A1.ixf中的存档数据恢复到数据库吗?

是否可以将备份的LB数据文件复制并替换到表空间目录中?

65G 7 月 3 日 11:00 SQL00453.LB 65M 7 月 3 日 11:00 SQL00453.LBA

尽管A2表具有不同的tableid。我们可以将 syscat.tables 更新回 453 tableid 吗?

我们的应用程序实际上将 pdf 解构回前端,但不知何故,所有 pdf 似乎都已损坏。我们确实在临时数据库中恢复了备份,并且 LB 和 LBA 文件完好无损。但原始数据库已经更新为新的交易数据。

谢谢并感谢您的帮助..

db2-luw
  • 1 个回答
  • 13 Views
Martin Hope
Lennart - Slava Ukraini
Asked: 2022-06-03 09:54:09 +0800 CST

admin_move_table,表卡在 CLEANUP

  • 0

我正在考虑将许多日志表转换为范围分区,主要目的是通过分离和归档历史数据来减小数据库的大小。过程如下:

CALL SYSPROC.ADMIN_MOVE_TABLE('S','T1','', '', '', '', '',
'(ACTION_TIME) (STARTING FROM (''2000-01-01-00.00.00.000000'') ENDING AT (''2029-12-31-23.59.59.999999'') EVERY 1 YEAR)', '', 'COPY_USE_LOAD', 'MOVE' );

...

CALL SYSPROC.ADMIN_MOVE_TABLE('S','T120','', '', '', '', '',
'(ACTION_TIME) (STARTING FROM (''2000-01-01-00.00.00.000000'') ENDING AT (''2029-12-31-23.59.59.999999'') EVERY 1 YEAR)', '', 'COPY_USE_LOAD', 'MOVE' );

为简单起见,在此测试期间,我没有对每个表 (pk + ts) 上的索引做任何事情,它们与以前保持在同一个表空间中。所有表都使用这个表空间作为它们的索引

似乎工作正常,虽然我收到了一些神秘的警告。对于我得到的每张桌子:

SQL0206N "STATSPROFTYPE" is not valid in the context where it is used.

对于一些临时表(似乎是带引号的名称以小写字母结尾的表),我收到了有关 runstats 的其他投诉。

做了一些测试,表格似乎可以访问。

然后我分离了旧分区,例如:

for t in $(db2 -x "select rtrim(tabschema) || '.' || rtrim(tabname) from SYSCAT.DATAPARTITIONS where tabname like '%_LOG' group by tabschema, tabname having COUNT(datapartitionname) > 1"); do
    for p in part{0..18}; do 
        db2 "alter table $t detach partition $p into ${t}_$p"; 
        db2 "drop table ${t}_$p"; 
    done 
    # db2 "reorg table $t";
    db2 "runstats on table $t with distribution and sampled detailed indexes all"
done

仍然可以访问所有表,但是如果我查询:

db2 "SELECT substr(tabschema,1,20), substr(tabname,1,60), substr(VALUE,1,10) FROM SYSTOOLS.ADMIN_MOVE_TABLE WHERE KEY='STATUS'"

所有表的值都是 CLEANUP。我离开了几个小时,数据库中没有任何活动,但表保持不变。平均而言,我可能删除了这些表中 50% 的行,但大小根据:

db2 "CALL GET_DBSIZE_INFO(?, ?, ?, -1)"
...
Parameter Name  : DATABASESIZE
Parameter Value : 769891516416 

没有减少。

由于缺乏想法,我遍历了表并重新组织了每个表和所有索引,但它似乎没有改变任何东西。

表长时间处于这种状态是否正常?在迁移下一个表之前等待 CLEANUP 会有所帮助吗?

db2 db2-luw
  • 1 个回答
  • 114 Views
Martin Hope
Francesco Mantovani
Asked: 2022-06-03 01:44:18 +0800 CST

Docker 上的 DB2 :: IBM Data Studio 在创建新数据库时提示错误

  • 0

我遵循了这个简单的指南,并且能够在 Docker 上安装 DB2。

我现在想导入一个示例数据库来玩。

所以我打开 IBM Data Studio,我右键单击实例 > New database... ,我填写了我的用户名和密码,但随后出现错误:

系统无法验证您指定的实例。输入一个有效的实例名称或单击实例名称字段旁边的按钮并从列表中选择一个。com.ibm.datatools.adm.explorer.ui.model.InstanceException:在“验证系统 192.168.1.44 中的实例 db2inst1”期间发生内部错误。

在此处输入图像描述

如果我扩展错误以获取更多详细信息,我会看到:

'验证系统 192.168.1.44 中的实例 db2inst1。' 遇到了问题。

在“验证系统 192.168.1.44 中的实例 db2inst1。”期间发生内部错误。

在“验证系统 192.168.1.44 中的实例 db2inst1。”期间发生内部错误。

com.ibm.db2.das.core.DasMessageIdentifier(初始化失败)

在此处输入图像描述

深入了解官方文档让我想到了这个解决方案,但我认为这不是问题所在。

让我感兴趣的是.IP 地址后面的“点”( )。这可能是错误吗?

在此处输入图像描述

或者有没有其他方法可以从 IBM Data Studio 导入示例数据库?

db2 db2-luw
  • 1 个回答
  • 71 Views
Martin Hope
folow
Asked: 2022-04-08 05:18:54 +0800 CST

db2 - 升级的实例和数据库降级?

  • 0

到目前为止,我一直在虚拟机中使用全新安装(新的 Linux 安装等)“升级”数据库。

但现在我需要将 Db2/Linux 从 Db2 v11.1 升级到安装在物理机(不是虚拟机)上的 Db2 v11.5。

现有实例 Db2 v11.1 安装在机器上。

  1. 在安装过程中,我遇到了关于不兼容库的错误,所以它被迫使用 db2rmln 命令来删除 Linux 到库的链接。
  2. 安装后需要升级(不是更新!)实例,我使用:./db2iupgrade
  3. 然后迁移数据库。

我只是想知道如果运气不好。是否可以将实例和数据库从 V11.5 降级到 V11.1?两个 Db2 版本之间是否支持降级?

db2 db2-luw
  • 1 个回答
  • 134 Views
Martin Hope
folow
Asked: 2022-03-31 22:21:07 +0800 CST

db2 应用许可文件产生两个许可

  • 0
  1. db2_install我使用命令从 fixpack v11.5.7.0 安装了 Db2 。
  2. 我已经从 IBM Passport Advantage 下载了“IBM Db2 Advanced Edition - VPC Option V11.5.6 - Activation (CC9WHML)”文件。
  3. 我已申请许可证:db2licm -a <license_file>
  4. 我已经检查了申请的许可证:db2licm -l并且输出是:
Product name:                     "DB2 Community Edition"
License type:                     "Community"
Expiry date:                      "Permanent"
Product identifier:               "db2dec"
Version information:              "11.5"
Max amount of memory (GB):        "16"
Max number of cores:              "4"
Features:
IBM DB2 Performance Management Offering:              "Not licensed"

Product name:                     "DB2 Advanced Edition"
License type:                     "Virtual Processor Core"
Expiry date:                      "Permanent"
Product identifier:               "db2adv"
Version information:              "11.5"
Enforcement policy:               "Hard Stop"
Features:
IBM DB2 Performance Management Offering:              "Not licensed"

我以前从未见过这样的展示。看起来两个许可证都应用了“社区”和“高级”版本。

问题:

a) 可以显示两个许可证吗?哪一个是有效的,两者都是?

b) 在“高级”版部分,“硬停”的“执行政策”与什么有关?到目前为止,我一直只看到“软停止”。就像我看到“Advance”版本没有 CPU 内核限制一样,那么“Hard Stop”在此许可证中意味着什么?

db2 db2-luw
  • 1 个回答
  • 161 Views
Martin Hope
Lennart - Slava Ukraini
Asked: 2022-03-08 07:37:39 +0800 CST

docker exec --user db2inst1,找不到用户 db2inst1:passwd 文件中没有匹配的条目

  • 0

我正在使用 docker 和 db2,但是当我尝试以用户 db2inst1 的身份将命令执行到正在运行的容器中时,我遇到了麻烦。我将容器启动为(它是 1 行,但为了便于阅读,我将其拆分):

docker run -itd --name mydb2 --privileged=true -p 50000:50000 
  -e LICENSE=accept 
  -e DB2INST1_PASSWORD=pelle_paltnacke 
  --mount type=volume,dst=${backupdir},volume-driver=local,volume-opt=type=nfs,\"volume-opt=o=nfsvers=4,addr=${addr}\",volume-opt=device=:${device} 
  -v /etc/passwd:/etc/passwd 
  -v /etc/group:/etc/group 
  -v /opt/nya/users/db2inst1:/opt/nya/users/db2inst1 
  -v /home/system/db2fenc1/:/home/system/db2fenc1/ ibmcom/db2

现在,如果我尝试这样做:

docker exec --user db2inst1 -ti mydb2 bash -c "cat /etc/passwd | grep db2inst1"
unable to find user db2inst1: no matching entries in passwd file

作为root没有问题:

docker exec -ti mydb2 bash -c "cat /etc/passwd | grep db2inst1"
db2inst1:x:422:422:DB2 Instance Administrator 1:/opt/nya/users/db2inst1:/bin/bash

而且 --user root 也可以正常工作:

docker exec --user root -ti mydb2 bash -c "cat /etc/passwd | grep db2inst1"
db2inst1:x:422:422:DB2 Instance Administrator 1:/opt/nya/users/db2inst1:/bin/bash

所以我尝试使用挂载的 passwd 文件中的 uid:

docker exec --user 422 -ti mydb2 bash -c "cat /etc/passwd | grep db2inst1"
db2inst1:x:422:422:DB2 Instance Administrator 1:/opt/nya/users/db2inst1:/bin/bash

/etc/passwd 对每个人都是可读的。无论如何,使用 uid 并没有让我走得太远:

docker exec --user 422 -ti mydb2 bash -c "db2licm -l"
bash: db2licm: command not found

所以我尝试:

docker exec --user 422 -ti mydb2 bash -c "whoami; . ~db2inst1/sqllib/db2profile; 
db2licm -l"
db2inst1
bash: /opt/nya/users/db2inst1/sqllib/adm/db2licm: Permission denied

这只是我为演示问题而运行的几个命令。有没有人解释为什么 --user db2inst1 不能执行它们?

FWIW,我尝试不使用 nfs-mount 但我得到了相同的行为。

容器本身似乎工作正常。如果我如上所述启动容器并且:

#> docker exec -ti mydb2 bash
[root@0ee67959246f /]# mkdir -p /data/db/db2
[root@0ee67959246f /]# chown db2inst1:db2iadm1 /data/db/db2/
[root@0ee67959246f /]# su - db2inst1
[db2inst1@0ee67959246f ~]$ cd /data/backup/db2/wb11/MD000I11/
[db2inst1@0ee67959246f MD000I11]$ db2 "restore db MD000I11 incremental auto taken at 20220307141244 to /data/db/db2 into WD000I11"
DB20000I  The RESTORE DATABASE command completed successfully.

编辑:一个有趣的观察是:

docker exec --user 422 -ti mydb2 bash -c "id"
uid=422(db2inst1) gid=0(root) groups=0(root)

docker exec --user 422:422 -ti mydb2 bash -c "id"
uid=422(db2inst1) gid=422(db2iadm1) groups=422(db2iadm1)


docker exec --user 422:422 -ti mydb2 bash -c "whoami; . 
~db2inst1/sqllib/db2profile; db2licm -l"

db2inst1
Product name:                     "DB2 Community Edition"
License type:                     "Community"
...

不幸的:

docker exec --user db2inst1:db2iadm1 -ti mydb2 bash -c "id"
unable to find user db2inst1: no matching entries in passwd file
db2 db2-luw
  • 1 个回答
  • 461 Views
Martin Hope
Kahn
Asked: 2021-10-01 04:17:31 +0800 CST

从 db2 FINAL TABLE 保存结果

  • 0

我们有一个场景,我们需要向不同的表添加多行,获取生成的主键 ID,然后使用 FK 引用先前生成的 ID 等创建更多插入。在 SQL Server 上,您可以只使用 OUTPUT 子句来存储插入的行和生成的 ID,然后引用它们。但显然在 db2 上,除了选择之外,您不能将 FINAL TABLE 结果用于任何内容。

因此,我们希望将 excel 表中的一堆数据插入到表A中,然后将生成的 ID 匹配到 excel 数据集中,并在表B、C等上插入更多行。

是否有另一种方法可以以可用的格式存储插入的记录。最好没有需要编译程序的东西,这样我们就可以一次运行执行脚本吗?下面是一个准代码示例,这显然行不通。

DECLARE GLOBAL TEMPORARY TABLE SESSION.TEMP
    (ITEM_IDENTIFIER,
    TABLE1_ID INT) 
ON COMMIT PRESERVE ROWS;

INSERT INTO SESSION.TEMP (ITEM_IDENTIFIER, TABLE1_ID)
SELECT IDENTIFIER, ID
FROM FINAL TABLE 
    (INSERT INTO MYSCHEMA.MYTABLE (IDENTIFIER, ID /*...other columns*/)
    SELECT *
    FROM 
        (SELECT 'asd123' IDENTIFIER /*...other columns*/ FROM SYSIBM.SYSDUMMY1
        UNION
        SELECT 'bsb234' /*...other columns*/ FROM SYSIBM.SYSDUMMY1
        UNION
        SELECT 'dasd654_' /*...other columns*/ FROM SYSIBM.SYSDUMMY1
        /* etc.. */) s
    );
db2 db2-luw
  • 1 个回答
  • 268 Views
Martin Hope
Lennart - Slava Ukraini
Asked: 2021-09-28 11:57:40 +0800 CST

加载期间构建索引的“总工作量”的含义

  • 1

我不认为我曾经对此进行过反思,但我目前正在从游标加载表格并列出实用程序显示:

  Phase Number               = 3
  Description                = BUILD
  Total Work                 = 46 indexes
  Completed Work             = 0 indexes
  Start Time                 = Not Started

在当前模式中,有 4 个索引 + 一个 XML 列(根据 syscat.indexes 似乎贡献了 2 个)。起初我认为这可能是一个错误,计算不同模式中相同表名的索引,但这也不算数,因为有 10 个模式具有这样命名的表。

我只是好奇这个阶段的“总工作量”是什么意思?

db2 db2-luw
  • 1 个回答
  • 40 Views
Martin Hope
user137481
Asked: 2021-05-13 15:08:25 +0800 CST

使用 IBM Data Studio 进行跨数据库查询

  • 0

我目前正在使用 IBM Data Studio 4.1 对 DB2 LUW 数据库运行查询。我的理解是,我可以通过为数据库名称添加前缀来进行跨数据库查询。

例如,database.schema.table。

但是,当我打开 SQL 查询窗口时,有一个下拉菜单要求用户选择数据库连接。由于它只允许一个数据库连接,我们如何在 IBM Data Studio 中运行跨数据库查询?

db2 db2-luw
  • 2 个回答
  • 306 Views
Martin Hope
Nil R
Asked: 2021-04-21 20:11:42 +0800 CST

在 UNION 中多次使用同一个表

  • 0

我得到一个查询,该查询多次使用具有相同列和过滤器的同一个表,唯一改变的是手动给出的类型。我认为必须有更好的方法来做到这一点。

查询语句如下:

    Select Column 1, Column 2, Sum(Column 3) AS Test, "First Query" AS "Type"
           From Table X
           Where Column 1 = "Fly"
    Group by Column 1, Column 2
    
    UNION ALL 
    
    Select Column 1, Column 2, Sum(Column 3) AS Test, "Second Query" AS "Type"
           From Table X
           Where Column 1 = "Fly"
    Group by Column 1, Column 2
 
    UNION ALL 
    
    Select Column 1, Column 2, Sum(Column 3) AS Test, "Third Query" AS "Type"
           From Table X
           Where Column 1 = "Fly"
    Group by Column 1, Column 2

谢谢!

db2 db2-luw
  • 1 个回答
  • 1521 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve