重庆思庄Oracle、Redhat认证学习论坛

标题: oracle数据文件的bytes与maxbytes [打印本页]

作者: 王亮    时间: 2020-6-21 18:16
标题: oracle数据文件的bytes与maxbytes
--创建表空间,指定数据文件初始大小10M,开启自动扩展,最大大小20M。
SQL> create tablespace tbs_Test datafile 'd:\tbs01.dbf' size 10m autoextend on maxsize 20m;

表空间已创建。

SQL> create table tttt tablespace tbs_test as select * from dba_objects;

表已创建。

SQL> col segment_name for a50
SQL> col file_name for a50
SQL>  select segment_name,bytes/1024/1024 from dba_segments where SEGMENT_name='TTTT';

SEGMENT_NAME                                       BYTES/1024/1024
-------------------------------------------------- ---------------
TTTT                                                            13

--可以看出,创建的表占空间13M,超出了初始大小。


SQL> select file_name,file_id,maxbytes/1024/1024 from dba_data_files;

FILE_NAME                                             FILE_ID MAXBYTES/1024/1024
-------------------------------------------------- ---------- ------------------
C:\APP\ORACLE\ORADATA\ORCL\SYSTEM01.DBF                     1         32767.9844
C:\APP\ORACLE\ORADATA\ORCL\SYSAUX01.DBF                     3         32767.9844
C:\APP\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF                    5         32767.9844
C:\APP\ORACLE\ORADATA\ORCL\USERS01.DBF                      6         32767.9844
C:\APP\ORACLE\ORADATA\ORCL\EXAMPLE01.DBF                    7         32767.9844
C:\APP\ORACLE\ORADATA\ORCL\SECURE_TBS01.DBF                 8                  0
C:\APP\ORACLE\ORADATA\ORCL\TBS_BIG01.DBF                    9           33554432
C:\APP\ORACLE\ORADATA\ORCL\TT01.DBF                        10                  0
C:\APP\ORACLE\ORADATA\ORCL\TTS01.DBF                       11                  0
C:\APP\ORACLE\ORADATA\ORCL\UNDOTBS02.DBF                   12                  0
D:\TBS01.DBF                                               13                 20

已选择 11 行。

SQL> select file_name,file_id,maxbytes/1024/1024 from dba_data_files where file_id=13;

FILE_NAME                                             FILE_ID MAXBYTES/1024/1024
-------------------------------------------------- ---------- ------------------
D:\TBS01.DBF                                               13                 20
--数据文件(FILE_IDY为13)的最大大小为20M



--再次插入报空间不足,证明此次插入无法超过MAXSIZE(20M)的限制。
SQL> insert into tttt select * from tttt;
insert into tttt select * from tttt
            *
第 1 行出现错误:
ORA-01653: 表 SYS.TTTT 无法通过 128 (在表空间 TBS_TEST 中) 扩展

--修改数据文件大小为30M
SQL> alter database datafile 'd:\tbs01.dbf' resize 30m;

数据库已更改。

SQL> select file_name,file_id,maxbytes/1024/1024 from dba_data_files where file_id=13;

FILE_NAME                                             FILE_ID MAXBYTES/1024/1024
-------------------------------------------------- ---------- ------------------
D:\TBS01.DBF                                               13                 20
--修改数据文件大小为30M后,数据文件字典信息中最大大小没有变化,还是20M。此时还能插入吗?


SQL> insert into tttt select * from tttt;

已创建 91923 行。
--证明可以继续插入,文件大小(30M)超出了最大大小(20M)时,还是以30M为限制 。



SQL> insert into tttt select * from tttt;
insert into tttt select * from tttt
第 1 行出现错误:
ORA-01653: 表 SYS.TTTT 无法通过 128 (在表空间 TBS_TEST 中) 扩展

--继续插入报错,因此超出了30M的限制



SQL>  select segment_name,bytes/1024/1024 from dba_segments where SEGMENT_name='TTTT';

SEGMENT_NAME                                       BYTES/1024/1024
-------------------------------------------------- ---------------
TTTT                                                            29


--修改文件的最大大小为50M
SQL> alter database datafile 'd:\tbs01.dbf' autoextend on maxsize 50m;

数据库已更改。

SQL> select file_name,file_id,maxbytes/1024/1024 from dba_data_files where file_id=13;

FILE_NAME                                             FILE_ID MAXBYTES/1024/1024
-------------------------------------------------- ---------- ------------------
D:\TBS01.DBF                                               13                 50

--继续插入
SQL> insert into tttt select * from tttt;

已创建 183846 行。

--可以插入成功。



总结:
数据文件参数 bytes 和 maxbytes,在数据插入中会选择值大的为最大限制。
但修改bytes(resize)时不会修改数据字典maxbytes的值。但这之中,是以两个值中较大的值作为最大限制











欢迎光临 重庆思庄Oracle、Redhat认证学习论坛 (http://bbs.cqsztech.com/) Powered by Discuz! X3.2