Eu tenho dois esquemas A
e B
. Estou tentando copiar a tabela B.users
para A
. Eu segui estes passos:
Executar no esquema B
:
GRANT ALL ON users TO A;
Executar no esquema A
:
CREATE TABLE users AS (SELECT * FROM B.users);
Isso dá o erro:
Erro SQL: ORA-01536: cota de espaço excedida para tablespace 'A' 01536. 00000 - "cota de espaço excedida para tablespace '%s'" *Causa: A cota de espaço para o proprietário do segmento no tablespace foi esgotada e a operação foi tentada a criação de uma nova extensão de segmento no tablespace. *Ação: Elimine objetos desnecessários no espaço de tabela para recuperar espaço ou faça com que um usuário privilegiado aumente a cota neste espaço de tabela para o proprietário do segmento.
O erro parece ser enganoso e eu suspeito que algo mais seja o problema aqui, porque a tabela de usuários tem apenas cerca de 1000 usuários e o espaço de tabela em questão tem 2 GB alocados para ela, tudo isso de graça. Além disso, tentar copiar apenas uma única linha também dá o mesmo erro:
CREATE TABLE users AS (SELECT * FROM B.users where rownum < 2);
No entanto, a cópia do esquema sem nenhum dado é bem-sucedida:
CREATE TABLE users AS (SELECT * FROM B.users where rownum = -1); /* This works */
O que estou perdendo aqui?
O usuário
A
deve estar ficando sem cota (ou você pode ter esquecido de atribuir cota) no tablespace atribuído.O erro é autodescritivo. Está informando que a cota do usuário (proprietário do segmento) foi excedida.
Para executar este comando, o usuário não precisa de cota, pois simplesmente cria uma tabela vazia cuja definição será armazenada no dicionário de dados.
Aumente a cota para o usuário
A
conforme mostrado abaixo.