解决表空间不足问题
如果有数据库有多个实例的情况下,要确认该这个是否我们要操作的实例
show parameter instance_name;
set ORACLE_SID=xxx; --注意大小写,要不然有时候出现莫名其妙的问题
window下:
sqlplus /nolog
conn as sysdba ;--成功后
LINUX下:
首先,要切换创建Oracle数据库的用户或该授权用户下,
如:
su - oracle #一定要注意 '-'
sqlplus /nolog
conn as sysdba ;--成功后
以上操作基本区别, 进去命令行后,以下操作基本一致,
Oracle数据库的表空间表相关的数据文件、表空间使用情况和表空间表分别是:
dba_data_files dba_free_space dba_tablespaces
不重复造轮子,从其他地方copy
select a.tablespace_name "表空间名称",
100 - round((nvl(b.bytes_free, 0) / a.bytes_alloc) * 100, 2) "占用率(%)",
round(a.bytes_alloc / 1024 / 1024, 2) "容量(M)",
round(nvl(b.bytes_free, 0) / 1024 / 1024, 2) "空闲(M)",
round((a.bytes_alloc - nvl(b.bytes_free, 0)) / 1024 / 1024, 2) "使用(M)",
to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') "采样时间"
from (select f.tablespace_name,
sum(f.bytes) bytes_alloc,
sum(decode(f.autoextensible, 'YES', f.maxbytes, 'NO', f.bytes)) maxbytes
from dba_data_files f
group by tablespace_name) a,
(select f.tablespace_name, sum(f.bytes) bytes_free
from dba_free_space f
group by tablespace_name) b
where a.tablespace_name = b.tablespace_name
order by 2 desc;
2、扩大表空间文件(初始化为1G,并每次以512M的空间增长到10G)
ALTER TABLESPACE 201408_END ADD DATAFILE
'E:\ORADATA\extraAdd\xxxx.DBF' SIZE 1G
AUTOEXTEND ON NEXT 512M MAXSIZE 10G;
--如LINUX系统中,可以这样
ALTER TABLESPACE 201408_END ADD DATAFILE
'/app/ORADATA/extraAdd/xxxx' SIZE 1G
AUTOEXTEND ON NEXT 512M MAXSIZE 10G;
--注意一下 Oracle 用大写
顺便说一下,创建表空间,完了。
create TABLESPACE 201408_END DATAFILE
'E:\ORADATA\extraAdd\Dxxx' SIZE 1g
AUTOEXTEND ON NEXT 512M MAXSIZE 10g;
--注意大小写,要不然有时候出现莫名其妙的问题