oracle 表空间不足解决办法
问题:在对某一表空间进行新建表的时候,出现ora-01658的错误。
create 语句:
create table OA_ORGCONFIG
(
OAOC_UNID INTEGER not null,
OAOC_UUID VARCHAR2(32) not null,
OAOC_CDATE DATE,
OAOC_UDATE DATE,
OAOC_CUSR VARCHAR2(32),
OAOC_REMARK VARCHAR2(2000),
OAOC_STATUS VARCHAR2(10),
OAOC_ORGUUID VARCHAR2(2000),
OAOC_ORGNAME VARCHAR2(2000),
OAOC_CONFIGXML CLOB
)
tablespace YWGOV
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 128k
next 128k
minextents 1
maxextents unlimited
);
问题分析:
问题初步判断是因为表空间大小不够才造成在建表或则其他需要占用表空间大小的时候报错,包括建立索引等操作。
首先,我们先分析我们对应的表空间大小有多少:
1、查看表空间总大小SQL:select tablespace_name,sum(bytes)/1024/1024 from dba_data_files group by tablespace_name;
2、查看表空间已使用大小及分配情况:
select SEGMENT_TYPE,owner,sum(bytes)/1024/1024 from dba_segments where tablespace_name='YWGOV' group by segment_type,owner
3、准备增加表空间大小:
查看表空间路径:select * from dba_data_files
增加表空间大小:alter tablespace YWGOV add datafile 'D:\Oracle\PRODUCT\10.2.0\ORADATA\DBF\YWGOV1.ora' size 10M
(这里注意我们在创建表空间的时候采用的是dbf格式的文件,但是修改表空间采用的是ora,原理不懂,先mark等后续学习)
select tablespace_name,sum(bytes)/1024/1024 from dba_data_files group by tablespace_name;
alter tablespace users add datafile 'D:\app\Administrator\oradata\dev\USERS02.DBF' size 29536m;
经过上诉处理,查看表空间大小,确实增大,并且能够支持create table的操作。
select count(1) from user_objects where object_type = 'PROCEDURE'
select count(1) from user_objects where object_type = 'INDEX'
select count(1) from user_objects where object_type = 'VIEW'
select count(1) from user_objects where object_type = 'SEQUENCE'
查询表空间路径:
select * from dba_data_files