帮朋友问个ORACLE 9的问题,由于表空间不足,有个应用程序将一个30G的数据文件里的内容删掉一部分,在EnterPrise Manager已经显示已用空间9G,但就用程序再写数据进去时,已经写不进去了,停止在那里,不知是否需压缩或修复,请高手详细说一下步骤!
解决方案 »
- oracle数据库执行update语句时弹出Execution time
- 一个关于查询的小问题
- 求一条sql语句,符合结果立即结贴,在线等 急
- 求Oracle高级复制相关资料(急)
- 在bat文件中 執行 從一個數據庫 導出數據 然后導入另一個數據庫 怎么寫??????????????
- Oracle提示:TNS:没有监听器
- oracle 全文检索的查询问题
- WIN2000下的oracle 9.2 server 安装后不能进行EXP,IMP,提示“协议适配器错误”!!!
- 8.1.6中创建用户
- 为什么没有diagnostic pack和tuning pack?
- Oracle10g 如何个用户分配只读权限
- 数据库查询 有没有更好的查询语句
剩余空间大小
select tablespace_name, sum(nvl(bytes,0))/1024/1024 free from dba_free_space where
tablespace_name='USERS' group by tablespace_name查看我的表空间大小及所剩空间大小!
col tablespace_name format a10;
select f.tablespace_name,a.total,u.used,f.free,round((u.used/a.total)*100) "% used", round((f.free/a.total)*100) "% Free" from (select tablespace_name, sum(bytes/(1024*1024)) total from dba_data_files group by tablespace_name) a, (select tablespace_name, round(sum(bytes/(1024*1024))) used from dba_extents group by tablespace_name) u, (select tablespace_name, round(sum(bytes/(1024*1024))) free from dba_free_space group by tablespace_name) f WHERE a.tablespace_name = f.tablespace_name and a.tablespace_name = u.tablespace_name;2.写不进去了,报了什么错误?
提问请看此帖:http://topic.csdn.net/u/20080424/18/927ed2fa-38b0-42fd-bd18-631afed615b6.html
select sum(bytes)/(1024*1024) as free_space,tablespace_name
from dba_free_space
group by tablespace_name;
SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED, C.BYTES FREE,
(B.BYTES*100)/A.BYTES "% USED",(C.BYTES*100)/A.BYTES "% FREE"
FROM SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE C
WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.TABLESPACE_NAME=C.TABLESPACE_NAME; 查询表空间使用情况
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)",
Largest "最大扩展段(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,
(select round(max(ff.length)*16/1024,2) Largest,
ts.name tablespace_name
from sys.fet$ ff, sys.file$ tf,sys.ts$ ts
where ts.ts#=ff.ts# and ff.file#=tf.relfile# and ts.ts#=tf.ts#
group by ts.name, tf.blocks) c
where a.tablespace_name = b.tablespace_name and a.tablespace_name = c.tablespace_name
结果为2,不知什么意思?
后面没加分号
不过现在有个问题,.ORA文件不能压缩,.DBF就可以,究竟怎么回事?
别人写的软件,可以操作ORACLE数据库,已建立几个表空间数据文件(*.ORA),软件可以进行写数据、删除数据,
现在情况是:
有以下表空间ABC_MR_DATA,包含数据文件:
ABC_MR1ORCL.ORA,
ABC_MR2ORCL.ORA,
ABC_MR3ORCL.ORA,
ABC_MR4ORCL.ORA,
ABC_MR5ORCL.ORA
每个数据文件分配2G空间,总共是10G当数据文件快达到10G时,软件写数据会提示表空间已满,打开企业管理器发现已用空间是9.9G左右于是增加数据文件的空间至每个30G,总共是150G
但当软件写数据至一半时进度条停止了,呈死机状态,打开企业管理器发现已用空间才50G左右,
究竟为何写不进去了呢?当用alter database datafile 'd:\oracle9\ABC_MR1ORCL.ORA' resize 50000m
发现resize不能设置为小于50000m(50G)
那么既然数据已经被软件删除,为何还不让压缩呢?怎样删除这些被删除的数据?