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-88154

SHR's questions

Martin Hope
SHR
Asked: 2021-01-28 08:40:07 +0800 CST

É possível dar nome PDB a um procedimento e selecionar a partir dele?

  • 0

O exemplo a seguir não está funcionando, estou apenas tentando mostrar o que estou tentando fazer.

Tabela dada:

-- this table is located at the CDB
create table t1 (tab_name varchar2(35))
/
-- this proc is located at the CDB
Create or replace procedure FindTables(vPdb in varchar2, vOwner in varchar2)
BEGIN
  insert into t1(tab_name) select TABLE_NAME from ALL_TABLES@vPdb where OWNER=vOwner;
END;
/

Existe uma maneira de criar um link de banco de dados temporário ou algo assim? ou alguma outra forma?

EDITAR

Também preciso de uma solução para tabelas de usuários.

oracle oracle-19c
  • 1 respostas
  • 126 Views
Martin Hope
SHR
Asked: 2021-01-25 07:15:15 +0800 CST

Como selecionar de pdbs com um usuário cdb?

  • 0

Eu tenho vários procedimentos de loja, que analisam logs do oracle usando o log miner. Esses procedimentos são executados no usuário C##ADMIN do CDB que criou para esta forma.

Agora quero comparar os valores registrados com os valores ativos, então preciso poder acessar cada pdb do CDB.

Depois de várias pesquisas, me deparei com o database linkque parece uma possível resposta. mas quando estou tentando criar um link de banco de dados, ele diz ORA-02011: duplicate database link name. e quando estou tentando largar, estou recebendo ORA-65230: internal database link cannot be altered or dropped.

Estou tentando executar as seguintes consultas, mas falhou: (mesmo quando conectado como: / as sysdba)

SELECT * FROM ALL_TABLES@testpdb; 

ORA-12541: TNS:no listener
*Cause: The connection request could not be completed because the listener 
      is not running.
*Action: Ensure that the supplied destination address matches one of 
      the addresses used by the listener - compare the TNSNAMES.ORA entry with 
      the appropriate LISTENER.ORA file (or TNSNAV.ORA if the connection is to 
      go by way of an Interchange). Start the listener on the remote machine.

SELECT * FROM test.TABLE1@testpdb;   

ORA-12541: TNS:no listener
*Cause: The connection request could not be completed because the listener 
      is not running.
*Action: Ensure that the supplied destination address matches one of 
      the addresses used by the listener - compare the TNSNAMES.ORA entry with 
      the appropriate LISTENER.ORA file (or TNSNAV.ORA if the connection is to 
      go by way of an Interchange). Start the listener on the remote machine.

Então minhas perguntas são:

  • Está usando links de banco de dados é a maneira correta?
  • Se for, como configurá-lo?
  • Como posso usá-lo?
  • Tenho alguma alternativa para atingir meu objetivo?
oracle oracle-19c
  • 1 respostas
  • 150 Views
Martin Hope
SHR
Asked: 2021-01-20 03:48:51 +0800 CST

Falha na seleção de V$LOGMNR_CONTENTS quando chamada de um procedimento

  • 1

Assumindo o seguinte usuário com esses privilégios concedidos:

-- create admin user on CDB
CREATE USER c##myadmin IDENTIFIED BY myadmin DEFAULT TABLESPACE system QUOTA UNLIMITED ON system ACCOUNT UNLOCK
/
-- allow access to all PDBs to the admin user
ALTER USER c##myadmin SET CONTAINER_DATA=ALL CONTAINER=CURRENT
/ 
-- grant needed permissions
GRANT DBA to c##myadmin                            ;
GRANT CREATE SESSION TO c##myadmin                 ;
GRANT CREATE TABLE TO c##myadmin                   ;
GRANT EXECUTE_CATALOG_ROLE TO c##myadmin           ;
GRANT EXECUTE ON DBMS_LOGMNR TO c##myadmin         ;
GRANT SELECT ON V_$DATABASE TO c##myadmin          ;
GRANT SELECT ON V_$LOGMNR_CONTENTS TO c##myadmin   ;
GRANT SELECT ON V_$ARCHIVED_LOG TO c##myadmin      ;
GRANT SELECT ON V_$LOG TO c##myadmin               ;
GRANT SELECT ON V_$LOGFILE TO c##myadmin           ;
GRANT RESOURCE, CONNECT TO c##myadmin              ;

Agora, quando me conectei como meu myadmin, posso executar o seguinte:

BEGIN 
  DECLARE v NUMBER := 0;
BEGIN
  DBMS_LOGMNR.ADD_LOGFILE(LogFileName=>'/path/to/archive/log/arc0000013.0001', Options=>DBMS_LOGMNR.new);
  DBMS_LOGMNR.START_LOGMNR(StartScn=>23456789, EndScn=>23567890,  Options=>DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG+DBMS_LOGMNR.NO_ROWID_IN_STMT);
  select count(*) into v from v$logmnr_contents;
END;
END;
/
PL/SQL procedure successfully completed.

mas quando foi criado como um procedimento, falhou com privilégios insuficientes:

Create Or Replace Procedure Test AS
 v NUMBER:=0;
BEGIN
 DBMS_LOGMNR.ADD_LOGFILE(LogFileName=>'/path/to/archive/log/arc0000013.0001', Options=>DBMS_LOGMNR.new);
 DBMS_LOGMNR.START_LOGMNR(StartScn=>23456789, EndScn=>23567890,  Options=>DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG+DBMS_LOGMNR.NO_ROWID_IN_STMT); 
 Select Count(*) into v from v$logmnr_contents;
END;
/
Exec Test
/
Procedure Test compiled


Error starting at line 9 in command -
BEGIN Test; END;
Error report - 
ORA-01031: insufficient privileges
ORA-06512: at "C##MYADMIN.TEST", line 6
ORA-06512: at line 1
01031. 00000 -  "insufficient privileges"
*Cause:    An attempt was made to perform a database operation without
           the necessary privileges.
*Action:   Ask your database administrator or designated security
           administrator to grant you the necessary privileges

Se eu comentar selecto procedimento é bem-sucedido.

Existe um privilégio adicional para habilitá-lo para executar a selectpartir de um procedimento?

oracle permissions
  • 2 respostas
  • 162 Views
Martin Hope
SHR
Asked: 2021-01-19 06:36:29 +0800 CST

Como cotar um tablespace somente CDB para um usuário CDB?

  • 0
  • Eu posso criar um tablespace CDB assim: (todos usando: sqlplus / as sysdba)
-- create unique table space for admin
CREATE TABLESPACE admints DATAFILE '/path/to/admints.dbf' SIZE 20M AUTOEXTEND ON;
  • Eu posso criar um usuário CDB com um tablespace "system" padrão, já que todos os PDBs têm um tablespace "system":
-- create admin user on CDB (the defaut tablespace is "system")
CREATE USER C##admin IDENTIFIED BY P@ssw0rd DEFAULT TABLESPACE system QUOTA UNLIMITED ON system ACCOUNT UNLOCK;
  • Não consigo criar meu usuário com o tablespace padrão "admints":
CREATE USER C##admin IDENTIFIED BY P@ssw0rd DEFAULT TABLESPACE admints QUOTA UNLIMITED ON admints ACCOUNT UNLOCK
*
ERROR at line1:
ORA-65048: error encountered when processing the current DDL statement in
pluggable database ORCLPDB
ORA-00959: tablespace 'ADMINTS' does not exist
  • E não posso dar cota ao meu usuário criado no meu tablespace criado, pois ele está apenas no CDB e não foi criado para cada PDB. isso é correto?
ALTER USER  C##admin quota unlimited on admints unlimited
*
ERROR at line1:
ORA-65048: error encountered when processing the current DDL statement in
pluggable database ORCLPDB
ORA-00959: tablespace 'ADMINTS' does not exist
  • O tablespace "admits" foi criado apenas uma vez para o CDB, não para cada PDB.
  • Eu quero criar as tabelas do usuário C##admin no tablespace "admits" no CDB e ter uma cota ilimitada nele.
  • Eu quero que o C#admin tenha pelo menos acesso de leitura em todos os PDBs, então não posso descarregá-los.
  • É possível?
oracle users
  • 1 respostas
  • 253 Views
Martin Hope
SHR
Asked: 2021-01-18 02:39:15 +0800 CST

"usuário não existe " ao chamar DBMS_LOGMNR.START_LOGMNR

  • 0

Eu tenho um usuário CDB chamado "MYADMIN" e estou tentando fazer com que ele se conecte ao log miner.

-- enable calling admin username on CDB 
ALTER SESSION set "_ORACLE_SCRIPT"=true
/
-- create unique table space for admin
CREATE TABLESPACE myadmints DATAFILE '/path/to/admints.dbf' SIZE 20M AUTOEXTEND ON
/
-- create admin user on CDB
CREATE USER myadmin IDENTIFIED BY P@ssw0rd DEFAULT TABLESPACE myadmints QUOTA UNLIMITED ON myadmints ACCOUNT UNLOCK
/
-- allow access to all PDBs to the admin user
ALTER USER myadmin SET CONTAINER_DATA=ALL CONTAINER=CURRENT
/ 
-- grant needed permissions
GRANT DBA to myadmin 
GRANT CREATE SESSION TO myadmin 
GRANT CREATE TABLE TO myadmin 
GRANT EXECUTE_CATALOG_ROLE TO myadmin 
GRANT EXECUTE ON DBMS_LOGMNR TO myadmin 
GRANT SELECT ON V_$DATABASE TO myadmin 
GRANT SELECT ON V_$LOGMNR_CONTENTS TO myadmin 
GRANT SELECT ON V_$ARCHIVED_LOG TO myadmin 
GRANT SELECT ON V_$LOG TO myadmin 
GRANT SELECT ON V_$LOGFILE TO myadmin 
GRANT RESOURCE, CONNECT TO myadmin 

Selecionei uma linha de 'v$archived_log' e tentei carregar o arquivo.

BEGIN
  DBMS_LOGMNR.ADD_LOGFILE(LogFileName=>'/path/to/archive/ARC000011_1061542581',Options=>DBMS_LOGMNR.new);
  DBMS_LOGMNR.START_LOGMNR(StartScn=>3083464, EndScn=>3388245, Options=>DBMS_LOGMNR.DICT_FROM_ONLINECATALOG+DBMS_LOGMNR.NO_ROW_ID_IN_STMT);
END;

Eu posso executá-lo do sys as sysdbausuário, mas quando o executo do meu usuário "myadmin", estou recebendo:

Error report - 
ORA-01435: user does not exist
ORA-06512: at "SYS.DBMS_LOGMNR", line 72
ORA-06512: at line 3
01435. 00000 - "user does not exist"
*Cause:
*Action:

O erro é sobre a START_LOGMNRlinha quando eu removo não há erro.

Qual privilégio estou perdendo?

oracle logs
  • 2 respostas
  • 441 Views
Martin Hope
SHR
Asked: 2019-08-06 00:58:55 +0800 CST

Como evitar Deadlock em consultas SELECT?

  • 4

Eu tenho um banco de dados multi-sessão. Poucas sessões inserindo muitas linhas no banco de dados. e uma sessão seleciona desta tabela.

Às vezes estou recebendo um impasse na consulta SELECT e não entendo o porquê.

Por exemplo: Suponha que esta tabela

Create Table t1([id] int identity(1,1), [column] varchar(max))

As inserções são assim: (estou fazendo isso a partir de um gatilho 'depois')

Begin Transaction
Insert into t1 WITH (TABLOCKX) ([column]) values ('value 1'), ('value 2') ... ('value N')
Commit Transaction

A seleção fica assim:

Select TOP 10 [id],[column] from t1 order by id

O bloqueio nas inserções destinava-se a manter a sequência de inserções de sessão no banco de dados.

Cada vez eu bloqueio apenas uma tabela em uma transação. Eu tentei recuperar o deadlock com uma sessão inserindo e uma segunda selecionando, mas falhei. Antes de adicionar o TABLOCKX, nunca tive o impasse.

Então minhas perguntas são:

  1. Como é possível um impasse? (Talvez em uma transação aninhada?)
  2. Existe uma opção no MSSQL para fazer um bloqueio de gravação de forma a não bloquear os selects?
  3. Alguma ideia para evitar o impasse? (mas mantenha a sequência de inserção de sessão no banco de dados sem alterações...)
sql-server deadlock
  • 1 respostas
  • 4332 Views
Martin Hope
SHR
Asked: 2019-07-23 00:41:44 +0800 CST

Qual é a maneira mais rápida de bloquear a tabela (sessão)?

  • 1

Eu tenho alguns gatilhos para registrar alterações em uma tabela paraLog table.

Ao inserir e excluir, adiciono linha ao Log tablee, para atualização, adiciono duas linhas.

A tabela de log contém a coluna de identidade e quero que as 2 linhas de atualização sejam sequenciais (pelo id = identity)

por exemplo: assumindo a seguinte tabela:

Create table t1 ([name] nvarchar(40) primary key, [value] nvarchar(max))

a tabela de logs é:

Create table t1_log 
([log_id] identity(1,1),[log_ts] DateTime default GETDATE(),
  [log_action] varchar(20), log_session_id int default @@SPID,
  [name] nvarchar(40), value nvarchar(max))

E tenho 3 triggers para atualizar o log:

Create trigger t1_ins on t1 After Insert as
begin
    Insert into t1_log([log_action],[name],[value]) select 'insert', [name], [value] from inserted 
end 
Go
create trigger t1_del on t1 After delete as
begin
    Insert into t1_log([log_action],[name],[value]) select 'delete', [name], [value] from deleted 
end 
Go
create trigger t1_upd on t1 After update as
begin
    Insert into t1_log([log_action],[name],[value]) 
       select [log_action], [name], [value] from (
          (select ROW_NUMBER() OVER (ORDER BY (SELECT 0)) As ROW_ID, 'update from' as [log_action], [name], [value] from deleted)
          UNION 
          (select ROW_NUMBER() OVER (ORDER BY (SELECT 0)) As ROW_ID, 'update to' as [log_action], [name], [value] from inserted)
        ) as temp_tbl
     Order By [temp_tbl].ROW_ID, [temp_tbl].[log_action]
end 
Go

Nesta solução, quando eu atualizo de várias sessões, há a chance de várias atualizações ao mesmo tempo e quebrar a sequência de atualização. Posso ver 2 linhas 'atualizar de' e depois duas linhas 'atualizar para' e quero evitar isso.

A única solução que consigo pensar é bloquear a tabela t1_log no gatilho de atualização usando:

Select * from t1_log with (TABLOCKX)

Mas e se o t1_log tiver muitas linhas? Acho select *que será lento e cada atualização retornará o arquivo *.

Então estou usando o seguinte:

create trigger t1_upd on t1 After update as
begin
    declare @tt
    Begin transaction

    select @tt=1 from t1_log with (TABLOCKX)

    Insert into t1_log([log_action],[name],[value]) 
       select [log_action], [name], [value] from (
          (select ROW_NUMBER() OVER (ORDER BY (SELECT 0)) As ROW_ID, 'update from' as [log_action], [name], [value] from deleted)
          UNION 
          (select ROW_NUMBER() OVER (ORDER BY (SELECT 0)) As ROW_ID, 'update to' as [log_action], [name], [value] from inserted)
        ) as temp_tbl
     Order By [temp_tbl].ROW_ID, [temp_tbl].[log_action]

     Commit trasaction
end 

isso funciona melhor, mas ainda me pergunto se existe uma maneira mais rápida de bloquear uma mesa?

sql-server trigger
  • 1 respostas
  • 81 Views
Martin Hope
SHR
Asked: 2018-10-04 07:51:42 +0800 CST

Como um gatilho pode ser ignorado?

  • 1

Supondo que eu tenha a seguinte tabela:

Create Table [dbo].[Test_IP]
(
  [IP] varchar(40),
  [IPType] varchar(6)
)

Existem mais triggers nesta tabela, mas todos eles são triggers AFTER, e é um banco de dados grande com muitas tabelas, views e procs armazenados, e tem sido usado em vários processos.

Eu adicionei uma tabela de log e gatilhos como este

Create Table [dbo].[Log_Test_IP]
(
  [Action] varchar(10),
  [IP] varchar(40),
  [IPType] varchar(6)
)
GO
Create Trigger MYTR_Log_Test_IP_INS On [dbo].[Test_IP] After insert AS
BEGIN 
   insert into  [dbo].[Log_Test_IP]([Action],[IP],[IPType]) 
       select 'Insert', [IP], [IPType] from inserted 
END
GO
Create Trigger MYTR_Log_Test_IP_DEL On [dbo].[Test_IP] After delete AS
BEGIN
   insert into  [dbo].[Log_Test_IP]([Action],[IP],[IPType]) 
       select 'Delete', [IP], [IPType] from deleted  
END
GO

Agora estou chegando à parte interessante: quando insiro diretamente na Test_IPtabela, posso ver que o gatilho Insert está funcionando, mas quando funciona regularmente de um aplicativo ou serviço (que não tenho ideia do que faz) não ver qualquer registro de inserção na tabela de log, só consigo ver os registros 'Excluir', mesmo que estivesse vazio no início.

Minha conclusão é que existe alguma maneira de contornar os gatilhos, existem muitos gatilhos e procedimentos armazenados no banco de dados e não tenho ideia de onde procurar.

Então, minha pergunta é como você pode ignorar o gatilho?

sql-server trigger
  • 3 respostas
  • 1519 Views
Martin Hope
SHR
Asked: 2018-08-24 06:39:27 +0800 CST

"Se não existir" usando OBJECT_ID() não funciona para visualizações e gatilhos. porque?

  • 6

Para tabelas eu posso implementar "se não existir" e "se existir" como segue:

--if table exists - drop
If OBJECT_ID('A','U') is not null
Drop Table [A]
--if table not exists - Create
If OBJECT_ID('A','U') is null
Create Table A([key] varchar(20), [value] varchar(max))

mas não está funcionando da mesma forma em visualizações e gatilhos

Eu posso fazer:

-- if exists - drop
If OBJECT_ID('VA','V') is not null
Drop view [VA]

mas quando estou tentando o oposto:

-- if not exists - create
If OBJECT_ID('VA','V') is null
Create view [VA] as Select * from [A] 

Estou recebendo o seguinte erro:

Sintaxe incorreta perto da palavra-chave 'view'

E o mesmo acontece com os gatilhos. quando eu faço:

-- if not exists - create
If OBJECT_ID('Trigger_A_ins','TR') is null
Create trigger [Trigger_A_ins] On [A] instead of insert As 
   insert into A select * from inserted

Estou recebendo erro:

Sintaxe incorreta perto da palavra-chave 'trigger'

Mas:

-- if exists - drop
If OBJECT_ID('Trigger_A_ins','TR') is not null
Drop Trigger Trigger_A_ins

está funcionando.

Eu perdi alguma coisa?

Alguém pode explicar essa diferença entre tabelas para triggers e views?

Obs: estou usando o sql server 2012

sql-server trigger
  • 2 respostas
  • 9656 Views
Martin Hope
SHR
Asked: 2018-07-20 06:14:02 +0800 CST

Inserir na exibição de várias tabelas no SQL SERVER

  • 4

Estou fazendo essa pergunta de forma a tentar entender uma situação semelhante que tenho, e tentar entender como está funcionando o insert to view.

Eu tenho essas tabelas:

Create table A([id] int primary key not null, value nvarchar(50) NULL)
Create table B([id] int primary key not null, value nvarchar(50) NULL)

E eu crio view das duas tabelas assim:

create View V as (select * from A) UNION ALL (select * from B)

E eu tenho esse gatilho na visualização V:

Create trigger v_trig on V instead of insert AS
  insert into v (id,value) select id,value from inserted

Quando tento inserir na minha view, estou recebendo o seguinte erro:

Msg 4436, Nível 16, Estado 12, Procedimento v_trig, Linha 2

A exibição UNION ALL 'db.dbo.V' não é atualizável porque uma coluna de particionamento não foi encontrada

Eu tenho um banco de dados com uma visão semelhante (com union all) e por algum motivo consigo inserir nele sem nenhum problema e estou tentando entender o porquê.

O que devo fazer para permitir a inserção em tal visualização? Existe uma maneira de decidir (sem alterar o gatilho) qual é a tabela padrão da exibição de maneira a inserir nela?

sql-server view
  • 1 respostas
  • 4023 Views
Martin Hope
SHR
Asked: 2018-07-19 06:43:22 +0800 CST

Qual pode ser o objetivo desse gatilho?

  • 7

Eu tropeço neste gatilho ao tentar analisar algum DB:

Create trigger [tbl_Details_Trigger] on [tbl_Details]
    Instead of Insert
    As
      Insert into [tbl_Details]
      Select * from inserted

Para mim, parece que esse gatilho não faz nada de especial e, se for descartado, o resultado será o mesmo. Estou certo? Estou esquecendo de algo?

sql-server trigger
  • 1 respostas
  • 73 Views
Martin Hope
SHR
Asked: 2018-07-17 08:29:38 +0800 CST

SQL Server: gatilho para atualização de inserção e exclusão capturados quando nenhum dado foi alterado?

  • 6

Eu adicionei uma tabela simples a um banco de dados chamado: aaa_log com colunas :( id, name, op))

CREATE TABLE aaa_log (
   [id] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL,
   [name] [varchar](50) NOT NULL,
   [op] [varchar](50) NULL)

idcoluna usada apenas para manter a ordem.

Eu adicionei um gatilho ( for insert, update, delete) a todas as outras tabelas em um banco de dados usando o seguinte script:

declare @cmd varchar(max)
declare trigger_create cursor for
select 'Create trigger ['+TABLE_SCHEMA+'].[xxtr_'+TABLE_NAME+'_auto]
  on ['+TABLE_SCHEMA+'].['+TABLE_NAME+'] fro insert,update,delete as
  BEGIN
   declare @op varchar(20)
   if exists(SELECT * from inserted)  and exists(SELECT * from deleted)
   begin
     set @op = ''update''
   end
   if exists(SELECT * from inserted)  and not exists(SELECT * from deleted)
   begin
     set @op = ''insert''
   end
   if not exists(SELECT * from inserted)  and exists(SELECT * from deleted)
   begin
     set @op = ''delete''
   end
   insert into aaa_log([name],[op]) values('+TABLE_SCHEMA+'.'+TABLE_NAME+', @op)
  END
'
from information_schema.tables
where table_type='BASE TABLE' AND table_name <> 'aaa_log'

open trigger_create
fetch next from trigger_create into @sql
while @@FETCH_STATUS =0
BEGIN 
  exec(@sql)
  fetch next from trigger_create into @sql
END
close trigger_create
deallocate trigger_create

Ninguém mais atualiza a aaa_logtabela, apenas esses gatilhos, mas quando eu verifico a aaa_logtabela vejo algumas linhas onde opé NULL.

A única opção que consigo pensar é que tanto inserido quanto atualizado é nulo, então como o gatilho foi ativado?

Alguma explicação?

sql-server trigger
  • 2 respostas
  • 7615 Views
Martin Hope
SHR
Asked: 2018-07-06 06:18:25 +0800 CST

TRUNCATE TABLE pode ser sobrecarregado no SQL Server?

  • 5

Eu sei que pode parecer uma pergunta estranha...

Eu tenho um banco de dados e serviços de terceiros e quero monitorá-lo por gatilhos DML em e INSERTde cada tabela.UPDATEDELETE

Mas infelizmente, estou com um problema quando TRUNCATE TABLEé chamado, pois não está ativando os DELETEgatilhos.

Estou procurando uma maneira de "sobrecarregar" o TRUNCATE TABLEpara ser algo como:

DELETE FROM X; --remove all rows
TRUNCATE TABLE X; --truncate the empty table

Ou talvez ative algum gatilho DDL antes de truncar, para que eu possa verificar quais linhas serão truncadas.

Ficarei feliz se houver outras propostas também.

Algo assim é possível?

EDITAR

Eu não quero desabilitar o truncateque eu só quero monitorar os dados.

É um banco de dados de terceiros e foi usado por serviços sobre os quais não posso controlar, portanto, não posso impedir que o truncate.

Estou apenas tentando monitorar as alterações e atualmente não consigo rastrear a exclusão de registros causada pelo truncatecomando.

Obrigado!

sql-server truncate
  • 1 respostas
  • 1313 Views
Martin Hope
SHR
Asked: 2018-03-14 06:01:01 +0800 CST

Slow Select com índices. Como pode ser melhorado?

  • 2

Eu corro select em uma única tabela (Engine=InnoDB), não muito complexa, mas com muitas linhas.

A primeira seleção para um id é mais lenta, demora alguns segundos para 9M de linhas, as próximas seleções são muito mais rápidas, mesmo quando mudo a consulta.

Eu tentei mysql no Windows e mariadb no Linux.

Eu corro o comando select assim:

select `id`,count(*), sum(`counts`) from reference
    where `id`=848
      and `started`<= '2000-01-04 00:00:00'
      and `ended`  >= '2000-01-03 00:00:00';

ou assim:

 select min(`counts`),max(`counts`) from reference where `id`=848 ;

não importa qual foi a primeira consulta, a primeira é mais lenta.

quando eu corro no mariadb no linux, o id consequente às vezes era rápido, mas no mysql no windows também era lento na primeira vez. isso me fez pensar que talvez eu estivesse perdendo alguma coisa.

testes, resultado e medida de tempo e podem ser encontrados abaixo.

Obrigado por qualquer ajuda!

Este é o meu db:

create database my_test_db default char set utf8 ;
use my_test_db;
create table items (
    `id` int(11) not null auto_increment, 
    `name` varchar(50), 
    `description` varchar(250) default '', 
    primary key (`id`), 
    unique key item_name_unique(`name`)
);
create table reference (
    `id` int(11) not null,
    `started` datetime not null,
    `ended` datetime not null,
    `counts` int(11) not null,
    key fk_item_id_idx (`id`),
    key idx_started (`started`),
    key idx_ended (`ended`),
    constraint fk_item_id foreign key (`id`) references items(`id`)
              on delete no action on update no action
);

Uma exibição gráfica:

MariaDB [my_test_db]> describe items;
+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| id          | int(11)      | NO   | PRI | NULL    | auto_increment |
| name        | varchar(50)  | YES  | UNI | NULL    |                |
| description | varchar(250) | YES  |     |         |                |
+-------------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

MariaDB [my_test_db]> describe reference;
+---------+----------+------+-----+---------+-------+
| Field   | Type     | Null | Key | Default | Extra |
+---------+----------+------+-----+---------+-------+
| id      | int(11)  | NO   | MUL | NULL    |       |
| started | datetime | NO   | MUL | NULL    |       |
| ended   | datetime | NO   | MUL | NULL    |       |
| counts  | int(11)  | NO   |     | NULL    |       |
+---------+----------+------+-----+---------+-------+
4 rows in set (0.00 sec)

Eu usei o seguinte programa para criar 2 infiles:

#include <iostream>
#include <fstream>
#include <string>
#include <ctime>
#include <sstream>
#include <cstring>
#include <random>
#define TM_BUF_SIZE 32

#ifndef WIN32
#define localtime_s(PTM,PTIME_T) localtime_r(PTIME_T,PTM)
#endif
int main(int argc, char** argv)
{
    int id_max, count_iterations, time_frame;
    if(argc!=4)
    {
        std::cerr<<"Missing Arguments!!"<<std::endl;
        std::cerr<<"Usage: DataGen item_count time_iteration time_frame"<<std::endl;
        return -1;
    }
    id_max  = (int)strtol(argv[1],nullptr,0);
    count_iterations = (int)strtol(argv[2],nullptr,0);
    time_frame = (int)strtol(argv[3],nullptr,0);

    std::random_device r;
    std::default_random_engine re(r());
    std::uniform_int_distribution<int> uni_dist(0, 15);
    std::tm temp, tmStart,tmEnd;
    char bufStart[TM_BUF_SIZE], bufEnd[TM_BUF_SIZE];
    std::memset(&temp, 0, sizeof(tm));

    std::ofstream fitems("items.dat");
    for (int id = 1; id <= id_max; id++)
    {
        fitems << id << "\tid-" << id << "\titem.number." << id << std::endl;
    }
    temp.tm_year = 100;
    temp.tm_mday = 1;
    time_t ts_start = mktime(&temp);
    time_t ts_end;
    int iteration_left = count_iterations;
    std::ofstream frefs("references.dat");
    while(iteration_left--)
    {
        ts_end = ts_start + time_frame;
        localtime_s(&tmStart, &ts_start);
        localtime_s(&tmEnd, &ts_end);
        std::strftime(bufStart, TM_BUF_SIZE, "%Y-%m-%d %H:%M:%S.0", &tmStart);
        std::strftime(bufEnd, TM_BUF_SIZE, "%Y-%m-%d %H:%M:%S.0", &tmEnd);
        for (int id = 1; id <= id_max; id++)
        {
            int count = uni_dist(re);
            frefs << id << "\t" << bufStart << "\t" << bufEnd << "\t"<<count<< std::endl;
        }
        ts_start = ts_end;
        if(iteration_left && 0 == iteration_left % 100)
        {
            std::cout<<iteration_left<<" iterations left"<<std::endl;
        }
    }
    std::cout<<"Done!"<<std::endl;
        return 0;
}

copiou no linux usando:

g++ -std=c++0x dataGen.cpp -o DataGen

execute o programa DataGen assim:

DataGen 3000 3000 60

O programa cria 2 arquivos: "items.dat" e "references.dat"

carregue os dados no banco de dados:

use my_test_db;
load data infile '/root/items.dat' into table items;
load data infile '/root/references.dat' into table reference;

Então eu preenchi as tabelas com muitas linhas: itens com 3K de linhas e referência com 9M de linhas.

agora estou executando selects na referencemesa:

Aqui estão os resultados:

#first time for this id: 
MariaDB [my_test_db]> select `id`,count(*), sum(`counts`) from reference where `id`=848 and `started`<= '2000-01-03 00:00:00' and `ended`>='2000-01-02 00:00:00';
+------+----------+---------------+
| id   | count(*) | sum(`counts`) |
+------+----------+---------------+
|  848 |     1442 |         10640 |
+------+----------+---------------+
1 row in set (3.31 sec)

#next query for same id change time filters:
MariaDB [my_test_db]> select `id`,count(*), sum(`counts`) from reference where `id`=848 and `started`<= '2000-01-04 00:00:00' and `ended`>='2000-01-03 00:00:00';
+------+----------+---------------+
| id   | count(*) | sum(`counts`) |
+------+----------+---------------+
|  848 |      121 |           944 |
+------+----------+---------------+
1 row in set (0.03 sec)

#next query for same id change time filters again:
MariaDB [my_test_db]> select `id`,count(*), sum(`counts`) from reference
    where `id`=848
      and `started`<= '2000-01-02 00:00:00'
      and `ended`  >= '2000-01-01 00:00:00';
+------+----------+---------------+
| id   | count(*) | sum(`counts`) |
+------+----------+---------------+
|  848 |     1441 |         10848 |
+------+----------+---------------+
1 row in set (0.06 sec)

-- altera apenas o id:

MariaDB [my_test_db]> select `id`,count(*), sum(`counts`) from reference
    where `id`=1848
      and `started`<= '2000-01-02 00:00:00'
      and `ended`  >= '2000-01-01 00:00:00';
+------+----------+---------------+
| id   | count(*) | sum(`counts`) |
+------+----------+---------------+
| 1848 |     1441 |         10576 |
+------+----------+---------------+
1 row in set (2.63 sec)

#use same id change time filters: 
MariaDB [my_test_db]> select `id`,count(*), sum(`counts`) from reference
    where `id`=1848
      and `started`<= '2000-01-02 12:00:00'
      and `ended`  >= '2000-01-01 12:00:00';
+------+----------+---------------+
| id   | count(*) | sum(`counts`) |
+------+----------+---------------+
| 1848 |     1442 |         10780 |
+------+----------+---------------+
1 row in set (0.03 sec)

#use consequent id is also fast:
MariaDB [my_test_db]> select `id`,count(*), sum(`counts`) from reference
    where `id`=1849
      and `started`<= '2000-01-02 12:00:00'
      and `ended`  >= '2000-01-01 12:00:00';
+------+----------+---------------+
| id   | count(*) | sum(`counts`) |
+------+----------+---------------+
| 1849 |     1442 |         11001 |
+------+----------+---------------+
1 row in set (0.11 sec)

-- outra consulta - mesmo id - rápido

MariaDB [my_test_db]> select min(counts),max(counts) from reference where `id`=1849 ;
+-------------+-------------+
| min(counts) | max(counts) |
+-------------+-------------+
|           0 |          15 |
+-------------+-------------+
1 row in set (0.03 sec)

#again it is slow for other id
MariaDB [my_test_db]> select min(counts),max(counts) from reference where `id`=1800 ;
+-------------+-------------+
| min(counts) | max(counts) |
+-------------+-------------+
|           0 |          15 |
+-------------+-------------+
1 row in set (2.36 sec)

-- descreve a consulta:

MariaDB [my_test_db]> describe select `id`,count(*), sum(`counts`) from reference where `id`=1849 and `started`<= '2000-01-02 12:00:00' and `ended`>='2000-01-01 12:00:00';
+------+-------------+-----------+------+--------------------------------------+----------------+---------+-------+------+-------------+
| id   | select_type | table     | type | possible_keys                        | key            | key_len | ref   | rows | Extra       |
+------+-------------+-----------+------+--------------------------------------+----------------+---------+-------+------+-------------+
|    1 | SIMPLE      | reference | ref  | fk_item_id_idx,idx_started,idx_ended | fk_item_id_idx | 4       | const | 2999 | Using where |
+------+-------------+-----------+------+--------------------------------------+----------------+---------+-------+------+-------------+
1 row in set (0.00 sec)
mysql performance
  • 2 respostas
  • 92 Views
Martin Hope
SHR
Asked: 2016-06-01 10:14:54 +0800 CST

Como se conectar ao oracle 12c do sqlplus sem senha na linha de comando

  • 6

Isso pode parecer uma pergunta estranha:

Se eu tiver usuário chamado democom senha Pass1234

Ao conectar ao oracle 11g posso executar sqlplusassim com senha na linha de comando: no host do banco de dados:

C:\> sqlplus demo/Pass1234 

Ou máquina remota

C:\> sqlplus demo/Pass1234@<ip>:1521/orcl 

Eu posso fazer isso sem fornecer a senha na linha de comando e expô-la assim:

C:\> sqlplus demo

Então eu recebo:

SQL*Plus: Release 11.1.0.7.0 bla bla bla
Copyright (c) bla bla bla
Enter password:  

Então eu posso inserir a senha manualmente.

Ao conectar ao Oracle 12c consigo conectar assim de qualquer máquina (com senha):

C:\> sqlplus demo/Pass1234@<ip>:1521/pdborcl

Minha pergunta é: Como se conectar ao Oracle 12c sem tnsnames.oraeditar e sem escrever a senha na linha de comando?

Também não descobri ainda se é possível conectar ao Oracle 12c a partir do sqlplus na máquina host do banco de dados sem dar o IP ou localhost, e sem editar o tnsnames.ora, como posso fazer no Oracle 11g?

E mais, posso fazer isso de uma máquina remota (mesmo para Oracle 11g) sem usar uma conexão completa?

(significa dar a conexão de usuário e db na linha de comando e senha manualmente, não como usar /NOLOGno comando e depois: SQL> connect demo/Pass1234@<ip>:1521/pdborcl)

Obrigado!

oracle oracle-12c
  • 1 respostas
  • 55512 Views
Martin Hope
SHR
Asked: 2016-05-30 10:28:27 +0800 CST

Como configurar o desenvolvedor sql com oracle 12c?

  • 0

Estou tentando conectar o desenvolvedor sql a uma nova instalação do oracle:

Posso me conectar ao usuário sys via sqlplus Posso me conectar ao usuário sys via desenvolvedor sql quando seleciono o tipo de conexão "Local\Bequeath". Mas acho que não foi conectado ao PDB, apenas ao contêiner.

Eu criei um usuário chamado demo com o seguinte comando:

alter session set container=pdborcl;
create user demo identified by password QUOTA unlimited on users account unlock;  

Estou tentando conectar ao BD com usuário e senha como fiz no oracle 11g. Para o usuário: sys as sysdba, E para o novo usuário criado demo.

Não me importo com pdb, mas pelo que entendi não existe outra opção no oracle 12c...

Tentei definir a entrada chamada PDBORCL no tnsnames.ora, também tentei usar o nome do serviço PDBORCL. como vi em algum manual na internet, mas não funcionou para mim.

Estou recebendo os seguintes erros:

ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor

Novamente, usei uma instalação padrão do oracle 12c, exceto definir senhas e selecionar o tipo de servidor, não mudei muito.

O que procuro é uma "lista de tarefas" simples para configurar conexão no desenvolvedor sql, para conectar, mesmo de uma máquina remota, ao oracle 12c DB.

BTW: (se for o caso)

  1. Tenho 2 versões do sql developer: 4.1.2.20, e a original da instalação: 3.2.20.10.

  2. Atualmente, estou trabalhando no sistema operacional Windows Server 2008.

Obrigado,

EDITAR:

Consulta:

SQL> select name, open_mode from v$pdbs where name='PDBORCL';

Resultado:

NAME      OPEN_MODE
--------  ----------
PDBORCL   READ WRITE

Linha de comando:

lsnrctl service

Resultado:

LSNRCTL for 64-bit Windows: Version 12.1.0.2.0 - Production on 30-MAY-2016 13:26:20

Copyright (c) 1991, 2014, Oracle.  All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=PROTOCOL=TCP)(HOST=192.168.19.58)(PORT=1521)))
Services Summary...
Service "CLRExtProc" has 1 instance(s).
  Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:0 refused:0
        LOCAL SERVER
The command completed successfully

Eu tentei usar o nome de serviço CLRExtProc. Agora estou com o seguinte erro:

Status: Failure -Test failed: The Network Adapter could not established the connection

arquivo listener.ora:

# listener.ora Network Configuration File: C:\app\Administrator\product\12.1.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\app\Administrator\product\12.1.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:C:\app\Administrator\product\12.1.0\dbhome_1\bin\oraclr12.dll")
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.19.58)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

tnsnames.ora

# tnsnames.ora Network Configuration File: C:\app\Administrator\product\12.1.0\dbhome_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.19.58)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )
#this is my addition I guess it not written properly
PDBORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.19.58)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = pdborcl)
    )
  )

EDITAR:

comando: lsnrctl STATUS LISTENER

LSNRCTL for 64-bit Windows: Version 12.1.0.2.0 - Production on 30-MAY-2016 14:22
:08

Copyright (c) 1991, 2014, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.19.58)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for 64-bit Windows: Version 12.1.0.2.0 - Produ
ction
Start Date                29-MAY-2016 17:33:36
Uptime                    0 days 20 hr. 48 min. 36 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   C:\app\Administrator\product\12.1.0\dbhome_1\network\admin\listener.ora
Listener Log File         C:\app\Administrator\diag\tnslsnr\DevOraRX\listener\alert\log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.19.58)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
Services Summary...
Service "CLRExtProc" has 1 instance(s).
  Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

EDIT: Solução completa

É assim que funciona:

  1. Instale uma nova cópia do oracle 12c (fiz uma instalação na área de trabalho).
  2. Mudanças no listener.ora:
    • no SID_LIST_LISTENER adicionei a seguinte seção:(SID_DESC =(SID_NAME = pdborcl)(ORACLE_HOME = C:\app\oracle\product\12.1.0\dbhome_1))
    • no LISTENER em vez de HOST=127.0.0.1, eu configurei para HOST=0.0.0.0
  3. reinicie o serviço de escuta do oracle.

agora no desenvolvedor sql:

faça o login como usuário sys:

Username: sys
Password: ****
Connection type: Basic, Role: SYSDBA
Hostname: localhost
Port: 1521
SID: orcl

Agora verifique se o pdb está ativo:

SQL> select name, open_mode from v$pdbs where name='PDBORCL';

Se estiver no modo montado,

SQL> alter pluggable database pdborcl open;

Crie o usuário + conceda permissões:

alter session set container=pdborcl;
create user demo identified by password QUOTA unlimited on users account unlock;
grant create session to demo;
grant create table to demo;

Conecte-se como usuário de demonstração no desenvolvedor sql:

Username: demo
Password: ****
Connection type: Basic, Role: default
Hostname: localhost
Port: 1521
Service name: pdborcl

E, novamente, obrigado a JSapkota.

Agora estou tentando descobrir as strings de conexão do sqlplus e do cliente instantâneo para o pdbs ...

oracle oracle-12c
  • 1 respostas
  • 9323 Views
Martin Hope
SHR
Asked: 2016-05-10 10:52:16 +0800 CST

Permissão do minerador de log do Oracle: qual permissão autoriza o usuário a usar o logMiner como JOB agendado?

  • 0

Estou tentando configurar o usuário para executar o logMiner do trabalho agendado periodicamente.

meu usuário chamado admin, concedi ao usuário administrador o seguinte:

 grant select on v_$database to admin
 grant execute on DBMS_LOGMNR to admin
 grant select on v_$logmnr_contents to admin

mas ainda assim, quando estou tentando selecionar v $ logmnr_contents, recebo - ORA-01031 privilégios insuficientes.

para testar estou rodando o seguinte script:

create or replace procedure Test_LogMiner AS
first_scn NUMBER(8);
last_scn NUMBER(8);
log_count NUMBER(8); 
BEGIN
  Select current_scn into last_scn from V$DATABASE;
  --Select max(mined_scn) into first_scn from my_table;
  first_scn := last_scn-100;
  DBMS_LOGMNR.START_LOGMNR(startScn=>first_scn, endScn=>last_scn,
     options=>DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG+DBMS_LOGMNR.CONTINUOUS_MINE);
  WRITE_LOG('LOG_DIR', 'After START_LOGMNR');
  -- get error on this select - ORA-01031 insufficient privileges-- 
  select count(*) into log_count from v$logmnr_contents;
  WRITE_LOG('LOG_DIR', 'select count(*)='||log_count);
  DBMS_LOGMNR.END_LOGMNR();
  WRITE_LOG('LOG_DIR', 'After END_LOGMNR');
EXCEPTION WHEN OTHERS THEN
  WRITE_LOG('LOG_DIR', 'Error: '||SQLERRM);
END; 

Posso executar o mesmo cenário, ou seja, iniciar o logMiner e selecionar v$logmnr_contents, quando não for executado como procedimento, do desenvolvedor SQL como usuário administrador (significa: o proc. de criação removido e o código restante colocado em outro begin/ end)

Ele também é executado quando eu executo o procedimento do usuário 'sys as dba'.

Minha pergunta é: o que mais devo conceder para que o procedimento funcione?

oracle log
  • 1 respostas
  • 3729 Views
Martin Hope
SHR
Asked: 2016-03-22 05:55:19 +0800 CST

Um gatilho pode capturar atualizações feitas por um select for update + lob.write ()?

  • 0

Talvez seja uma pergunta estúpida, mas não encontrei uma resposta explícita...

Eu quero pegar qualquer atualização no meu oracle db, então eu quero usar gatilhos, mas os gatilhos não foram ativados ao usar SELECT FOR UPDATE, then lob.write(...)e COMMIT. (Eu testei com c++ usando occi)

Existe alguma maneira de pegá-lo em um gatilho de atualização (ou qualquer outro)?

Acho difícil acreditar que existe comando que não pode ser monitorado por nenhuma trigger...

Se for importante, estou usando a versão 11g.

Obrigado!

EDITAR

Gatilho por exemplo:

CREATE OR REPLACE TRIGGER TR1
BEFORE DELETE OR INSERT OR UPDATE ON TEST_CLOB 
FOR EACH ROW
BEGIN
IF DELETING THEN
  WRITE_LOG('LOG_DIR','deleting:'||:old.filename);
  goto endproc;
END IF;
IF INSERTING THEN
  WRITE_LOG('LOG_DIR','inserting:'||:new.filename);
  goto endproc;
END IF;
IF UPDATING THEN
  WRITE_LOG('LOG_DIR','updating:'||:old.filename||'-'||:new.filename);
  goto endproc;
END IF;
WRITE_LOG('LOG_DIR','other:'||:old.filename||'-'||:new.filename);
<<endproc>>
NULL;
END;

Agora, no meu log, vejo a inserção e a exclusão, mas nunca vejo nenhuma atualização.

oracle trigger
  • 2 respostas
  • 840 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