oracle (8)Managing Tablespace Data File

2023-10-31 04:15

本文主要是介绍oracle (8)Managing Tablespace Data File,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Managing Tablespace & Data File (维护表空间和数据文件)

目标:

  • 定义表空间和数据文件的用途
  • 创建表空间
  • 管理表空间
  • 学会使用甲骨文托管文件(OMF) 创建和管理表空间(不是重点)
  • 获取表空间信息

一、基础知识

1、表空间和数据文件

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

表空间:

  • 一次只能属于一个数据库
  • 由一个或多个数据文件组成
  • 进一步划分为逻辑存储单元

数据文件:

  • 只能属于一个表空间和一个数据库
  • 是架构物件资料的储存库

2、存储层次结构摘要

数据库-->>表空间-->>段-->>区-->>块

  • 左边是逻辑区分,右边是物理区

  • 一个tablespace对应多个Data file

  • Data file是由很多OS block操作系统内存块组成

  • 一个Oracle data block内存块是由多个OS block组成的

  • 一个数据库是由多个模式组成的

  • 一个数据库是由多个表空间组成的

  • 一个表空间是由多个Segment段组成的

    • 在Oracle数据库中,一个segment是一个逻辑存储结构,它由一个或多个物理存储结构组成,用于存储数据。每个表或索引都有一个对应的segment,也就是表段和索引段。

  • 一个Segment段由多个Extent区组成

    • 在Oracle数据库中,extent是指一组数据块,用于存储表或索引中的数据。每个extent都是一个连续的物理空间,通常包含多个数据块。当存储空间不足时,Oracle会分配新的extent来存储数据。

  • 一个Extent由多个Oracle data block数据块组成

    • 在Oracle数据库中,数据块是指数据库中最小的物理数据单位,也是存储数据和索引的基本存储单位。每个数据块大小在Oracle中是固定的,通常是8KB。

              一个数据块由以下部分组成:

      • 数据块头(block header):用于存储关于数据块的元数据,如块的地址、块的类型、块大小和块的校验和等信息。
      • 行数据(data rows):存储表中的数据。
      • 行目录(row directory):存储每行数据在数据块中的位置和大小信息。
      • 空间管理信息(free space management information):用于管理数据块中的空闲空间。

总结注意点:

  1. 数据库由一个或多个表空间组成。
  2. 表空间由一个或多个数据文件组成。这些文件可能是文件系统中的熟文件、原始分区、ASM管理的数据库文件或集群文件系统上的文件。表空间包含段。
  3. 段(TABLE、INDEX等)由一个或多个区段组成。段存在于表空间中,但可能在该表空间中的许多数据文件中包含数据。
  4. 区是磁盘上逻辑上连续的块集。区位于单个表空间中,而且始终位于该表空间中单个文件中。
  5. 块是数据库中最小的分配单位。块是I/o的最小单位数据库使用的。

3、表空间的类型

  • SYSTEM表空间
    • 用数据库创建的
    • 包含数据字典
    • 包含SYSTEM撤消段
  • 非SYSTEM表空间
    • 分开的部分
    • 简化空间管理
    • 控制分配给用户的空间量
  • 永久的,撤消的,临时的

4、表空间中的空间管理

  • 本地管理的表空间
    • 空闲区在表空间中进行管理
    • 位图用于记录空闲区
    • 每个比特对应一个块或一组块
    • 位值指示空闲或已使用
  • 字典管理的表空间:
    • 空闲区段由数据字典管理
    • 在分配或取消分配区时更新适当的表。

5、临时表空间

  • 如果SYSTEM表空间是本地管理的,那么在创建数据库时必须至少定义一个默认的临时表空间。本地管理的SYSTEM表空间不能用于默认临时存储。
  • 如果SYSTEM是字典管理的,并且在创建数据库时没有定义默认的临时表空间那么SYSTEM仍然用作默认的临时存储。但是,您将在ALERT.LOG中收到警告,表示建议使用默认的临时表空间,并且在以后的发行版中是必要的。

6、Default Temporary TS 默认临时TS

  • 指定数据库范围内的默认临时表空间
  • 消除使用SYSTEM表空间存储临时数据
  • 可以通过使用以下方式创建全局表空间
    • 创建数据库
    • ALTER数据库

二、常用实操

1、Creating Tablespaces创建表空间

使用以下命令创建表空间:

CREATE TABLESPACE userdata 
DATAFILE '/u01/oradata/userdata01.dbf' SIZE 5M;

2、Dictionary-Managed TS 字典管理的表空间

  • 区段在数据字典中管理
  • 存储在表空间中的每个段可以有不同的存储子句
  • 需要链接。

代码:

CREATE TABLESPACE userdata 
DATAFILE '/u01/oradata/userdata01.dbf' 
SIZE 500M EXTENT MANAGEMENT DICTIONARY 
DEFAULT STORAGE (initial 1M NEXT 1M PCTINCREASE O);

3、Locally Managed Tablespace本地管理的表空间(最常用)

  • 减少对数据字典表的争用
  • 发生空间分配或解除分配时不生成撤消(不需要undo)
  • 不需要链接

代码:

CREATE TABLESPACE userdata
DATAFILE'/u01/oradata/userdata01.dbf' SIZE 500M 
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K:

4、Migrating a DM SYSTEM TS 字段管理的表空间转变为本地管理的表空间

因为这是一个比较重大的事,所以在做之前我们需要进行准备工作

准备工作:

  1. 对你的数据库做一个完整的备份。
  2. 确保数据库有一个不是SYSTEM的默认临时表空间。临时表空间是使用CREATE TEMPORARY TABLESPACE命令创建的。
  3. 消除字典管理表空间中的任何撤销(回滚)段
  4. 本地管理的表空间中应该至少有一个联机撤消段,或者一个撤消表空间应该是联机的.
  5. 除了包含撤消空间的表空间和默认临时表空间之外,所有表空间都应设置头READ ONLY(只读)模式。
  6. 在受限模式下启动实例(防止其他用户登录进来捣乱)。
  7. 使用以下命令迁移SYSTEM表空间
    DBMS_SPACE_ADMIN
    TABLESPACE_MIGRATE_TO_LOCAL('SYSTEM');

将字典管理的SYSTEM表空间迁移到本地管理的:

DBMS_SPACE_ADMIN
TABLESPACE_MIGRATE_TO_LOCAL('SYSTEM');

 5、Undo Tablespace 撤消表空间

  • 用于存储撤消段(比如:做事务回滚)
  • 不能包含任何其他对象
  • 区是本地管理的(undo 一定是本地管理的)
  • 只能使用DATAFILE和区段管理子句。

创建代码:

CREATE UNDO TABLESPACE undo1
DATAFILE '/u01/oradata/undo01.dbf' SIZE 40M;

6、Temporary Tablespaces 临时表空间

  • 用于排序操作
  • 可以由多个用户共享
  • 不能包含任何永久对象
  • 建议使用本地管理的区段
CREATE TEMPORARY TABLESPACE temp
TEMPFILE'/u01/oradata/temp01.dbf' SIZE 20M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 4M;

7、创建Default Temporary TS 默认临时TS

在创建数据库时创建:

CREATE DATABASE DBA01
LOGFILE
GROUP 1 ('/SHOME/ORADATA/u01/redo01.log') SIZE 100M
GROUP 2 ('/SHOME/ORADATA/u02/redo02.log') SIZE 100M
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXLOGHISTORY 1
MAXDATAFILES 100
MAXINSTANCES 1
DATAFILE '/SHOME/ORADATA/u01/system01.dbf' SIZE 325M
UNDO TABLESPACE undotbs
DATAFILE '/SHOME/ORADATA/u02/undotbs01.dbf' SIZE 200
DEFAULT TEMPORARY TABLESPACE temp
TEMPFILE '/$HOME/ORADATA/u03/temp01.dbf' SIZE 4M
CHARACTER SET US7ASCII

其中这里就是创建全局临时表空间的地方

数据库创建后创建的方法:

修改数据库默认临时表空间

ALTER DATABASE
DEFAULT TEMPORARY TABLESPACE default_temp2;

若要查找数据库查询数据库属性的默认临时表空间,请执行以下操作:

SELECT * FROM DATABASE_PROPERTIES;

8、Creating a Default Temp TS 创建默认临时TS

数据库创建后:

ALTER DATABASE
DEFAULT TEMPORARY TABLESPACEdefault_temp2;

若要查找数据库查询数据库属性的默认临时表空间,请执行以下操作:

SELECT * FROM DATABASE_PROPERTIES:

这篇关于oracle (8)Managing Tablespace Data File的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/312747

相关文章

Oracle数据库在windows系统上重启步骤

《Oracle数据库在windows系统上重启步骤》有时候在服务中重启了oracle之后,数据库并不能正常访问,下面:本文主要介绍Oracle数据库在windows系统上重启的相关资料,文中通过代... oracle数据库在Windows上重启的方法我这里是使用oracle自带的sqlplus工具实现的方

Oracle Scheduler任务故障诊断方法实战指南

《OracleScheduler任务故障诊断方法实战指南》Oracle数据库作为企业级应用中最常用的关系型数据库管理系统之一,偶尔会遇到各种故障和问题,:本文主要介绍OracleSchedul... 目录前言一、故障场景:当定时任务突然“消失”二、基础环境诊断:搭建“全局视角”1. 数据库实例与PDB状态2

oracle 11g导入\导出(expdp impdp)之导入过程

《oracle11g导入导出(expdpimpdp)之导入过程》导出需使用SEC.DMP格式,无分号;建立expdir目录(E:/exp)并确保存在;导入在cmd下执行,需sys用户权限;若需修... 目录准备文件导入(impdp)1、建立directory2、导入语句 3、更改密码总结上一个环节,我们讲了

Oracle迁移PostgreSQL隐式类型转换配置指南

《Oracle迁移PostgreSQL隐式类型转换配置指南》Oracle迁移PostgreSQL时因类型差异易引发错误,需通过显式/隐式类型转换、转换关系管理及冲突处理解决,并配合验证测试确保数据一致... 目录一、问题背景二、解决方案1. 显式类型转换2. 隐式转换配置三、维护操作1. 转换关系管理2.

Oracle查询表结构建表语句索引等方式

《Oracle查询表结构建表语句索引等方式》使用USER_TAB_COLUMNS查询表结构可避免系统隐藏字段(如LISTUSER的CLOB与VARCHAR2同名字段),这些字段可能为dbms_lob.... 目录oracle查询表结构建表语句索引1.用“USER_TAB_COLUMNS”查询表结构2.用“a

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

Oracle 数据库数据操作如何精通 INSERT, UPDATE, DELETE

《Oracle数据库数据操作如何精通INSERT,UPDATE,DELETE》在Oracle数据库中,对表内数据进行增加、修改和删除操作是通过数据操作语言来完成的,下面给大家介绍Oracle数... 目录思维导图一、插入数据 (INSERT)1.1 插入单行数据,指定所有列的值语法:1.2 插入单行数据,指

Oracle修改端口号之后无法启动的解决方案

《Oracle修改端口号之后无法启动的解决方案》Oracle数据库更改端口后出现监听器无法启动的问题确实较为常见,但并非必然发生,这一问题通常源于​​配置错误或环境冲突​​,而非端口修改本身,以下是系... 目录一、问题根源分析​​​二、保姆级解决方案​​​​步骤1:修正监听器配置文件 (listener.

IDEA下"File is read-only"可能原因分析及"找不到或无法加载主类"的问题

《IDEA下Fileisread-only可能原因分析及找不到或无法加载主类的问题》:本文主要介绍IDEA下Fileisread-only可能原因分析及找不到或无法加载主类的问题,具有很好的参... 目录1.File is read-only”可能原因2.“找不到或无法加载主类”问题的解决总结1.File

Oracle 通过 ROWID 批量更新表的方法

《Oracle通过ROWID批量更新表的方法》在Oracle数据库中,使用ROWID进行批量更新是一种高效的更新方法,因为它直接定位到物理行位置,避免了通过索引查找的开销,下面给大家介绍Orac... 目录oracle 通过 ROWID 批量更新表ROWID 基本概念性能优化建议性能UoTrFPH优化建议注