Arquivo para fevereiro, 2009

Utilizando Resumable Space

terça-feira, fevereiro 10th, 2009

Olá, hoje iremos falar um pouco sobre um recurso do Oracle muito interessante para rotina de inserção dos dados. Resumable Space. O que fazer quando você tem que rodar uma grande carga DML e não correr o risco de perder tudo com o estouro de Tablespace?
Uma solução seria utilizar Resumable Space, que ao rodar um DML (Insert) com inserção de milhões de registros caso venha estourar a Tablespace, não ocorrerá problema de alocação de espaço(Tablespace). Com isso não finalizará sua sessão ocorrendo rollback, apenas irá travar em segundos esperando uma  ação do DBA.

Podemos ativar Resumable Space de duas formas:

1-Por Parametro do Banco resumable_timeout:
SQL> Alter system set resumable_timeout=900 scope=both;

2- Por Sessão inserindo o seguinte commando:

Para utilizar o commando abaixo é necessário privilégio RESUMABLE:

SQL> GRANT RESUMABLE TO NOME_DO_USUARIO;

SQL> Alter session enable resumable timeout 900;

Quando o usuario inserir o commando o DBA deve ficar atento monitorando com SQL e Enterprise Manager pois caso trave a rotina por estouro de Tablespace será necessário extender um datafile.Para monitoramento via SQL temos a seguinte view:
SQL> SELECT name, SQL_TEXT, STATUS, TIMEOUT FROM dba_resumable;

Poderá visualizar o problema de Alocação de Espaço em Tablespace utilizando RESUMABLE SPACE no arquivo ALERTLOG.
Exemplo:
statement in resumable session User HR(62), Session 131, Instance 1 was suspended due to
ORA-01653: não é possível estender a tabela HR.T_TESTE em 1024 no tablespace USERS.

Abraço

Bruno Murassaki

Alterando uma Tabela em um Banco de Dados Oracle

terça-feira, fevereiro 10th, 2009

Sei que para muitos pode ser básico este conceito, mas já vi muitos programadores com dúvidas. Por isso estarei postando sobre como alterar uma tabela em um Banco de Dados Oracle.

Em um Banco de Dados Oracle existem 2 caminhos para adicionar um Valor Default para uma coluna.

ALTER TABLE … ADD   E   ALTER TABLE … MODIFY

1)Declaração ALTER TABLE … ADD:
EXEMPLO:
SQL> ALTER TABLE table_name ADD column_name data_type DEFAULT default_value

Com essa declaração você pode adcionar uma coluna fornecendo um valor padrão para coluna.
Se você adicionar um valor default com este caminho(ALTER TABLE …ADD) o Banco de Dados Oracle
atualizará para cada linha na nova coluna o valor DEAFULT que você especificou.
E irá disparar triggers AFTER UPDATE definido na Tabela.

————————————————————————————————————

2)Declaração ALTER TABLE … MODIFY:
EXEMPLO:
SQL> ALTER TABLE table_name MODIFY column_name DEFAULT default_value

Com essa declaração você pode modificar um valor da coluna para um valor Default.
Mas semelhante ao ALTER TABLE…ADD, o MODIFY não atualizará todos os valores das colunas na tabela.
Subsequentemente irá inserir determinado valor default se nenhum valor é fornecido.

Abraço,

Bruno Murassaki