Eu criei alguns novos UDTs no PostgreSQL. No entanto, agora tenho dois problemas:
- como ver quais UDTs foram definidas?
- como ver as colunas definidas dentro desses UDTs?
Infelizmente, não encontrei nada sobre isso na documentação do PostgreSQL.
Eu criei alguns novos UDTs no PostgreSQL. No entanto, agora tenho dois problemas:
Infelizmente, não encontrei nada sobre isso na documentação do PostgreSQL.
Suponha que tenhamos a seguinte situação:
Temos uma tabela (digamos Table_A
), que tem um trigger em INSERT
. O trabalho do acionador é atualizar algumas linhas com table_B
base nos valores inseridos em table_A
.
Agora, está tudo bem quando simplesmente inserimos uma linha na tabela, mas e as situações em que inserimos dados por meio de uma transação? O gatilho esperará até que todas as instruções de transações sejam executadas com sucesso ou será acionada no momento em que reconhecer a inserção?. Se o gatilho disparar imediatamente ao reconhecer a primeira inserção, o que acontecerá se a transação falhar na última linha? Existe algum mecanismo para essa situação?.
Sou um noob Oracle e minha intenção é transferir todos os dados e metadados de um esquema para outro dentro de um banco de dados Oracle. Estou planejando usar datapumps expdp
e impdp
comandos. Tenho dúvidas sobre isso:
expdp
e impdp
comandos usando a conta SYS (as sysdba)? Esse é um método preferido?Essa instrução pega todos os objetos (dados e metadados) de um esquema e os move para um esquema diferente?
expdp \"/ as sysdba\" schemas=<schemaname> directory=dumpdir dumpfile=<schemaname>.dmp logfile=expdp_<schemaname>.log
Então, o esquema de destino é uma cópia exata do esquema de origem após o impdp
comando?
Instalei o Oracle 11g, e consigo me conectar quanto sysman
ao banco de dados Oracle, mas não há nenhum tnsnames.ora
arquivo que eu possa encontrar.
Preciso gerar o arquivo tnsnames.ora sozinho? Se sim, onde coloco? Se não, como a Oracle o gera para mim? Se eu precisar gerá-lo, qual é a sintaxe apropriada para o arquivo?
MySQL caiu em mim esta manhã.
Com exceção dos bancos de dados incluídos no MySQL padrão, tudo o que uso é o InnoDB.
Tentei reiniciar o daemon do MySQL, mas falhou duas vezes.
Em seguida, reiniciei todo o servidor e o MySQL iniciou corretamente e tem funcionado bem desde então.
O arquivo de log do mysqld para a falha inicial contém o seguinte:
120927 10:21:05 mysqld_safe Number of processes running now: 0
120927 10:21:06 mysqld_safe mysqld restarted
120927 10:21:12 [Note] Plugin 'FEDERATED' is disabled.
120927 10:21:12 InnoDB: The InnoDB memory heap is disabled
120927 10:21:12 InnoDB: Mutexes and rw_locks use GCC atomic builtins
120927 10:21:12 InnoDB: Compressed tables use zlib 1.2.3
120927 10:21:12 InnoDB: Using Linux native AIO
120927 10:21:13 InnoDB: Initializing buffer pool, size = 4.0G
InnoDB: mmap(4395630592 bytes) failed; errno 12
120927 10:21:13 InnoDB: Completed initialization of buffer pool
120927 10:21:13 InnoDB: Fatal error: cannot allocate memory for the buffer pool
120927 10:21:13 [ERROR] Plugin 'InnoDB' init function returned error.
120927 10:21:13 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
120927 10:21:13 [ERROR] Unknown/unsupported storage engine: InnoDB
120927 10:21:13 [ERROR] Aborting
120927 10:21:13 [Note] /usr/libexec/mysqld: Shutdown complete
120927 10:21:13 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
Ao tentar reiniciar o daemon, o arquivo de log mysqld contém:
120927 10:43:44 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
120927 10:43:44 [Note] Plugin 'FEDERATED' is disabled.
120927 10:43:44 InnoDB: The InnoDB memory heap is disabled
120927 10:43:44 InnoDB: Mutexes and rw_locks use GCC atomic builtins
120927 10:43:44 InnoDB: Compressed tables use zlib 1.2.3
120927 10:43:44 InnoDB: Using Linux native AIO
120927 10:43:44 InnoDB: Initializing buffer pool, size = 4.0G
InnoDB: mmap(4395630592 bytes) failed; errno 12
120927 10:43:44 InnoDB: Completed initialization of buffer pool
120927 10:43:44 InnoDB: Fatal error: cannot allocate memory for the buffer pool
120927 10:43:44 [ERROR] Plugin 'InnoDB' init function returned error.
120927 10:43:44 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
120927 10:43:44 [ERROR] Unknown/unsupported storage engine: InnoDB
120927 10:43:44 [ERROR] Aborting
120927 10:43:44 [Note] /usr/libexec/mysqld: Shutdown complete
120927 10:43:44 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
Após a reinicialização do servidor, o arquivo de log do mysqld contém:
120927 10:46:11 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
120927 10:46:11 [Note] Plugin 'FEDERATED' is disabled.
120927 10:46:11 InnoDB: The InnoDB memory heap is disabled
120927 10:46:11 InnoDB: Mutexes and rw_locks use GCC atomic builtins
120927 10:46:11 InnoDB: Compressed tables use zlib 1.2.3
120927 10:46:11 InnoDB: Using Linux native AIO
120927 10:46:11 InnoDB: Initializing buffer pool, size = 4.0G
120927 10:46:11 InnoDB: Completed initialization of buffer pool
120927 10:46:12 InnoDB: highest supported file format is Barracuda.
InnoDB: The log sequence number in ibdata files does not match
InnoDB: the log sequence number in the ib_logfiles!
120927 10:46:12 InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
120927 10:46:15 InnoDB: Waiting for the background threads to start
120927 10:46:16 InnoDB: 1.1.8 started; log sequence number 57665645675
120927 10:46:16 [Note] Event Scheduler: Loaded 0 events
120927 10:46:16 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.5.21-cll' socket: '/var/lib/mysql/mysql.sock' port: 3306 MySQL Community Server (GPL) by Atomicorp
Eu nunca tive que tentar decifrar um arquivo de log do MySQL com falha.
Estou usando a versão: 5.5.21-cll MySQL Community Server (GPL) da Atomicorp
Alguma ideia de por onde devo começar?
ATUALIZAÇÃO: Por recomendação de @Michael-sqlbot, puxei o syslog e encontrei isto:
Sep 27 10:20:58 ip-97-74-197-181 kernel: pcscd invoked oom-killer: gfp_mask=0xd0, order=0, oomkilladj=0
Sep 27 10:21:00 ip-97-74-197-181 kernel:
Sep 27 10:21:00 ip-97-74-197-181 kernel: Call Trace:
Sep 27 10:21:00 ip-97-74-197-181 kernel: [<ffffffff800c9f35>] out_of_memory+0x8e/0x2f3
Sep 27 10:21:00 ip-97-74-197-181 kernel: [<ffffffff8002dfc7>] __wake_up+0x38/0x4f
Sep 27 10:21:00 ip-97-74-197-181 kernel: [<ffffffff8000f67d>] __alloc_pages+0x27f/0x308
Sep 27 10:21:00 ip-97-74-197-181 kernel: [<ffffffff80017a84>] cache_grow+0x139/0x3c7
Sep 27 10:21:00 ip-97-74-197-181 kernel: [<ffffffff8005be28>] cache_alloc_refill+0x138/0x188
Sep 27 10:21:00 ip-97-74-197-181 kernel: [<ffffffff8000ad2e>] kmem_cache_alloc+0x6c/0x76
Sep 27 10:21:00 ip-97-74-197-181 kernel: [<ffffffff80012877>] getname+0x25/0x1c2
Sep 27 10:21:00 ip-97-74-197-181 kernel: [<ffffffff8001a04b>] do_sys_open+0x17/0xbe
Sep 27 10:21:00 ip-97-74-197-181 kernel: [<ffffffff8005d28d>] tracesys+0xd5/0xe0
Sep 27 10:21:00 ip-97-74-197-181 kernel:
Sep 27 10:21:11 ip-97-74-197-181 kernel: Mem-info:
Sep 27 10:21:20 ip-97-74-197-181 kernel: Node 0 DMA per-cpu:
Sep 27 10:21:27 ip-97-74-197-181 kernel: cpu 0 hot: high 0, batch 1 used:0
Sep 27 10:21:38 ip-97-74-197-181 kernel: cpu 0 cold: high 0, batch 1 used:0
Sep 27 10:21:49 ip-97-74-197-181 kernel: cpu 1 hot: high 0, batch 1 used:0
Sep 27 10:21:49 ip-97-74-197-181 kernel: cpu 1 cold: high 0, batch 1 used:0
Sep 27 10:21:49 ip-97-74-197-181 kernel: cpu 2 hot: high 0, batch 1 used:0
Sep 27 10:21:52 ip-97-74-197-181 kernel: cpu 2 cold: high 0, batch 1 used:0
Sep 27 10:21:52 ip-97-74-197-181 kernel: cpu 3 hot: high 0, batch 1 used:0
Sep 27 10:21:52 ip-97-74-197-181 kernel: cpu 3 cold: high 0, batch 1 used:0
Sep 27 10:21:52 ip-97-74-197-181 kernel: Node 0 DMA32 per-cpu:
Sep 27 10:21:52 ip-97-74-197-181 kernel: cpu 0 hot: high 186, batch 31 used:60
Sep 27 10:21:52 ip-97-74-197-181 kernel: cpu 0 cold: high 62, batch 15 used:57
Sep 27 10:21:52 ip-97-74-197-181 kernel: cpu 1 hot: high 186, batch 31 used:139
Sep 27 10:21:52 ip-97-74-197-181 kernel: cpu 1 cold: high 62, batch 15 used:61
Sep 27 10:21:52 ip-97-74-197-181 kernel: cpu 2 hot: high 186, batch 31 used:47
Sep 27 10:21:52 ip-97-74-197-181 kernel: cpu 2 cold: high 62, batch 15 used:57
Sep 27 10:21:52 ip-97-74-197-181 kernel: cpu 3 hot: high 186, batch 31 used:52
Sep 27 10:21:52 ip-97-74-197-181 kernel: cpu 3 cold: high 62, batch 15 used:53
Sep 27 10:21:52 ip-97-74-197-181 kernel: Node 0 Normal per-cpu:
Sep 27 10:21:52 ip-97-74-197-181 kernel: cpu 0 hot: high 186, batch 31 used:29
Sep 27 10:21:52 ip-97-74-197-181 kernel: cpu 0 cold: high 62, batch 15 used:17
Sep 27 10:21:52 ip-97-74-197-181 kernel: cpu 1 hot: high 186, batch 31 used:178
Sep 27 10:21:52 ip-97-74-197-181 kernel: cpu 1 cold: high 62, batch 15 used:52
Sep 27 10:21:52 ip-97-74-197-181 kernel: cpu 2 hot: high 186, batch 31 used:22
Sep 27 10:21:52 ip-97-74-197-181 kernel: cpu 2 cold: high 62, batch 15 used:59
Sep 27 10:21:52 ip-97-74-197-181 kernel: cpu 3 hot: high 186, batch 31 used:71
Sep 27 10:21:52 ip-97-74-197-181 kernel: cpu 3 cold: high 62, batch 15 used:54
Sep 27 10:21:52 ip-97-74-197-181 kernel: Node 0 HighMem per-cpu: empty
Sep 27 10:21:52 ip-97-74-197-181 kernel: Free pages: 41728kB (0kB HighMem)
Sep 27 10:21:52 ip-97-74-197-181 kernel: Active:1031140 inactive:970428 dirty:0 writeback:0 unstable:0 free:10432 slab:4277 mapped-file:801 mapped-anon:1993003 pagetables:11636
Sep 27 10:21:52 ip-97-74-197-181 kernel: Node 0 DMA free:10096kB min:12kB low:12kB high:16kB active:0kB inactive:0kB present:9700kB pages_scanned:0 all_unreclaimable? yes
Sep 27 10:21:52 ip-97-74-197-181 kernel: lowmem_reserve[]: 0 2965 8015 8015
Sep 27 10:21:52 ip-97-74-197-181 kernel: Node 0 DMA32 free:24424kB min:4236kB low:5292kB high:6352kB active:1544164kB inactive:1428756kB present:3037024kB pages_scanned:7185900 all_unreclaimable? yes
Sep 27 10:21:52 ip-97-74-197-181 kernel: lowmem_reserve[]: 0 0 5050 5050
Sep 27 10:21:52 ip-97-74-197-181 kernel: Node 0 Normal free:7208kB min:7212kB low:9012kB high:10816kB active:2580172kB inactive:2453052kB present:5171200kB pages_scanned:12935183 all_unreclaimable? yes
Sep 27 10:21:52 ip-97-74-197-181 kernel: lowmem_reserve[]: 0 0 0 0
Sep 27 10:21:52 ip-97-74-197-181 kernel: Node 0 HighMem free:0kB min:128kB low:128kB high:128kB active:0kB inactive:0kB present:0kB pages_scanned:0 all_unreclaimable? no
Sep 27 10:21:52 ip-97-74-197-181 kernel: lowmem_reserve[]: 0 0 0 0
Sep 27 10:21:52 ip-97-74-197-181 kernel: Node 0 DMA: 6*4kB 3*8kB 4*16kB 4*32kB 4*64kB 5*128kB 1*256kB 1*512kB 0*1024kB 0*2048kB 2*4096kB = 10096kB
Sep 27 10:21:52 ip-97-74-197-181 kernel: Node 0 DMA32: 24*4kB 3*8kB 1*16kB 1*32kB 1*64kB 3*128kB 1*256kB 0*512kB 1*1024kB 1*2048kB 5*4096kB = 24424kB
Sep 27 10:21:52 ip-97-74-197-181 kernel: Node 0 Normal: 0*4kB 13*8kB 8*16kB 0*32kB 19*64kB 1*128kB 2*256kB 0*512kB 1*1024kB 0*2048kB 1*4096kB = 7208kB
Sep 27 10:21:52 ip-97-74-197-181 kernel: Node 0 HighMem: empty
Sep 27 10:21:52 ip-97-74-197-181 kernel: 9391 pagecache pages
Sep 27 10:21:52 ip-97-74-197-181 kernel: Swap cache: add 5745145, delete 5744809, find 81873079/82270945, race 0+63
Sep 27 10:21:52 ip-97-74-197-181 kernel: Free swap = 0kB
Sep 27 10:21:52 ip-97-74-197-181 kernel: Total swap = 2096472kB
Sep 27 10:21:52 ip-97-74-197-181 kernel: Free swap: 0kB
Sep 27 10:21:52 ip-97-74-197-181 kernel: 2359296 pages of RAM
Sep 27 10:21:52 ip-97-74-197-181 kernel: 324458 reserved pages
Sep 27 10:21:52 ip-97-74-197-181 kernel: 21388 pages shared
Sep 27 10:21:52 ip-97-74-197-181 kernel: 336 pages swap cached
Sep 27 10:21:52 ip-97-74-197-181 kernel: Out of memory: Killed process 3044, UID 27, (mysqld).
Estou em uma situação em que quero obter o valor mínimo de 6 colunas.
Encontrei três maneiras até agora de fazer isso, mas tenho preocupações com o desempenho desses métodos e gostaria de saber qual seria melhor para o desempenho.
O primeiro método é usar uma instrução big case . Aqui está um exemplo com 3 colunas, baseado no exemplo do link acima. Minha declaração de caso seria muito mais longa, pois estarei olhando para 6 colunas.
Select Id,
Case When Col1 <= Col2 And Col1 <= Col3 Then Col1
When Col2 <= Col3 Then Col2
Else Col3
End As TheMin
From MyTable
A segunda opção é usar o UNION
operador com várias instruções de seleção . Eu colocaria isso em uma UDF que aceita um parâmetro Id.
select Id, dbo.GetMinimumFromMyTable(Id)
from MyTable
e
select min(col)
from
(
select col1 [col] from MyTable where Id = @id
union all
select col2 from MyTable where Id = @id
union all
select col3 from MyTable where Id = @id
) as t
E a 3ª opção que encontrei foi usar o operador UNPIVOT , que eu nem sabia que existia até agora
with cte (ID, Col1, Col2, Col3)
as
(
select ID, Col1, Col2, Col3
from TestTable
)
select cte.ID, Col1, Col2, Col3, TheMin from cte
join
(
select
ID, min(Amount) as TheMin
from
cte
UNPIVOT (Amount for AmountCol in (Col1, Col2, Col3)) as unpvt
group by ID
) as minValues
on cte.ID = minValues.ID
Devido ao tamanho da tabela e à frequência em que essa tabela é consultada e atualizada, estou preocupado com o impacto no desempenho que essas consultas teriam no banco de dados.
Esta consulta será realmente usada em uma junção a uma tabela com alguns milhões de registros, porém os registros retornados serão reduzidos para cerca de cem registros por vez. Ele será executado muitas vezes ao longo do dia, e as 6 colunas que estou consultando são atualizadas com frequência (elas contêm estatísticas diárias). Acho que não há índices nas 6 colunas que estou consultando.
Qual desses métodos é melhor para o desempenho ao tentar obter o mínimo de várias colunas? Ou existe outro método melhor que eu não conheço?
Estou usando o SQL Server 2005
Dados e resultados de amostra
Se meus dados contivessem registros como este:
Id Col1 Col2 Col3 Col4 Col5 Col6 1 3 4 0 2 1 5 2 2 6 10 5 7 9 3 1 1 2 3 4 5 4 9 5 4 6 8 9
O resultado final deve ser
Valor do código 1 0 2 2 3 1 4 4
Fazendo esta pergunta, especificamente para Postgres, pois tem bom suporte para índices R-tree/espaciais.
Temos a seguinte tabela com uma estrutura em árvore (modelo Nested Set) de palavras e suas frequências:
lexikon
-------
_id integer PRIMARY KEY
word text
frequency integer
lset integer UNIQUE KEY
rset integer UNIQUE KEY
E a consulta:
SELECT word
FROM lexikon
WHERE lset BETWEEN @Low AND @High
ORDER BY frequency DESC
LIMIT @N
Suponho que um índice de cobertura (lset, frequency, word)
seria útil, mas sinto que pode não funcionar bem se houver muitos lset
valores no (@High, @Low)
intervalo.
Às vezes, um índice simples (frequency DESC)
também pode ser suficiente, quando uma pesquisa usando esse índice produz antecipadamente as @N
linhas que correspondem à condição de intervalo.
Mas parece que o desempenho depende muito dos valores dos parâmetros.
Existe uma maneira de torná-lo rápido, independentemente de o intervalo (@Low, @High)
ser amplo ou estreito e independentemente de as palavras de frequência superior estarem felizmente no intervalo (estreito) selecionado?
Um índice R-tree/espacial ajudaria?
Adicionar índices, reescrever a consulta, redesenhar a tabela, não há limitação.
Pergunta:
Tenho um script com cerca de 45 mil inserts de comandos select. Quando tento executá-lo, recebo uma mensagem de erro informando que estou sem memória. Como posso obter este script para executar?
Contexto:
Se houver uma maneira diferente de carregar esses dados, sinta-se à vontade para me punir e me informar.
Meu chefe teve uma consulta de um cliente ontem perguntando como eles poderiam descobrir quem excluiu alguns dados em seu banco de dados SQL Server (é a edição expressa, se isso importa).
Eu pensei que isso poderia ser encontrado no log de transações (desde que não tivesse sido truncado) - isso está correto? E se sim, como você realmente vai encontrar essas informações?
A Oracle está descontinuando a autenticação do sistema operacional de acordo com o Oracle Database Security Guide , que diz
Esteja ciente de que o parâmetro REMOTE_OS_AUTHENT foi obsoleto no Oracle Database 11g Release 1 (11.1) e é mantido apenas para compatibilidade com versões anteriores.
Além disso, a maioria das informações e ferramentas de segurança consideram a autenticação do sistema operacional (externa) como um problema de segurança. Estou tentando entender por que esse é o caso. Aqui estão algumas vantagens que vejo na autenticação do sistema operacional: