oracle的maxsize,maxsize与autoextend on

SQL> select file_name,bytes,maxbytes

2 from dba_data_files

3 where

tablespace_name='TEST_1';

FILE_NAME BYTES MAXBYTES

-------------------------------------- ---------- ----------

F:\TEST1.ORA 10485760 0

SQL> select

file_name,bytes,maxbytes,autoextensible

2 from dba_data_files

3 where

tablespace_name='TEST_1';

FILE_NAME BYTES MAXBYTES AUT

-------------------------------------- ---------- ----------

---

F:\TEST1.ORA 10485760 0 NO

当缺省autoextend on(off)参数的时候默认值为

no,即不自动扩展

SQL> drop tablespace test_1 including

contents and datafiles;

我们再在create tablespace里指定autoextend off

SQL> create tablespace test_1

2 datafile 'f:\test1.ora' size

5m

3 autoextend off

4 segment space management

auto;

表空间已创建。

SQL> select

file_name,bytes,maxbytes,autoextensible

2 from dba_data_files

3 where

tablespace_name='TEST_1';

FILE_NAME BYTES MAXBYTES AUT

-------------------------------------- ---------- ----------

---

F:\TEST1.ORA 5242880 0 NO

此时数据文件也不自动扩展,同样也没有最大值maxbytes

我们将datafile resize下看autoextend及maxbytes

SQL> alter database datafile 'f:\test1.ora'

resize 6m;

数据库已更改。

SQL> select

file_name,bytes,maxbytes,autoextensible

2 from dba_data_files

3 where

tablespace_name='TEST_1';

FILE_NAME BYTES MAXBYTES AUT

-------------------------------------- ---------- ----------

---

F:\TEST1.ORA 6291456 0 NO

然后我们改变autoextend为on,但是不指定具体的maxbytes

SQL> alter database datafile 'f:\test1.ora'

autoextend on;

数据库已更改。

SQL> select

file_name,bytes,maxbytes,autoextensible

2 from dba_data_files

3 where

tablespace_name='TEST_1';

FILE_NAME BYTES MAXBYTES AUT

-------------------------------------- ---------- ----------

---

F:\TEST1.ORA 6291456 3.4360E+10 YES

可见目前maxbytes已经有了值,但是因为没有指定值,因而系统给了一个默认值

我们再来给maxbytes指定一个值

SQL> alter database datafile 'f:\test1.ora'

autoextend on maxsize 10m;

数据库已更改。

SQL> select

file_name,bytes,maxbytes,autoextensible

2 from dba_data_files

3 where

tablespace_name='TEST_1';

FILE_NAME BYTES MAXBYTES AUT

-------------------------------------- ---------- ----------

---

F:\TEST1.ORA 6291456 10485760 YES

可以看到maxbytes已经为我们指定的值,这就说明maxbytes是与autoextend

on 相关的

SQL> alter database datafile 'f:\test1.ora'

autoextend off maxsize 10m;

alter database datafile 'f:\test1.ora' autoextend off maxsize

10m

*

ERROR 位于第 1 行:

ORA-00900: 无效 SQL 语句

当同时指定autoextend off与maxsize

的时候就会出错

我们再来试一下

SQL> alter database datafile 'f:\test1.ora'

autoextend off;

数据库已更改。

SQL> select

file_name,bytes,maxbytes,autoextensible

2 from dba_data_files

3 where

tablespace_name='TEST_1';

FILE_NAME BYTES MAXBYTES AUT

-------------------------------------- ---------- ----------

---

F:\TEST1.ORA 6291456 0 NO

当改变autoextend值为off的时候maxsize的值又归为0

再看resize与maxsize

SQL> create tablespace test1

2 datafile 'f:\test1.ora' size

2m

3 autoextend on maxsize

4m

4 segment space management

auto;

SQL> select

file_name,bytes,maxbytes,autoextensible

2 from dba_data_files

3 where

tablespace_name='TEST1';

FILE_NAME BYTES MAXBYTES AUT

-------------------------------------- ---------- ----------

---

F:\TEST1.ORA 2097152 4194304 YES

SQL> alter database datafile 'f:\test1.ora'

resize 6m;

数据库已更改。

这说明我们可以手动更改datafile的大小在maxbytes的范围外,只有自动扩展的时候maxbytes起作用,手动修改了size的大小,在存储数据时可以超过maxbytes的限制

SQL> select

file_name,maxbytes/1024/1024 max_m,bytes/1024/1024 byte_m

from dba_data_files

where tablespace_name='TEST1';

FILE_NAME MAX_M BYTE_M

-------------------------------------- ---------- ----------

F:\TEST1.ORA 4 6

这个size的大小已经超出了maxsize限定的范围,我们再来看看在表空间test1里唯一的表的大小

SQL> select segment_name

,sum(bytes)/1024/1024 byte_m

2 from user_extents

3 where

segment_name='TEST1_1'

4 group by

segment_name;

SEGMENT_NAME BYTE_M

------------------ ----------

TEST1_1 5

表的大小已经是5M,说明数据文件的容量是6M,但是超过6M的数据是不能被存储的

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值