terça-feira, 18 de janeiro de 2011
Habilitando o “archivelog” no Oracle RAC
O presente artigo apresenta os passos de como ativar o processo de "archivelog" no Oracle RAC, parte-se do pressuposto que já existe um "Disk Group" no ASM montado para alocação dos "archives".
1º) Alterar parâmetros de configuração no banco de dados:
Habilitar o parâmetro "log_archive_des_1" para indicar onde os "archives" serão armazenados
alter system set log_archive_dest_1='LOCATION=+DGARCH1/' scope=both sid='*' ;
Desabilitar o parâmetro "cluster_database".
alter system set cluster_database=FALSE scope=SPFILE;
2º) Baixar o banco de dados, usar:
srvctl stop database -d prd1
3º) Iniciar a instância num dos servidores,utilizar o modo "MOUNT".
startup mount
4º) Habilitar o "Archive Log".
alter database archivelog;
5º) Retornar o parâmetro "cluster_database" e baixar a instância, usar:
alter system set cluster_database=TRUE scope=SPFILE;
shutdown immediate;
6º) Levantar o banco de dados (todas as instâncias do RAC) e também os serviços do banco.
srvctl start database -d prd1
srvctl start service -d prd1
7º) Verificar configuração do banco de dados.
archive log list;
A partir desse passo o RAC já está em modo "archive log".
Não se esqueça de incluir as rotinas de backup para garantir a segurança do banco.
segunda-feira, 10 de janeiro de 2011
O que é o “Recyclebin” e como desabilitá-lo
O "RECYCLEBIN" é uma funcionalidade que permite recuperar o conteúdo de tabelas ou índices no banco de dados de maneira instântanea. Funciona como uma "lixeira" onde os dados podem ser armazenados e reutilizados conforme a necessidade.
Para tanto é necessário que esse dispositivo esteja habilitado para todo o banco de dados permitindo a utilização de todos os usuários.
Para tanto é necessário que esse dispositivo esteja habilitado para todo o banco de dados permitindo a utilização de todos os usuários.
O presente artigo apresentará os detalhes desta funcionalidade.
SQL> desc recyclebin
Name Null? Type
----------------------------------------- -------- ------------
OBJECT_NAME NOT NULL VARCHAR2(30)
ORIGINAL_NAME VARCHAR2(32)
OPERATION VARCHAR2(9)
TYPE VARCHAR2(25)
TS_NAME VARCHAR2(30)
CREATETIME VARCHAR2(19)
DROPTIME VARCHAR2(19)
DROPSCN NUMBER
PARTITION_NAME VARCHAR2(32)
CAN_UNDROP VARCHAR2(3)
CAN_PURGE VARCHAR2(3)
RELATED NOT NULL NUMBER
BASE_OBJECT NOT NULL NUMBER
PURGE_OBJECT NOT NULL NUMBER
SPACE NUMBER
A view "RECYCLEBIN" é um sinônimo público possui como base a view USER_RECYCLEBIN que por sua vez basea-se na tabela "SYS.RECYCLEBIN$".
Objetos relacionados ao "RECYCLEBIN":
SQL> SELECT SUBSTR(object_name,1,50),
object_type,owner
FROM dba_objects
WHERE object_name LIKE '%RECYCLEBIN%';
/
SUBSTR(OBJECT_NAME,1,50) OBJECT_TYPE OWNER
--------------------------- ------------------- ----------
RECYCLEBIN$ TABLE SYS
RECYCLEBIN$_OBJ INDEX SYS
RECYCLEBIN$_TS INDEX SYS
RECYCLEBIN$_OWNER INDEX SYS
USER_RECYCLEBIN VIEW SYS
USER_RECYCLEBIN SYNONYM PUBLIC
RECYCLEBIN SYNONYM PUBLIC
DBA_RECYCLEBIN VIEW SYS
DBA_RECYCLEBIN SYNONYM PUBLIC
9 rows selected.
object_type,owner
FROM dba_objects
WHERE object_name LIKE '%RECYCLEBIN%';
/
SUBSTR(OBJECT_NAME,1,50) OBJECT_TYPE OWNER
--------------------------- ------------------- ----------
RECYCLEBIN$ TABLE SYS
RECYCLEBIN$_OBJ INDEX SYS
RECYCLEBIN$_TS INDEX SYS
RECYCLEBIN$_OWNER INDEX SYS
USER_RECYCLEBIN VIEW SYS
USER_RECYCLEBIN SYNONYM PUBLIC
RECYCLEBIN SYNONYM PUBLIC
DBA_RECYCLEBIN VIEW SYS
DBA_RECYCLEBIN SYNONYM PUBLIC
9 rows selected.
O QUE É O "RECYCLEBIN"
O "RECYCLEBIN" é um contentor virtual onde ficam armazenados todos os objetos que foram removidos da base de dados. O objeto removido continua ocupando o mesmo espaço em que foram criados.
Por exemplo, se a tabela EMP foi criada na "tablespace" USERS, e a mesma são removidas o conteúdo permanece na "tablespace" USERS. A remoção de quaisquer objetos associados, tais como índices, "constraints", tabelas aninhadas (nested tables) e outros objetos dependentes não são removidos, eles são simplesmente renomeados com o prefixo "BIN$$".
O usuário poderá acessar os dados da tabela removida utilizando o "Flashback Query". Todos os usuários têm os mesmos direitos e privilégios em objetos que estão no "RECYCLEBIN". Podem-se visualizar as tabelas removidas consultando a "view" RECYCLEBIN. Os objetos permanecem na "lixeira" até que o dono "owner" dos objetos decida remover permanentemente, utilizando o comando PURGE.
Os objetos armazenados na "lixeira" são contabilizados nas quotas de cada usuário. Os objetos na "lixeira" serão automaticamente removidos se o usuário cria uma nova tabela ou acrescentam dados que faz com que a sua quota a seja ultrapassada.
Exemplos utilizando o "RECYCLEBIN"
USER is "BH"
SQL> SELECT object_name,original_name,operation,type,dropscn,droptime
2 FROM user_recyclebin
3 /
no rows selected
2 FROM user_recyclebin
3 /
no rows selected
SQL> CREATE TABLE t1(a NUMBER);
Table created.
Table created.
SQL> DROP TABLE t1;
Table dropped.
Table dropped.
SQL> SELECT object_name,original_name,operation,type,dropscn,droptime
2 FROM user_recyclebin
3 /
OBJECT_NAME ORIGINAL_NAME OPERATION TYPE DROPSCN DROPTIME
------------------------------ ---------------- -------------- ---------- -------------------
BIN$1Unhj5+DSHDgNAgAIKds8A==$0 T1 DROP TABLE 8.1832E+12 2004-03-10:11:03:49
SQL> sho user
USER is "SYS"
SQL> SELECT owner,original_name,operation,type
2 FROM dba_recyclebin
3 /
OWNER ORIGINAL_NAME OPERATION TYPE
------------------------------ ------------------------------ --------- ------
BH T1 DROP TABLE
Podemos também criar uma nova tabela com o mesmo nome neste momento.
Expurgando dados
Para remover completamente a tabela do banco de dados e liberar o espaço deve-se utilizar o comando PURGE.
Existem várias maneiras de expurgar os objetos, abaixo algumas variações:
Para o expurgo de um objeto, o dono (owner) ou usuário deverá ter o privilégio de SYSDBA ou um privilégio de sistema "DROP ANY..." para que o tipo de objeto a ser expurgado.
Desabilitanto o "RECYCLEBIN"
Pode também utilizar o comando "DROP" associado ao comando "PURGE" para remover uma tabela, conforme exemplo.
Usuário BH:
SQL> SELECT a.ksppinm, b.ksppstvl, b.ksppstdf
FROM x$ksppi a, x$ksppcv b
WHERE a.indx = b.indx
AND a.ksppinm like '%recycle%'
ORDER BY a.ksppinm
Parameter Value Default?
---------------------------- ---------------------------------------- --------
_recyclebin TRUE TRUE
Usuário BH:
SQL> CREATE TABLE t1(a NUMBER);
Table created.
SQL> DROP TABLE t1;
Table dropped.
SQL> SELECT original_name FROM user_recyclebin;
ORIGINAL_NAME
--------------
T1
Desabilitando o "RECYCLEBIN", usuário SYSDBA:
SQL> ALTER SYSTEM SET "_recyclebin"=FALSE SCOPE = BOTH;
System altered.
Para a versão 10gR1
Verificando os valores do parâmetro "RECYCLEBIN" após dos ajustes, usuário SYSDBA:
SQL> SELECT a.ksppinm, b.ksppstvl, b.ksppstdf
FROM x$ksppi a, x$ksppcv b
WHERE a.indx = b.indx
AND a.ksppinm like '%recycle%'
ORDER BY a.ksppinm
/
Parameter Value Default?
---------------------------- ---------------------------------------- --------
_recyclebin FALSE TRUE
Usuário BH:
SQL> CREATE TABLE t1(a NUMBER);
Table created.
SQL> DROP TABLE t1;
Table dropped.
SQL> SELECT original_name
FROM user_recyclebin;
no rows selected
A partir da versão 10gR2 o parâmetro "RECYCLEBIN" é inicializado como "ON".
Para desabilitar utilizar os procedimentos abaixo:
SQL> ALTER SESSION SET recyclebin = OFF;
SQL> ALTER SYSTEM SET recyclebin = OFF;
Rubens Oliveira
DBA Oracle Consultor
olivert.dba@consultant.com
2 FROM user_recyclebin
3 /
OBJECT_NAME ORIGINAL_NAME OPERATION TYPE DROPSCN DROPTIME
------------------------------ ---------------- -------------- ---------- -------------------
BIN$1Unhj5+DSHDgNAgAIKds8A==$0 T1 DROP TABLE 8.1832E+12 2004-03-10:11:03:49
SQL> sho user
USER is "SYS"
SQL> SELECT owner,original_name,operation,type
2 FROM dba_recyclebin
3 /
OWNER ORIGINAL_NAME OPERATION TYPE
------------------------------ ------------------------------ --------- ------
BH T1 DROP TABLE
Podemos também criar uma nova tabela com o mesmo nome neste momento.
Expurgando dados
Para remover completamente a tabela do banco de dados e liberar o espaço deve-se utilizar o comando PURGE.
Exemplo:
Usuário BH:
SQL> PURGE TABLE t1;
Table purged.
ou
SQL> PURGE TABLE "BIN$1UtrT/b1ScbgNAgAIKds8A==$0";
Table purged.
Usuário SYSDBA:
SQL> SELECT owner,original_name,operation,type
2 FROM dba_recyclebin
3 /
no rows selected
Usuário BH:
SQL> SHOW recyclebin
Usuário BH:
SQL> PURGE TABLE t1;
Table purged.
ou
SQL> PURGE TABLE "BIN$1UtrT/b1ScbgNAgAIKds8A==$0";
Table purged.
Usuário SYSDBA:
SQL> SELECT owner,original_name,operation,type
2 FROM dba_recyclebin
3 /
no rows selected
Usuário BH:
SQL> SHOW recyclebin
Existem várias maneiras de expurgar os objetos, abaixo algumas variações:
PURGE TABLE t1; | Expurga a tabela t1 |
PURGE INDEX ind1; | Expurga o índice ind1 |
PURGE recyclebin; | Expurga todos os objetos no "Recyclebin" |
PURGE dba_recyclebin; | Expurga todos os objetos /usar somente com usuários que possuam o privilégio "SYSDBA" |
PURGE TABLESPACE users; | Expurga todos os objetos de uma "tablespace" |
PURGE TABLESPACE users USER bh; | Expurga todos os objetos das tablespaces pertencentes ao usuário BH |
Para o expurgo de um objeto, o dono (owner) ou usuário deverá ter o privilégio de SYSDBA ou um privilégio de sistema "DROP ANY..." para que o tipo de objeto a ser expurgado.
Desabilitanto o "RECYCLEBIN"
Pode também utilizar o comando "DROP" associado ao comando "PURGE" para remover uma tabela, conforme exemplo.
Usuário BH:
SQL> DROP TABLE t1 PURGE;
Table dropped.
SQL> SELECT * FROM recyclebin;
no rows selected
Não é necessário utilizar o comando "PURGE".
Para desabilitar o "RECYCLEBIN" em versões anteriores ao Oracle 10gR2 o parâmetro "_recyclebin" deve ser configurado para FALSE, até esta versão este parâmetro não era documentado (undocumented parameter) e a partir da versão 10gR2 o parâmetro passou a ser documentado, tendo um outro mecanismo de desabilitação.
Abaixo a configuração para desabilitar o "RECYCLEBIN" antes e depois do 10gR2.
Para a versão 10gR1
Verificando os valores do parâmetro "RECYCLEBIN" antes dos ajustes, usuário SYSDBA:
SQL> SELECT * FROM recyclebin;
no rows selected
Não é necessário utilizar o comando "PURGE".
Para desabilitar o "RECYCLEBIN" em versões anteriores ao Oracle 10gR2 o parâmetro "_recyclebin" deve ser configurado para FALSE, até esta versão este parâmetro não era documentado (undocumented parameter) e a partir da versão 10gR2 o parâmetro passou a ser documentado, tendo um outro mecanismo de desabilitação.
Abaixo a configuração para desabilitar o "RECYCLEBIN" antes e depois do 10gR2.
Verificando os valores do parâmetro "RECYCLEBIN" antes dos ajustes, usuário SYSDBA:
SQL> SELECT a.ksppinm, b.ksppstvl, b.ksppstdf
FROM x$ksppi a, x$ksppcv b
WHERE a.indx = b.indx
AND a.ksppinm like '%recycle%'
ORDER BY a.ksppinm
/
Parameter Value Default?
---------------------------- ---------------------------------------- --------
_recyclebin TRUE TRUE
Usuário BH:
SQL> CREATE TABLE t1(a NUMBER);
Table created.
SQL> DROP TABLE t1;
Table dropped.
SQL> SELECT original_name FROM user_recyclebin;
ORIGINAL_NAME
--------------
T1
Desabilitando o "RECYCLEBIN", usuário SYSDBA:
SQL> ALTER SYSTEM SET "_recyclebin"=FALSE SCOPE = BOTH;
System altered.
Para a versão 10gR1
Verificando os valores do parâmetro "RECYCLEBIN" após dos ajustes, usuário SYSDBA:
SQL> SELECT a.ksppinm, b.ksppstvl, b.ksppstdf
FROM x$ksppi a, x$ksppcv b
WHERE a.indx = b.indx
AND a.ksppinm like '%recycle%'
ORDER BY a.ksppinm
/
Parameter Value Default?
---------------------------- ---------------------------------------- --------
_recyclebin FALSE TRUE
Usuário BH:
SQL> CREATE TABLE t1(a NUMBER);
Table created.
SQL> DROP TABLE t1;
Table dropped.
SQL> SELECT original_name
FROM user_recyclebin;
no rows selected
A partir da versão 10gR2 o parâmetro "RECYCLEBIN" é inicializado como "ON".
Para desabilitar utilizar os procedimentos abaixo:
SQL> ALTER SESSION SET recyclebin = OFF;
SQL> ALTER SYSTEM SET recyclebin = OFF;
Rubens Oliveira
DBA Oracle Consultor
olivert.dba@consultant.com
Assinar:
Postagens (Atom)