others linux服务器运维 django3 监控 k8s golang 数据库 大数据 前端 devops 理论基础 java oracle 运维日志

oracle 表空间大小的查看扩容

访问量:1958 创建时间:2020-03-09

表空间分类

表空间类型 表空间作用
系统表空间 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 与 11g 表空间管理的区别

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> 

其他操作一样

登陆评论: 使用GITHUB登陆