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 / user-27325

Nir's questions

Martin Hope
Nir
Asked: 2023-06-01 18:01:11 +0800 CST

Contagem lenta em mesa vazia inexplicável

  • 5

Minha atualização incremental de visualização materializada está começando a ficar cada vez mais lenta. Todos os dias há milhões de novos registros. Portanto, há muitas exclusões na tabela de log mv. Após investigação, vejo um sql específico demorando muito, o que pode levar à causa raiz. A seguir está um dos SQLs em execução como parte da atualização mv:

SQL> select dmltype$$, max(snaptime$$) from "S"."MLOG$_TABLE_202210" group by dmltype$$;

no rows selected

Elapsed: 00:00:12.68

Statistics
----------------------------------------------------------
      7  recursive calls
      0  db block gets
     678822  consistent gets
     678789  physical reads
      0  redo size
    438  bytes sent via SQL*Net to client
     41  bytes received via SQL*Net from client
      1  SQL*Net roundtrips to/from client
      0  sorts (memory)
      0  sorts (disk)
      0  rows processed

Como você pode ver, uma contagem nesta tabela de log mv vazia levou 12s! (temos muitos assim). O motivo são as altas leituras físicas. As estatísticas estão bloqueadas no propósito (conforme recomendação do oráculo)

SQL> select NUM_ROWS,BLOCKS,EMPTY_BLOCKS,AVG_SPACE_FREELIST_BLOCKS,LAST_ANALYZED,STATTYPE_LOCKED,STALE_STATS 
     from dba_tab_statistics 
     where table_name='MLOG$_TABLE_202210';
  NUM_ROWS     BLOCKS EMPTY_BLOCKS AVG_SPACE_FREELIST_BLOCKS LAST_ANAL STATT STALE_S
---------- ---------- ------------ ------------------------- --------- ----- -------
         0          0            0                         0 14-NOV-22 ALL   YES


SQL> SELECT EXTENTS, blocks, bytes
FROM dba_segments
WHERE SEGMENT_NAME = 'MLOG$_TABLE_202210';

  EXTENTS    BLOCKS     BYTES
---------- ---------- ---------- 
        18      384    3145728

Então se a tabela não estiver em SGA ela passa por cima de todos os blocos que está alto devido ao HWM das muitas exclusões. Como tudo isso é atualização de mv - se eu executar truncar, isso interromperá os MVs.

Eu apreciaria algumas outras sugestões.

oracle
  • 1 respostas
  • 102 Views
Martin Hope
Nir
Asked: 2023-03-25 17:16:57 +0800 CST

Como silenciar a saída login.sql

  • 5
[nir@dba etl]$ cat login.sql
col TAB# new_value TAB NOPRINT
select chr(9) TAB# from dual;
set markup csv on delimiter "&TAB" quote off
set heading off termout off echo off feedback off verify off numformat 99999999999.9999999999999 null '\N'
[nir@dba etl]$ cat a.sh
#!/bin/bash

export ORACLE_PATH="/home/nir/etl"

echo "select * from dms_u.test_etl_source;" | sqlplus -s ${USER}/${PASS}@${TNS}

[nir@dba etl]$ ./a.sh




aa  \N  aa
\N  aa  aa
aa  aa  \N
\N  \N  aa
\N  aa  \N
aa  \N  \N
\N  \N  \N
aa  aa  aa

Estou usando o login.sqlpara fazer a sqlplussaída como tsv. O que eu quero é rodar login.sqlsem nenhuma saída. Se eu colocasse glogin.sqlno -sfuncionaria. Mas preciso que o login do tsv aconteça apenas em casos específicos (por isso o ORACLE_PATH).

Então gostaria a.shde retornar:

[nir@dba etl]$ ./a.sh
aa  \N  aa
\N  aa  aa
aa  aa  \N
\N  \N  aa
\N  aa  \N
aa  \N  \N
\N  \N  \N
aa  aa  aa
oracle
  • 1 respostas
  • 13 Views
Martin Hope
Nir
Asked: 2023-03-15 15:15:47 +0800 CST

Como faço para definir a tabulação como um delimitador na marcação sqlplus

  • 5

Eu quero retornar sqlplusa saída como tsv. Para isso eu uso set markup csv. mas não aceita tabulação como delimitador, não \te tabulação real.

erro é

SP2-1660: Invalid option. Only a single character be specified.

em qualquer um de:

sqlplus -M "CSV on delimiter '\t' QUOTE OFF" -s user/pass@host
sqlplus -M "CSV on delimiter '    ' QUOTE OFF" -s user/pass@host

sqlplusversão é 21.0. A solução tem que ser sqlplusargumento ou setcomando.

oracle
  • 2 respostas
  • 43 Views
Martin Hope
Nir
Asked: 2022-09-20 01:08:39 +0800 CST

Definido em várias linhas [duplicado]

  • 0
Essa pergunta já tem respostas aqui :
Converter lista longa de cláusula IN em uma tabela temporária (2 respostas)
Fechado há 29 dias .

tenho os seguintes dados

SQL> SELECT id, relatedIdInASet from tab;

+----+------------------+
| id | relatedIdInASet  |
+----+------------------+
| 1  | [12,34,56]       |
| 2  | [11,12,22,34]    |
+----+------------------+

relatedIdInASeté textdo tipo até 1024 caracteres, cada linha pode conter uma quantidade diferente de IDs. podemos usar a find_in_setfunção nele, mas não podemos indexá-lo... Eu quero normalizar os dados. Eu gostaria de criar uma tabela usando um SQL para desacoplar o conjunto para que resulte:

+----+------------+
| id | relatedId  |
|---+-------------+
| 1  | 12         |
| 1  | 34         |
| 1  | 56         |
| 2  | 11         |
| 2  | 12         |
| 2  | 22         |
| 2  | 34         |
+----+------------+
mysql mysql-5.7
  • 1 respostas
  • 28 Views
Martin Hope
Nir
Asked: 2022-07-25 07:51:05 +0800 CST

barra invertida de escape psql

  • 0

Eu quero escapar da barra invertida \bpara que eu possa processá-la mais tarde normalmente. Até agora eu uso um comando que retorna resultado separado por tab que converte nulos \Ntambém (para mysql load into):

PGPASSWORD=$PASS psql -qtAX -U $USER -h $HOST -p $PORT -d $DB -AF $'\t' -P 'null=\N'

Alguma ideia?

postgresql psql
  • 1 respostas
  • 60 Views
Martin Hope
Nir
Asked: 2022-02-10 23:39:33 +0800 CST

Função Postgres para NVL

  • 1

Estou tentando ter uma NVLfunção no postgres.

create or replace function nvl (anyelement, anyelement)
returns anyelement language sql as $$
    select coalesce(cast( $1 as decimal), cast( $2 as decimal))
$$;

no entanto, isso falha em mim para os seguintes exemplos:

testdb=> select nvl(1,2);
ERROR:  return type mismatch in function declared to return integer
DETAIL:  Actual return type is numeric.
CONTEXT:  SQL function "nvl" during inlining

testdb=> SELECT nvl( sum(balance), 0 ) as b FROM db.bank WHERE user = 123;
ERROR:  function nvl(numeric, integer) does not exist
LINE 1: SELECT nvl( sum(balance), 0 ) as b FROM db.bank...
               ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.

Quando eu altero para:

create or replace function nvl (anyelement, anyelement)
returns anyelement language sql as $$
    select case when $1 is null then $2 else $1 END 
$$;

O primeiro exemplo funciona. Mas ainda tenho falhas com:

testdb=> SELECT nvl( sum(balance), 0 ) as b FROM db.bank WHERE user = 123;
ERROR:  function nvl(numeric, integer) does not exist
LINE 1: SELECT nvl( sum(balance), 0 ) as b FROM db.bank...
       

Gostaria de uma ajuda para consertar isso.

postgresql functions
  • 1 respostas
  • 3689 Views
Martin Hope
Nir
Asked: 2021-11-02 05:14:42 +0800 CST

A coluna suspensa com percona não reduz o tamanho da tabela

  • -1

Eu tenho uma tabela no Aurora MySQL 5.7. table tem poucas partições com 800m de linhas e pesa 2tb. Recentemente eu deixei cair algumas colunas usando percona. Surpreendentemente, o tamanho da tabela não mudou (olhando em information_schema.tables.

A maneira como o percona faz uma mudança é usando a nova tabela _<table_name>_newcom gatilhos na tabela original. ele cria uma nova tabela vazia com o mesmo DDL, executa as alterações que desejamos e copia tudo para a nova tabela com os gatilhos para mantê-la atualizada. uma vez que os dados são sincronizados - percona renomeia as tabelas e descarta a antiga. Portanto, a tabela foi construída do zero (sem travamento).

No entanto, depois de executar alter table optimize partition, vi o tamanho reduzido para 250gb. Alguém tem explicação ou sabe o que fiz de errado?

comando pt:

pt-online-schema-change --user $MYSQL_DBA_USER --password $MYSQL_DBA_PASS --host $MYSQL_WRITER D=db,t=table_data --alter "drop column a1, drop column a2"  --execute --max-load Threads_running=18446744073709551606 --critical-load Threads_running=18446744073709551606 --recursion-method=none

comando de otimização:

MySQL [(db)]> select table_rows,data_length/power(1024,3), index_length/power(1024,3),DATA_FREE/power(1024,3),AVG_ROW_LENGTH  from information_schema.tables where table_name='table_data';
+------------+---------------------------+----------------------------+-------------------------+----------------+
| table_rows | data_length/power(1024,3) | index_length/power(1024,3) | DATA_FREE/power(1024,3) | AVG_ROW_LENGTH |
+------------+---------------------------+----------------------------+-------------------------+----------------+
|  610884663 |        1847.7273712158203 |         202.40484619140625 |            0.0322265625 |           3247 |
+------------+---------------------------+----------------------------+-------------------------+----------------+
1 row in set (0.00 sec)


MySQL [db]> ALTER TABLE table_data OPTIMIZE PARTITION p20210601;
+---------------+----------+----------+---------------------------------------------------------------------------------------------+
| Table         | Op       | Msg_type | Msg_text                                                                                    |
+---------------+----------+----------+---------------------------------------------------------------------------------------------+
| db.table_data | optimize | note     | Table does not support optimize on partitions. All partitions will be rebuilt and analyzed. |
| db.table_data | optimize | status   | OK                                                                                          |
+------------------------+----------+----------+---------------------------------------------------------------------------------------------+
2 rows in set (5 hours 39 min 40.95 sec)

MySQL [db]>
MySQL [db]> select table_rows,data_length/power(1024,3), index_length/power(1024,3),DATA_FREE/power(1024,3),AVG_ROW_LENGTH  from information_schema.tables where table_name='table_data';


+------------+---------------------------+----------------------------+-------------------------+----------------+
| table_rows | data_length/power(1024,3) | index_length/power(1024,3) | DATA_FREE/power(1024,3) | AVG_ROW_LENGTH |
+------------+---------------------------+----------------------------+-------------------------+----------------+
|  736965899 |        104.25639343261719 |         155.98052978515625 |            0.0244140625 |            151 |
+------------+---------------------------+----------------------------+-------------------------+----------------+
mysql mysql-5.7
  • 1 respostas
  • 120 Views
Martin Hope
Nir
Asked: 2021-04-05 23:16:41 +0800 CST

agrupar por coluna de texto left(col, x) - possível indexar?

  • 1

Estou procurando um possível índice para o seguinte:

select left(name,10), count(*)
from tab
group by left(name,10)

Esta é a configuração da tabela:

create table tab(
id int(11),
name text,
primary key(id),
key name(name(10)))

O otimizador não usa o índice para a seleção. Alguma idéia se isso é possível no MySQL? No Oracle, por exemplo, posso criar índice em funções, o que não é suportado no MySQL.

mysql mysql-5.7
  • 2 respostas
  • 34 Views
Martin Hope
Nir
Asked: 2020-12-23 08:06:59 +0800 CST

encontrar grupos com versões duplicadas

  • 0

Eu quero encontrar todos os grupos em uma tabela que tenham a versão de grupo duplicada. Um grupo pode ter várias versões de grupo. Cada versão do grupo pode ter vários membros. Uma 'versão' de grupo é definida por grpide changeDate. Um grupo considera uma duplicata se TODOS os membros ( userid, pcte hobby) em uma versão de grupo corresponderem a outra versão de grupo dentro do mesmo grupo.

https://dbfiddle.uk/?rdbms=mysql_5.7&fiddle=84eb81a1a71dcee9ad3d0bd91f56120a

A groupsmesa:

Eu iria agarrar alteração de data ID do usuário pct passatempo versão do grupo *
1 1 01-01-2020 1 1 1 1
2 1 02-01-2020 1 1 2 2
3 1 03-01-2020 1 1 1 3
4 2 01-01-2020 1 0,5 1 4
5 2 01-01-2020 2 0,5 2 4
6 2 02-01-2020 1 0,5 1 5
7 2 02-01-2020 2 0,5 3 5
8 3 01-01-2020 1 0,5 1 6
9 3 01-01-2020 2 0,5 2 6
10 3 02-01-2020 1 0,4 1 7
11 3 02-01-2020 2 0,6 2 7
12 4 01-01-2020 1 0,6 1 8
13 4 01-01-2020 2 0,4 2 8
14 4 02-01-2020 1 0,6 1 9
15 4 02-01-2020 2 0,4 2 9
16 5 01-01-2020 1 0,2 2 10
17 5 01-01-2020 2 0,5 1 10
18 5 01-01-2020 3 0,3 2 10
19 6 01-01-2020 1 0,3 2 11
20 6 01-01-2020 2 0,5 1 11
21 6 01-01-2020 3 0,2 2 11
22 6 01-02-2020 1 0,2 2 12
23 6 01-02-2020 2 0,5 1 12
24 6 01-02-2020 3 0,3 2 12
25 6 01-03-2020 1 0,3 2 13
26 6 01-03-2020 2 0,3 1 13
27 6 01-03-2020 3 0,4 2 13
28 7 01-01-2020 1 0,3 2 14
29 7 01-01-2020 2 0,5 1 14
30 7 01-01-2020 3 0,2 2 14
31 7 01-02-2020 1 0,3 2 15
32 7 01-02-2020 2 0,5 1 15
33 7 01-02-2020 3 0,2 2 15
34 7 01-03-2020 1 0,3 2 16
35 7 01-03-2020 2 0,3 1 16
36 7 01-03-2020 3 0,4 2 16
37 8 01-02-2020 1 0,3 1 17
38 8 01-03-2020 1 0,3 1 18
39 8 01-03-2020 3 0,4 2 18

* Número exclusivo da versão do grupo apenas para visualização.

Resultado deve ser:

grpid
1
4
7

Explicação:

  • grpid 1 - existem 3 versões de grupo (de 1 membro) - 1 e 3 duplicadas porque userid, pct e hobby são iguais
  • grpid 2 - existem 2 versões de grupo (de 2 membros) - não duplicado porque hobby não é igual entre 5 e 7
  • grpid 3 - existem 2 versões de grupo (de 2 membros) - não duplicado porque o pct é diferente entre todos os membros
  • grpid 4 - existem 2 versões de grupo (de 2 membros) - todos os membros são duplicados porque userid, pct e userid são iguais
  • grpid 5 - existe apenas um grupo de 3 membros - não duplicado
  • grpid 6 - existem 3 versões de grupo (de 3 membros) - não duplicado - o pct mudou para cada membro do grupo entre as versões
  • grpid 7 - existem 3 versões de grupo (de 3 membros) - duplicado porque userid, pct e userid são iguais entre 28-30 e 31-33
  • grpid 8 - existem 2 versões de grupo uma com um membro e outra com 2 membros - não duplicada porque há outro membro nesse grupo

Estou usando o MySQL 5.7.

mysql select
  • 3 respostas
  • 119 Views
Martin Hope
Nir
Asked: 2020-11-25 07:07:37 +0800 CST

Como escapar caracteres especiais no MySQL

  • 1

Quando faço select * .. | mysql ... > /tmp/filea partir de uma tabela com texto, existem alguns caracteres problemáticos que me impedem de carregá-la em um db diferente usando copy(postgres) ou load into(mysql). Caractere como tab, nova linha é traduzida automaticamente para \ne \t, mas alguns dos caracteres problemáticos são escape ^[, CR ^M, ^U, ^Z, ^Fe ^Htalvez outros que eu não tenha visto antes.

Normalmente, eu apenas o substituiria como echo "select * .." | mysql .. | sed 's/\r/\\r/g', mas há muitos caracteres desconhecidos lá. Então, em vez de substituí-los após a seleção, eu gostaria de uma função que recuperasse o texto já escapado (acho que removê-los também é bom).

Como devo fazer?

mysql encoding
  • 1 respostas
  • 567 Views
Martin Hope
Nir
Asked: 2020-11-23 01:36:31 +0800 CST

Carregar coluna de texto para postgres

  • 2

Eu uso o seguinte para carregar dados no postgres

\copy tab FROM /tmp/file DELIMITER E'\t' QUOTE E'\b' NULL AS '\N' CSV

Normalmente eu seleciono os dados de um banco de dados de origem

echo "select * from tab" | mysql --batch --quick --skip-column-names .... > /tmp/file

Gera um arquivo com campos delimitadores de tabulação. Funciona bem na maior parte. Até eu tentar importar coluna de texto de várias linhas. O erro aparece:

ERROR:  unquoted carriage return found in data

Alguma recomendação de como superar isso?

postgresql copy
  • 1 respostas
  • 238 Views
Martin Hope
Nir
Asked: 2020-08-03 23:57:34 +0800 CST

Subtrair o valor da coluna da data em dias ou meses

  • 1

Eu quero subtrair o valor na coluna lag_daysde current_date. Normalmente eu fariacurrent_date - interval '1 day'

Estou recebendo erro de sintaxe no exemplo a seguir para subtrair por dias:

dkarchive=> select current_date - interval lag_days day from example_tbl;
ERROR:  syntax error at or near "day"
LINE 1: select current_date - interval lag_days day from example_tb...
   
postgresql datetime
  • 1 respostas
  • 859 Views
Martin Hope
Nir
Asked: 2020-07-03 07:19:30 +0800 CST

Índice errado foi espiado

  • 0

Eu tenho um índice que filtra 99% da tabela ou seja ix_magic_composite(para os argumentos dessa consulta). Quando eu adiciono outro orfiltro ele escolhe o índice errado, ou seja, fTSmesmo que eu crie um índice que comece com esse campo ele ainda escolhe o índice errado. Os tempos de execução são 20s vs 3s para o melhor índice. ix_magic_compositeindex retorna (filtro inicial) para ambos os SQLs em torno de 10 linhas de milhões, enquanto fTSretorna milhões de volta.

Meio sem noção. Parece-me que as estatísticas não estão dando ao mecanismo a imagem certa com todas essas colunas combinadas.

Simplifiquei a tabela, ela tem muito mais colunas e índices.

SQL com bom plano:

select *
from tblExample
where 1=1
and status = 'okay'
and textCol > ''
and insrBLN = 1
and (magic is NULL or magic = '')
and (itemId is NULL or itemId = '')
and fTS > '2020-01-01'
and fTS > '2020-01-01'
order by fTS
limit 50

+----+-------------+------------+------------+-------------+--------------------------------------------------+---------------------+---------+-------+---------+----------+----------------------------------------------------+
| id | select_type | table      | partitions | type        | possible_keys                                    | key                 | key_len | ref   | rows    | filtered | Extra                                              |
+----+-------------+------------+------------+-------------+--------------------------------------------------+---------------------+---------+-------+---------+----------+----------------------------------------------------+
|  1 | SIMPLE      | tblExample | NULL       | ref_or_null | textCol,status,textCol_4,ix_magic_composite,fTS  | ix_magic_composite  | 53      | const | 5892974 |     0.24 | Using index condition; Using where; Using filesort |
+----+-------------+------------+------------+-------------+--------------------------------------------------+---------------------+---------+-------+---------+----------+----------------------------------------------------+

SQL com plano ruim:

select *
from tblExample
where 1=1
and status = 'okay'
and textCol > ''
and insrBLN = 1
and (magic is NULL or magic = '' or magic = 'retry')
and (itemId is NULL or itemId = '' or itemId = 'retry')
and fTS > '2020-01-01'
and fTS > '2020-01-01'
order by fTS
limit 50

+----+-------------+------------+------------+-------+-------------------------------------------------+---------+---------+------+---------+----------+------------------------------------+
| id | select_type | table      | partitions | type  | possible_keys                                   | key     | key_len | ref  | rows    | filtered | Extra                              |
+----+-------------+------------+------------+-------+-------------------------------------------------+---------+---------+------+---------+----------+------------------------------------+
|  1 | SIMPLE      | tblExample | NULL       | range | textCol,status,textCol_4,ix_magic_composite,fTS | fTS     | 5       | NULL | 6271587 |    0.18  | Using index condition; Using where |
+----+-------------+------------+------------+-------+-----------------------------------------    ----+---------+---------+------+---------+----------+------------------------------------+

Mesa:

CREATE TABLE `tblExample` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `fTS` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `status` varchar(50) NOT NULL DEFAULT 'new',
  `textCol` varchar(50) DEFAULT NULL,
  `insrBLN` tinyint(4) NOT NULL DEFAULT '0',
  `itemId` varchar(50) DEFAULT NULL ,
  `magic` varchar(50) DEFAULT NULL ,
  PRIMARY KEY (`id`),
  KEY `ix_magic_composite` (`itemId`,`magic`,`fTS`,`insrBLN`),
  KEY `fTS` (`fTS`)
) ENGINE=InnoDB AUTO_INCREMENT=14391289 DEFAULT CHARSET=latin1

EDITAR

Nós refatoramos o código para que a consulta se pareça com:

select *
from tblExample
where 1=1
and status = 'okay'
and textCol > ''
and insrBLN = 1
and (retry = '' or (retry='retry' and retryDT < now() - interval 1 day))
and fTS > '2020-01-01'
order by fTS
limit 50

O problema NÃO foi classificado (também tentei uma ordem de colunas diferente no índice). Parece que ele escolhe o índice certo apenas se eu remover o pedido.

mysql performance
  • 3 respostas
  • 74 Views
Martin Hope
Nir
Asked: 2020-06-29 01:47:42 +0800 CST

MySQL leia explicação - usando where

  • 0

No Oracle, há uma nota importante na planície de explicação onde diz que filter a.col1=...este informando que você col1primeiro é recuperado do disco e só então o filtro é feito. Esta informação importante permite que você saiba a coluna exata que foi usada em um índice específico e quais são os filtros depois e podem ser bons candidatos para índice.

No resultado da explicação do MySQL, vemos algo como:

+----+-------------+-------+------------+--------+--------------------+---------+-------+--------+----------+------------------------------------+
| id | select_type | table | partitions | type   | key                | key_len | ref   | rows   | filtered | Extra                              |
+----+-------------+-------+------------+--------+--------------------+---------+-------+--------+----------+------------------------------------+
|  1 | SIMPLE      | SD    | NULL       | range  | ix_store_composite | 64      | NULL  | 252978 |    60.00 | Using index condition; Using where |
+----+-------------+-------+------------+--------+--------------------+---------+-------+--------+----------+------------------------------------+

O que eu gostaria de saber quais dos dados das colunas estão vindo do índice e quais estão sendo filtrados após (o using where). Não encontrei nenhuma opção para obter detalhes adicionais sobre a explicação

mysql mysql-5.7
  • 1 respostas
  • 220 Views
Martin Hope
Nir
Asked: 2019-03-28 03:45:42 +0800 CST

selecione todas as tabelas de dba_table exceto lista

  • 0

Estou faltando algo na minha consulta. Eu quero selecionar todas as tabelas de dba_tables, exceto uma lista de tabelas.

Por exemplo, mostre todos, exceto HR.DEPT, SCHEMA.TAB

dba_tables:

OWNER    TABLE_NAME
------   ----------
HR       DEPT
HR       TEST
SCHEMA   TAB
SCHEMA   NAMES
TEM      TBA

Resultado após a consulta:

OWNER    TABLE_NAME
------   ----------
HR       TEST
SCHEMA   NAMES
TEM      TBA

Consulta que tentei:

select owner, table_name from dba_tables
where (owner != 'HR' and table_name != 'DEPT' )  OR (owner != 'SCHEMA' and table_name != 'TAB' )
oracle select
  • 2 respostas
  • 191 Views
Martin Hope
Nir
Asked: 2018-11-06 07:59:17 +0800 CST

vincular variável e script de shell com sqlplus

  • 0

Desejo executar DMLs usando a variável de ligação com scripts de shell. Por exemplo, algo como:

#!/bin/bash

SH_NUM=10

sqlplus -S test_user/test_pass <<EOD
var a number;
a:=${SH_NUM}
insert into test_table values(a);
commit;
EOD

Não tenho certeza se isso é possível, posso usar essa abordagem ao usar pl/sql, mas gostaria de saber se posso fazer esse método também.

oracle scripting
  • 1 respostas
  • 1716 Views
Martin Hope
Nir
Asked: 2018-07-30 02:51:49 +0800 CST

Altere a saída do diretório pg_dump para o nome da tabela em vez do número do objeto

  • 1

pg_dump -F dresultará em vários <number>.dat.gzarquivos que representam o número do objeto no banco de dados. Desejo pg_dumpcriar esses arquivos no formato <table name>.dat.gzpara poder distinguir facilmente um arquivo/tabela em um caso de recuperação de tabela.

postgresql pg-dump
  • 1 respostas
  • 670 Views
Martin Hope
Nir
Asked: 2018-07-02 04:00:43 +0800 CST

Posição de parede para número de arquivo de parede

  • 0

Quero gerenciar a cópia do arquivamento em um local remoto. Para isso, quero excluir todos os arquivos que copiei, a menos que sejam exigidos pelo standby.

Portanto, para executar pg_archivecleanup $ARCLOC $CHECKPOINT, preciso encontrar o ponto de verificação mais recente que pode ser excluído. Não vejo os .backuparquivos recentes, pois são muito antigos para minha capacidade de arquivamento. O que eu quero ver é o replay_location\ replay_lsn(depende da versão) de pg_stat_replication.

No entanto, não sei como converter de replay_locationvalor para valor de ponto de verificação. 7/2DBCED18Ou seja, de algo como 000000020000000700000029.

Responda:

Função é:pg_xlogfile_name

postgresql postgresql-9.5
  • 2 respostas
  • 78 Views
Martin Hope
Nir
Asked: 2018-05-11 00:32:40 +0800 CST

Visualizações de replicação do Postgres

  • 0

Vejo algumas discrepâncias entre duas visualizações no postgres quanto à replicação e ao tempo de atraso.

Por esta consulta, claramente a replicação está ativa:

9.5.6.11

postgres=# select client_addr, sent_location, replay_location from pg_stat_replication where application_name = 'walreceiver';
  client_addr   | sent_location | replay_location
----------------+---------------+-----------------
 172.yyy.yyy.213  | 1C/2B5732F8   | 1C/2B5732F8
 10.xxx.xxx.195 | 1C/2B5732F8   | 1C/2B5732F8
 10.xxx.xxx.196 | 1C/2B5732F8   | 1C/2B5732F8

10.1

postgres=# select client_addr, sent_lsn, replay_lsn from pg_stat_replication where application_name = 'walreceiver';
 client_addr  |  sent_lsn  | replay_lsn
--------------+------------+------------
 10.qqq.qqq.44 | 1/8C000140 | 1/8C000140

Mas quando olhar para o tempo de atraso:

9.5.6.11

postgres-# SELECT pg_last_xlog_receive_location() ,  pg_last_xlog_replay_location() ,  now() ,  pg_last_xact_replay_timestamp();
 pg_last_xlog_receive_location | pg_last_xlog_replay_location |              now              | pg_last_xact_replay_timestamp
-------------------------------+------------------------------+-------------------------------+-------------------------------
                               |                              | 2018-05-10 04:19:38.079161-04 |

10.1

postgres=# SELECT pg_last_wal_receive_lsn() ,  pg_last_wal_replay_lsn() ,  now() ,  pg_last_xact_replay_timestamp();
 pg_last_wal_receive_lsn | pg_last_wal_replay_lsn |              now              | pg_last_xact_replay_timestamp
-------------------------+------------------------+-------------------------------+-------------------------------
                         |                        | 2018-05-10 04:29:21.730089-04 |

Não há informações.. O que estou perdendo?

postgresql replication
  • 1 respostas
  • 559 Views
Martin Hope
Nir
Asked: 2015-09-02 07:00:02 +0800 CST

Capturar exceção na função do DB2

  • -3

Eu quero capturar exceção na função DB2 e retornar 0 se houver uma exceção. Eu não sei como a sintaxe correta

create function is_decimal(c_data varchar(100))
RETURNS INTEGER
begin
    select cast(c_data as decimal(12,10)) from sysibm.sysdummy1;

    return 1;

    DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING
    return 0;
end
db2 exception
  • 1 respostas
  • 5692 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