前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >表空间创建管理及控制文件管理

表空间创建管理及控制文件管理

原创
作者头像
用户8006012
修改2022-07-02 20:21:12
5440
修改2022-07-02 20:21:12
举报
文章被收录于专栏:DATABASEDATABASE

表空间是一个逻辑概念,物理上对应一个或多个数据文件 datafile 或临时文件 tempfiles,逻辑上表空间是存储段的容器。(段也是逻辑概念,是数据库中的对象如表、索引等)

表空间类型

①PERMANENT 永久表空间

②UNDO 撤销表空间

③TEMPORARY 临时表空间

管理方式重点是段的管理方式和区的管理方式, 是在建立表空间时确定的。

1.1查看表空间类型、段和区管理方式

代码语言:javascript
复制
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

1.2 查看表空间(数据文件)大小、是否自动扩展

代码语言:javascript
复制
select file_id,file_name,tablespace_name,bytes/1024/1024 M,status,
AUTOEXTENSIBLE from dba_data_files order by 1;

1.3 查看表空间大小

代码语言:javascript
复制
select TABLESPACE_NAME,sum(bytes)/1024/1024 from dba_data_files group by tablespace_name;

1.4 查看表空间空闲大小

代码语言:javascript
复制
select tablespace_name,sum(bytes)/1024/1024 from dba_free_space group by tablespace_name;

1.5 创建 smallfile 表空间

表空间的大小等同它下的数据文件大小之和,默认使用 small 表空间

当发生表空间不足的问题时常用的 3 个解决办法:

1)增加原有数据文件大小(resize)

2)增加一个数据文件(add datafile)

3)设置表空间自动增长(autoextend)

代码语言:javascript
复制
create tablespace test datafile '/u01/app/oracle/oradata/orcl/test01.dbf' size 5m;

1.5.1 resize 扩充表空间

代码语言:javascript
复制
select file_id,file_name,tablespace_name from dba_data_files;
alter database datafile 6 resize 10m;

1.5.2 add datafile 扩充表空间:

代码语言:javascript
复制
alter tablespace test add datafile '/u01/app/oracle/oradata/orcl/test02.dbf' size 30G;

1.5.3 autoextend on 扩充表空间

代码语言:javascript
复制
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;

1.6 建立大文件(bigfile)的表空间

①smallfile:一个表空间可以包含多个数据文件(默认), 块大小 8k 时, 大小需小于 32G。

②bigfile:一个表空间只包含一个数据文件, 8k 的 block 时,最大可达 32T。

代码语言:javascript
复制
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;

1.61. 查看大表空间文件

代码语言:javascript
复制
select name,bigfile from v$tablespace;

1.7 删除表空间

代码语言:javascript
复制
drop tablespace test including contents and datafiles;
drop tablespace bigtbs including contents and datafiles;

2.控制文件

2.1 功能和特点:

1) 记录数据库当前物理状态

2) 维护数据库的一致性

3)是一个二进制小文件

4) 在 mount 阶段被读取

5) 记录 RMAN 备份的元数据

代码语言:javascript
复制
select name from v$datafile;
select member from v$logfile;

查看控制文件位置:

代码语言:javascript
复制
show parameter control_files;
select name from v$controlfile;

2.2 实时更新机制

①当增加、重命名、删除一个数据文件或者一个联机日志文件时, Oracle 服务器进程(Server

Process)会立即更新控制文件以反映数据库结构的变化。

②日志写进程 LGWR 负责把当前日志序列号记录到控制文件中。

③检查点进程 CKPT 负责把校验点的信息记录到控制文件中。

④归档进程 ARCN 负责把归档日志的信息记录到控制文件中。

通过视图 v$controlfile_record_section 可以了解到控制文件中记录了大量的数据库当前状态信息

2.3 控制文件多路复用

2.3.1 修改 spfile 中的 control_files 参数

代码语言:javascript
复制
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;

2.3.2 正常关库,启动到 nomount 状态查看

代码语言:javascript
复制
SYS@orcl>shutdown immediate;
SYS@orcl>startup nomount;
SYS@orcl>show parameter control_files

2.3.3 复制控制文件,建议分配在不同的物理磁盘上

代码语言:javascript
复制
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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.1查看表空间类型、段和区管理方式
  • 1.2 查看表空间(数据文件)大小、是否自动扩展
  • 1.3 查看表空间大小
  • 1.4 查看表空间空闲大小
  • 1.5 创建 smallfile 表空间
    • 1.5.1 resize 扩充表空间
      • 1.5.2 add datafile 扩充表空间:
        • 1.5.3 autoextend on 扩充表空间
        • 1.6 建立大文件(bigfile)的表空间
          • 1.61. 查看大表空间文件
          • 1.7 删除表空间
          • 2.控制文件
          • 2.1 功能和特点:
          • 2.2 实时更新机制
          • 2.3 控制文件多路复用
            • 2.3.1 修改 spfile 中的 control_files 参数
              • 2.3.2 正常关库,启动到 nomount 状态查看
                • 2.3.3 复制控制文件,建议分配在不同的物理磁盘上
                相关产品与服务
                容器服务
                腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档