解决表空间不足问题
如果有数据库有多个实例的情况下,要确认该这个是否我们要操作的实例
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; --注意大小写,要不然有时候出现莫名其妙的问题