AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / 问题

Perguntas[db2](dba)

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

DB2 LUW - O diretório db2/V11.5 é necessário para o V11.5.7.0?

  • 5

De acordo com db2level, atualmente estamos executando o DB2 v11.5.7.0 (no RHEL 7.9). Ele foi atualizado da versão 11.5 antes da minha chegada.

Isso pode parecer uma pergunta estúpida, mas os arquivos V11.5 são necessários para o V11.5.7.0 ou o V11.5.7.0 é totalmente autônomo, então posso removê-lo /opt/ibm/db2/V11.5?

(Acho que a resposta é "sim", mas não há nenhum sistema de teste para eu experimentar e não quero interromper a produção.)

Ambos V11.5/e V11.5.7.0veja se são instalações completas:

$ 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

Mais detalhes:

$ /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,,

Mais informações:

$ /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 respostas
  • 50 Views
Martin Hope
Manngo
Asked: 2025-03-11 05:48:40 +0800 CST

Como obtenho o valor de PI no Db2?

  • 7

Alguns SGBDs têm uma pi()função para dar o valor de π. Não consigo encontrar o equivalente para Db2.

Posso usar radians(180), suponho, mas há algo mais direto?

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

Como posso verificar uma data em uma tabela do DB2?

  • 6

É possível incluir uma verificação de data em uma tabela do Db2?

Eu tentei:

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
);

Consegui fazer isso em outros DBMSs; o código comentado acima, por exemplo, funciona para PostgreSQL. No entanto, quando tento no Db2, recebo uma mensagem como:

Erro SQL [42621]: Uma restrição de verificação ou coluna gerada que é definida com "current_date" é inválida

Talvez haja uma solução alternativa?

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

Como obter o resultado de uma consulta dinâmica sem cursor em um SP?

  • 5

Tentei criar um procedimento para ajustar uma sequência de acordo com o valor máximo em uma coluna. Para obter o valor máximo da coluna e armazená-lo em uma variável, acabei usando um cursor "fictício". Imagino que haja uma maneira mais simples, mas não consegui fazer nenhuma delas funcionar. Alguma sugestão sobre como me livrar do cursor e ainda conseguir usar o valor máximo na instrução 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 respostas
  • 36 Views
Martin Hope
coladict
Asked: 2025-01-27 17:04:12 +0800 CST

DB2 LUW SQLCODE=-740, SQLSTATE=51034 em UPDATE com função modifica dados sql

  • 5

Tenho uma função definida pelo usuário que modifica dados sql. Ela insere em uma tabela e retorna o ID da linha retornada. Tentando usá-la assim

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

O DB2 me dá o erro: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.

A documentação da IBM para esse erro diz especificamente que é assim que uma função MODIFIES SQL DATAdeve ser usada.

Isso é apenas um bug no DB2 ou estou esquecendo de alguma coisa?

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

Como definir variáveis ​​em SQL dinâmico no IBM Db2?

  • 5

No Db2 v11.5 no Linux, eu gostaria de criar uma variável e então usar essa variável na instrução SELECT. Eu não quero criar um procedimento ou função no banco de dados, eu só quero fazer isso em SQL dinâmico do db2cmd ou alguma ferramenta de banco de dados.

Exemplo simplificado:

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

EDIT: Por que não quero criar um procedimento/função armazenado? Eu realizo auditorias a cada semestre para privilégios/autorizações de banco de dados em vários bancos de dados e não tenho privilégio de criar procedimento em alguns dos bancos de dados, devido a configurações de segurança rígidas. Na maioria dos casos, só tenho acesso às tabelas do catálogo do sistema, o que é perfeitamente suficiente para criar auditoria. Eu listo os usuários do banco de dados e, em seguida, para usuários "suspeitos", realizo verificações completas de permissão/autoridade executando vários SQL-s do catálogo do sistema. Até agora, para cada usuário, usei o editor de texto e usei localizar/substituir, o que é uma solução OK, mas a variável é uma solução melhor. Obrigado!

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

O que significa 0 ao lado do processo db2sysc?

  • 7

No Db2 v11.5 no Linux, se eu executar um comando para verificar se a instância do banco de dados está ativa e em execução:

ps -e -o command | grep db2sysc

a saída é:

db2sysc 0

O que significa o número 0? Só estou perguntando porque, talvez isso possa ser útil para usar em scripts bash.

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

Aumentar a gravidade para aviso?

  • 5

Percebi que importar dados truncados apenas gera um aviso. Achei que seria simples capturar esse aviso e sinalizar um erro por meio de um manipulador, mas não consigo fazer isso. Alguma sugestão?

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 @

Eu gostaria de falhar muito se 22001 for encontrado. De certa forma, aumente a gravidade do truncamento de dados durante a importação

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

ADMIN_REVALIDATE_DB_OBJECTS sobre um cursor?

  • 5

Antes de perceber que existia um procedimento para revalidar objetos (SYSPROC.ADMIN_REVALIDATE_DB_OBJECTS), escrevi o meu próprio. Agora, tento substituí-lo pelo padrão, mas parece que a chamada para SYSPROC.ADMIN_REVALIDATE_DB_OBJECTS destrói o cursor sobre o qual estou fazendo o loop. Exemplo de procedimento antigo:

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.

Exemplo usando 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

Tentando usar isso em um loop sobre um cursor:

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

Observe que não ajuda conectar o esquema:

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')
[...]

também produz um erro. Tentei variações de loop sobre um cursor:

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
@

Mas também não funciona. Alguma pista, o que precisa ser feito para poder chamar ADMIN_REVALIDATE_DB_OBJECTS em um loop?

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

O que são "Compilação Especial Cumulativa" na página da web de download do fixpack?

  • 5

Em nossos computadores o Db2 v11.5.8.0 Linux/x86-64 está instalado. Gostaria de instalar novas correções como atualizações regulares, especialmente para implantar correções de segurança.

Algumas semanas atrás, o novo fixpack 11.5.9.0 foi lançado. Mas agora vejo que o Cumulative Special Build também está listado na página Download do fixpack do Db2 . Analisando detalhadamente a página do CSB , há informações: "Os CSB são cumulativos, cada CSB contém todas as correções entregues no CSB anterior." Se bem entendi, o CSB não deve ser instalado sobre a v11.5.9.0, mas sobre o CSB anterior (se estiver instalado no servidor Db2). Isso está correto?

Qual é o propósito do CSB em primeiro lugar? Para conter apenas correções de segurança e falhas sem novos recursos? Qual é o lançamento do Db2 após a aplicação do CSB?

Obrigado

db2
  • 1 respostas
  • 44 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

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

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve