Oracle Enterprise Manager Cloud Control 12c – conceitos e arquitetura

Para quem ainda tem dúvidas sobre a arquitetura do EM12C, se migra ou não migra ou se ele é bom o suficiente.

Li um artigo do Victor Armbrust (@varmbrust) na imasters que pode esclarecer muitas de suas dúvidas !!!

Oracle Enterprise Manager – conceitos e arquitetura

Meus dois centavos !!

Kenia Milene

Seguir @keniamilene

Instalação de Client Oracle 11g Com o Componente ODP Para FrameWork 4.0

Saudações Terráqueos !!!!!

Eis que você esta tranquila, sorridente, saltitante  feliz da vida trabalhando, quando chega aquele pedido escabroso:

Preciso que seja feita a instalação do Oracle Client 11g. Até ai tudo bem …. Eis que a alma privilegiada solta: “Mas eu migrei pra Framework 4.0, sendo assim preciso que seja instalado o ODP para 4.0”. Começa ai o inferno !!!!!

Baixei o client do site da Oracle, baixei o ODP, fiz a instalação padrão e NADA !!!!!  O cliente diz que a aplicação não conecta no banco. Depois de muito apanhar, entendi que ao instalar o ODP, ele cria uma nova estrutura de diretórios.

Isso quer dizer que vc tem que replicar o TNSNAMES.ORA, SQLNET.ORA e LDAP.ORA para o …/Network/Admin do client, Vejam abaixo os passos de como fazer todo esse processo sem precisar arrancar os cabelos rs….

Instalação do Client

1 – Dentro da pasta de instalação do Client Oracle executar o SETUP e escolha a opção “Personalizado“

1

2 – Deixe apenas o idioma em ingles

2

3 – Ao especificar um caminho para o Oracle base mantenha da seguinte forma:
D:\oracle\base

Automaticamente vai alterar o caminho da instalação, caso contrario, altere para o caminho abaixo. Muita atenção no ultimo diretório (client_1)
D:\oracle\base\product\11.2.0\client_1

3

4 – Nesse questionamento, marque “SIM” e prossiga:

4

5 – Marque as opções que aparece abaixo:

5

Perceba que será instalado o Oracle Data Provider para .Net, porém essa versão atende até a versão 3.5 do Framework. Não se esqueça de selecionar.

Analisar o Resumo clique em “Finalizar”, o mesmo vai iniciar a instalação:

6

6 – Após a instalação abrirá uma janela de “Assistente de Configuração Oracle Net” Pode cancelar o mesmo e fechar a instalação do Client:

Instalação do Componente

7 – Dentro da pasta de instalação do Client ODAC executar o SETUP

7

8 – Selecione Data Access Components para  Oracle Client

8

9 – Ao especificar um caminho para o Oracle base mantenha da seguinte forma:
D:\oracle\base

Automaticamente vai alterar o caminho da instalação, caso contrario, altere para o caminho abaixo. Muita atenção no ultimo diretório (client_2), pois acima já foi instalado o cliente_1. Sendo assim podemos entender que será criado uma nova arvore de diretórios de cliente para o novo componente.
D:\oracle\base\product\11.2.0\client_2

9

10 – Na tela de componentes, não altere, clique em “próximo

10

11 – Apenas clique em “próximo” que a instalação dará inicio

11

12 – Analisar o Resumo clique em “Instalar”, o mesmo vai iniciar a instalação:

12

12a

13 – Ao termino da instalação clique em “SAIR”

13

Cópia dos Arquivos de Conexão com o Banco de Dados

14 – Copie os arquivos LDAP.ORA, SQLNET.ORA e se necessário TNSNAMES.ORA no caminho abaixo, sendo que deve-se copiar para as 2 arvores de diretórios: cliente_1 e cliente_2:

Exemplo:

D:\oracle\product\11.2.0\client_1\network\admin
D:\oracle\product\11.2.0\client_2\network\admin

14

Configuração das Variavéis de Ambiente

15 – Clique com o botão direto no Meu Computador, opção “Propriedades” e clique em “Configurações Avançadas de Sistema”:

15

16 – Clique no último botão da Aba Avançado “Variáveis de Ambiente”   e no retângulo abaixo, “Variáveis de sistema”, selecione a linha “Path” e clique em “Editar”:

16

Atenção esse ponto é importante:

Após a instalação do cliente provavelmente a última variável Path será a da instalação do componente:   D:\oracle\base\product\11.2.0\client_2

Recorte o caminho da instalação do componente inteiro do “D:” ao “bin;” e copie no final de toda a linha do campo “Valor da variável” (adicione um ; antes) e pressione “OK” e OK” novamente para sair da opção de variável de ambiente:

16a

17 – Após o termino da instalação e configuração do Client e Componente, deve-se efetuar um teste de conexão com o SQLPLUS:

17

User-name: <USERNAME>@<instance>

Password: xxxxxx

18

Configuração do Componente

18 – Algumas aplicações tem em seu Home a DLL do Oracle Data Access, porém versão 2. É necessário fazer a troca pelo componente versão 4.
Crie um diretório e mova a versão antiga para o mesmo

19

19 – Copie a nova versão que esta no caminho abaixo, para o diretório da aplicação. Verifique com a equipe web o caminho. Por ex:

19a

20 – Certifique-se de que a versão copiada é mesmo a versão 4, clicando no componente com o botão direito e opção “Propriedades”:

20

Recicle na Aplicação

21 – Para finalizar o processo é necessário fazer um recicle na aplicação para que ela possa ler o novo componente. Para isso use o IIS para fazer um Recicle na aplicação:

21

Espero que tenha ajudado…

Meus 2 centavos !!!

Kenia Milene

Scripts Úteis Para o Dia a Dia no Oracle (CANIVETE SUIÇO)

Ola Galera,

Bom pra quem é dba sabe que não se vive sem aqueles scripts que nos auxiliam no dia a dia, afinal não é todo mundo que tem toad ou alguma ferramenta gráfica por perto ou mesmo homologado pela empresa.

Então .. La vai um pequeno canivete suíço para lidar com o oracle.

VARIAVEIS DE AMBIENTE

CONN SYSTEM@INSTANCIA
SPOOL C:\LOGS

SET ECHO ON
SET TIMING ON
SET LINES 1000
SET SQLBL ON

ALTER SESSION SET NLS_DATE_FORMAT = ‘DD/MM/YYYY HH24:MI:SS’;
SELECT SYSDATE FROM DUAL;
SHOW USER

— VERIFICA INSTANCIA

SELECT * FROM GLOBAL_NAME;

DUMP

— VERIFICAR QUAIS SÃO OS USUÁRIOS DO SISTEMA

SELECT USERNAME FROM DBA_USERS
WHERE USERNAME LIKE ‘USER%‘;

— CONTA OBJETOS DO SCHEMA

SELECT COUNT(OBJECT_TYPE), OBJECT_TYPE
FROM DBA_OBJECTS
WHERE OWNER LIKE ‘USER%
GROUP BY OBJECT_TYPE;
SPOOL OFF

— NO TERMINAL LINUX

$export ORACLE_SID=INSTANCE

$exp system@INSTANCE BUFFER=1000000 FILE=EXP_INSTANCE_USER_DATA.DMP LOG=EXP_INSTANCE_USER_DATA.LOG OWNER=USUÁRIOS LISTADOS CONSISTENT=Y

gzip EXP_INSTANCE_USER_DATA*

DESATIVAÇÃO DE UM SCHEMA

— VERIFICAR SE TEM ALGUM USUÁRIO USANDO O SISTEMA

SELECT SADDR, SID, USERNAME, LOGON_TIME, STATUS, OSUSER, MACHINE, PROGRAM
FROM V$SESSION
WHERE USERNAME LIKE ‘USER%‘;

— VERIFICAR QUAIS SÃO OS USUÁRIOS DO SISTEMA

SELECT USERNAME FROM DBA_USERS
WHERE USERNAME LIKE ‘USER%‘;

— VERIFICA ATRIBUTOS DO USUÁRIO

SELECT * FROM DBA_USERS
WHERE USERNAME LIKE ‘USER%‘;
SELECT * FROM DBA_TAB_PRIVS
WHERE GRANTOR LIKE ‘USER%‘;

— VERIFICA PREVILEGIOS DO USUÁRIO

SELECT * FROM DBA_SYS_PRIVS
WHERE GRANTEE LIKE ‘USER%‘;
SELECT * FROM DBA_ROLE_PRIVS
WHERE GRANTEE LIKE ‘USER%‘;

— CONTA OBJETOS DO SCHEMA

SELECT COUNT(OBJECT_TYPE), OBJECT_TYPE
FROM DBA_OBJECTS
WHERE OWNER LIKE LIKE ‘USER%
GROUP BY OBJECT_TYPE;

— DESATIVA USUÁRIO

ALTER USER USER ACCOUNT LOCK;
ALTER USER USER PASSWORD EXPIRE;

— VERIFICA STATUS DA CONTA

SELECT USERNAME, ACCOUNT_STATUS FROM DBA_USERS
WHERE USERNAME LIKE ‘USER%’;
SPOOL OFF

DESATIVAÇÃO DE UMA INSTANCIA

— VERIFICAR SE TEM ALGUM USUÁRIO USANDO O SISTEMA

SELECT SADDR, SID, USERNAME, LOGON_TIME, STATUS,
OSUSER, MACHINE, PROGRAM
FROM V$SESSION;

— VERIFICAR QUAIS SÃO OS USUÁRIOS DO SISTEMA

SELECT USERNAME FROM DBA_USERS ;

— VERIFICA ATRIBUTOS DO USUÁRIO

SELECT * FROM DBA_USERS;

SELECT * FROM DBA_TAB_PRIVS;

— VERIFICA PREVILEGIOS DO USUÁRIO

SELECT * FROM DBA_SYS_PRIVS;

— VERIFICA PREVILEGIOS DE ROLE

SELECT * FROM DBA_ROLE_PRIVS;

— CONTA OBJETOS DO SCHEMA

SELECT COUNT(OBJECT_TYPE), OBJECT_TYPE
FROM DBA_OBJECTS
GROUP BY OBJECT_TYPE;

— NO TERMINAL

EXPORT ORACLE_SID=INSTANCE

SQLPLUS / AS SYSDBA

SQL> SHUTDOWN IMMEDIATE;

EXECUÇÃO DE SCRIPT

— VERIFICAR QUAIS SÃO OS USUÁRIOS DO SISTEMA

SELECT USERNAME FROM DBA_USERS
WHERE USERNAME
LIKE ‘USER%;

— VERIFICA SE O OBJETOS JÁ EXISTE

SELECT OWNER, OBJECT_NAME, OBJECT_TYPE,
CREATED, LAST_DDL_TIME, STATUS
FROM ALL_OBJECTS
WHERE OWNER LIKE ‘USER%
AND OBJECT_NAME = ‘OBJECT_NAME’;

— CONTA OBJETOS DO SCHEMA

SELECT COUNT(OBJECT_TYPE), OBJECT_TYPE
FROM DBA_OBJECTS
WHERE OWNER LIKE ‘USER%
GROUP BY OBJECT_TYPE;

— CONTA OBJETOS INVALIDOS

SELECT COUNT (*)
FROM DBA_OBJECTS
WHERE STATUS=’INVALID’
AND OWNER LIKE ‘USER%‘;

— VERIFICA OBJETOS INVALIDOS

SELECT OBJECT_TYPE, OBJECT_NAME, STATUS
FROM DBA_OBJECTS
WHERE STATUS=’INVALID’
AND OWNER LIKE ‘USER%‘;

— EXECUTA O SCRIPT

CONN USER@INSTANCE

@C:\CAMINHO\SCRIPT.SQL

CONN SYSTEM@INSTANCE

— VERIFICA SE O OBJETOS JÁ EXISTE

SELECT OWNER, OBJECT_NAME, OBJECT_TYPE,
CREATED, LAST_DDL_TIME, STATUS
FROM ALL_OBJECTS
WHERE OWNER LIKE ‘USER%
AND OBJECT_NAME = ‘OBJECT_NAME’;
SELECT * FROM DBA_TAB_PRIVS
WHERE GRANTOR LIKE ‘USER%’;

— CONTA OBJETOS DO SCHEMA

SELECT COUNT(OBJECT_TYPE), OBJECT_TYPE
FROM DBA_OBJECTS
WHERE OWNER LIKE ‘USER%
GROUP BY OBJECT_TYPE;

— CONTA OBJETOS INVALIDOS

SELECT COUNT (*)
FROM DBA_OBJECTS
WHERE STATUS=’INVALID’
AND OWNER LIKE ‘USER%‘;

— VERIFICA OBJETOS INVALIDOS

SELECT OBJECT_TYPE, OBJECT_NAME, STATUS
FROM DBA_OBJECTS
WHERE STATUS=’INVALID’
AND OWNER LIKE ‘USER%‘;

— GERA SCRIPTS DOS OBJETOS INVALIDOS

SELECT ‘ALTER’||’ ‘|| OBJECT_TYPE ||’ ‘||OWNER ||’.’|| OBJECT_NAME || ‘ COMPILE;’
FROM DBA_OBJECTS
WHERE STATUS=’INVALID’
AND OWNER LIKE ‘USER%‘;

— VERIFICA OBJETOS INVALIDOS

SELECT OBJECT_NAME, OBJECT_TYPE, STATUS
FROM DBA_OBJECTS
WHERE STATUS=’INVALID’
AND OWNER LIKE ‘USER%‘;
SPOOL OFF

CRIACAO DE USUÁRIO

— VERIFICAR SE EXISTE ESSE USUÁRIO NO SISTEMA

SELECT USERNAME FROM DBA_USERS
WHERE USERNAME LIKE ‘USER%‘;

— CRIAR A TABLESPACE PARA O USUÁRIO

CREATE TABLESPACE INSTANCE_SCHEMA_01
DATAFILE ‘CAMINHO/INSTANCE_SCHEMA.DBF’ SIZE 64M
AUTOEXTEND ON NEXT 1M
SEGMENT SPACE MANAGEMENT AUTO;

— VERIFICA SE TEM ALGUMA ROLE PARA ESSE USUÁRIO

SELECT * FROM DBA_ROLES WHERE ROLE LIKE ‘%USER%‘;

SELECT * FROM DBA_SYS_PRIVS WHERE LIKE ‘%USER%‘;

SELECT * FROM DBA_TAB_PRIVS WHERE LIKE ‘%USER%‘;

— CRIAR O USUÁRIO

CREATE USER USER
IDENTIFIED BY ‘SENHA
DEFAULT TABLESPACE INSTANCE_SCHEMA_01
TEMPORARY TABLESPACE TEMP;

— APLICA GRANT

GRANT RESOURCE, CONNECT TO USER;

— VERIFICAR SE O USUÁRIO FOI CRIADO

SELECT * FROM DBA_USERS
WHERE USERNAME LIKE ‘USER%‘;

— VERIFICA ROLES DO USUARIO CRIADO

SELECT * FROM DBA_SYS_PRIVS
WHERE GRANTEE LIKE ‘USER%‘;
SELECT * FROM DBA_ROLE_PRIVS
WHERE GRANTEE LIKE ‘USER%‘;

ALTERAR SENHA

— VERIFICAR OS USUÁRIOS DO SISTEMA

SELECT * FROM DBA_USERS
WHERE USERNAME LIKE ‘USER%‘;

— ALTERA A SENHA

ALTER USER USER IDENTIFIED BY ‘SENHA‘;

— VERIFICAR OS USUÁRIOS DO SISTEMA

SELECT * FROM DBA_USERS
WHERE USERNAME LIKE ‘USER%‘;
SPOOL OFF

E era isso ai pessoal, espero que seja útil !!
Se alguém tiver mais algum script bacana só postar lá nos comentários !!

Abraços
Kenia Milene

Procedimento de Instalação do Oracle 9i (9.2.0.7.0) no Red Hat Linux Enterprise AS4

Pois é minha gente …. já estamos no 11G mas temos muitas bases de produção em 9i, e o que fazemos em um caso de crash do servidor onde temos que reinstalar sistema operacional, banco .. TUDO !!!!!!
Como diria o poeta Carlos Drummond de Andrade:

“ E agora, José?

A festa acabou,

a luz apagou,

o povo sumiu,

a noite esfriou,

e agora, José?

e agora, Você? …”

Agora amiguinho senta la na frente do servidor e mão na massa !!!!

Bom .. o Marcos Camargo – DBA Oracle me enviou um procedimento de instalação do Oracle 9i no Red Hat Enterprise (Case dele) que acho bacana publicar, afinal …. pode ser útil !!!!

01. Instalar o RedHat AS4 no servidor

Configuração de Hardware:

– ITAUTEC 1140S
– P4 2.8 (Ghz 200 x 14.0)
– RAM 512 MB
– BIOS 925 x/XENEO w705311cv1.7b

Verificar qual o tipo de Sistema Operacional

# uname –a
# rpm -qa –queryformat “%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n” | sort

02. Instalar os Componentes de SO Requeridos

Verificar a “Nota 303859.1 – Requirements for Installing Oracle 9iR2 on RHEL 4”

2.1. Minimum Software Requirement

Componentes de SO requeridos

– compat-db-4.1.25-9
– compat-gcc-32-3.2.3-47.3

– compat-gcc-32-c++-3.2.3-47.3

– compat-oracle-rhel4-1.0-3

– compat-libcwait-2.0-1
– compat-libgcc-296-2.96-132.7.2

– compat-libstdc++-296-2.96-132.7.2

– compat-libstdc++-33-3.2.3-47.3
– gcc-3.4.3-9.EL4
– gcc-c++-3.4.3-9.EL4

– gnome-libs-1.4.1.2.90-44
– gnome-libs-devel-1.4.1.2.90-44
– libaio-devel-0.3.102-1

– libaio-0.3.102-1

– make-3.80-5

– openmotif21-2.1.30-11

– xorg-x11-deprecated-libs-devel-6.8.1-23.EL
– xorg-x11-deprecated-libs-6.8.1-23.EL

Baixar o “Patch 4198954 – COMPATIBILITY PACKAGES FOR ORACLE ON RHEL 4”

– Descompactar e executar:

# unzip p4198954_40_LINUX.zip
# rpm -ihv compat-oracle-rhel4-1.0-5.i386.rpm
# rpm -ihv compat-libcwait-2.1-1.i386.rpm

Depois de instalar o Patch 4198954, alguns erros podem ocorrer no Shutdown e Startup do servidor.

2.2. Environment

Variável de configuração requerida

# export LD_ASSUME_KERNEL=2.4.19(.bash_profile do oracle)

Verificar os parâmetros dos semáforos
# cat /etc/sysctl.conf

Alterar as configurações do kernel em /etc/sysctl.conf

#nome do host completo !!
kernel.hostname = yourhost.yourdomain.com

#nome correto do domínio !!
kernel.domainname = yourdomain

fs.file-max = 327679

Semáforos requeridos do kernel:

# echo 100 > semmni
# echo 256 > semmns
# echo 100 > semopm
# echo 100 > semmsl
# echo 100 > shmmni
# echo 2097152 > shmall
# echo 2147483648 > shmmax

Para ativar as novas configurações

# sysctl -p

O comando deve mostrar o nome do host completo

# hostname
hostname.domainname

Os seguintes ajustes do ambiente são requeridos para o usuário do Unix que executa a instalação (por exemplo oracle)

# umask
0022

# echo $LD_ASSUME_KERNEL
2.4.19

Se algum pacote de Java estiver instalado no sistema, desconfigure todas as variáveis de ambiente de Java (por exemplo JAVA_HOME).

O usuário do Unix que executa a instalação (por exemplo oracle) não deve mandar o Oracle instalar as variáveis relacionadas ajustadas pelo defeito. Por exemplo, ajustando ORACLE_HOME, o PATH, LD_LIBRARY_PATH para incluir binários do Oracle em .profile , .bash_profile , .log na lima e /etc/profile.d devem completamente ser evitados.

Mover a biblioteca e alterar o path

# mv /usr/lib/libcwait.so /lib/libcwait.so

# cat /etc/ld.so.preload
/usr/lib/libcwait.so (*** Alterar esta linha para /lib/libcwait.so )

# vi /etc/ld.so.preload

Depois da alteração, o arquivo deverá mostrar:

# cat /etc/ld.so.preload
/lib/libcwait.so

Adicionar os parametros de semáforos

# cd /proc/sys/kernel

echo 100 32000 100 100 > sem
echo 2147483648 > shmmax
echo 4096 > shmmni
echo 2097152 > shmall
echo 65536 > /proc/sys/fs/file-max

ulimit -n 65536

echo 1024 65000 > /proc/sys/net/ipv4/ip_local_port_range

ulimit -u 16384

Executar o comando para ativar estas novas configurações

# sysctl -p

03. Criar diretórios

# mkdir /ora9i

04. Copiar as mídias para o diretório

# cp /media/cdrom/ship_9204_linux_disk1.cpio.gz /ora9i/
# cp /media/cdrom/ship_9204_linux_disk2.cpio.gz /ora9i/
# cp /media/cdrom/ship_9204_linux_disk3.cpio.gz /ora9i/

05. Criar os usuários e grupos necessários para instalação e administração do Banco

# groupadd dba
# groupadd oinstall
# groupadd oper
# useradd -c DBA -g oinstall -G dba oracle

Isto irá criar o user “oracle” com o grupo primário “oinstall” e secundário “dba”

06. Criar os diretórios do Oracle para instalação

# mkdir /u01 /u02
# chown oracle.dba /u01 /u02
# chmod 755 /u01 /u02

07. Criar uma senha para o usuário “oracle”

# passwd oracle

New UNIX password:
Retype new UNIX password:

08. Criar as variáveis de ambiente para o user oracle

# su – oracle

$ pwd
/home/oracle

$ ls –la

Editar .bash_profile e incluir as seguintes abaixo

$ vi .bash_profile
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/9.2.0.7.0

*** muda conforme o banco a ser criado ***
ORACLE_SID=prd

PATH=$PATH:$ORACLE_HOME/bin
LD_ASSUME_KERNEL=2.4.19
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/bin:$ORACLE_HOME/network/lib

export PATH ORACLE_BASE ORACLE_HOME ORACLE_SID
export LD_LIBRARY_PATH LD_ASSUME_KERNEL

09. Alterar o owner/grupo Recursivamente dos diretórios

# chown -R oracle.oinstall /ora9i
# chown -R oracle.oinstall /Download_Oracle9i

10. As Mídias

Descompactar as mídias em /ora9i como usuário oracle

$ gunzip ship_9204_linux_disk1.cpio.gz
$ gunzip ship_9204_linux_disk2.cpio.gz
$ gunzip ship_9204_linux_disk3.cpio.gz

queimar as mídias

$ cpio -idmv < ship_9204_linux_disk1.cpio
$ cpio -idmv < ship_9204_linux_disk2.cpio
$ cpio -idmv < ship_9204_linux_disk3.cpio

11. Executar a instalação com Oracle Universal Installer

** DESATIVE A TECLA NUM LOCK, SENÃO A INSTALAÇÃO FICA TRAVADA !!! ***
Essa foi uma indicação do suporte da Oracle !!!

** Por problemas causados pelo o dicionário de dados Oracle, o export/import não funciona corretamente. Deve-se instalar, atualizar e depois criar os bancos desejados. ***

$ cd /ora9i/Disk1
$ ll

$ ./runInstaller

Quando for solicitado, abrir outra janela e logar com root.

$ su – root
login:

Como root:

# cd /u01/app/oracle/product/9.2.0.7.0
# ./root.sh

12. Aplicar o patchset 9.2.0.7

$ mkdir /ora9i/patch_set_9207

Copiar do CD01 o arquivo p4163445_9207_LINUX.zip

$ cd /ora9i/patch_set_9207
$ unzip p4163445_9207_LINUX.zip
$ cd disk1

Selecionar o OraHome

$ ./runInstaller

Executar numa janela em separado

$ root.sh

13. Dicas úteis

* character set.: WE8ISO8859P1

* diretório_base: /u01/app/oracle/product/9.2.0.7.0

* grupo unix….: oinstall

* database file.: /u01/app/oracle/oradata

* ativar console:

$ cd $ORACLE_HOME/bin
$ oemapp console

* Verificar a configuração do listener.ora

* para ativar/desativar via dbstart/dbshut

* Comentar no sqlnet.ora

### SQLNET.AUTHENTICATION_SERVICES= (NTS) ### SR.6242748.993 – 08/04/2007 ###

É é isso ai pessoal ..

Marcos, Obrigado por contribuir com o Blog, e as duvidas que o pessoal postar fique a vontade pra responder !!!!

Kenia Milene

Backup Oracle com Recovery Manager (RMAN)

Bom um assunto bastante delicado é backup …
Qualquer DBA que se preze faz backup né minha gente …..
Existem algumas formas de backup, como dump por exemplo, mas nesse caso vou falar um pouco do RMAN acho que pode ajudar galerinha ai ….

Bem antes de tudo é necessário colocar o banco em archivelog, senão nada acontece !!!!:

1 – Baixe o banco
shutdown immediate

2 – Suba o banco em mount
startup mount

3 – Ative o arquive log
Alter database archivelog;

4 – Suba o Banco
Alter database open;

5 – Verifique o status com:
archive log list

Agora o próximo passo é criar o catalogo. O catalogo é uma espécie de índice que vai armazenar as informações dos backup executados

6 – Inicie o serviço do banco como sys e crie o usuário RMAN. Esse é o usuário utilizado para o gerenciamento do backup.
sqlplus “sys/oracle@BANCO as sysdba”
create user rman identified by rman;
alter user rman default tablespace sysaux temporary tablespace temp;
alter user rman quota unlimited on sysaux;
grant connect, resource, recovery_catalog_owner to rman;

7 – É necessário também criar o schema CATALOG para armazenar o catalogo. No prompt:
rman catalog rman/rman@BANCO
create catalog tablespace sysaux;
exit;

8 – O próximo passo é registrar o banco no catalogo ja criado
rman catalog rman/rman@BANCO target sys/oracle@BANCO
register database;
exit;

9 – Conecte no catalogo para dar andamento nos outros procedimentos. No prompt ….
rman target sys/oracle@BANCO
connect catalog rman/rman@BANCO

10 – O próximo passo é configurar o paralelismo, ou seja, em quantos discos será gerado o backup (nesse caso 4 discos).
Report schema;
Configure device type disk parallelism 4;

10 – Na cópia indique o caminho onde serão gerados os discos, e o nome de cada um. (Lembrando que o diretório deve existir)
copy
datafile 1 TO ‘u01/oracle/product/10.2.0/rman/DISK1.DBF’,
datafile 2 TO ‘
u01/oracle/product/10.2.0/rman/DISK2.DBF’,
datafile 3 TO ‘
u01/oracle/product/10.2.0/rman/DISK3.DBF’,
datafile 4 TO ‘
u01/oracle/product/10.2.0/rman/DISK4.DBF’;

10 – Verifique se a cópia foi executada com sucesso
List copy;
Exit;

Espero que possa ajudar
Kenia Milene

Recuperar Tablespace no Oracle

Outro dia ai eu postei como recuperar controfile.
Mas pode acontecer de termos problemas com a tablespace também.
Sendo assim segue como recuperar uma tablespace ….

1 – Tirar a supervisao da tablespaces

alter tablespace users offline

2 – Copie a tablespace do backup para a oradata

3 – Faça a recuperacao da tablespace logicamente

recover tablespace users

vai ser sugerido o o proximo arquive log de onde ele parou apartir do controfile.

4 – Coloque a tablespace no ar novamente.

alter tablespace users online;

5 – Faca um count para conferencia

select count(*) from scott.x;

Espero que seja útil

Kenia Milene

Export de Alguns Registros de Uma Tabela Oracle

Essa é muito boa … e útil …

Imagina que você tenha aquela tabelinha bem pequena de uns 24 milhões de registros e ai eis que aquele ser iluminado pede o seguinte:

Preciso que seja exportado SOMENTE OS REGISTROS DE MAI/2007 e que seja importado em outra tabela …

Aeeeeee agora eu quero ver … exportar somente X quantidade de registros de uma tabela????

Isso pode ser feito de 2 formas:

1 – Chama o Chuck Norris e pede pra ele olhar feio pra tabela e dizer: “Registros de mai/2007 já pra fora !!!!!”

2 – Se não funcionar você pode usar o comando export com uma clausula WHERE.

[oracle@host ~]$ export user/senha@banco contraints=y indexes=y
grants=y tables=’oracle.grandetabela’ query=”WHERE dat LIKE “mai/2007”” file=export.dmp

Essa salvou o dia hein !!!!

Kenia Milene

Recuperar Controfile no Oracle

Esse post é dedicado a todo que já tiveram um controfile corrompido e suaram frio como eu …

Quando um controfile é perdido ou corrompido, para o desespero do peão não é possível subir o banco sem ele e você terá a triste visão do erro ORA-00205 error in identifying control file, check alert log for more info.

O que fazer ??? pedir ajuda ai RMAN e restaurar o backup????
Bem pode ser, mas existe uma outra maneira menos desastrosa do que restore

1 – Abra o arquivo de alerta no BDUMP, por exemplo do alert_dbauxlog

2 – Procure a linha que contenha controfile

‘C:\Oracle\Product\10.0.1\oradata\DNAUX\control01.CTL’
ORA-27041: Unable to open file

3 – Nesse caso o controfile problemático é o número 1, faça uma copia do 2 e renomeie para 1

4 – Suba o banco

Viu …. não doeu nada ….
Boa Sorte
Kenia Milene

Verificar Objetos Invalidos no Banco Oracle

Imagina a cena:

Um ser iluminado de um desenvolvedor liga e pede que você crie e execute uma package no banco.através de um santo script.

Eis que depois da execução o cara cisma que N objetos ficaram inválidos. E agora ??? como provar que estava inválidos antes do procedimento????

Eis que uma amiga minha uma heroína chamada Vilma Moreira tinha um script para evitar esse tipo de problema, ele verifica objetos inválidos no banco.

spool y:\execute\OBJETOS_INVALIDOS_ANTES.lst
set head off echo off feed off array 2
select ‘Global Name : ‘||global_name
from global_name
union
select ‘SysDate : ‘||to_char(sysdate, ‘Month dd, yyyy’)
from dual
union
select ‘SysTime : ‘||to_char(sysdate, ‘hh24:mi:ss’)
from dual
union
select ‘Username : ‘||username
from user_users
/

set head on feed on pages 100 lines 120
select * from all_objects

where status <> ‘VALID’;

spool off

Execute esse script antes do procedimento que o desenvolvedor pediu, mude o nome para INVALIDOS_DEPOIS e execute novamente, ai então você pode comparar os objetos inválidos antes e depois.

Espero que seja útil como foi pra minha amiga Vilma (Amiga essa que me ajudou muito la na empresa). Obrigada por tudo viu Vilma.

Kenia Milene

Volumetria de Banco Oracle

Uma bela tarde de sol se via da janela da empresa .. os passarinhos pipiuavam em seus ninhos tranquilamente e felizes quando derrepente toca o ramal:
”Boa Tarde, preciso da Volumetria do Banco de Produção pra ONTEM”

Tudo estava tão tranqüilo não é mesmo????

Bem … eu podia ter queimado a “muffa”, mas como o tempo era levemente curto, apelei para os amigos de trabalho. Eis que lá no 6º andar uma santa alma chamado Eduardo Tomazini tinha exatamente o que eu precisava…..

Obrigada a toda equipe da IBM …. aprendi muito com vocês !!!!!!

— Tamanho de Cada Tabela

SELECT owner, tablespace_name, segment_name,
round(sum(bytes/1024/1024),2) as Tamanho_MB –, extents as Num_extents
FROM dba_segments
WHERE owner = ‘SCOTT’
AND segment_type = ‘TABLE’
— AND segment_name like ‘DEPT%’
GROUP BY owner, tablespace_name, segment_name

— Tamanho das Tabelas Por Usuário

SELECT owner, round(sum(bytes/1024/1024),2) as Tamanho_MB –, extents as Num_extents
FROM dba_segments
GROUP BY owner

— Tamanho Total das Tabelas

SELECT round(sum(bytes/1024/1024),2) as Tamanho_MB –, extents as Num_extents
FROM dba_segments

— % de Uso das TableSpaces

SELECT a.TABLESPACE_NAME “TableSpace Name”,
round(a.BYTES/1024/1024) “MB Allocated”,
round((a.BYTES-nvl(b.BYTES, 0)) / 1024 / 1024) “MB Used”,
nvl(round(b.BYTES / 1024 / 1024), 0) “MB Free”,
round(((a.BYTES-nvl(b.BYTES, 0))/a.BYTES)*100,2) “Pct Used”,
round((1-((a.BYTES-nvl(b.BYTES,0))/a.BYTES))*100,2) “Pct Free”
FROM (SELECT TABLESPACE_NAME,
sum(BYTES) BYTES
FROM dba_data_files
GROUP BY TABLESPACE_NAME) a,
(SELECT TABLESPACE_NAME,
sum(BYTES) BYTES
FROM sys.dba_free_space
GROUP BY TABLESPACE_NAME) b
WHERE a.TABLESPACE_NAME = b.TABLESPACE_NAME (+)
ORDER BY ((a.BYTES-b.BYTES)/a.BYTES);

Kenia Milene