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](dba)

Martin Hope
RonJohn
Asked: 2025-04-18 01:31:41 +0800 CST

DB2 LUW - V11.5.7.0 是否需要 db2/V11.5 目录?

  • 5

根据db2level,我们目前正在运行 DB2 v11.5.7.0(在 RHEL 7.9 上)。它是在我来之前从 11.5 升级而来的。

这听起来可能像是一个愚蠢的问题,但是 V11.5.7.0 是否需要 V11.5 文件,或者 V11.5.7.0 是否完全独立,以便我可以删除/opt/ibm/db2/V11.5?

(我认为答案是“是”,但没有测试系统供我进行实验,而且我不想中断生产。)

V11.5/和V11.5.7.0看起来都是完整安装:

$ du -cm -d1 /opt/ibm/db2
du: cannot read directory ‘/opt/ibm/db2/V11.5/.licbkup’: Permission denied
2270    /opt/ibm/db2/V11.5
du: cannot read directory ‘/opt/ibm/db2/V11.5.7.0/.licbkup’: Permission denied
2150    /opt/ibm/db2/V11.5.7.0
4420    /opt/ibm/db2
4420    total

更多详细信息:

$ /sbin/lsof -u db2dlp01 | grep V11.5/
$ echo $?
1

$ /sbin/lsof -u db2dlp01 | grep -q V11.5.7.0
$ echo $?
0

$ /opt/ibm/db2/V11.5/bin/db2greg -dump
S,DB2,11.5.0.0,/opt/ibm/db2/V11.5,,,0,0,,1610467335,0
V,DB2GPRF,DB2SYSTEM,ewr0vlpudb01dol,/opt/ibm/db2/V11.5,
S,TSA,4.1.0.7,/opt/IBM/tsamp,DG_NOT_ALLOWED,DB2_INSTALLED,0,0,-,1651371491,0
S,RSCT,3.2.6.2,/usr/sbin/rsct,DG_NOT_ALLOWED,DB2_INSTALLED,0,0,-,1651371491,0
S,DB2,11.5.7.0,/opt/ibm/db2/V11.5.7.0,,,0,0,,1651371660,0
V,DB2GPRF,DB2SYSTEM,ewr0vlpudb01dol,/opt/ibm/db2/V11.5.7.0,
I,DB2,11.5.7.0,db2dlp01,/home/db2dlp01/sqllib,,1,0,/opt/ibm/db2/V11.5.7.0,,

$ /opt/ibm/db2/V11.5.7.0/bin/db2greg -dump
S,DB2,11.5.0.0,/opt/ibm/db2/V11.5,,,0,0,,1610467335,0
V,DB2GPRF,DB2SYSTEM,ewr0vlpudb01dol,/opt/ibm/db2/V11.5,
S,TSA,4.1.0.7,/opt/IBM/tsamp,DG_NOT_ALLOWED,DB2_INSTALLED,0,0,-,1651371491,0
S,RSCT,3.2.6.2,/usr/sbin/rsct,DG_NOT_ALLOWED,DB2_INSTALLED,0,0,-,1651371491,0
S,DB2,11.5.7.0,/opt/ibm/db2/V11.5.7.0,,,0,0,,1651371660,0
V,DB2GPRF,DB2SYSTEM,ewr0vlpudb01dol,/opt/ibm/db2/V11.5.7.0,
I,DB2,11.5.7.0,db2dlp01,/home/db2dlp01/sqllib,,1,0,/opt/ibm/db2/V11.5.7.0,,

更多信息:

$ /usr/local/bin/db2ls
Install Path                       Level   Fix Pack   Special Install Number   Install Date                  Installer UID 
---------------------------------------------------------------------------------------------------------------------
/opt/ibm/db2/V11.5               11.5.0.0        0                            Tue Jan 12 11:02:15 2021 EST             0 
/opt/ibm/db2/V11.5.7.0           11.5.7.0        0                            Sat Apr 30 22:21:00 2022 EDT             0 
db2
  • 2 个回答
  • 50 Views
Martin Hope
Manngo
Asked: 2025-03-11 05:48:40 +0800 CST

如何在 Db2 中获取 PI 的值?

  • 7

一些 DBMS 具有pi()给出 π 值的函数。我找不到 Db2 的等效函数。

我想我可以使用radians(180),但是有没有更直接的方法呢?

db2
  • 1 个回答
  • 56 Views
Martin Hope
Manngo
Asked: 2025-03-09 14:05:06 +0800 CST

如何检查 DB2 表中的日期?

  • 6

是否可以在 Db2 表中包含日期检查?

我尝试过:

CREATE TABLE customers (
    id int GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    email VARCHAR(60) NOT NULL UNIQUE,
--  etc
    dob date,   -- Db2: CHECK (dob < current_timestamp - interval '18 years'), fails
--  etc
);

我已经能够在其他 DBMS 中执行此操作;例如,上面注释掉的代码适用于 PostgreSQL。但是,当我在 Db2 中尝试时,我收到如下消息:

SQL 错误 [42621]:使用“current_date”定义的检查约束或生成的列无效

也许有解决方法?

db2
  • 1 个回答
  • 22 Views
Martin Hope
Lennart - Slava Ukraini
Asked: 2025-02-20 22:56:01 +0800 CST

如何在SP中获取不使用游标的动态查询的结果?

  • 5

我尝试创建一个过程来根据列中的最大值调整序列。为了从列中获取最大值并将其存储在变量中,我最终使用了“虚拟”游标。我认为有一种更简单的方法,但我无法让其中任何一个方法起作用。关于如何摆脱游标并仍然能够在 alter 语句中使用最大值,有什么建议吗?

--#SET TERMINATOR @
CREATE OR REPLACE PROCEDURE Adjust_Sequence(
    IN p_table_schema VARCHAR(128),
    IN p_table_name VARCHAR(128),
    IN p_column_name VARCHAR(128),
    IN p_sequence_name VARCHAR(128)
)
LANGUAGE SQL
BEGIN
    DECLARE v_max_value BIGINT DEFAULT 1;
    DECLARE v_sql_stmt VARCHAR(1000);
    DECLARE cur CURSOR FOR S;

    -- Construct SQL to get the max value of the specified column
    SET v_sql_stmt = 'SELECT COALESCE(MAX(' || p_column_name || '), 0) + 1 FROM ' ||  p_table_schema || '.' || p_table_name;

    -- Prepare and execute the statement properly
    PREPARE S FROM v_sql_stmt;
    OPEN cur;
    FETCH cur INTO v_max_value;
    CLOSE cur;

    -- Construct SQL to alter the sequence to restart with the new max value
    SET v_sql_stmt = 'ALTER SEQUENCE ' || p_sequence_name || ' RESTART WITH ' || v_max_value;

    -- Execute the sequence alteration
    EXECUTE IMMEDIATE v_sql_stmt;
END @
--#SET TERMINATOR ;
db2
  • 1 个回答
  • 36 Views
Martin Hope
coladict
Asked: 2025-01-27 17:04:12 +0800 CST

DB2 LUW SQLCODE=-740,SQLSTATE=51034 在 UPDATE 上使用函数修改 sql 数据

  • 5

我有一个修改 SQL 数据的用户定义函数。它插入到一个表中并返回返回行的 ID。尝试像这样使用它

UPDATE table_X SET REV = REVISION(:timestamp, :user) WHERE ...conditions;

DB2 给出了错误:Routine "REDACTED.REVISION" (specific name "REDACTED") is defined with the MODIFIES SQL DATA option, which is not valid in the context where the routine is invoked.

IBM针对此错误的文档明确说明了函数的MODIFIES SQL DATA使用方法。

这仅仅是 DB2 中的一个错误还是我遗漏了什么?

db2
  • 1 个回答
  • 31 Views
Martin Hope
folow
Asked: 2024-12-05 17:54:21 +0800 CST

如何在 IBM Db2 中的动态 SQL 中定义变量?

  • 5

在 Linux 上的 Db2 v11.5 中,我想创建变量,然后在 SELECT 语句中使用此变量。我不想在数据库上创建过程或函数,我只想从 db2cmd 或某些数据库工具在动态 SQL 中执行此操作。

简化示例:

BEGIN
     DECLARE name VARCHAR(10);
     SET name = 'John';
     SELECT * FROM SYSIBM.SYSDUMMY1 WHERE name = :name;
END;

编辑: 为什么我不想创建存储过程/函数?我每半年对几个数据库的数据库权限/授权进行一次审计,由于严格的安全设置,我没有在某些数据库上创建过程的权限。在大多数情况下,我只能访问系统目录表,这完全足够让我创建审计。我列出数据库用户,然后对于“可疑”用户,我执行完整的权限/权限检查,从系统目录中执行几个 SQL。到目前为止,对于每个用户,我都使用过文本编辑器并使用查找/替换,这是一个不错的解决方案,但变量是更好的解决方案。谢谢!

db2
  • 1 个回答
  • 13 Views
Martin Hope
folow
Asked: 2024-10-17 18:34:54 +0800 CST

db2sysc 进程旁边的 0 代表什么意思?

  • 7

在 Linux 上的 Db2 v11.5 上,如果我执行命令来检查数据库实例是否启动并正在运行:

ps -e -o command | grep db2sysc

输出为:

db2sysc 0

数字 0 代表什么?我问这个是因为也许在 bash 脚本中用到它会很有用。

db2
  • 1 个回答
  • 96 Views
Martin Hope
Lennart - Slava Ukraini
Asked: 2024-01-25 20:34:50 +0800 CST

提高警告的严重程度?

  • 5

我注意到导入截断的数据只会引发警告。T 认为通过处理程序捕获该警告并发出错误信号会很简单,但我似乎无法做到这一点。有什么建议么?

CREATE OR REPLACE PROCEDURE FILE_IMPORT_HANDLER(filename VARCHAR(255), tablename 
VARCHAR(255))
LANGUAGE SQL
BEGIN
    DECLARE EXIT HANDLER FOR SQLSTATE '22001'
        SIGNAL SQLSTATE '75002'
            SET MESSAGE_TEXT = '...';

    CALL ADMIN_CMD('import from ' || filename || ' of del insert into ' || tablename);
END @

如果遇到22001我愿意努力失败。从某种意义上说,提高导入过程中数据截断的严重性

db2
  • 2 个回答
  • 33 Views
Martin Hope
Lennart - Slava Ukraini
Asked: 2024-01-08 19:37:01 +0800 CST

ADMIN_REVALIDATE_DB_OBJECTS 超过游标?

  • 5

在我意识到存在重新验证对象的过程(SYSPROC.ADMIN_REVALIDATE_DB_OBJECTS)之前,我编写了自己的过程。现在,我尝试将其替换为标准的,但似乎对 SYSPROC.ADMIN_REVALIDATE_DB_OBJECTS 的调用破坏了我正在循环的游标。旧程序示例:

db2 -td@ +c "BEGIN FOR v AS c1 CURSOR FOR SELECT SCHEMANAME FROM NYA.VALIDATION_SCHEMAS DO CALL TOOLBOX.COMPILE_SCHEMA2(v.schemaname); END FOR; END @"
DB20000I  The SQL command completed successfully.

使用 ADMISN_REVALIDATE_DB_OBJECTS 的示例

db2 "CALL SYSPROC.ADMIN_REVALIDATE_DB_OBJECTS(object_schema=>'TMP')"
Return Status = 0
db2 "CALL SYSPROC.ADMIN_REVALIDATE_DB_OBJECTS(object_schema=>'TMP')"
Return Status = 0

尝试在光标上循环使用它:

db2 -td@ +c "BEGIN FOR v AS c1 CURSOR FOR SELECT SCHEMANAME FROM NYA.VALIDATION_SCHEMAS DO CALL SYSPROC.ADMIN_REVALIDATE_DB_OBJECTS(object_schema=>v.schemaname); END FOR; END @"
DB21034E  The command was processed as an SQL statement because it was not a 
valid Command Line Processor command.  During SQL processing it returned:
SQL0501N  The cursor specified in a FETCH statement or CLOSE statement is not 
open or a cursor variable in a cursor scalar function reference is not open.  
SQLSTATE=24501

请注意,它对硬连接架构没有帮助:

db2 -td@ +c "BEGIN FOR v AS c1 CURSOR FOR SELECT SCHEMANAME FROM NYA.VALIDATION_SCHEMAS DO CALL SYSPROC.ADMIN_REVALIDATE_DB_OBJECTS(object_schema=>'TMP')
[...]

也会产生错误。我尝试了在光标上循环的变体:

BEGIN
    DECLARE s VARCHAR(128);
    DECLARE v_at_end INTEGER default 0;
    DECLARE not_found CONDITION FOR SQLSTATE '02000';
    DECLARE C1 CURSOR for
        SELECT SCHEMANAME FROM NYA.VALIDATION_SCHEMAS;
    DECLARE CONTINUE HANDLER FOR not_found  SET v_at_end = 1 ;

    OPEN C1;
    fetch_loop:
    LOOP
        FETCH FROM C1 INTO s;
        IF v_at_end <>0 THEN LEAVE fetch_loop; END IF;
        CALL SYSPROC.ADMIN_REVALIDATE_DB_OBJECTS(object_schema=>s);
    END LOOP;
    CLOSE C1;
END
@

但它也不起作用。任何线索,需要做什么才能在循环中调用 ADMIN_REVALIDATE_DB_OBJECTS ?

db2
  • 1 个回答
  • 25 Views
Martin Hope
folow
Asked: 2023-12-06 14:55:48 +0800 CST

修复包下载网页中的“累积特殊构建”是什么?

  • 5

在我们的计算机上安装了 Db2 v11.5.8.0 Linux/x86-64。我想安装新的修复程序作为定期更新,特别是部署安全修复程序。

几周前发布了新的修复包 11.5.9.0。但现在我看到累积特殊构建也列在下载 Db2 修复包网页上。查看CSB网页的详细信息,有信息:“CSB是累积的,每个CSB包含先前CSB中提供的所有修复。” 如果我理解正确,CSB 不应安装在 v11.5.9.0 之上,而应安装在以前的 CSB 之上(如果安装在 Db2 服务器上)。它是否正确?

CSB 的首要目的是什么?仅包含安全和故障修复而没有新功能?应用CSB后Db2的发布是什么?

谢谢

db2
  • 1 个回答
  • 44 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