Olá!

Olá para todos,

Para aqueles que não me conhecem, eu sou Ronan e estou escrevendo este blog com o intuito de reunir informações daquilo que eu gosto de fazer. Sou formado em computação e gosto de ler e escrever sobre Liderança, Desenvolvimento Pessoal, Motivação e assuntos na minha área. Pretendo colocar aqui aquilo que é interessante pra mim. Se você gostar do conteúdo, ótimo!
Atualmente estou conhecendo um mundo novo, que é o mundo do empreendedorismo e que está me fascinando. Hoje eu prezo muito pela liberdade! Palavra forte que me faz acordar todos os dias pensando no quê fazer alcançá-la. Afinal, o que é liberdade? Aos poucos vou aprendendo o significado desta palavra e acho que muito poucas pessoas sabem o significado. Para aqueles que já sabem, meus parabéns! Um grande mentor deu um significado para esta palavra e que gostei: "Liberdade não é a ausência de regras e sim usufruir da disciplina." Eu gostei deste significado, mas acho que tem mais. Como não sei o que é ao certo ainda, vou tentando aprender o que é para mim. Ano passado fui apresentado ao Marketing de Rede e acreditem, mudei totalmente a minha concepção em relação ao mercado. Hoje eu acredito muito que este é o Negócio do Século XXI. Um mercado onde se encontra pessoas positivas, alto astral e todas lutam por seus ideais e acreditam num mundo melhor. É uma família de empreendedores de diversas áreas onde o sucesso de todos é interessante para todos! Vou escrever sobre isso também, afinal, tenho lido demais sobre este assunto.
Mostrando postagens com marcador cópia. Mostrar todas as postagens
Mostrando postagens com marcador cópia. Mostrar todas as postagens

terça-feira, 22 de junho de 2010

Duplicando Base no Oracle 10g – cópia

Documento com o objetivo de comentar os passos necessários para duplicar um banco de dados oracle 10g usando cópia (comando cp do sistema operacional).

Cenário:

Uma das utilizações para isto, por exemplo, é quando se tem um banco de produção e você quer criar um banco de homologação identico ao de produção. É feito uma cópia física do banco. Para isso o banco de produção não pode estar aberto. Existem diversas formas de se fazer isso. Neste blog esta é o segundo post referente ao mesmo assunto. Ou seja, 2 formas de se fazer a mesma coisa.

Informações:

Nome da máquina: aluno06.treinamento
DB Produção: orcl
senha oracle: oracle

DB Teste: bdo
senha oracle: oracle

Vamos aos passos:


Crie os diretórios adump, bdump, cdump e udump
$ mkdir -p /u01/bdo/{adump,bdump,cdump,udump}

Conecte no banco como sysdba e altere-o para o estado mount. Vale lembrar que o banco original não pode estar aberto. Caso esteja, atrapalha todo o processo.

$ sqlplus / as sysdba
SQL> startup mount

Estes próximos são alguns passos pequenos e que não há necessidade de explicá-los, basta fazer um breve comentário.

SQL> create pfile='/u01/bdo/init.ora' from spfile; # Criar o aquivo init.ora com a configuração atual do banco
SQL> show parameter background_dump_dest;
SQL> host rm /u01/app/oracle/admin/orcl/udump/* # Este comando serve para remover tudo quanto é lixeira existente neste diretório para que não atrapalhe o procedimento.
SQL> alter database backup controlfile to trace; # Este comando vai criar o arquivo orcl_ora_8778.trc que servirá de exemplo para o nosso script.
SQL> select status from v$instance;

Edite o arquivo com toda a configuração atual do banco. Neste passo você deve alterar esse arquivo e deixá-lo como está abaixo. Lembre-se que você deve trocar o caminho do orcl para o novo bdo.

$ vi /u01/app/oracle/admin/orcl/udump/orcl_ora_8778.trc

STARTUP NOMOUNT pfile='/u01/bdo/init.ora';
CREATE CONTROLFILE SET DATABASE "bdo" RESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/u01/bdo/redo01.log' SIZE 50M,
GROUP 2 '/u01/bdo/redo02.log' SIZE 50M,
GROUP 3 '/u01/bdo/redo03.log' SIZE 50M
-- STANDBY LOGFILE
DATAFILE
'/u01/bdo/system01.dbf',
'/u01/bdo/undotbs01.dbf',
'/u01/bdo/sysaux01.dbf',
'/u01/bdo/users01.dbf',
'/u01/bdo/example01.dbf'
CHARACTER SET AL32UTF8;
alter database open resetlogs;
ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/bdo/temp01.dbf';
:w /u01/bdo/control.sql
:q

Agora é necessário editar o arquivo init.ora e trocar todo o caminho do orcl para o bdo assim como foi feito no arquivo acima.

$ vi /u01/bdo/init.ora

*.audit_file_dest='/u01/bdo/adump'
*.background_dump_dest='/u01/bdo/bdump'
*.compatible='10.2.0.1.0'
*.control_files='/u01/bdo/control01.ctl','/u01/bdo/control02.ctl','/u01/bdo/control03.ctl'
*.core_dump_dest='/u01/bdo/cdump'
*.db_block_size=8192
*.db_cache_size=251658240
*.db_create_file_dest='/u01/bdo'
*.db_domain='oracle.com'
*.db_file_multiblock_read_count=16
*.db_flashback_retention_target=2880
*.db_keep_cache_size=54525952
*.db_name='bdo'
*.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.dispatchers='(PROTOCOL=TCP) (SERVICE=bdoXDB)'
*.java_pool_size=4194304
*.job_queue_processes=10
*.large_pool_size=4194304
*.open_cursors=300
*.pga_aggregate_target=200278016
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.resource_manager_plan='SYSTEM_PLAN'
*.sga_target=578813952
*.shared_pool_size=201326592
*.streams_pool_size=0
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/u01/bdo/udump'

Copie toda a estrutura física do banco atual para o novo conforme o objetivo do documento.

$ cp /u01/app/oracle/oradata/orcl/* /u01/bdo/

Inicie o banco atual para se ter certeza do que está fazendo.
SQL> alter database open;

Agora vamos para o passo do novo banco.

$ export ORACLE_SID=bdo

Remova os arquivos de controle, pois o comando dentro do script irá criá-los novamente. Caso tenha algum arquivo .ctl, o comando não funcionará e retornará erro.

$ rm /u01/bdo/*.ctl

Conecte no banco, execute o script e saia novamente.
SQL> @control.sql
SQL> exit


Caso queira criar um dbconsole no enterprise manager para este banco, execute os passos:


Aqui você deve passar as informações do banco como, sid do banco, porta, senhas, etc.

$ emca -repos recreate

No passo acima, vai dar erro uma vez que o caminho acima não existe. Isso será resolvido com este passo para que reconfigure todo o banco. Será necessário passar toda a informação conforme descrito no passo acima.

$ emca -config dbcontrol db