Páginas

terça-feira, 29 de janeiro de 2013

Arquivo de parâmetros do Oracle


Hoje vamos falar um pouco sobre o arquivo de parâmetros do Oracle.

PFILE - É o arquivo de parâmetros em formato texto, editável através de um editor de texto. Ele é estático e qualquer alteração realizada deve-se parar e iniciar novamente o banco de dados para que as configurações possam fazer efeito.
SPFILE - É um arquivo binário e seu conteúdo não pode ser editado. As alterações devem ser feitas pelo comando ALTER SYSTEM.

O Oracle prefere o uso de um SPFILE a um PFILE. Quando você iniciar o seu banco de dados, o Oracle irá analisar o conteúdo de seu diretório parâmetro ($ORACLE_HOME/database em Windows ou Linux no diretório $ORACLE_HOME/dbs), buscando, na seguinte ordem:

* SpfileSID.ora

* Spfile.ora

* InitSID.ora

* Init.ora

Se o diretório não conter nenhuma das opções acima, então a inicialização irá falhar.

Caso isso ocorra, você pode criar um PFILE a partir dos parâmetros do arquivo alert.log e indicar ao oracle no momento da inicialização a localização do pfile:

SQL> startup pfile=<<caminho_pfile>>/<<nome_pfile>>

Após isso cria-se um spfile a partir do pfile criado:

SQL> create SPFILE from PFILE;
ou
SQL> create SPFILE from PFILE='<<caminho>>/<<nome_pfile>>';
ou
SQL> create SPFILE='<<caminho>>/<<nome_spfile>>' from PFILE=='<<caminho>>/<<nome_pfile>>';

Após isso deve-se dar shutdown na instância e inicializá-la novamente para que o banco de dados suba utilizando o spfile criado.

O ideal é sempre ter um backup do SPFILE em um PFILE, utilize o comando abaixo para criar um backup:

SQL> create PFILE='<<caminho>>/nome_pfile>>' from SPFILE;

Por hoje é só, até a próxima.

terça-feira, 6 de novembro de 2012

TABELAS READ ONLY


Olá, hoje vamos falar de uma nova funcionalidade do 11G, colocar uma tabela no modo read only.

A partir do Oracle 11G release 1 o estado de uma tabela pode ser alterado de read write para read only com o comando ALTER TABLE.

Abaixo uma demonstração dessa nova funcionalidade:

SQL> CREATE TABLE TESTE(
  2  CODIGO NUMBER);

Tabela criada.

SQL> INSERT INTO TESTE
  2  VALUES(1);

1 linha criada.

SQL> SELECT TABLE_NAME,READ_ONLY FROM USER_TABLES WHERE TABLE_NAME = 'TESTE';

TABLE_NAME                     REA
------------------------------ ---
TESTE                          NO

SQL> ALTER TABLE TESTE READ ONLY;

Tabela alterada.

SQL> SELECT TABLE_NAME,READ_ONLY FROM USER_TABLES WHERE TABLE_NAME = 'TESTE';

TABLE_NAME                     REA
------------------------------ ---
TESTE                          YES

SQL> DELETE TESTE;
DELETE TESTE
       *
ERRO na linha 1:
ORA-12081: operação de atualização não permitida na tabela "ISABELE"."TESTE"


SQL> TRUNCATE TABLE TESTE;
TRUNCATE TABLE TESTE
               *
ERRO na linha 1:
ORA-12081: operação de atualização não permitida na tabela "ISABELE"."TESTE"


SQL> UPDATE TESTE
  2  SET CODIGO = 2;
UPDATE TESTE
       *
ERRO na linha 1:
ORA-12081: operação de atualização não permitida na tabela "ISABELE"."TESTE"


SQL> INSERT INTO TESTE
  2  VALUES(2);
INSERT INTO TESTE
            *
ERRO na linha 1:
ORA-12081: operação de atualização não permitida na tabela "ISABELE"."TESTE"


SQL> ALTER TABLE TESTE READ WRITE;

Tabela alterada.

SQL>  INSERT INTO TESTE
  2   VALUES(2);

1 linha criada.

SQL> COMMIT;

Commit concluído.

Qualquer comando DML e DDL(Truncate) não irá funcionar enquanto a tabela estiver no modo READ ONLY. Comandos merge e select for update também não serão permitidos.
Uma ótima forma de restringuir o acesso a uma tabela específica.

Um abraço e até o próximo post.


Fonte:http://eduardolegatti.blogspot.com.br/2008/06/read-only-table-abordando-uma-nova.html

quarta-feira, 15 de agosto de 2012

RESIZE UNDO TABLESPACE


Olá Pessoal,

Hoje vou compartilhar com vocês uma experiência, onde tive que realizar a recriação de uma tablespace de undo.
O datafile da tablespace foi colocado UNLIMITED, ou seja, chegou a 32GB e ao tentar fazer o resize ocorria o ORA-3297 erro: arquivo contém dados usados além do valor de RESIZE solicitado, então tive que criar uma nova tablespace e eliminar a antiga.

Segue o passo a passo realizado:

1- Criar uma nova tablespace de UNDO:

CREATE UNDO TABLESPACE UNDOTBS2 DATAFILE '/u01/oradata/orcl/undotbs2_01.dbf'
SIZE 2048M;

2- Definir a nova tablespace criada como default do banco de dados:

OBS:Podemos ter várias tablespaces de undo criadas, mas apenas 1 delas pode ser a default do banco.

ALTER SYSTEM SET UNDO_TABLESPACE=UNDOTBS2 SCOPE=BOTH;

As novas transações vão utilizar a nova tablespace de undo, depois de um tempo(você deve esperar no mínimo o tempo do parâmetro UNDO_RETENTION).

3- Eliminar a tablespace de UNDO antiga ou realizar o resize:

DROP TABLESPACE UNDOTBS1 INCLUDING CONTENTS AND DATAFILES;

OU

ALTER DATABASE DATAFILE '/u01/oradata/orcl/undotbs1_01.dbf' RESIZE 1M;

Por hoje é só, até o próximo post.

segunda-feira, 13 de agosto de 2012

ADD DATAFILE FAILOVER


Esta semana precisei aidiconar um datafile em um banco de dados que tem espelhamento, como está de forma
manual tive que adiconar manualmente no standby.

Depois de adicionado no primário:
adicionei o datafile '/oradata/bdprod/data24.dbf';
Fui até o secundário e:

-- copiei os ultimos archives gerados no primário para o secundário.
-- montei o banco de dados secundário.


scp xxxxx.arc 199.999.999.999:/aaa/bbb/ccc/arch/

-- startup mount

depois:

-- recover stanby database;

escolhi a opção AUTO

esperei gerar o erro em que ele não acha o datafile adicionado.

-- depois de feita a verificação dos archives,
-- fiz a consulta para ver onde estava o DBF simbólico criado automaticamente.

-- select name from v$datafile

/aa/bbb/ccc/UNNAMED00044

-- troquei o nome arquivo para o arquivo adicionado no primário:

alter database
create datafile '/xxx/xxxx/xxx/xxxx/xxxx/xxx/UNNAMED00044' as '/oradata/bdprod/data24.dbf';


executei novamente o recover, para me certificar q não iria dar o erro ao procurar o datafile.


shutdown immediate

('.') Everaldo Ferreira - DBA

Comandos básicos VI Solaris


Pessoal segue uma pequena lista de comandos que ajudam bastante na hora de editar um arquivo no Solaris.

ESC x -> apaga caracter atual
ESC X -> apaga caracter anterior
ESC h -> esquerda
ESC l -> direita
ESC k -> cima
ESC j -> baixo
dd ----> remove linha
ESC i -> entra no modo editável do vi, similar ao INSERT (Linux)
ESC a -> insere após o caracter atual
ESC A -> final da linha
SHIFT A -> vai para o próximo campo vazio na linha, similar ao ESC a.

('.') Everaldo Ferreira - DBA

Deployee Agent 12c GRID


Instalando agent para monitoração no grid 12c

1- baixar o agent
2- disponibilizar no servidor alvo, descompactar o arquivo:
12.1.0.1.0_AgentSoftware_23.zip

- vá até o diretório archives, descompactar os arquivos:
12.1.0.1.0_AgentCore_23.zip
agentcoreimage.zip


3- Editar o arquivo agent.rsp, com seguintes parametros.

4- Dentro do oracle_home, criar diretorio, OMSagent

OMS_HOST= servidor onde está o grid
EM_UPLOAD_PORT=4900
AGENT_REGISTRATION_PASSWORD= senha do sysman do grid
AGENT_INSTANCE_HOME="ORACLE_HOME"/OMSagent
AGENT_PORT=porta para comunicação com agente do OMS_HOST
b_startAgent=true
ORACLE_HOSTNAME= nome do servidor onde está sendo instalado o agent, colocar dominio
s_agentHomeName=agent_home
 
5-  executar: (exemplo)

./agentDeploy.sh AGENT_BASE_DIR=/oracle/prdbd/10.2.0.5/ RESPONSE_FILE=/oracle/prdbd/10.2.0.5/OMSagent/agent.rsp

-- se ocorrer o erro abaixo:

-e
 ERROR: OMS_HOST cannot be null. Pass OMS_HOST value either as command-line arguments or in response file.

executar, passando os parametros separados por espaço conforme abaixo. alterar a senha do sysman na variável AGENT_REGISTRATION_PASSWORD

Estes são obrigatórios


./agentDeploy.sh AGENT_BASE_DIR=/oracle/prdbd/10.2.0.5/ OMS_HOST=serverbd EM_UPLOAD_PORT=4900 AGENT_REGISTRATION_PASSWORD=******** AGENT_PORT=3872 b_startAgent=true ORACLE_HOSTNAME=serverbd.local s_agentHomeName=agent_home


('.') Everaldo Ferreira - DBA

Reiniciando EXADATA


Aloo pessoal olha a hora!!!

DESABILITAR O START AUTOMATICO DO CRS, isso é porque ele irá tentar subir automaticamente uma vez q o serviço fique indisponível.

Conectar no servidor via Putty – ssh –   servidor    servidorprd

CARREGAR O PROFILE DO ASM-GRID
. oraenv

+ASM1

-- Testar se o comando decli esta conectando nos  servidores

dcli -g /opt/oracle.SupportTools/onecommand/dbs_group -l root date

-- Executar o comando para realizar o disable do crs

dcli -g /opt/oracle.SupportTools/onecommand/dbs_group -l root /u01/app/11.2.0.2/grid/bin/crsctl disable crs

servidorprd1: CRS-4622: Oracle High Availability Services autostart is disabled.
servidorprd2: CRS-4622: Oracle High Availability Services autostart is disabled.
servidorprd3: CRS-4622: Oracle High Availability Services autostart is disabled.
servidorprd4: CRS-4622: Oracle High Availability Services autostart is disabled.

-- PARAR DBFS –  filesystem

crsctl stop resource dbfs_scorp

-- utilizando USUARIO ORACLE

parar todas as bases de dados

. oraenv

srvctl stop database -d xyz -o immediate


-- Conectar no servidor como ROOT

-- parar o cluster

crsctl stop cluster -ALL

dcli -g /opt/oracle.SupportTools/onecommand/dbs_group -l crsctl stop crs

-- desligar o dbservers - poweroff

dcli -g /opt/oracle.SupportTools/onecommand/dbs_group -l root init 0

-- desligar celulas de armazenamento (storage)

-- celula1

ssh xx.x.xx.xxx

-- testar a conexão das células

dcli -g cell_group -l root date

-- comando para desligar

dcli -g cell_group -l root init 0



                                             Reiniciando o Ambiente



ligar as células fisicamente (dedão mesmo no power)

Aguardar...

-- VIA PUTTY NA CELULA 1

-- TESTAR A CONEXAO DAS CELULAS

dcli -g cell_group -l root date

-- TESTAR TODAS AS CELULAS

dcli -g cell_group -l root /etc/init.d/celld status
servercel01: rsStatus:             running
servercel01: msStatus:             running
servercel01: cellsrvStatus:        running
servercel02: rsStatus:             running
servercel02: msStatus:             running
servercel02: cellsrvStatus:        running
servercel03: rsStatus:             running
servercel03: msStatus:             running
servercel03: cellsrvStatus:        running
servercel04: rsStatus:             running
servercel04: msStatus:             running
servercel04: cellsrvStatus:        running
servercel05: rsStatus:             running
servercel05: msStatus:             running
servercel05: cellsrvStatus:        running



REINICIAR OS SERVIDORES DE BANCO
. oraenv
+ASM1

1.    crsctl start cluster -ALL
2.    dcli -g /opt/oracle.SupportTools/onecommand/dbs_group -l crsctl start crs
3.    dcli -g /opt/oracle.SupportTools/onecommand/dbs_group -l root /u01/app/11.2.0.2/grid/bin/crsctl enable crs



-- com USUARIO ORACLE
subir os bancos de dados

. oraenv

srvctl start database -d xyz


No final para subir o NFS, tem q reconectar como root

INICIAR O  DBFS
. oraenv
+ASM1

crsctl start resource dbfs_scorp

('.') Everaldo Ferreira - DBA