oracle重新生成system表空间,Oracle将system表空间的数据文件变小

selecttablespace_name,file_id, file_name, round(bytes/(1024 *1024 ),0 )total_space

fromdba_data_files

orderby tablespace_name;

TABLESPACE_NAME     FILE_ID     FILE_NAME                                                                       TOTAL_SPACE

SYSTEM                         1            D:\ORACLE\ORADATA\MYORACLE\MYORACLE\SYSTEM01.DBF     3930

UNDOTBS1                     2            D:\ORACLE\ORADATA\MYORACLE\MYORACLE\UNDOTBS01.DBF     250

SYSAUX                         3            D:\ORACLE\ORADATA\MYORACLE\MYORACLE\SYSAUX01.DBF      160

USERS                           4            D:\ORACLE\ORADATA\MYORACLE\MYORACLE\USERS01.DBF           5

当然得一样,如果不一样,那不逆天了。

3.下面我得想办法找回了,回来DBA最爱的命令行,sqlplus下

在回到sqlplus之前,我看看了,truncate这张表之后,system表空间的这个数据文件到底是用了多少空间,虽说屌丝的空间很重要,但是别个已经用了的你不能硬抢过来啊,更何况是system表空间呢,屌丝也不能不讲理吧。

来看看system表空间的数据文件实际用了多少:

select file_name, a.file_id, sum (a.bytes )/1024 /1024 as MB

from dba_extents a, dba_data_files b

where a.file_id= b.file_id

group by file_name, a.file_id;

FILE_NAME                                                                            FILE_ID     MB

D:\ORACLE\ORADATA\MYORACLE\MYORACLE\SYSTEM01.DBF     1     726.0625

D:\ORACLE\ORADATA\MYORACLE\MYORACLE\UNDOTBS01.DBF  2     247.9375

D:\ORACLE\ORADATA\MYORACLE\MYORACLE\SYSAUX01.DBF     3     144.0625

D:\ORACLE\ORADATA\MYORACLE\MYORACLE\USERS01.DBF       4     0.4375

还好,truncate了之后只用了726M了,这个勉强还是能够忍受。

回到sqlplus下,将这个system表空间的这个数据文件的大小重置

SQL> ALTER DATABASE DATAFILE 'D:\ORACLE\ORADATA\MYORACLE\MYORACLE\SYSTEM01.DBF'

RESIZE 1000;

ALTER DATABASE DATAFILE 'D:\ORACLE\ORADATA\MYORACLE\MYORACLE\SYSTEM01.DBF' RESIZ

E 1000

*

第 1 行出现错误:

ORA-03214: 指定的文件大小小于所需的最小值

SQL> ALTER DATABASE DATAFILE 1 RESIZE 3300;

ALTER DATABASE DATAFILE 1 RESIZE 3300

*

第 1 行出现错误:

ORA-03214: 指定的文件大小小于所需的最小值

--我戳,不能改小,正在我倍感失落的时候,一个想法冒了出来,是不是一定要shutdown一下才能将system表空间的数据文件由大改小呢,由大改更大肯定是没有问题的,我不试了。

关闭数据库,反正是自己的测试库,shutdwon不用打报告。

SQL> shutdown immediate;

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> startup

ORACLE 例程已经启动。

Total System Global Area  612368384 bytes

Fixed Size                  1292036 bytes

Variable Size             188745980 bytes

Database Buffers          415236096 bytes

Redo Buffers                7094272 bytes

数据库装载完毕。

数据库已经打开。

再试试:改为800M

SQL> ALTER DATABASE DATAFILE 1 RESIZE 800m;

数据库已更改。

上面的1就是我那个数据文件的file_id嘛,菜鸟都知道,空间也找回来了,直接进去数据文件所在的文件夹里面查看数据文件的大小,确实是800M,Oracle没有骗我。

再查查实际用了多少空间

select file_name, a.file_id, sum (a.bytes )/1024 /1024 as MB

from dba_extents a, dba_data_files b

where a.file_id= b.file_id

group by file_name, a.file_id;

FILE_NAME                                                                            FILE_ID     MB

D:\ORACLE\ORADATA\MYORACLE\MYORACLE\SYSTEM01.DBF     1     726.0625

D:\ORACLE\ORADATA\MYORACLE\MYORACLE\UNDOTBS01.DBF  2     247.9375

D:\ORACLE\ORADATA\MYORACLE\MYORACLE\SYSAUX01.DBF     3     144.0625

D:\ORACLE\ORADATA\MYORACLE\MYORACLE\USERS01.DBF       4     0.4375

很显然嘛,虽然屌丝给了我800M的空间,但是我实实在在只用了726啊!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值