Oracle学习-3存储结构管理
  TEZNKK3IfmPf 2023年11月14日 18 0

每一个数据库都按逻辑方式划分为一个或多个表空间(逻辑存储单元)。

• 一个表空间中包括一个或多个数据文件。(在表空间中按物理方式存储所有逻辑结构的数据)
• 一个数据文件仅归属于一个表空间。
• 表空间的状态可以是联机(可访问)或脱机(不可访问)。  

• SYSTEM 和SYSAUX 表空间是必需存在的表空间。
• 这些表空间是在创建数据库时创建的。
• 这些表空间必须联机。(打开数据库时SYSTEM 表空间始终处于联机状态。)
• SYSTEM 表空间用于核心功能(例如,数据字典表)。
• 辅助的SYSAUX 表空间用于附加的数据库组件(例如,Enterprise Manager Repository)。

 • 段存在于表空间。
数据库对象(如表和索引)以段形式存储在表空间中。
每个段包含一个或多个区。
段由区的集合构成。
• 区由相邻的数据块组成,这意味着每一个区只可以存在于一个数据文件中。
区是数据块的集合。
•数据块是数据库中最小的I/O 单元。
• 数据块会映射到磁盘块。
数据库从操作系统(OS) 请求数据块集时,OS 会将数据块集映射到存储设备上的实际文件系统或磁盘块。
一个数据文件可以条带化或镜像在多个磁盘上。
可以在创建数据库时设置数据块的大小。对大多数数据库而言,默认的8 KB 块大小是足够的。最小的Oracle 块大小为2 KB。
当数据库支持拥有大型表和索引的数据仓库应用程序时,最好设置更大的块大小。
当数据库支持执行随机读写的事务处理应用程序时,最好指定更小的块大小。  

Oracle数据库具有逻辑结构和物理结构。
表空间
数据库被分为多个逻辑存储单元,这些单元称为表空间,表空间可以将相关的逻辑结构分组在一起。
例如,为了简化某些管理操作,表空间通常用于将应用程序的所有对象分组。
此时,对应用程序数据可以使用一个表空间,对应用程序索引可以使用另一个表空间。
数据库、表空间和数据文件
每一个数据库按逻辑方式划分为一个或多个表空间。
可以为每个表空间显式创建一个或多个数据文件,这样可在表空间中按物理方式存储所有逻辑结构的数据。
方案
方案是数据库用户拥有的数据库对象的集合。方案对象是直接引用数据库数据的逻辑结构。
方案对象包括诸如表、视图、序列、存储过程、同义词、索引、集群和数据库链接这样的结构。
一般而言,方案对象包括应用程序在数据库中创建的任何内容。
数据块
Oracle 数据库的数据以最细的粒度级存储在数据块中。
一个数据块对应于磁盘上特定字节数的物理数据库空间。
每个表空间的数据块大小是在创建表空间时指定的。
数据库可以使用和分配Oracle 数据块中的空闲数据库空间。

块的上一级逻辑数据库空间称为区。
区是特定数目的相邻数据块(在一次分配中获取的),用于存储特定类型的信息。
段区之上的逻辑数据库存储级别称为段。段代表为特定逻辑结构分配的区集。

Oracle学习-3存储结构管理

数据存储方式


以表Table为例

  • 创建表时,就会创建段来保存表数据
  • 表空间包含一组段
  • 从逻辑上讲,表包含由列值组成的行,行最终将以行片段的形式存储在数据库块中 

之所以称为行片段,是因为某些情况下,不可以在一个位置存储一整行。当插入行由于太长而不适合单个块时,或者由于更新而导致现有行大小超出了行的当前空间时,就会发生这种情况。 

Oracle学习-3存储结构管理

表空间和数据文件

Oracle 数据库在逻辑上将数据存储在表空间中,在物理上将数据存储在数据文件中。

表空间:

– 只能属于一个数据库
– 包括一个或多个数据文件(最多65534个)
– 可进一步划分为逻辑存储单元
– SYSAUX,SYSTEM,TEMP,UNDO必须有 

数据文件:

– 只能属于一个表空间和一个数据库
– 是存储方案对象数据的资料档案库
– 裸设备、文件系统 

Oracle学习-3存储结构管理


预配置的表空间 

系统表空间——SYSTEM&SYSAUX

SYSTEM
使用SYSTEM表空间管理数据库
包含关于数据库的管理信息的数据字典和表
包含在SYS方案中
只有SYS用户或者拥有所需权限的其它管理用户才可访问这些信息

 SYSAUX
SYSTEM表空间的辅助表空间
10g或更高版本必须有SYSAUX表空间 

临时表空间——TEMP

数据库生成的临时数据(在会话期间保持)
 - 中间排序结果
 - 全局临时表和临时索引
 - 临时LOB对象
 - 临时B-tree
- 提高排序操作的并发性
- 可以被多个用户共享
- 不能存在任何永久的对象
- 会覆盖重新使用 

QL> CREATE TEMPORARY TABLESPACE temp
TEMPFILE '/u01/oradata/temp01.dbf' SIZE 20M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 4M;

如果执行的SQL 语句需要创建临时段(如大规模排序或创建索引),则可以使用临时表空间。

在预配置数据库中,TEMP 表空间被指定为默认临时表空间。
如果在创建用户帐户时未指定临时表空间,Oracle 数据库会将此表空间分配给用户作为临时表空间。 

默认的临时表空间

  • 数据库级别:创建数据库时指定,TEMP(SYSTEM)
  • 用户级别:创建用户时指定,默认TEMP 
  • 查询默认的临时表空间 
SQL> SELECT * FROM DATABASE_PROPERTIES;
SQL> SELECT * FROM DBA_USERS;
  • 指定默认的临时表空间 
SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE default_temp2;
SQL> alter user userabc temporary tablespace TEMPABC;

如果执行的SQL 语句需要创建临时段(如大规模排序或创建索引),则可以使用临时表空间。

在预配置数据库中,TEMP 表空间被指定为默认临时表空间。
如果在创建用户帐户时未指定临时表空间,Oracle 数据库会将此表空间分配给用户作为临时表空间。 

回滚表空间——UNDOTBS1 

  • 用于存储回滚段
  • 不能包含任何其他对象
  • 区是本地管理的
  • 会覆盖重新使用 
SQL> CREATE UNDO TABLESPACE undo1
DATAFILE '/u01/oradata/undo01.dbf' SIZE 40M;

这是数据库服务器用于存储还原信息的还原表空间。如果数据库使用“自动还原管理”,那么数据库在任何指定时间必须正好有一个活动的还原表空间。此表空间是在创建数据库时创建的。 

创建表空间

CREATE TABLESPACE命令 

Oracle学习-3存储结构管理

改变表空间大小 

两种方法:

向表空间添加新数据文件
- ALTER TABLESPACE命令
- ADD DATAFILE语句用于增加数据文件 

SQL> ALTER TABLESPACE user_data 
ADD DATAFILE '/u01/oradata/userdata03.dbf'
SIZE 200M;

更改现有数据文件的大小 

  • 自动管理,AUTOEXTEND  
  • 手工管理,使用ALTER DATABASE命令
  • 查询DBA_DATA_FILES可以查看数据文件的自动扩展是否启用 
SQL> ALTER DATABASE
DATAFILE '/u03/oradata/userdata02.dbf'
RESIZE 200M;

删除表空间

不能删除的表空间:

  • 系统表空间
  • 有激活回滚段的表空间
  • 正使用的默认临时表、用户表空间 

删除选项: 

  • INCLUDING CONTENTS将删除段
  • INCLUDING CONTENTS AND DATAFILES将删除数据文件
  • CASCADE CONSTRAINTS将删除所有一致性的限制 
SQL> DROP TABLESPACE userdata 
INCLUDING CONTENTS AND DATAFILES;

查看表空间信息

通过查询以下项可以获取表空间和数据文件信息:

表空间信息:
- DBA_TABLESPACES
- V$TABLESPACE
数据文件信息:
- DBA_DATA_FILES
- V$DATAFILE
临时文件信息:
- DBA_TEMP_FILES
- V$TEMPFILE

相关语句

SQL> desc dba_tablespaces
SQL> select tablespace_name from dba_tablespaces;
SQL> desc dba_data_files
SQL> select file_name,tablespace_name,bytes/1024/1024 from dba_data_files;
SQL> desc dba_temp_files
SQL> select file_name,tablespace_name,bytes/1024/1024 from dba_temp_files;
SQL> create tablespace test0829 datafile '/home/db/oracle/oradata/testdb/test0829.dbf' size 5m;
SQL> select tablespace_name from dba_tablespaces;
SQL> Alter tablespace test0829 add datafile '/home/db/oracle/oradata/testdb/test0829_1.dbf' size 5m;
SQL> select file_name,tablespace_name,bytes/1024/1024 from dba_data_files where tablespace_name='test0829';
SQL> Alter database datafile '/home/db/oracle/oradata/testdb/test0829.dbf' resize 10m;
SQL> drop tablespace test0829 including contents and datafiles;
--查看磁盘上的数据文件
cd /home/db/oracle/oradata/testdb/

管理重做日志文件 

重做日志

​​重做日志(redo log):一组用于记录数据库更改的文件,分为联机重做日志(online redo log)和归档重做日志(archived redo log),可用于数据库实例恢复和介质恢复。

 重做日志缓冲区(redo log buffer):SGA中的一块内存结构,用于保存数据库产生的重做日志记录。  

LGWR:后台进程,将重做日志缓冲区中的重做日志记录写入联机重做日志文件。  

ARCHIVELOG模式:启用了联机重做日志归档的数据库模式。

 ARCn:可选的后台进程,当数据库设置了ARCHIVELOG模式后自动归档联机重做日志文件,保留对数据库进行的所有更改的记录。

作用:

  • 记录数据库的更改,防止数据丢失,用于数据库恢复的重要结构。
  • 包括联机重做日志online redo log、归档重做日志archived redo log

联机重做日志文件 

联机重做日志有以下用途及特性:

  • 记录所有对数据的改变
  • 提供恢复机制  分组、循环使用
  • 至少需要两个日志组

当写满一组重做日志文件,LGWR将移到下个联机重做日志文件组

  • 日志切换
  • 同时发生检查点
  • 信息将被写入控制文件

可以查询以下的视图:

  • V$LOG
  • V$LOGFILE 

Oracle学习-3存储结构管理


强行日志切换和检查点 

Oracle学习-3存储结构管理

Oracle学习-3存储结构管理

增加联机重做日志文件组成员 

Oracle学习-3存储结构管理

Oracle学习-3存储结构管理

Oracle学习-3存储结构管理

归档重做日志文件 

归档重做日志文件

  • 包含实例生成的数据更改(重做操作)的实时历史记录
  • 使用归档和数据库备份可以恢复丢失的数据文件
  • 有归档,RMAN备份才有意义

 ARCHIVELOG模式

  • 启用了联机重做日志归档的数据库模式 

设置归档目录:

  • show parameter LOG_ARCHIVE;
  • alter system set LOG_ARCHIVE_DEST_1 ='location=/home/db/oracle/oradata/arch

把数据库改为mount状态:

  • shutdown immediate;
  • startup mount;

把数据库改为归档模式:

  • alter database archivelog;--(noarchivelog)
  • alter database open;
  • archive log list; 

切归档:

  • alter system switch logfile;
  • alter system checkpoint;
  • alter system archive log current;

查看v$log v$logfile视图:

  • select * from v$log;
  • select * from v$logfile;
  • select * from v$archived_log; 
  • select NAME from v$archived_log;

相关语句

--查看数据库日志模式
SQL> archive log list

--查看、设置归档日志目录位置
SQL> show parameter LOG_ARCHIVE_DEST_1
SQL> alter system set LOG_ARCHIVE_DEST_1 = 'location=/home/db/oracle/oradata/arch';

--设置归档模式
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;--noarchivelog
SQL> alter database open;
SQL> archive log list
--手动归档日志
SQL> alter system archive log current;

--查看生成的归档日志文件
SQL> select name from v$archived_log;
cd /home/db/oracle/oradata/arch
ls -ltr
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年03月29日   52   0   0 Oracle
  TEZNKK3IfmPf   2024年03月22日   57   0   0 数据库Oracle
  TEZNKK3IfmPf   2024年03月22日   43   0   0 Oracle
  TEZNKK3IfmPf   2024年04月19日   35   0   0 Oracle
  TEZNKK3IfmPf   2024年03月22日   110   0   0 数据库Oracle
TEZNKK3IfmPf