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.treinamentoDB 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
Nenhum comentário:
Postar um comentário