Ir para conteúdo
cesarhtc

REPLICAR tabelas

Recommended Posts

Boa noite, estou precisando copiar tabelas oracle, como são muitas tabelas só quero copiar somente aquelas que foram alteradas em seus registros ou estrutura no dia (diariamente).

 

desde já agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Melhor fazer uma estrutura de backup , tipo rman .

 

Até seria possível fazer isto manualmente mas seria trabalhoso e haveria risco de perda de dados.

 

Sendo um ambiente simples um SqlDeveloper faz o trabalho.

Compartilhar este post


Link para o post
Compartilhar em outros sites
21 horas atrás, Motta disse:

Melhor fazer uma estrutura de backup , tipo rman .

 

Até seria possível fazer isto manualmente mascseria trabalhoso e haveria risco de perda de dados.

 

Sendo um ambiente simples um SqlDeveloper faz o trabalho.

 

Bom dia Motta faltou complementar o que perguntei o que eu preciso é fazer uma "replicação (diária) de um banco oracle para outro banco oracle de formar incremental.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas não seria copiar tabelas e sim replicar um Banco.

 

Então uma estrutura destas seria possível mas trabalhosa , envolveria tabelas de "log" , triggers para alimentar as alterações etc.

 

Uma forma pode ser , colunas de date/timestamp que registrariam alterações nas tabelas , colunas alimentadas por trigger , procedures leriam estas tabelas onde a data de alteração fosse posterior à última cópia , levaria os dados e gravaria a data destas carga em uma tabela de controle.

 

Qual o volume disto , tabelas , registros , alterações etc ?

Qual o intervalo de atualização ?

 

A pergunta fica semelhante a "preciso levar uma quantidade de mercadoria entre dois pontos" , pode ser um ifood no bairro ou uma turbina de hidrelétrica de Porto Alegre/RS até Manaus/AM.

 

Mas dá para pensar algo sim.

 

Pesquise por :

 

Dblinks.

Triggers.

Timestamp (data type).

Cursores.

Grants.

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em primeiro momento replicaria tudo depois só aquelas tabelas que foram alteradas seja na estrutura ou registros.

andei pesquisando e achei uma query   para identificar que seria utilizando onde timestamp irá dizer quando a tabela foi alterada.

Seria por ai?

Agradeço desde já atenção dada,

 

select object_name,created,last_ddl_time,timestamp   
   2    from user_objects   
   3   where object_name='DATA_ATUAL';  
   OBJECT_NAME     CREATED             LAST_DDL_TIME       TIMESTAMP 
   --------------- ------------------- ------------------- ------------------- 
   DATA_ATUAL      02/05/2011 12:59:00 02/05/2011 13:04:00 2011-05-02:13:00:00

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual o volume disto , tabelas , registros , alterações etc ?

185 tabelas primeiro momento, como posso ver isso no oracle para saber quando foi alterada a tabela?

 

Qual o intervalo de atualização ?

R:diário

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

"como posso ver isso no oracle para saber quando foi alterada a tabela?"

 

Uma solução é criar uma coluna DATE ou   TIMESTAMP que sinalize a data de alteração do registro , INSERT ou UPDATE , algo como você falou

*, uma procedure lendo estas tabelas e replicando alteração do registro , um problema seria a deleção talvez precise de uma tabela auxiliar.

 

O que seria exatamente a replicação  ?

Uma cópia ?

Sistemas paralelos ?

 

* caso da alteração da estrutura.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Quencyjones79
      Olá a todos, sou novo na área de multimídia. Estou a seguir a um momento um ebook sobre a criação de uma base de dados e também a criação de tabelas. Mas quando vinculei as tabelas do banco de dados, no phpmyadmin me deu alguns erros. Fiz a correspondência da chave primária (artist_id da tabela Artist) com a artist_id da tabela Prints (chave estrangeira) e assim por diante. O problema é que ele não mostra minhas relações das tabelas e me dá uma mensagem de erro. Então, alguns de vocês poderiam me ajudar, por favor, a consertar esta situação. Eu serei grato. Cumprimentos.
       
      Ps .: Abaixo envio o arquivo Sql.
       
      Atentamente,

      José Moreira
      -- phpMyAdmin SQL Dump -- version 5.0.2 -- https://www.phpmyadmin.net/ -- -- Host: 127.0.0.1 -- Generation Time: Jan 07, 2021 at 08:49 PM -- Server version: 10.4.14-MariaDB -- PHP Version: 7.2.33 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; START TRANSACTION; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8mb4 */; -- -- Database: `ecommerce` -- -- -------------------------------------------------------- -- -- Table structure for table `artists` -- CREATE TABLE `artists` ( `artist_id` int(10) UNSIGNED NOT NULL, `first_name` varchar(20) DEFAULT NULL, `middle_name` varchar(20) DEFAULT NULL, `last_name` varchar(40) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4; -- -------------------------------------------------------- -- -- Table structure for table `customers` -- CREATE TABLE `customers` ( `customer_id` int(10) UNSIGNED NOT NULL, `email` varchar(60) NOT NULL, `pass` char(40) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4; -- -------------------------------------------------------- -- -- Table structure for table `orders` -- CREATE TABLE `orders` ( `order_id` int(10) UNSIGNED NOT NULL, `customer_id` int(10) UNSIGNED NOT NULL, `total` decimal(10,2) UNSIGNED NOT NULL, `order_date` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- -------------------------------------------------------- -- -- Table structure for table `order_contents` -- CREATE TABLE `order_contents` ( `oc_id` int(10) UNSIGNED NOT NULL, `order_id` int(10) UNSIGNED NOT NULL, `print_id` int(10) UNSIGNED NOT NULL, `quantity` tinyint(3) UNSIGNED NOT NULL DEFAULT 1, `price` decimal(6,2) UNSIGNED NOT NULL, `ship_date` datetime DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- -------------------------------------------------------- -- -- Table structure for table `prints` -- CREATE TABLE `prints` ( `print_id` int(10) UNSIGNED NOT NULL, `artist_id` int(10) UNSIGNED NOT NULL, `print_name` varchar(60) NOT NULL, `price` decimal(6,2) UNSIGNED NOT NULL, `size` varchar(60) DEFAULT NULL, `description` varchar(255) DEFAULT NULL, `image_name` varchar(60) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4; -- -- Indexes for dumped tables -- -- -- Indexes for table `artists` -- ALTER TABLE `artists` ADD PRIMARY KEY (`artist_id`), ADD UNIQUE KEY `full_name` (`last_name`,`first_name`,`middle_name`); -- -- Indexes for table `customers` -- ALTER TABLE `customers` ADD PRIMARY KEY (`customer_id`), ADD UNIQUE KEY `email` (`email`), ADD KEY `login` (`email`,`pass`); -- -- Indexes for table `orders` -- ALTER TABLE `orders` ADD PRIMARY KEY (`order_id`), ADD KEY `customer_id` (`customer_id`), ADD KEY `order_date` (`order_date`); -- -- Indexes for table `order_contents` -- ALTER TABLE `order_contents` ADD PRIMARY KEY (`oc_id`), ADD KEY `order_id` (`order_id`), ADD KEY `print_id` (`print_id`), ADD KEY `ship_date` (`ship_date`); -- -- Indexes for table `prints` -- ALTER TABLE `prints` ADD PRIMARY KEY (`print_id`), ADD KEY `artist_id` (`artist_id`), ADD KEY `print_name` (`print_name`), ADD KEY `price` (`price`); -- -- AUTO_INCREMENT for dumped tables -- -- -- AUTO_INCREMENT for table `artists` -- ALTER TABLE `artists` MODIFY `artist_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT; -- -- AUTO_INCREMENT for table `customers` -- ALTER TABLE `customers` MODIFY `customer_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT; -- -- AUTO_INCREMENT for table `orders` -- ALTER TABLE `orders` MODIFY `order_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT; -- -- AUTO_INCREMENT for table `order_contents` -- ALTER TABLE `order_contents` MODIFY `oc_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT; -- -- AUTO_INCREMENT for table `prints` -- ALTER TABLE `prints` MODIFY `print_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT; COMMIT; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
       

    • Por Rogério Orlando
      Na SQL abaixo, quando consulto as tabelas, os registros se repetem, apresentando mais do que realmente existem.
      Alguém pode auxiliar no que está errado ou o que falta para que a select retorne apenas um registro para cada documento?
      Esclareço que todas as tabelas tem um campo "documento", porém ele não é chave e no retorno trouxe todos os campos de todas as tabelas e não apenas as dá SQL:
       
       
      select so01.documento,so01.digito,so01.nome,so01.regional,so01.situacao,so01.observacao,so01.n_spprev,so01.averbacao, so02.endereco, so02.numero, so02.bairro,so02.cidade,so02.cep,so02.estado,so02.aniversario, so03.rg, so03.cpf, so03.email, so04.estado_civil, so04.agencia,so04.dg_agencia,so04.conta,so04.dg_conta,so04.banco,so04.ddd,so04.telefone,so04.nascimento, so04.admissao,so04.demissao_seg,so04.admor,so04.ddd_cel,so04.celular from so03 inner join so01 ON so01.documento= so03.documento inner join so02 ON so02.documento= so03.documento inner join so04 ON so04.documento=so03.documento where so01.documento="68" and so01.digito="0"  
       
    • Por henrybrion
      Caros, estou criando um sistema de listagem de produtos em que os mesmos sejam apresentados de acordo com sua categoria.
      O sistema funciona da seguinte forma:
      Os dados são cadastrados no BD "mercado" na tabela produtos contendo 4 campos (id, produto, categoria e preço) e as categorias são cadastradas na tabela categoria contendo 2 campos (id e categoria).
      Na página produtos.php deve ser apresentado da seguinte forma:
      As categorias são relacionadas em TABs e os produtos em Tabela, de acordo com sua categoria, ou seja se tenho a categoria "Bebidas" deve ser apresentado todas as Bebidas desta categoria na TAB Bebidas e assim por diante.
      Porém não estou conseguindo fazer isso, só está sendo apresentado os produtos da primeira categoria e repetindo nas demais.
      Segue o código que estou usando para construção:
       
      Página Produtos.php
      <div class="container"> <h2>Lista de Produtos por Categoria</h2> <br><br> <?php include_once 'select_produtos.php'; ?> <ul class="nav nav-tabs nav-pills nav-justified"> <?php echo $categorias_menu; ?> </ul> <div class="tab-content"> <table class="table table-hover"> <thead class="thead-dark"> <tr> <th scope="col">Código</th> <th scope="col">Produto</th> <th class=" text-center" scope="col">Valor</th> </tr> </thead> <tbody> <?php echo $lista_produtos; //faz a chamada para a variável no arquivo "select_produtos.php" ?> </tr> </tbody> </table> </div> </div> Página Select_produtos.php
       
      <?php include_once 'conexao.php'; $categorias_sql = "SELECT * FROM categorias ORDER BY id ASC"; $categorias_result = mysqli_query( $connect, $categorias_sql ); $categorias_menu = ''; $produtos_query = "SELECT * FROM produtos ORDER BY produto ASC"; $produtos_result = mysqli_query( $connect, $produtos_query ) or die ("database error:". mysqli_error($connect)); $lista_produtos = ''; $i = 0; //EXIBIR O MENU - ABAS - DE CADA CATEGORIA while ( $categorias = mysqli_fetch_array( $categorias_result ) ) { if ( $i == 0 ) { $categorias_menu .= ' <li class="active"> <a href="#' . $categorias[ "id" ] . '" data-toggle="tab" role="tab">' . $categorias[ "categoria" ] . '</a> </li> '; $lista_produtos .= ' <div id="' . $categorias[ "id" ] . '" class="tab-pane fade in active"> '; } else { $categorias_menu .= ' <li> <a href="#' . $categorias[ "id" ] . '" data-toggle="tab" role="tab">' . $categorias[ "categoria" ] . '</a> </li> '; $lista_produtos .= ' <div id="' . $categorias[ "id" ] . '" class="tab-pane fade"> '; } $i++; //Verfica se existem produtos na tabela if(!mysqli_num_rows($produtos_result)) { $lista_produtos .= '<br>Produto não encontrado!'; }else{ //LISTANDO PRODUTOS NO FORMATO DE TABELA while ( $sub_row = mysqli_fetch_array( $produtos_result ) ) { if($sub_row['categoria_id'] == $categorias['id']){ $lista_produtos .= '<tr>'; $lista_produtos .= '<td class="text-uppercase">' . utf8_encode($sub_row[ "id" ]) . '</td>'; $lista_produtos .= '<td class="text-uppercase">' . utf8_encode($sub_row[ "produto" ]) . '</td>'; $lista_produtos .= '<td class="text-uppercase text-center">R$ ' . $sub_row[ "preco" ] . '</td>'; } } } } $lista_produtos .= '<div style="clear:both">'; ?> Onde está meu erro ou o que estou deixando de fazer aqui?
      Segue imagem da tela como quero que fique.
       
      Obrigado.

    • Por Aureo Almeida
      Problema em definir largura e disposição horizontal de tabelas com resultado de while
      Como iniciante em programação estou tendo problemas para estilizar uma tabela dentro de um script PHP. Possuo o seguinte script:
      <?php $sql = 'SELECT * FROM psd_produtos'; $stmt = $conn->query($sql); echo '<table>'; while($row = $stmt->fetch(PDO::FETCH_OBJ)){ echo " <td> <tr><h1>$row->prd_nome <br /></h1></tr> <tr><p>$row->prd_detalhe <br /></p></tr> <tr>$row->prd_valor <br /></tr> </td> "; } echo '</table>'; ?> Ele funciona perfeitamente, buscando e produzindo um loop das informações que preciso, porém, gostaria que o resultado me retornasse em tabelas que ficasse dispostas horizontalmente lado a lado, e imaginei colocar uma classe CSS que estabelecesse a largura da tabela em 400px com um float que me permitiria alinhar o resultado em “4 colunas”. Porém, essa classe não funciona dentro do script.
      Tentei echo '<table class="tabela-produto">'; e não funciona.
      A mesma classe, que estabelece uma largura para a tabela, aplicada a uma tabela fora do script funciona e isso tirou minha dúvida se este tópico seria sobre CSS/HTML ou PHP.
      Como posso fazer para obter meu objetivo com este script, alinhando horizontalmente o resultado do while em tabelas dispostas horizontalmente em 4 colunas?
    • Por Dani_Ambrosio
      Preciso criar uma coluna em uma tabela já existente, porém os dados dessa nova coluna vão depender de outra tabela
      Ex:
      tenho a tabela faturamento e nela eu preciso criar uma nova coluna que vai chamar fat_removido e os dados dessa coluna vão depender de uma outra tabela que se chama Faturamento removido.
      tanto as tabelas faturamento e a faturamento removido tem o ID_faturamento, quando o mesmo constar nas duas tabelas a nova coluna deverá ser preenchida com Sim e quando não constar deve ser preenchida com Não 
      Como faço isso?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.