Imagina a seguinte situação…
Um ser iluminado empolgadíssimo liga no seu ramal e diz:
“Preciso fazer uns testes no banco, rodar uns scripts …. POSSO ????”
Ai nesse momento você respira fundo, conta até 10, come um chocolatinho pra ficar feliz e pede educadamente (o educadamente é imprescindível !!!) pro ser iluminado te enviar os scripts só pra você ter uma ideia do tamanho do problema.
Bem nesse momento vc descobre que o cara quer fazer uns scan full somado a algumas coisas meios cabeludas e fedorentas naquenas tabelas que tem uma quantidade desesperadora de registros ….
OBS: Vamos imaginar que esse desenvolvedor não seja alguem experiente ok??? ele é mirim ainda …. mesmo porque um desenvolvedor experiente nunca faria um absurdo desses…
O que fazer??????
A – Da um tiro de bazuca na fuça do ser iluminado
Não é a melhor opção … não encontramos uma bazuca em qualquer lugar, a não ser que a sua gaveta seja bem comprida;
B – Faz um Tuning de Query
Isso é papo pra um outro post, mas é uma opção bem interesante e útil, que pode ajudar ao banco e ao desenvolvedor;
C – Clona o banco naquela maquina de testes que vc tem ai, e deixa o cara brincar, sem afetar a produção.
Hummm, vamos optar pela terceira opção, mesmo porque a gente monta o ambiente e deixa disponível pra testes ….
Bom, chega de histórias vamos ao que interessa, vamos entender que nosso banco de produção se chama produção e o clonado vai se chamar teste
1 – Crie a estrutura de diretórios OFA
oracle@server: /> cd /oracle/u01/app/oracle/admin/
oracle@server:/oracle/u01/app/oracle/admin> mkdir bdump cdump create pfile udump
oracle@server:/oracle/u01/app/oracle/admin/teste > ls
bdump cdump create pfile udump
2 – Copiar o init do banco e o arquivo de senhas (orapwd) que já esta em produção para o novo banco
oracle@server:/oracle/u01/app/oracle/admin> cd /oracle/u01/app/oracle/product/8.1.7/dbs
oracle@server:/oracle/u01/app/oracle/product/8.1.7/dbs > cp initproducao.ora
initteste.ora
oracle@server:/oracle/u01/app/oracle/product/8.1.7/dbs > cp orapwproducao
orapwteste
oracle@server:/oracle/u01/app/oracle/product/8.1.7/dbs > ls
init.ora initdw.ora initproducao.ora initteste.ora lkserver lkteste orapwserver orapwteste
3 – Alterara as configurações init para o novo banco
oracle@server:/oracle/u01/app/oracle/product/8.1.7/dbs >
vi initteste.ora
#_system_trig_enabled=false
db_name = teste
db_domain = seudominio.com.br
instance_name = teste
service_names = teste.seudominio.com.br
control_files =
(“/oracle/u01/oradata/teste/control01.ctl”,
“/oracle/u02/oradata/teste/control02.ctl”)
db_block_size = 8192
db_block_buffers = 20000
db_file_multiblock_read_count = 64
shared_pool_size = 10000000
large_pool_size = 86507520
java_pool_size = 20971520
log_checkpoint_interval = 10000
log_checkpoint_timeout = 0
processes = 440
open_cursors = 660
sort_area_size = 262144
rollback_segments = (R01, R02, R03, R04)
max_enabled_roles=100
log_buffer = 5242880
# log_buffer = 1048576
timed_statistics = true
# max_dump_file_size = 10000 # limit trace file size to 5M each
log_archive_start = true
log_archive_dest_1 = ‘LOCATION=/oracle/u01/arch/teste‘
#log_archive_dest_2 = ‘SERVICE=standby_server reopen=60′
log_archive_dest_state_1 = enable
#log_archive_dest_state_2 = enable
log_archive_format = teste_%s.arc
# oracle_trace_enable = true
background_dump_dest = /oracle/u01/app/oracle/admin/teste/bdump
core_dump_dest = /oracle/u01/app/oracle/admin/teste/cdump
user_dump_dest = /oracle/u01/app/oracle/admin/teste/udump
db_block_size = 8192
### MRCN ###remote_login_passwordfile = exclusive
remote_login_passwordfile = shared
job_queue_processes = 6
job_queue_interval = 60
distributed_transactions = 100
open_links = 6
compatible = “8.1.7.4″
# optimizer_features_enable = 8.1.7
utl_file_dir = *
5 – Baixar banco de produção que vai ser duplicado
oracle@server:/> echo $ORACLE_SID
oracle@server:/> producao
SQL> shutdown immediate
ORACLE instance shut down.
SQL> exit
6 – Crie um novo diretório no oradata (diretório dos arquivos de dados) com o nome do novo banco
oracle@server:/oracle/u01/oradata> mkdir teste
oracle@server:/oracle/u01/oradata> cd teste
oracle@server:/oracle/u01/oradata/teste>
7 – Fazer cópia de todos os arquivos de dados e redos
oracle@server:/oracle/u01/oradata/teste >
cp /oracle/u01/oradata/producao/* .
oracle@server:/oracle/u02/oradata/teste >
cp /oracle/u02/oradata/producao/* .
8 – Remova os controfiles pois eles serão criados automaticamente
oracle@server:/oracle/u01/oradata/teste > rm – rf control01.ctl control02.ctl
9 – Exporte a variável ORACLE_SID com a nova instância
oracle@server:/oracle/u01/app/oracle/admin/teste/>
export ORACLE_SID= teste
oracle@server:/oracle/u01/app/oracle/admin/teste/>
echo $ORACLE_SID
teste
(Não esqueça da permissão de execução)
oracle@server:/> cd /oracle/u01/app/oracle/admin/teste/create
oracle@server:/oracle/u01/app/oracle/admin/teste/create >
vi teste.sql
STARTUP NOMOUNT
CREATE CONTROLFILE SET DATABASE “TESTE” RESETLOGS
NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 2
MAXDATAFILES 240
MAXINSTANCES 1
MAXLOGHISTORY 113
LOGFILE
GROUP 1 (
‘/oracle/u01/oradata/teste/redo01a.dbf’,
‘/oracle/u02/oradata/teste/redo01b.dbf’
) SIZE 50M,
GROUP 2 (
‘/oracle/u01/oradata/teste/redo02a.dbf’,
‘/oracle/u02/oradata/teste/redo02b.dbf’
) SIZE 50M,
GROUP 3 (
‘/oracle/u01/oradata/teste/redo03a.dbf’,
‘/oracle/u02/oradata/teste/redo03b.dbf’
) SIZE 50M,
GROUP 4 (
‘/oracle/u01/oradata/teste/redo04a.dbf’,
‘/oracle/u02/oradata/teste/redo04b.dbf’
) SIZE 50M REUSE
DATAFILE
‘/oracle/u01/oradata/teste/system01.dbf’,
‘/oracle/u02/oradata/teste/table01.dbf’,
‘/oracle/u02/oradata/teste/table02.dbf’,
‘/oracle/u02/oradata/teste/table03.dbf’,
‘/oracle/u02/oradata/teste/table04.dbf’,
‘/oracle/u01/oradata/teste/indice01.dbf’,
‘/oracle/u01/oradata/teste/indice02.dbf’,
‘/oracle/u01/oradata/teste/indice03.dbf’,
‘/oracle/u01/oradata/teste/indice04.dbf’
‘/oracle/u01/oradata/teste/rbs01.dbf’,
‘/oracle/u02/oradata/teste/oem_repository01.dbf’ REUSE
CHARACTER SET WE8ISO8859P1;
11 – Logue no slqplus com : sqlplus “/ as sysdba” e execute o arquivo teste.sql para criar a nova base de dados
oracle@server:/oracle/u01/app/oracle> sqlplus “/ as sysdba”
SQL*Plus: Release 8.1.7.0.0 – Production on Tue Jul 24 17:04:08 2007
(c) Copyright 2000 Oracle Corporation. All rights reserved.
Connected to an idle instance.
SQL> @teste .sql
ORACLE instance started.
Total System Global Area 295825568 bytes
Fixed Size 73888 bytes
Variable Size 126660608 bytes
Database Buffers 163840000 bytes
Redo Buffers 5251072 bytes
Control file created.
12 – O conteúdo dos logs são descartáveis, para limpa-los use o comando abaixo
SQL> ALTER DATABASE OPEN RESETLOGS;Database altered.
13 – Adicione a tablespace temporária
SQL> ALTER TABLESPACE TEMP ADD TEMPFILE
‘/oracle/u01/oradata/teste/temp01.dbf’ REUSE;
Tablespace altered.
14 – Pronto, agora só verifique o statis da instância criada
SQL> set linesize 10000
SQL> select instance_name,version,status,database_status from v$instance;
INSTANCE_NAME VERSION STATUS DATABASE_STATUS
—————- —————– ——- —————–
teste 8.1.7.4.0 OPEN ACTIVE
15 – Faça um teste de select na base
SQL> select nome from x.agencias
2 where codigo = 10;
NOME
——————–
CENTRO ADMINISTRATIV
É isso ai, sua base de testes esta prontinha, agora é só entregar para o desenvolvedor e voltar a tranquilidade.
Kenia Milene
Tenho um servidor oracle 8.7.1 rodando em um server 2000. Nesse servidor, existem dois hds. No c: está o sistema operacional, no d: está o Oracle. Sexta a noite, o hd do so(c:) foi perdido. Outro hd foi instalado e o so também. Tenho um export do banco de quinta a noite. Porém eu lhe pergunto: existe alguma forma de instalar novamente o Oracle no d: e reaproveitar os dados que pernacem na instalação original(a pasta oracle já foi renomeada para outro nome)?
ghjj
Grande professor que vc é.
Olá Kenia ei seguie aqui seus passos porem estou com o seguinte problema meus datafile de dados e users01 de index esta com status recover, você teria alguma dica para recuperar o status para online ja procurei na net tudo e nao da certo da o seguinte erros:
ORA-00283: recovery session canceled due to errors
ORA-00600: internal error code, arguments: [krhpfh_03-1202], [fno =], [4],
[fhcrt =], [699715834], [cptim =], [0], []
ORA-01110: data file 4: ‘/u01/oracle/oradata/develop/dados.dbf’
Boa noite, ao executar o arquivo SQL, esta dando um erro, ele mostra um monte de erros e ignora a execuçao do arquivo a partir da linha 1.
preciso saber onde alterou a chave ORACLE_UNQNAME
onde configuro a variavel oracle_unqname.
Senhores, boa tarde,
Encontrei algumas coisas relacionadas a este assunto no link abaixo.
Pode ser que ajude tbm..
http://solucoes4us.blogspot.com/2012/03/clonando-banco-de-dados-via-rman.html
Abraços…