我有两个模式A
和B
。我正在尝试将表格复制B.users
到A
. 我已按照以下步骤操作:
在架构中运行B
:
GRANT ALL ON users TO A;
在架构中运行A
:
CREATE TABLE users AS (SELECT * FROM B.users);
这给出了错误:
SQL 错误:ORA-01536: 表空间 'A' 01536.00000 超出空间配额 - “表空间 '%s' 超出空间配额” *原因:表空间中段所有者的空间配额已用完,操作已尝试在表空间中创建一个新的段范围。*行动:要么删除表空间中不必要的对象以回收空间,要么让特权用户为段所有者增加该表空间的配额。
该错误似乎具有误导性,我怀疑这里还有其他问题,因为用户表只有大约 1000 个用户,并且有问题的表空间分配给它 2 GB,所有这些都是免费的。此外,尝试仅复制一行也会出现相同的错误:
CREATE TABLE users AS (SELECT * FROM B.users where rownum < 2);
但是,复制没有任何数据的模式会成功:
CREATE TABLE users AS (SELECT * FROM B.users where rownum = -1); /* This works */
我在这里错过了什么?
用户
A
必须在分配的表空间上用完配额(或者您可能忘记分配配额)。错误是自我描述的。它表明用户(段的所有者)的配额已超出。
要执行此命令,用户不需要配额,因为它只是创建一个空表,其定义将存储在数据字典中。
A
如下所示增加用户的配额。