【问题标题】:ORA-01653: unable to extend table by in tablespace ORA-06512ORA-01653: 无法在表空间中扩展表 ORA-06512
【发布时间】:2014-11-25 14:32:19
【问题描述】:

我尝试通过运行以下 sql 生成一些测试数据。

BEGIN    
  FOR i IN 1..8180 LOOP
    insert into SPEEDTEST
    select 'column1', 'column2', 'column3', 'column4', 'column5', 'column6', 'column7', 'column8', 'column9', 'column10', 'column11', 'column12', 'column13', 'column14', 'column15', 'column16', 'column17', 'column18', 'column19', 'column20', 'column21', 'column22', 'column23', 'column24', 'column25', 'column26', 'column27', 'column28', 'column29', 'column30', 'column31', 'column32', 'column33', 'column34', 'column35', 'column36', 'column37', 'column38', 'column39', 'column40', 'column41', 'column42', 'column43', 'column44', 'column45', 'column46', 'column47', 'column48', 'column49', 'column50', 'column51', 'column52', 'column53', 'column54', 'column55', 'column56', 'column57', 'column58', 'column59', 'column60', 'column61', 'column62', 'column63', 'column64', 'column65', 'column66', 'column67', 'column68', 'column69', 'column70', 'column71', 'column72', 'column73', 'column74', 'column75', 'column76', 'column77', 'column78', 'column79', 'column80', 'column81', 'column82', 'column83', 'column84', 'column85', 'column86', 'column87', 'column88', 'column89', 'column90', 'column91', 'column92', 'column93', 'column94', 'column95', 'column96', 'column97', 'column98', 'column99', 'column100', i from dual;
  END LOOP;
END;
/
commit;

它给了我以下错误:

ORA-01653: unable to extend table LEGAL.SPEEDTEST by 128 in tablespace LEGAL_DATA
ORA-06512: at line 4

这表明我的空间用完了,如何添加更多空间以及如何知道我需要多少空间? 128 代表什么?

【问题讨论】:

  • 代表字节。Oracle 使用表空间来存储数据。这是一个示例,您可以将数据文件添加到表空间ALTER TABLESPACE LEGAL_DATA ADD DATAFILE ‘/u01/oradata/ userdata03. dbf’ SIZE 200M; 确保将其转换到您的地址
  • 或调整现有数据文件的大小alter database datafile '<full_file_name>' resize <size>M;

标签: oracle tablespace


【解决方案1】:

只需为现有表空间添加一个新数据文件

ALTER TABLESPACE LEGAL_DATA ADD DATAFILE '/u01/oradata/userdata03.dbf' SIZE 200M;

要找出数据文件的位置和大小:

SELECT FILE_NAME, BYTES FROM DBA_DATA_FILES WHERE TABLESPACE_NAME = 'LEGAL_DATA';

【讨论】:

  • 空格是有意的吗?我根据需要调整了路径,但留下了空格,所以我最终得到:ALTER TABLESPACE SYSTEM ADD DATAFILE ‘/usr/lib/oracle/oradata/XE/ userdata03. dbf’ SIZE 200M; 我的文件系统中的文件有空格,但它认为这是错误的。但是,我无法重命名该文件,因为我无法使 SYSTEM 表空间脱机。
  • @phm 不,空格不是必需的,我认为 Oracles 会忽略它们。
  • 如果您想修复它们,您可以。关闭数据库(例如shutdown immediate);根据您的操作系统重命名文件;在挂载模式下重启(startup mount)并检查路径(Select rpad(name, 50) as Name from v$datafile;);只需重命名路径alter database rename file '<Full\Path\to\Source.DBF' to 'Full\Path\To\Destination.DBF';。现在您只需使用alter database open; 重新打开灯即可。 (如果它让人悲伤,你可能需要知道recover datafile 'Full\Path\To\Destination.DBF';
【解决方案2】:

您还可以使用以下命令为整个数据库打开自动扩展:

ALTER DATABASE DATAFILE 'C:\ORACLEXE\APP\ORACLE\ORADATA\XE\SYSTEM.DBF'
AUTOEXTEND ON NEXT 1M MAXSIZE 1024M;

只需将文件路径更改为指向您的 system.dbf 文件即可。

信用Here

【讨论】:

  • 确保在进行更改后重新启动数据库。
【解决方案3】:

要解决此错误:

ORA-01653 无法在表空间 your-tablespace-name 中将表扩展 1024

只需运行此PL/SQL 命令即可自动按需扩展表空间大小:

alter database datafile '<your-tablespace-name>.dbf' autoextend on maxsize unlimited;

我在导入大转储文件时收到此错误,只需运行此命令而不停止导入例程或重新启动数据库。

注意:每个数据文件的大小限制为 32GB,如果您需要超过 32GB,则应将新数据文件添加到现有表空间。

更多信息:alter_autoextend_on

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 2016-12-01
    • 2015-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多