先说下自己遇到的问题:

自己是在生成百万级的模拟数据时报的如下这个错误:

ORA-12801: 并行查询服务器 P005 中发出错误信号
ORA-01652: 无法通过 128 (在表空间 TEMP 中) 扩展 temp 段

其实这个就是表空间不足导致的,可以通过如下方法查看自己临时表空间的状态

-- 查询临时表空间状态:
select tablespace_name,file_name,bytes/1024/1024 file_size,autoextensible from dba_temp_files;

-- 查询默认临时表空间:
select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE';

附所有非临时表空间的状态查询办法:

select t.TABLESPACE_NAME, 
--表空间名 
t.FILE_NAME, 
--文件名 
t.AUTOEXTENSIBLE, 
--是否自动扩展 
t.BYTES / 1024 / 1024, 
--表空间初始大小 
t.MAXBYTES / 1024 / 1024,
 --表空间最大扩展到多少 
b.CONTENTS, 
--表空间类型 
b.EXTENT_MANAGEMENT 
--表空间管理模式 
from dba_data_files t, dba_tablespaces b where t.TABLESPACE_NAME = b.TABLESPACE_NAME

有三种解决方案

1、增到临时表空间的大小

如果自己只是在常规的操作,不像我这样突然需要很大的空间可以按照以下操作:

-- 调整临时表空间大小
alter database tempfile 'D:\APP\PEANUT\ORADATA\ORCL\TEMP01.DBF' resize 1000m;

2、设置临时表空间大小自增长(当然最大不能超过单文件的极限大小32GB)

-- 设置临时表空间大小自增
alter database tempfile 'D:\APP\PEANUT\ORADATA\ORCL\TEMP01.DBF' autoextend on maxsize unlimited;

3、如果以上操作还是不能满足你的要求那就只能新增临时文件了

-- 添加临时文件
ALTER TABLESPACE TEMP ADD  TEMPFILE 'D:\APP\PEANUT\ORADATA\ORCL\TEMP02.DBF' SIZE 500M AUTOEXTEND ON MAXSIZE UNLIMITED;

附:我顺便也直接把我的数据表空间设置成了自增长

-- 设置表空间大小为自增长
alter database datafile 'D:\APP\PEANUT\ORADATA\ORCL\LAWCASE.DBF' autoextend on maxsize unlimited;

注意事项:

我一开始是登录的表空间中设置临时/数据表空间的大小但是一直是不起作用,最后我是登录的system用户执行了之后才起的作用

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐