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

Dzyann's questions

Martin Hope
Dzyann
Asked: 2020-06-23 13:15:21 +0800 CST

Como migrar replicação transacional completa para outros servidores sem instantâneo?

  • 0

Temos grandes bancos de dados que estão sendo mantidos em sincronia usando a Replicação Transacional. Eles estão todos rodando em VMs e vamos mudar para um novo provedor e reorganizar a estrutura de rede e distribuição de aplicativos.

É possível migrar a Replicação Transacional: Publicador, Assinante, Banco de Dados de Distribuição sem precisar fazer um novo Snapshot? Atualmente temos no Servidor_1 o Publicador e no Servidor_2 o Assinante e o Banco de Dados de Distribuição. Vamos mover o Publicador para o Servidor_3 e o Banco de Dados de Assinante e Distribuição para o Servidor_4

Eu não tenho muita experiência com SQL Replication, então tenho lido muito. Encontrei esta resposta aqui . Lendo-o, entendo que, se eu seguir estas etapas, será possível mover a Replicação para os novos 2 servidores:

  1. Durante o tempo de inatividade, esperamos até que todos os objetos estejam sincronizados
  2. Em seguida, faça o script da Replicação (isso inclui Publicador, Assinante e Banco de Dados de Distribuição?),
  3. Migre os bancos de dados do Publicador e do Assinante para seus novos locais
  4. Crie uma nova replicação transacional do zero (usando os scripts gerados a partir da replicação existente) apenas com suporte para replicação
  5. Execute trabalhos de instantâneo para garantir a criação de quaisquer objetos do sistema ausentes.

No entanto, não sei se tenho todos os dados/passos/compreensão necessários e se estou faltando algo importante.

Além disso, seria possível não esperar que todos os objetos estivessem sincronizados? Eu gostaria de testar o processo, mas não sei se poderei desligar os bancos de dados por tanto tempo apenas para testar. Então, poderíamos migrar os dois bancos de dados sem sincronizá-los perfeitamente e regenerar a replicação sem criar um instantâneo? Talvez sem a opção "somente suporte à replicação" e executando os trabalhos de instantâneo. Se executarmos os trabalhos de instantâneo nessa situação, eles criarão um instantâneo inteiro, pois os bancos de dados não estarão em sincronização ou apenas procurarão as diferenças?

Desculpe se minhas perguntas parecem óbvias, não trabalhei com esta tecnologia antes e quero ter certeza de fazer tudo certo.

sql-server transactional-replication
  • 1 respostas
  • 519 Views
Martin Hope
Dzyann
Asked: 2015-06-25 12:28:48 +0800 CST

Por que DBMS_METADATA.GET_DDL falha quando eu tenho a função SELECT_CATALOG_ROLE?

  • 0

Estou tentando obter o DDL usando METADATA_DBMS.GET_DDLpara um objeto em um banco de dados e recebo o seguinte erro:

ORA-31603: object "MY_PACKAGE" of type PACKAGE not found in schema "S1"
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 105
ORA-06512: at "SYS.DBMS_METADATA", line 3149
ORA-06512: at "SYS.DBMS_METADATA", line 4787
ORA-06512: at line 1

É assim que estou chamando o METADATA_DBMS.GET_DDL:

SELECT DBMS_METADATA.GET_DDL (object_type, object_name, owner)
       FROM dba_objects
       WHERE OBJECT_ID = (select OBJECT_ID from dba_objects where object_name ='MY_PACKAGE' and object_type = 'PACKAGE' and owner = 'S1')

Escrevi com a subconsulta para garantir que o objeto existe no esquema S1. Tenho certeza de que S1.MY_PACKAGEexiste, posso até vê-lo no TOAD Schema Browser.

Eu tenho as seguintes funções concedidas:

select * from USER_ROLE_PRIVS 

USERNAME  GRANTED_ROLE         ADMIN_OPTION  DEFAULT_ROLE  OS_GRANTED
MYUSER    CONNECT              NO              YES          NO
MYUSER    DBA                  NO              YES          NO
MYUSER    SELECT_CATALOG_ROLE  NO              YES          NO

Eu tinha DBA Roleprimeiro, e desde que estava jogando aquele erro, eu me concedi SELECT_CATALOG_ROLE.

Verifiquei em outra instância de banco de dados onde a consulta funciona e tenho as mesmas funções, o que mais preciso para fazer DBMS_METADATA.GET_DDLfuncionar?

Ambos os bancos de dados são um clone do mesmo banco de dados de origem e, posteriormente, obtive os privilégios concedidos.

oracle oracle-10g
  • 1 respostas
  • 4262 Views
Martin Hope
Dzyann
Asked: 2015-05-09 07:41:11 +0800 CST

Maneira certa de obter referências a um objeto no Oracle?

  • 0

Eu quero encontrar todos os objetos que fazem referência ao meu objeto.

Eu vim com esta consulta, esta é a melhor maneira de obter todas as referências a um objeto? (Eu sei que isso não inclui restrições, eu cuido disso separadamente)

Referências diretas ao objeto

SELECT object_id, owner, object_name, object_type
       FROM sys.DBA_OBJECTS  
       WHERE object_id IN (select object_id
                           from public_dependency
                           where REFERENCED_OBJECT_ID = :id_object)
       ORDER BY object_name

Além disso, na internet, encontrei consultas como as seguintes.

Referências diretas e indiretas ao objeto

SELECT object_id, owner, object_name, object_type
       FROM sys.DBA_OBJECTS  
       WHERE object_id IN (SELECT object_id
                           FROM public_dependency 
                           CONNECT BY PRIOR object_id = referenced_object_id
                           START WITH referenced_object_id = :objectId)

No entanto, se meu entendimento estiver correto, esta consulta não retorna apenas referências diretas, mas também dependências indiretas.

Por exemplo, se eu quiser as referências para object_A. Se object_B fizer referência a ele e object_C fizer referência a object_B. Essa consulta retornaria object_B e object_C como referências a object_A. Estou certo?

oracle oracle-10g
  • 2 respostas
  • 1915 Views
Martin Hope
Dzyann
Asked: 2015-05-09 05:21:47 +0800 CST

Qual é a diferença entre public_dependency e dba_dependencies?

  • 3

Eu sei que PUBLIC_DEPENDENCY tem apenas os Ids dos objetos e referências, e o DBA_DEPENDENCIES não tem os Ids, mas o Tipo, Dono, Nome, etc deles.

Mas além disso, qual é a diferença entre ambos? Quando faço uma contagem no meu banco de dados, eles retornam valores diferentes. E PUBLIC_DEPENDENCY tem mais elementos.

oracle oracle-10g
  • 1 respostas
  • 1178 Views
Martin Hope
Dzyann
Asked: 2015-01-09 09:26:17 +0800 CST

Os ALL_OBJECTS e DBA_OBJECTS são diferentes quando você tem DBA Role?

  • 3

Estou tentando entender completamente a diferença entre ALL_OBJECTS e DBA_OBJECTS. Ainda sou novo no Oracle e fico confuso com toda a coisa de acesso/funções.

A partir daqui :

  • ALL_OBJECTS mostra todos os objetos atuais e aqueles objetos aos quais você tem direitos de acesso.
  • DBA_OBJECTS mostra todos os objetos de todos os usuários.

Minha dúvida é, se você tiver função de DBA, ALL_OBJECTS deve ser igual a DBA_OBJECTS? Eu tenho função de DBA e no banco de dados que estou trabalhando e ALL_OBJECTS retorna menos elementos que DBA_OBJECTS.

Se eu tiver a função DBA, não devo ter acesso a todos os objetos em DBA_OBJECTS e, portanto, ambas as visualizações devem ser iguais?

oracle permissions
  • 1 respostas
  • 8712 Views
Martin Hope
Dzyann
Asked: 2015-01-09 07:35:52 +0800 CST

Como listar SINÔNIMOS que não apontam mais para um objeto válido?

  • 4

Tenho uma tabela ( OBJECTS_TO_UPDATE) com vários objetos que preciso atualizar, alguns são SYNONYMspara objetos que não existem mais.

Eu quero criar uma consulta para listá-los. Mas estou preso.

Minha tabela OBJECTS_TO_UPDATEtem essas colunas:

  • OBJECT_NAME
  • OBJECT_TYPE
  • OWNER

Em palavras, o que eu quero fazer segue estas linhas:

  • Eu filtro minha OBJECTS_TO_UPDATEtabela por OBJECT_TYPE = 'SYNONYM'.
  • Usando o proprietário e o nome, posso obter o SYNONYMarquivo ALL_SYNONYMS.
  • Usando TABLE_OWNERe TABLE_NAMEe procure por ele em dba_objects, se o objeto não existir, então o sinônimo não é mais válido.

Quero escrever uma consulta usando todas essas condições, mas estou tendo problemas.

select *
from OBJECTS_TO_UPDATE o2u 
where o2u.OBJECT_TYPE = 'SYNONYM' and NOT EXISTS ( 
                            --select * from dba_objects dobj
                            --where dobj.OWNER
                            select * from ALL_SYNONYMS syn
                            where  syn.OWNER = o2u.OWNER and syn.SYNONYM_NAME = o2u.OBJECT_NAME)

Estou preso/confuso sobre o que fazer dentro do arquivo NOT EXISTS.
Como posso conseguir o que preciso? Eu tenho DBA privs.

Além disso, esta é a melhor maneira de conseguir o que eu quero? Talvez haja algumas outras visualizações que eu deva usar de forma mais direta.

oracle metadata
  • 2 respostas
  • 9094 Views
Martin Hope
Dzyann
Asked: 2015-01-08 07:04:24 +0800 CST

Por que há uma diferença no limite de caracteres para VARCHAR2 em SQL e PL/SQL?

  • 1

Enquanto trabalhava com alguns scripts grandes, encontrei erros relacionados ao limite de 4000 caracteres que o VARCHAR2 possui no SQL, mas não no PL/SQL.

Conforme explicado aqui, o tipo de dados VARCHAR2 tem um limite de 4000 caracteres, enquanto o PL/SQL tem um limite muito maior de 32.767.

Por que essa diferença existe? Não teria sido melhor ter os dois VARCHAR2 com o mesmo limite? Parece uma decisão bastante confusa e propensa a erros.

Atualizar

Atualizei minha pergunta para adicionar o comentário do ansible. O limite Oracle VARCHAR2 e PL/SQL VARCHAR2 está em bytes, não em caracteres. Isso pode ter um impacto significativo no sistema de caracteres multibyte.

oracle plsql
  • 1 respostas
  • 4139 Views
Martin Hope
Dzyann
Asked: 2015-01-08 06:55:34 +0800 CST

Como criar arquivo de script com PL/SQL?

  • 0

Eu tenho que atualizar vários objetos em muitas instâncias. Para conseguir isso, estou usando DBMS_METADATA para criar as instruções DDL.

Até agora, tenho as instruções DDL e as salvo em uma TABLE. Gostaria de salvar as referidas instruções DDL em um arquivo .sql para cada objeto.

Sei que posso fazer isso com C#, mas até agora consegui fazer tudo o que precisava com PL/SQL. Existe uma maneira de criar os arquivos .sql com PL/SQL?

oracle plsql
  • 1 respostas
  • 5397 Views
Martin Hope
Dzyann
Asked: 2014-11-08 12:01:20 +0800 CST

Posso usar um sinônimo para apontar para um objeto em um esquema usando outro esquema?

  • 2

Não tenho muita experiência em Oracle, então me desculpe se esta é uma pergunta simples.

Tenho que mover muitos objetos no banco de dados de um esquema para outro. Estou tentando atualizar todas as dependências também, mas só para garantir, gostaria de deixar um link.

Exemplo :

  1. Agora eu tenho no meu Schema 1 ( S1 ) uma MyTable . Os usuários fazem referência a ele como:

    S1.MinhaTabela

  2. Gostaria de mover MyTable para Schema 2 ( S2 )

    S2.MinhaTabela

  3. Gostaria que meus usuários ainda pudessem usar o MyTable como antes.

    S1.MyTable / MyTable está realmente em S2, mas os usuários podem acessá-lo com S1 /

Eu tenho lido sobre Synonyms e parece que você pode criar públicos para que os usuários possam referenciar um objeto diretamente, como:

MyTable

Mas eu preciso que eles possam escrever S1.MyTable

Posso usar sinônimos para isso?

oracle
  • 2 respostas
  • 2237 Views
Martin Hope
Dzyann
Asked: 2014-10-17 11:37:47 +0800 CST

Como listar objetos que estão usando outro objeto?

  • 0

Tenho que mover certos objetos de um esquema para outro. O banco de dados é bastante grande e quero ter certeza de que testamos corretamente todos os objetos afetados.

No TOAD existe uma aba chamada "Used By" que mostra todos os objetos que estão referenciando o objeto selecionado.

Existe uma maneira de obter uma saída semelhante com um comando SQL? Tentei verificar as diferentes exibições de DBA, mas não consegui encontrar nenhuma com as informações de que preciso.

oracle
  • 1 respostas
  • 132 Views
Martin Hope
Dzyann
Asked: 2014-06-19 10:47:36 +0800 CST

Existe uma maneira de passar a executar imediatamente apenas uma vez uma variável, mas usá-la várias vezes?

  • 2

Eu tenho um Cursor que obtém seus dados de um script ao longo destas linhas:

OPEN myCursor FOR
SELECT value1 AS Value1,
  myPackage.function1 (value1, :myId) AS Result1,
  myPackage.function2 (value1, :myId) AS Result2,
  myPackage.function3 (value1, :myId) AS Result3                       
FROM mySchema.myTable
WHERE tpk = :myPk
USING myId, myId, myID

Como você pode ver, eu uso a variável myId 3 vezes e tenho que passá-la 3 vezes na instrução using para que funcione. Não consegui encontrar em lugar nenhum, mas tem como eu passar a variável myId apenas uma vez?

oracle plsql
  • 1 respostas
  • 357 Views
Martin Hope
Dzyann
Asked: 2014-06-18 12:19:41 +0800 CST

Como referenciar uma tabela de outro esquema dentro de um pacote?

  • 3

Estou usando o TOAD para criar um pacote em um esquema que tenho como proprietário. Meu pacote usa tabelas de outro esquema.

O pacote tem um procedimento que usa um cursor. Quando crio o pacote, recebo erros de compilação:

Corpo 509 30 PL/SQL: ORA-00904:: identificador inválido

O erro aponta para uma tabela que o select do Cursor está utilizando e que está localizada no outro Schema.

Se eu executar a consulta diretamente no TOAD funciona perfeitamente, sou novo no Oracle e não entendo porque recebo esse erro. Por que estou recebendo esse erro?

oracle plsql
  • 1 respostas
  • 13977 Views
Martin Hope
Dzyann
Asked: 2014-05-28 08:48:40 +0800 CST

Como reutilizar código no Oracle Script?

  • 0

Eu tenho um script onde estou criando alguns dados de teste. No início do script crio algumas tabelas onde tenho que inserir os dados. Antes de criá-los, verifico se eles não existem.

declare
 tableExists number;
begin

SELECT COUNT(*)
    INTO tableExists
FROM user_tables
WHERE table_name = 'MY_TEST_TABLE';

if tableExists>0 then
    execute immediate 'drop  table MY_TEST_TABLE';
end if;

SELECT COUNT(*)
    INTO tableExists
FROM user_tables
WHERE table_name = 'MY_TEST_TABLE2';

if tableExists>0 then
execute immediate 'drop table MY_TEST_TABLE2';
end if;

--Here I create both tables: MY_TEST_TABLE and MY_TEST_TABLE2

Minha pergunta é: Existe uma maneira de evitar a repetição do código para verificar se a tabela existe? Existe uma maneira de chamar esse código como um método passando o nome da tabela como parâmetro?

Acredito que poderia criar/declarar uma função e depois usar isso. Mas esse tipo de função não é temporal. Eu sei que isso não é como C ou C++. Mas eu queria saber se havia uma maneira de eu ter uma espécie de "método privado" para este script testar a existência de minhas tabelas e dessa forma eu não precisaria repetir o código, mas o método não permaneceria depois meu roteiro foi concluído.

Qual é a maneira correta, se houver, de conseguir o que eu quero?

oracle plsql
  • 2 respostas
  • 1879 Views
Martin Hope
Dzyann
Asked: 2014-05-24 06:52:32 +0800 CST

Como usar variável e soltar no script de teste?

  • 1

Eu tenho que modificar certos pacotes do Oracle. Basicamente, estarei extraindo a funcionalidade e movendo-a para C.

Eles me forneceram alguns scripts de "teste" que eu deveria ser capaz de executar para testar se minhas alterações não quebram a lógica subjacente do pacote. Mas eles não estão funcionando.

Também notei que eles codificaram alguns valores em seus scripts originais e, em vez disso, estou tentando usar variáveis. Eu nunca trabalhei com Oracle, então estou confuso.

No Toad eu tenho um Script nessa linha:

declare
myTestId VARCHAR(32);

begin

select  '23423DSSF34SD234' into myTestId from dual;

--Here my drop for my_test_table1 and my_test_table2
drop table my_test_table1;
drop table my_test_table2;

--Here create table my_test_table1 and my_test_table2

--Here I have a bunch of inserts

--Here are some selects statements

end;

No entanto, quando executo o script, ele falha ao atingir as instruções "Drop" e não gosta delas. Como posso executar instruções drop no meu script?

Andei lendo por aí e parece que no Oracle não é uma boa ideia criar tabelas temporárias assim? Qual seria a melhor abordagem?

oracle plsql
  • 1 respostas
  • 1150 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