Utilizando Resumable Space
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