百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

一文读懂oracle表空间(oraclesystem表空间)

sinye56 2024-09-24 00:02 4 浏览 0 评论

概述

oracle表空间这个概念大家应该都很熟悉了, 这是一个逻辑概念,可以理解为在数据库中开辟的空间用来存储数据库对象。


表空间相关

1、表空间和数据文件的关系:

表空间由一个或多个数据文件组成;数据文件的大小和位置可以自己定义;

2、表空间的分类:

永久表空间:数据库中要永久化存储的一些对象,如:表、视图、存储过程

临时表空间:数据库操作当中中间执行的过程,执行结束后,存放的内容会被自动释放

UNDO表空间:用于保存事务所修改数据的旧值,可以进行数据的回滚

篇幅有限,下面主要对系统表空间、辅助表空间和临时表空间做个介绍。


一、系统表空间

SYSTEM 表空间是 Oracle 数据库最重要的一个表空间,存放了一些 DDL 语言产生的 信息以及 PL/SQL 包、视图、函数、过程等,称之为数据字典,因此该表空间也具有其特殊性。

Oracle服务器使用SYSTEM表空间管理整个数据库。这个表空间包含系统的数据字典和关于数据库的管理信息,这些信息均包含在SYS方案中,只有SYS用户或者拥有所需权限的其它管理用户才可访问这些信息。SYSTEM表空间用于核心功能(例如数据字典表)。

1、建议不存放用户数据

//为数据库设定默认表空间

SQL>ALTER DATABASE DEFAULTTABLESPACE tablespace_name;

//查询默认表空间

SQL> select property_name,property_value from database_properties where property_name like 'DEFAULT%';

2、SYSTEM表空间特性

? 不能脱机 offline

? 不能置为只读 read only

? 不能重命名

? 不能删除

3、空间管理

这里一定要保证空间可用,一般存放单个数据文件,如果 SYSTEM 表空间数据文件很大,可以考虑使用 bigfile。


二、辅助表空间

SYSAUX 表空间在 Oracle Database 10g 中引入,作为 SYSTEM 表空间的辅助表空间.

以前一些使用独立表空间或系统表空间的数据库组件现在在 SYSAUX 表空间中创建. 通过分离这些组件和功能,SYSTEM 表空间的负荷得以减轻.反复创建一些相关对象及组件 引起 SYSTEM 表空间的碎片问题得以避免。

SYSTEM和SYSAUX表空间是在创建数据库时创建的必须存在的表空间。这些表空间必须联机。在OPEN状态下,SYSAUX表空间可以脱机以执行表空间恢复,而SYSTEM表空间则不能,这两种表空间都不能设置为只读状态。在MOUNT状态下,任何表空间都可以脱机。

SYSTEM表空间的大小一般变化不大,而SYSAUX表空间在默认条件下如果不做任何配置,那么随着时间的推移,会越来越大。所以,如果SYSAUX表空间过大,那么应该及时诊断清理该表空间。

对于SYSTEM表空间而言,如果占用过大,那么一般情况下是由于审计表(SYS.AUD$)过大引起的。需要将审计表移动到其它表空间中,然后再清理审计表(TRUNCATE TABLE SYS.AUD$)即可。需要注意的是,如果审计表过大,那么应该分部去清理审计表。

对于SYSAUX表空间而言,如果占用过大,那么一般情况下是由于AWR信息或对象统计信息没有及时清理引起的,具体原因可以通过如下的SQL语句查询:

SELECT OCCUPANT_NAME "Item", SPACE_USAGE_KBYTES / 1048576 "Space Used (GB)", SCHEMA_NAME "Schema", MOVE_PROCEDURE "Move Procedure"
 FROM V$SYSAUX_OCCUPANTS WHERE SPACE_USAGE_KBYTES > 1048576
 ORDER BY "Space Used (GB)" DESC;

如果OCCUPANT_NAME列为SM/AWR(Server Manageability - Automatic Workload Repository),那么表示AWR信息占用过大;如果该列为SM/OPTSTAT(Server Manageability - Optimizer Statistics History),那么表示优化器统计信息占用过大。

也可以直接查询DBA_SEGMENTS视图获取信息:

SELECT D.SEGMENT_NAME, D.SEGMENT_TYPE,SUM(BYTES)/1024/1024 SIZE_M
 FROM DBA_SEGMENTS D
 WHERE D.TABLESPACE_NAME = 'SYSAUX'
 GROUP BY D.SEGMENT_NAME, D.SEGMENT_TYPE
 ORDER BY SIZE_M DESC;

然后查询占用空间较大的表,即可得到占用空间较大的原因

结论: 这是一个管理及规划上的改进,进一步独立 SYSTEM 表空间,保证其存储及性能. 我们在做数据库规划时大可借鉴 Oracle 这个改进,分离重要数据及次要数据,分离稳定结构及频繁变化结构,尽量减少对重要数据及结构的影响。


三、临时表空间

1、 临时表空间作用

Oracle 临时表空间主要用来做查询和存放一些缓冲区数据。临时表空间消耗的主要原因是需要对查询的中间结果进行排序。 重启数据库可以释放临时表空间,如果不能重启实例,而一直保持问题 sql 语句的执行, temp 表空间会一直增长。直到耗尽硬盘空间。

有人猜测在磁盘空间的分配上,oracle 使用的是贪心算法,如果上次磁盘空间消耗达到 1GB,那么临时表空间就是 1GB。

也就是说当前临时表空间文件的大小是历史上使用临时表空间最大的大小。

临时表空间的主要作用:

? 索引 create 或 rebuild;

? Order by 或 group by;

? Distinct 操作;

? Union 或 intersect 或 minus;

? Sort-merge joins;

? analyze。

2、使用原理

在 Oracle 数据库中进行排序、分组汇总、索引等到作时,会产生很多的临时数据。对于这些临时数据,Oracle 数据库是如何处理的呢?

通常情况下,Oracle 数据库会先将这些临时数据存放到内存的 PGA(程序全局区)内。

在这个程序全局区中有一个叫做排序区的地方,专门用来存放这些因为排序操作而产生的临

时数据。但是这个分区的容量是有限的。当这个分区的大小不足以容纳排序后所产生的记录

时,数据库系统就会将临时数据存放到临时表空间中。这就是临时表空间的来历。

看起来好像这个临时表空间是个临时工,对于数据库的影响不会有多大。其实大家这是

误解这个临时表空间了。

在用户进行数据库操作时,排序、分组汇总、索引这些作业是少不了,其会产生大量的临时数据。为此基本上每个数据库都需要用到临时表空间。而如果这个临时表空间设置不当的话,则会给数据库性能带来很大的负面影响。为此管理员在维护这个临时表空间的时候,不能够掉以轻心。要避免因为临时表空间设置不当影响数据库的性能。


oracle中的表就是一张存储数据的表。表空间是逻辑上的划分。方便管理的。前面已经介绍了怎么去看表空间大小和扩展的一些命令,这里就不说明了。后面会分享更多关于DBA方面内容,感兴趣的朋友可以关注下!!

相关推荐

RHEL8和CentOS8怎么重启网络

本文主要讲解如何重启RHEL8或者CentOS8网络以及如何解决RHEL8和CentOS8系统的网络管理服务报错,当我们安装好RHEL8或者CentOS8,重启启动网络时,会出现以下报错:...

Linux 内、外网双网卡路由配置

1.路由信息的影响Linux系统中如果有多张网卡的情况下,如果路由信息配置不正确,...

Linux——centos7修改网卡名

修改网卡名这个操作可能平时用不太上,可作为了解。修改网卡默认名从ens33改成eth01.首先修改网卡配置文件名(建议将原配置文件进行备份)...

CentOS7下修改网卡名称为ethX的操作方法

?Linux操作系统的网卡设备的传统命名方式是eth0、eth1、eth2等,而CentOS7提供了不同的命名规则,默认是基于固件、拓扑、位置信息来分配。这样做的优点是命名全自动的、可预知的...

Linux 网卡名称enss33修改为eth0

一、CentOS修改/etc/sysconfig/grub文件(修改前先备份)为GRUB_CMDLINE_LINUX变量增加2个参数(net.ifnames=0biosdevname=0),修改完成...

CentOS下双网卡绑定,实现带宽飞速

方式一1.新建/etc/sysconfig/network-scripts/ifcfg-bond0文件DEVICE=bond0IPADDR=191.3.60.1NETMASK=255.255.2...

linux 双网卡双网段设置路由转发

背景网络情况linux双网卡:网卡A(ens3)和网卡B(...

Linux-VMware设置网卡保持激活

Linux系统只有在激活网卡的状态下才能去连接网络,进行网络通讯。修改配置文件(永久激活网卡)...

VMware虚拟机三种网络模式

01.VMware虚拟机三种网络模式由于linux目前很热门,越来越多的人在学习linux,但是买一台服务放家里来学习,实在是很浪费。那么如何解决这个问题?虚拟机软件是很好的选择,常用的虚拟机软件有v...

Rocky Linux 9/CentOS Stream 9修改网卡配置/自动修改主机名(实操)

推荐...

2023年最新版 linux克隆虚拟机 解决网卡uuid重复问题

问题描述1、克隆了虚拟机,两台虚拟机里面的ip以及网卡的uuid都是一样的2、ip好改,但是uuid如何改呢?解决问题1、每台主机应该保证网卡的UUID是唯一的,避免后面网络通信有问题...

Linux网卡的Vlan配置,你可能不了解的玩法

如果服务器上连的交换机端口已经预先设置了TRUNK,并允许特定的VLAN可以通过,那么服务器的网卡在配置时就必须指定所属的VLAN,否则就不通了,这种情形在虚拟化部署时较常见。例如在一个办公环境中,办...

Centos7 网卡绑定

1、切换到指定目录#备份网卡数据cd/etc/sysconfig/network-scriptscpifcfg-enp5s0f0ifcfg-enp5s0f0.bak...

Linux搭建nginx+keepalived 高可用(主备+双主模式)

一:keepalived简介反向代理及负载均衡参考:...

Linux下Route 路由指令使用详解

linuxroute命令用于显示和操作IP路由表。要实现两个不同子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux系统中,设置路由通常是为了解决以下问题:该...

取消回复欢迎 发表评论: