表空间类型 | 表空间作用 |
---|---|
系统表空间 | system表空间存放内容为: 数据字典:SYSTEM 表空间总是用于存储整个数据库的数据字典表data dictionary table。PL/SQL程序结构描述:包括过程procedure、函数function、包package、触发器trigger有关的数据保存在SYSTEM表空间中。通常system表空间不大。 |
临时表空间 | 临时表空间用来管理数据库排序操作以及用于存储临时表、中间排序结果等临时对象,当ORACLE里需要用到SORT的时候,并且当PGA中sort_area_size大小不够时,将会把数据放入临时表空间里进行排序。像数据库中一些操作: CREATE INDEX、 ANALYZE、SELECT DISTINCT、ORDER BY、GROUP BY、 UNION ALL、 INTERSECT、MINUS、SORT-MERGE JOINS、HASH JOIN等都可能会用到临时表空间。当操作完成后,系统会自动清理临时表空间中的临时对象,自动释放临时段。这里的释放只是标记为空闲、可以重用,其实实质占用的磁盘空间并没有真正释放。这也是临时表空间有时会不断增大的原因。它跟永久表空间不同的地方在于它由临时数据文件temporary files组成的,而不是永久数据文件datafiles。临时表空间不会存储永久类型的对象,所以它不会也不需要备份。另外,对临时数据文件的操作不产生redo日志,不过会生成undo日志。通常temp表空间的使用率无需监控。 |
undo表空间 | 对Oracle数据库UNDO表空间的监控和管理是我们日常最重要的工作之一,UNDO表空间通常都是Oracle自动化管理(通过undo_management初始化参数确定);UNDO表空间是用于存储DML操作的前镜像数据,它是实例恢复,数据回滚,一致性查询功能的重要组件;我们常常会忽略对它的监控,使用率100%,导致DML操作无法进行。 |
用户表空间 | 即真正支撑具体业务的表空间,存放业务数据,空间利用率上对业务连续性起着决定性的作用。需要结合业务场景具体确定数据文件是否自动扩展,使用率达到阈值后快速响应扩容。 |
oracle表空间没有空余时,oracle会停止服务,所以需要监控oracle表空间(通常是业务自定义的用户表空间)的使用率,及时扩容。
查看表空间总容量
[root@****** ~]# su - oracle
[oracle@****** ~]$ sqlplus / as sysdba
SQL> select a.TABLESPACE_NAME, sum(a.BYTES)/1024/1024 as MB from sys.dba_data_files a group by a.TABLESPACE_NAME
TABLESPACE_NAME MB
-------------------- ----------
UNDOTBS1 25715
SYSAUX 2410
USERS 17158.75
SYSTEM 4740
EAAAAAAY 228607.906
SQL>
查看空闲容量
SQL> select b.TABLESPACE_NAME, count(1) as extends, sum(b.BYTES)/1024/1024 as MB, sum(b.BLOCKS) as blocks from sys.dba_free_space b group by b.TABLESPACE_NAME;
TABLESPACE_NAME EXTENDS MB BLOCKS
-------------------- ---------- ---------- ----------
SYSAUX 39 203.875 26096
UNDOTBS1 362 25401.125 3251344
USERS 8 914.5 117056
SYSTEM 2 3.6875 472
EAAAAAAY 6 11797.0625 1510024
SQL>
查看表空间使用率
SQL> select total.TABLESPACE_NAME,
round(total.MB, 2) as TOTAL_MB,
round(total.MB - free.MB, 2) as USED_MB,
ROUND((1 - free.MB/total.MB) * 100, 2) || '%' as USED_PCT,
ROUND(free.MB, 2) as FREE_mb
from (select a.TABLESPACE_NAME, sum(a.BYTES)/1024/1024 as MB
from sys.dba_data_files a
group by a.TABLESPACE_NAME) total,
(select b.TABLESPACE_NAME,
count(1) as extends,
sum(b.BYTES)/1024/1024 as MB,
sum(b.BLOCKS) as blocks
from sys.dba_free_space b
group by b.TABLESPACE_NAME) free
where total.TABLESPACE_NAME = free.TABLESPACE_NAME;
TABLESPACE_NAME TOTAL_MB USED_MB USED_PCT FREE_MB
-------------------- ---------- ---------- ----------------------------------------- ----------
SYSAUX 2410 2206.13 91.54% 203.88
UNDOTBS1 25715 316.88 1.23% 25398.13
USERS 17158.75 16244.25 94.67% 914.5
SYSTEM 4740 4736.31 99.92% 3.69
EAAAAAAY 228607.91 216810.84 94.84% 11797.06
SQL>
查看EAAAAAAY目前的表空间文件
SQL> select f.* from dba_data_files f where f.tablespace_name='EAAAAAAY';
FILE_NAME FILE_ID TABLESPACE_NAME BYTES BLOCKS STATUS RELATIVE_FNO AUT MAXBYTES MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS ONLINE_
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------- -------------------- ---------- ---------- --------- ------------ --- ---------- ---------- ------------ ---------- ----------- -------
/oracle/app/oracle/oradata/eaaaaaay/eaaaaaay.dbf 5 EAAAAAAY 3.3554E+10 4096000 AVAILABLE 5 YES 3.3554E+10 4096000 6400 3.3553E+10 4095872 ONLINE
/oracle/app/oracle/oradata/eaaaaaay/eaaaaaay02.dbf 6 EAAAAAAY 3.4360E+10 4194302 AVAILABLE 6 YES 3.4360E+10 4194302 6400 3.4359E+10 4194168 ONLINE
/oracle/app/oracle/oradata/eaaaaaay/eaaaaaay03.dbf 7 EAAAAAAY 3.4360E+10 4194302 AVAILABLE 7 YES 3.4360E+10 4194302 6400 3.4359E+10 4194168 ONLINE
/oracle/app/oracle/oradata/eaaaaaay/eaaaaaay04.dbf 8 EAAAAAAY 3.4360E+10 4194302 AVAILABLE 8 YES 3.4360E+10 4194302 6400 3.4359E+10 4194168 ONLINE
/oracle/app/oracle/oradata/eaaaaaay/eaaaaaay05.dbf 9 EAAAAAAY 3.4360E+10 4194302 AVAILABLE 9 YES 3.4360E+10 4194302 12800 3.4359E+10 4194168 ONLINE
/oracle/app/oracle/oradata/eaaaaaay/eaaaaaay06.dbf 10 EAAAAAAY 3.4360E+10 4194302 AVAILABLE 10 YES 3.4360E+10 4194302 6400 3.4359E+10 4194168 ONLINE
/oracle/app/oracle/oradata/eaaaaaay/eaaaaaay07 11 EAAAAAAY 3.4360E+10 4194302 AVAILABLE 11 YES 3.4360E+10 4194302 2560 3.4359E+10 4194168 ONLINE
7 rows selected.
SQL>
增加表空间文件,size 1024M表示这个文件初始大小事1G,autoextend on next 500M 表示开启自动增长,每次扩大500M,文件最大限制maxsize unlimited表示32G,不限制大小,最大为32G大小。
#增加数据文件
SQL> alter tablespace EAAAAAAY add datafile '/oracle/app/oracle/oradata/eaaaaaay/eaaaaaay08.dbf' size 1024M autoextend on next 500M maxsize unlimited;
SQL> alter tablespace LOG_PL_PIN add datafile '/oracle/app/oracle/oradata/LOG_PL_PIN_10.DBF' size 32767M autoextend on next 500M maxsize unlimited;
Tablespace altered.
#扩大数据文件
SQL> alter database datafile '/oracle/app/oracle/oradata/esbprd/esbprdpdb/sysaux01.dbf' resize 4096m;
查看表空间空闲情况
SQL> select b.TABLESPACE_NAME, count(1) as extends, sum(b.BYTES)/1024/1024 as MB, sum(b.BLOCKS) as blocks from sys.dba_free_space b group by b.TABLESPACE_NAME;
TABLESPACE_NAME EXTENDS MB BLOCKS
-------------------- ---------- ---------- ----------
SYSAUX 39 203.875 26096
UNDOTBS1 369 25408.125 3252240
USERS 8 914.5 117056
SYSTEM 2 3.6875 472
EAAAAAAY 7 12820.0625 1640968
SQL>
Oracle 12C引入了CDB与PDB的新特性,在ORACLE 12C数据库引入的多租用户环境(Multitenant Environment)中,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB)。CDB全称为Container Database,中文翻译为数据库容器,PDB全称为Pluggable Database,即可插拔数据库。
[oracle@esbprddb ~]$ sqlplus / as sysdba
Connected to:
SQL> select b.TABLESPACE_NAME, count(1) as extends, sum(b.BYTES)/1024/1024 as MB, sum(b.BLOCKS) as blocks from sys.dba_free_space b group by b.TABLESPACE_NAME;
TABLESPACE_NAME EXTENDS MB BLOCKS
---------------------------------------- ---------- ---------- ----------
SYSAUX 254 120.75 15456
UNDOTBS1 9 47.75 6112
USERS 1 4 512
SYSTEM 2 6.0625 776
SQL>
查看当前容器
SQL> select con_id,dbid,guid,name,open_mode from v$pdbs;
CON_ID DBID GUID NAME OPEN_MODE
---------- ---------- -------------------------------- ---------------------------------------- --------------------
2 3260985965 98F20E9B9AF66683E0530CFE817BA6CF PDB$SEED READ ONLY
3 3048238709 98F221EE36816EB2E0530CFE817BEC5C PRDPDB READ WRITE
SQL>
切换容器,再次查询
SQL> alter session set container=PRDPDB ;
Session altered.
SQL> select b.TABLESPACE_NAME, count(1) as extends, sum(b.BYTES)/1024/1024 as MB, sum(b.BLOCKS) as blocks from sys.dba_free_space b group by b.TABLESPACE_NAME;
TABLESPACE_NAME EXTENDS MB BLOCKS
---------------------------------------- ---------- ---------- ----------
OH******UMS 1 91.875 11760
OH*******PSS 1 6.75 864
DS**********ED 3 21.625 2768
SQL>
其他操作一样