表空间是一个逻辑概念,物理上对应一个或多个数据文件 datafile 或临时文件 tempfiles,逻辑上表空间是存储段的容器。(段也是逻辑概念,是数据库中的对象如表、索引等)
表空间类型
①PERMANENT 永久表空间
②UNDO 撤销表空间
③TEMPORARY 临时表空间
管理方式重点是段的管理方式和区的管理方式, 是在建立表空间时确定的。
SYS@orcl> select tablespace_name,contents,segment_space_management,extent_management from dba_tablespaces;
TABLESPACE_NAME CONTENTS SEGMEN EXTENT_MAN
------------------------------ --------- ------ ----------
SYSTEM PERMANENT MANUAL LOCAL
SYSAUX PERMANENT AUTO LOCAL
UNDOTBS1 UNDO MANUAL LOCAL
TEMPTS1 TEMPORARY MANUAL LOCAL
USERS PERMANENT MANUAL LOCAL
SYS@orcl> select * from v$tablespace;
TS# NAME INC BIG FLA ENC
---------- ------------------------------ --- --- --- ---
0 SYSTEM YES NO YES
1 SYSAUX YES NO YES
2 UNDOTBS1 YES NO YES
3 TEMPTS1 NO NO YES
4 USERS YES NO YES
select file_id,file_name,tablespace_name,bytes/1024/1024 M,status,
AUTOEXTENSIBLE from dba_data_files order by 1;
select TABLESPACE_NAME,sum(bytes)/1024/1024 from dba_data_files group by tablespace_name;
select tablespace_name,sum(bytes)/1024/1024 from dba_free_space group by tablespace_name;
表空间的大小等同它下的数据文件大小之和,默认使用 small 表空间
当发生表空间不足的问题时常用的 3 个解决办法:
1)增加原有数据文件大小(resize)
2)增加一个数据文件(add datafile)
3)设置表空间自动增长(autoextend)
create tablespace test datafile '/u01/app/oracle/oradata/orcl/test01.dbf' size 5m;
select file_id,file_name,tablespace_name from dba_data_files;
alter database datafile 6 resize 10m;
alter tablespace test add datafile '/u01/app/oracle/oradata/orcl/test02.dbf' size 30G;
alter database datafile 6 autoextend on maxsize 30G;
select FILE_ID,TABLESPACE_NAME,BYTES/1024/1024 M_size,
AUTOEXTENSIBLE,MAXBYTES/1024/1024 M_max from dba_data_files;
①smallfile:一个表空间可以包含多个数据文件(默认), 块大小 8k 时, 大小需小于 32G。
②bigfile:一个表空间只包含一个数据文件, 8k 的 block 时,最大可达 32T。
create bigfile tablespace bigtbs
datafile '/u01/app/oracle/oradata/orcl/bigtbs01.dbf' size 20m
autoextend on maxsize 4T
extent management local uniform size 2m
segment space management auto;
select name,bigfile from v$tablespace;
drop tablespace test including contents and datafiles;
drop tablespace bigtbs including contents and datafiles;
1) 记录数据库当前物理状态
2) 维护数据库的一致性
3)是一个二进制小文件
4) 在 mount 阶段被读取
5) 记录 RMAN 备份的元数据
select name from v$datafile;
select member from v$logfile;
查看控制文件位置:
show parameter control_files;
select name from v$controlfile;
①当增加、重命名、删除一个数据文件或者一个联机日志文件时, Oracle 服务器进程(Server
Process)会立即更新控制文件以反映数据库结构的变化。
②日志写进程 LGWR 负责把当前日志序列号记录到控制文件中。
③检查点进程 CKPT 负责把校验点的信息记录到控制文件中。
④归档进程 ARCN 负责把归档日志的信息记录到控制文件中。
通过视图 v$controlfile_record_section 可以了解到控制文件中记录了大量的数据库当前状态信息
SYS@orcl>create pfile from spfile;
SYS@orcl>select name from v$controlfile;
SYS@orcl>alter system set control_files='/u01/app/oracle/oradata/PROD1/control01.ctl',
'/u01/app/oracle/oradata/PROD1/control02.ctl','/u01/app/oracle/oradata/PROD1/control03.ctl' scope=spfile;
SYS@orcl>shutdown immediate;
SYS@orcl>startup nomount;
SYS@orcl>show parameter control_files
SYS@orcl>! cp /u01/app/oracle/oradata/PROD1/control02.ctl /u01/app/oracle/oradata/PROD1/control03.ctl
SYS@orcl> alter database mount;
SYS@orcl> alter database open;
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。