1:Oracle存储结构分为逻辑存储和物理存储。
1.1:逻辑存储:表空间,段,区,Oracle块
1.2:物理存储:数据文件,操作系统块
(表空间的出现解决了底层硬件施加给单个数据文件大小的限制)
2:表空间区尺寸和段空间管理
2.1:区尺寸管理:区尺寸管理分为自动(autoallcate)跟手动(uniform)
2.1.1:autoallocate:区尺寸会随着数据库的增长会从开始的64KB增长到64MB,数据库中段的增长模式自动决定一个对象
的新区尺寸的大小,也就是Oracle将自动为其增加区尺寸。(Oracle建议使用自动区尺寸管理)
2.1.2:uniform:当使用区尺寸手动管理时,需用size 指定大小,默认情况下是1MB,Oracle建议的区尺寸大小为:64KB, 1MB, 64MB
2.2:段空间管理:段空间管理指的是管理Oracle块中的可用空间。段的管理也是分自动跟手动。
2.2.1:段手动管理:手动管理需了解PCTFREE,和PCTUSED参数。
2.2.1.1:PCTFREE参数:为了保护update操作有可用空间。例如设置10%时,当可用空间已用90%时,就无法再insert操作了。
2.2.1.2:PCTUSED参数:因为Oracle试图使用块中最新的可用空间是会导致开销。PCTUSED参数可以减少开销,例如设置40%时,
当删除已用空间没有超过40%时,就不允许新数据的插入。
2.2.2:段自动管理:设置为auto,那么Oracle将使用位图来跟踪段的可用空间的可用性。(Oracle建议段自动管理)
3:创建表空间:(create tablespace(创建表空间),create temporary tablespaces(创建临时表空间),create undo tablespaces (创建撤销表空间) )
3.1:数据文件和表空间
3.1.1:一个表空间可以包含多个数据文件,而一个数据文件只能属于一个表空间。
3.1.2:创建一个表空间:
create tablespace test1 datafile ‘/u01/app/oracle/oradata/test1.dbf’ size 100M;
11g默认情况下:区管理:local , 区尺寸管理:autoallocate , 段空间管理:auto
create tablespace test1 datafile ‘/u01/app/oracle/oradata/test1.dbf’ size 100M
extent management local
autoallocate 500M
segment space management auto;
3.2:如何确定区尺寸与区分配。
因为在表空间中创建表时,区是空间分配的单位。所以需了解下面一些存储参数,
dba_tablespaces 中可以查出下面存储参数值
3.2.1:minextents:存储第一次创建时extent的数目。默认情况下是1
3.2.2:maxextents:顺着数据量的增大,可以分配extent的最多数,如果使用本地表空间管理,那么这个值就是无限的,无需设置。
3.2.3:extents management:区管理方式,有local, 跟dictionary 2种选项。
3.2.4:allocation type:指的是区尺寸分配类型,自动:autoallocate(显示为system),手动:uniform
3.2.5:segment space management:段空间管理,有auto,跟manual 2中选项。
3.2.6:initial extent:指初始区。
next extent:下一个区,指的的是初始区之后的。
A:当区尺寸管理为autoallocate时,initial extent=64K, next extent 无显示,以为大小取决于创建的表,索引等。
B:当区尺寸管理为uniform时,区尺寸大小可以手动设置,未指定默认是1M当uniform size 为10M时,initial extent 和next extent 就是为10M
3.3:增加表空间的大小,删除表空间大小。
3.3.1:当表空间空间不足时,可以增加数据文件,或者改变数据文件大小。
有OMF特性的更改表空间和增加数据文件:
alter database datafile 6 resize 20M;
alter tablespace test1 add datafile 20M;
没有OMF特性的更改表空间和增加数据文件:
alter database datafile '/u01/app/oracle/oradata/orcl/test2.dbf' resize 20M;
alter tablespace test2 add datafile '/u01/app/oracle/oradata/orcl/test2a.dbf' size 20M;
3.4:删除表空间:
drop tablespace test1;
drop tablespace test1 including contents;
drop tablespace test1 including conetents and datafiles;
drop tablespace test1 cascade constraints;
3.5:重新命名表空间和修改数据文件位置:
3.5.1:重新命名表空间:
alter tablespace test1 rename to test2;
重新命名表空间需注意:
A:system,sysaux表空间不能重新命名
B:重新命名表空间时必须让所有文件是联机的。
C:如果表空间是只读的,重新命名不改变数据文件头。
3.5.2:更改数据文件位置
第一:alter tablespace test2 offline normal
第二:在操作系统中重新命名数据文件
第三:alter tablespace test2 rename datafile ‘/u01/app/oracle/oradara/orcl/test2.dbf’
to ‘/u01/app/oracle/oradata/orcl/ORCL/datafile/test2.dbf’;
第四:alter tablespace test2 online;
3.6:表空间只读,表空间脱机。
alter tablespace test2 read only;
alter tablespace test2 read write;
alter tablespace test2 offline normal; 无损脱机
alter tablespace test2 online;
3.7:临时表空间简单管理:
3.7.1:创建临时表空间(默认情况下temp表空间都是统一尺寸的区分配,默认为1M):
create temporary tablespace temp2 tempfile 'temp2.dbf' size 500M;
create temporary tablespace temp3 tempfile 'temp3.dbf' size 300M uniform size 16M; 指定uniform 为16M
3.7.2:更改临时表空间
增加临时文件:
alter tablespace temp3 add tempfile '/u01/app/oracle/product/10.2.0/db_1/dbs/temp3b.dbf' size 100M;
变更临时文件:
alter database tempfile '/u01/app/oracle/product/10.2.0/db_1/dbs/temp2.dbf' resize 400M;
删除临时文件:
alter database tempfile '/u01/app/oracle/product/10.2.0/db_1/dbs/temp3b.dbf' drop including datafiles ;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29481709/viewspace-1101019/ ,如需转载,请注明出处,否则将追究法律责任。