通过更改表空间加载大型 csv 文件

Loading large csv file by altering tablespace

我正在笔记本电脑上的 Oracle 中加载一个大型 csv 文件(>1.5G)。并且出现了一些错误,说 "ORA-01653: table SYSTEM.CTS can't pass 1024 (in tablespace SYSTEM ) extend."

我知道我可以使用如下代码修复它:

alter tablespace SYSTEM add datafile 'XXX' size 2000m;

我的问题是:

(1) XXX 在我的代码中应该是什么?我正在使用 sqlldr 加载文件,这是我的 ctl 文件:

LOAD DATA INFILE 'C:\...cts.csv'
APPEND
INTO TABLE cts
FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
   Tdate,
   Symbol,
   Topen,
   Thigh,
   Tlow,
   Tclose,
   Tvolume
)

(2)请问2000m的大小够吗?

您可以通过添加另一个数据文件来增加 SYSTEM 表空间。在 'XXX' 的位置应该是新数据文件的位置,例如:

alter tablespace SYSTEM add datafile 'C:\oracle\OracleHome\oradata\orcl\extra_system.dbf' size 2000m;

我认为 2000 米对于一个 1.5G 的文件来说足够了,但考虑到它是 SYSTEM 表空间,您可能想在其中多放一些。

顺便说一下,将您自己的数据放在单独的表空间中而不是 SYSTEM 中可能是明智的。通过这种方式,您可以为 SYSTEM 和您的个人应用程序拥有单独的数据文件,这意味着您可以更轻松地将自己的东西移动到更大的硬盘驱动器,或备份它们。这也更加安全和易于管理,因为您不必使用可以更改 SYSTEM 表空间的用户。

编辑:数据文件是 Oracle 用来存储其数据的文件。数据库中的所有数据都将存储在这些类型的文件中,在 Oracle 安装目录中(通常)。您可以使用以下查询查看当前 SYSTEM 数据文件的名称:

SELECT  FILE_NAME, BLOCKS, TABLESPACE_NAME
FROM DBA_DATA_FILES
WHERE TABLESPACE_NAME = 'SYSTEM';