商业数据库 - oracle -表空间管理 - 创建数据库

表空间类型介绍

Oracle数据库中主要的表空间类型有永久表空间、撤消表空间和临时表空间。

永久表空间包含一些段,这些段在会话或事务结束后依然持续存在。

虽然撤消表空间可能有一些段在会话或事务结束后仍然保留,但它为访问被修改表的SELECT语句提供读一致性,同时为数据库的大量Oracle闪回特性提供撤消数据。撤消段主要用来存储一些列在更新或删除前的值。如果用户的会话在用户发出COMMIT或ROLLBACK前失败,将取消更新、插入和删除,并且永远不会被其他会话访问。用户会话永远不能直接访问撤消段,而且撤消表空间只能有撤消段。

临时表空间包含暂时的数据,这些数据只存在于会话的持续时间,例如完成排序操作的空间数据不适合长期保存。

大文件表空间可用于这三类表空间的任何一种,它们将维护点从数据文件移到表空间,从而简化了表空间的管理。

永久表空间管理

永久表空间

例如SYSTEM表空间和SYSAUX表空间
任何在超出会话或事务边界后需要由用户或应用程序保留的段都应存储在永久表空间。

数据库级别表空间
SYSTEM表空间 用户段绝对不应该驻留在SYSTEM或SYSAUX表空间中。如果在创建用户时未指定默认的永久表空间或临时表空间,将使用数据库级别的默认永久表空间和临时表空间。

手动创建数据库
如果手动创建数据库,务必指定默认永久表空间和默认临时表空间,如下面的CREATE DATABASE命令所示:

CREATE DATABASE DatabaseNameUSER SYS IDENTIFIED BY elsm25USER SYSTEM IDENTIFIED BY welisa45LOGFILE GROUP 1 ('/u02/oracle11g/oradata/rjbdb/redo01.log') SIZE 100MGROUP 2 ('/u04/oracle11g/oradata/rjbdb/redo02.log') SIZE 100MGROUP 3 ('/u06/oracle11g/oradata/rjbdb/redo03.log') SIZE 100MMAXLOGFILES 5MAXLОGMEMBERS 5MAXLOGHISTORY 1MAXDATAFILES 100MAXINSTANCES 1CHARACTER SET US7ASCIINATIONAL CHARACTER SET AL6UTF16 DATAFILE '/u01/oracle11g/oradata/rjbdb/system01.dbf' SIZE 2G REUSEEXTENT MANAGEMENT LOCALSYSAUX DATAFILE '/u01/oracle1lg/oradata/rjbdb/sysaux01.dbf' SIZE 800M REUSEDEFAULT TABLESPACE USERSDATAFILE'/u03/oracle11g/oradata/rjbdb/users01.dbf'SIZE 4G REUSEDEFAULT TEMPORARY TABLESPACE TEPTS1TEMPFILE '/u01/oracle11g/oradata/rjbdb/temp01.dbf' SIZE 500M REUSEUNDO TABLESPACE undotbs DATAFILE'/u02/oracle1lg/oradata/rjbdb/undotbs0l.dbf'SIZE 400M RESUE AUTOEXTEND ON MAXSIZE 2G;

上述创建数据库的解释:

IDENTIFIED BY是一个子句,用于指定数据库用户的密码。在这个上下文中,它分别用于为SYSSYSTEM这两个数据库内置用户设置密码。

  • USER SYS IDENTIFIED BY elsm25:这部分指定了SYS用户的密码为elsm25SYS用户是Oracle数据库中的超级用户,拥有对数据库的完全访问权限,包括创建和删除数据库对象、管理用户和权限等。

  • USER SYSTEM IDENTIFIED BY welisa45:这部分指定了SYSTEM用户的密码为welisa45SYSTEM用户也是Oracle数据库中的一个高级用户,通常用于管理数据库的日常操作,如备份、恢复、监控等。虽然SYSTEM用户的权限没有SYS用户那么广泛,但它仍然拥有对大多数数据库对象的访问和管理权限。
    在实际的生产环境中,通常不会直接在CREATE DATABASE语句中设置SYSSYSTEM用户的密码。相反,数据库管理员可能会在数据库创建完成后,使用Oracle提供的工具(如SQL Plus)来更改这些用户的密码,以确保它们符合组织的安全策略。

LOGFILE子句用于在创建数据库时指定重做日志文件(redo log files)的位置和大小。重做日志文件是Oracle数据库的重要组成部分,用于记录对数据库所做的所有更改,以便在发生故障时能够恢复数据。

  • LOGFILE:指定重做日志文件组的开始。

  • GROUP 1GROUP 2GROUP 3:每个GROUP关键字后面跟着的数字表示重做日志文件组的编号。Oracle数据库允许您创建多个重做日志文件组,以提高可用性和性能。每个组包含一个或多个重做日志文件成员(member),这些成员是物理文件,存储在磁盘上的不同位置以提高冗余性。

  • ('/u02/oracle11g/oradata/rjbdb/redo01.log')('/u04/oracle11g/oradata/rjbdb/redo02.log')('/u06/oracle11g/oradata/rjbdb/redo03.log'):这些是重做日志文件组的成员路径。每个路径都指向一个存储在磁盘上的重做日志文件。在实际部署中,您应该将这些文件分散存储在多个磁盘上,以减少单点故障的风险。

  • SIZE 100M:指定每个重做日志文件的大小为100MB。重做日志文件的大小应该根据数据库的活动级别和可用的磁盘空间来确定。较小的重做日志文件会导致频繁的日志切换和归档操作,而较大的重做日志文件可能会减少日志切换的频率,但也会增加恢复时间。

MAXLOGFILES子句
- 含义:指定数据库可以拥有的最大重做日志文件组数。
- :在您的例子中,MAXLOGFILES 5表示数据库最多可以有5个重做日志文件组。
- 重要性:这个参数影响数据库的可用性和恢复策略。更多的重做日志文件组可以提高数据库的可用性,因为在一个组不可用时,其他组仍然可以继续记录重做信息。

MAXLOGMEMBERS:子句
- 含义:指定每个重做日志文件组可以包含的最大成员数(即物理文件数)。
- :在您的例子中,MAXLOGMEMBERS 5表示每个重做日志文件组最多可以有5个成员。
- 重要性:增加每个组的成员数可以提高冗余性,因为一个组的成员可以在不同的磁盘上存储,从而减少单点故障的风险。但是,过多的成员也会增加管理的复杂性。
MAXLOGHISTORY:子句
- 含义:指定控制文件中可以保留的重做日志历史记录的最大数量。
- :在您的例子中,MAXLOGHISTORY 1表示控制文件中只能保留一个重做日志历史记录。
- 重要性:这个参数影响数据库的恢复能力。更多的历史记录可以提供更多的恢复点,但也会增加控制文件的大小。通常,这个值应该根据数据库的恢复需求和可用的磁盘空间来确定。
注意MAXLOGHISTORY 1可能是一个过低的设置,特别是在需要长时间保留重做日志历史记录以支持数据恢复的场景中。您可能需要重新评估这个值是否适合您的数据库环境。

MAXDATAFILES:子句
- 含义:指定数据库可以拥有的最大数据文件数。
- :在您的例子中,MAXDATAFILES 100表示数据库最多可以有100个数据文件。
- 重要性:这个参数影响数据库的存储能力和扩展性。更多的数据文件可以提供更好的存储管理和性能优化机会,但也会增加管理的复杂性。
MAXINSTANCES:子句
- 含义:指定可以同时访问数据库的最大实例数。
- :在您的例子中,MAXINSTANCES 1表示数据库只能由一个实例访问。
- 重要性:这个参数通常与Oracle Real Application Clusters (RAC)相关,它影响数据库的并行处理能力和高可用性。在单个实例环境中,这个值通常设置为1。

CHARACTER SET US7ASCII
- CHARACTER SET定义了数据库的默认字符集。
- US7ASCII是一个字符集,它包含了标准的ASCII字符(0-127),主要用于英语文本。
- 选择US7ASCII作为字符集意味着数据库将仅支持ASCII字符,对于包含非ASCII字符(如重音符号、特殊符号或其他语言的字符)的数据,可能会导致数据损坏或无法正确显示。
NATIONAL CHARACTER SET AL6UTF16
- NATIONAL CHARACTER SET定义了用于存储NCHAR、NVARCHAR2和NCLOB数据类型的字符集。
- AL6UTF16是一个基于UTF-16编码的字符集,它支持Unicode标准,能够表示世界上几乎所有语言的字符。
- 选择AL6UTF16作为国家字符集允许数据库存储和处理多语言数据,这对于全球化应用程序来说是非常重要的。

在创建或配置数据库时,选择适当的字符集非常重要。如果您的应用程序需要支持多种语言,那么选择一个支持Unicode的字符集(如AL32UTF8对于CHARACTER SETAL6UTF16对于NATIONAL CHARACTER SET)通常是一个好主意。然而,如果您确定您的数据将仅包含ASCII字符,那么使用US7ASCII作为CHARACTER SET可能会节省一些存储空间。请注意,一旦数据库被创建,更改字符集可能会非常困难,甚至可能导致数据丢失。因此,在创建数据库之前仔细规划字符集选择是至关重要的。(这里注意博主看的参考资料作者是美国人写,在实际生产中最好还是根据实际选择字符集)

EXTENT MANAGEMENT LOCAL 是表空间管理的一个重要方面,它指的是表空间的区(extent)管理方式为本地管理。这种方式与另一种管理方式 EXTENT MANAGEMENT DICTIONARY(数据字典管理)相对。

扩展 本地管理

EXTENT MANAGEMENT LOCAL 的特点与优势
  1. 管理方式
    • 本地管理表空间是通过在表空间的每个数据文件中维持一个位图(bitmap)来跟踪在此文件中块的剩余空间及使用情况,并及时进行更新。
  2. 性能提升
    • 由于本地管理表空间的空间管理更新只修改表空间的额度情况,而不涉及到其他数据字典表,因此大大减少了数据字典表之间的竞争,从而提高了数据库性能。
    • 同时,本地管理表空间的空间管理除对表空间的额度情况做更新之外,不修改其他任何数据字典表,因此不产生回退信息,也提高了数据库的运行速度。
  3. 空间管理效率
    • 本地管理表空间可以自动跟踪相邻的剩余空间并由系统自动管理,因此不需要去合并相邻的剩余空间。
    • 本地管理表空间的所有区(extent)还可以具有相同的大小(在采用统一大小分配方式时),从而减少了空间碎片。
  4. 分配方式
    • 本地管理表空间支持自动分配(AUTOALLOCATE)和统一大小分配(UNIFORM)两种空间分配方式。
      • 自动分配方式(AUTOALLOCATE)由系统来自动决定区(extent)的大小。
      • 统一大小分配(UNIFORM)则由用户指定区(extent)的大小。
与 EXTENT MANAGEMENT DICTIONARY 的比较
  • 数据字典管理方式需要系统来管理空间分配,而本地管理方式则是自己管理分配,因此提高了管理效率。
  • 数据字典管理方式在每次空间分配或释放时都需要更新数据字典表,这会产生额外的开销。而本地管理方式则通过位图进行空间跟踪和更新,减少了这种开销。
使用场景与注意事项
  • 在大多数情况下,建议使用本地管理方式(EXTENT MANAGEMENT LOCAL)来创建和管理表空间,因为它提供了更好的性能和空间管理效率。
  • 如果需要将表空间从数据字典管理方式转换为本地管理方式,可以使用Oracle提供的PL/SQL包(如DBMS_SPACE_ADMIN)来进行转换。但请注意,系统表空间和临时表空间不能从本地管理转化到数据字典管理。

综上所述,EXTENT MANAGEMENT LOCAL 是Oracle数据库中一种高效、灵活的表空间管理方式,它通过本地化的空间管理和更新机制,提高了数据库的性能和空间管理效率。

扩展 REUSE

在Oracle数据库中,REUSE是一个与数据文件和表空间管理相关的参数。它允许在创建或修改表空间时重用已存在的数据文件。以下是关于REUSE的详细解释:

一、REUSE参数的作用

REUSE参数主要用于以下两种情况:

  1. 创建表空间时重用数据文件
    当尝试创建一个新的表空间,并且指定的数据文件已经存在时,如果使用了REUSE参数,Oracle将重用该数据文件,并根据需要调整其大小(如果指定了新的大小)或保留其原始大小(如果没有指定新大小)。

  2. 添加数据文件到表空间时重用文件
    在向现有表空间添加新的数据文件时,如果指定的文件已经存在并且使用了REUSE参数,Oracle将尝试重用该文件。但请注意,如果该文件已经是数据库的一部分(即已经属于另一个表空间),则无法重用,并且会报错。

二、使用REUSE参数的注意事项
  1. 数据丢失风险
    如果Oracle使用了已经存在的文件,并且该文件之前包含数据,那么这些数据将被覆盖并丢失。因此,在使用REUSE参数之前,必须确保该文件是空的或者不再需要其中的数据。

  2. 文件必须可访问
    要重用的文件必须位于Oracle数据库可以访问的路径上,并且Oracle数据库必须有足够的权限来读取和写入该文件。

  3. 无法用于不存在的文件
    如果指定的文件不存在,并且没有指定文件大小,则Oracle将忽略REUSE参数并尝试创建新文件。如果指定了文件大小但文件不存在,Oracle将尝试创建该文件并使用指定的大小。然而,在某些情况下(如添加数据文件到表空间时),如果文件不存在且没有指定大小,即使使用了REUSE参数,也可能无法成功创建表空间或添加数据文件。

三、REUSE参数的使用示例

以下是一个使用REUSE参数创建表空间的示例:

sql复制代码CREATE TABLESPACE my_tablespace  DATAFILE '/path/to/my_datafile.dbf' SIZE 100M REUSE;

在这个示例中,如果/path/to/my_datafile.dbf文件已经存在,Oracle将重用该文件并创建一个名为my_tablespace的表空间。如果文件不存在,Oracle将尝试创建该文件并使用100M的大小(前提是没有其他错误阻止文件的创建)。

请注意,在实际使用中,应谨慎使用REUSE参数,并确保在重用文件之前已经备份了任何重要数据。此外,还应遵循最佳实践来管理数据库表空间和数据文件,以确保数据库的完整性和性能。

OUI创建数据库
在Oracle数据库中,OUI(Oracle Universal Installer,Oracle通用安装程序)用于创建和配置数据库。在创建数据库的过程中,会涉及到永久段和临时段的分配。以下是对这两者分配的详细讲解:

一、永久段(Permanent Segments)的分配

  1. 定义与用途

    • 永久段是数据库中用于存储持久数据的段,这些数据在数据库关闭和重启后仍然存在。
    • 永久段包括数据段、索引段、LOB段等,用于存储表、索引、大型对象等数据。
  2. 分配方式

    • 在创建数据库时,OUI会为用户指定的默认永久表空间分配永久段。
    • 用户也可以在创建表、索引等对象时,显式指定表空间来分配永久段。
  3. 管理

    • 永久段的空间管理是通过区(Extent)来进行的,区是数据库存储的基本单位。
    • 当一个段需要更多空间时,它会以区为单位进行扩展。

二、临时段(Temporary Segments)的分配

  1. 定义与用途

    • 临时段是数据库中用于存储临时数据的段,这些数据在数据库会话结束后会被删除。
    • 临时段主要用于排序操作、临时表、中间结果集等。
  2. 分配方式

    • 在创建数据库时,OUI会为用户指定的默认临时表空间分配临时段。
    • 临时段既可以在临时表空间中分配,也可以在永久表空间中分配(但这种情况较少见,通常用于特定的操作,如CTAS)。
    • 当一个会话需要临时段时,Oracle会从指定的临时表空间中分配一个或多个区给该会话。
  3. 管理

    • 临时段的管理与永久段有所不同。由于临时数据是临时的,因此不需要像永久数据那样进行复杂的空间回收和整理。
    • Oracle采用了一种“只分配不释放”的策略来管理临时段,即当临时段被分配后,即使排序操作完成,也不会立即从临时表空间中释放。这种策略提高了临时段管理的效率。
    • 当数据库重启或临时表空间被删除时,临时段中的数据会被自动清理。
  4. 注意事项

    • 临时表空间的大小和性能对数据库的排序操作有很大影响。如果临时表空间不足,会导致排序操作失败。
    • DBA需要定期监控临时表空间的使用情况,并根据需要进行调整。

综上所述,OUI在创建数据库时,会根据用户指定的默认永久表空间和默认临时表空间来分配永久段和临时段。这两者在数据库中扮演着不同的角色,具有不同的分配方式和管理策略。

参考资料

《oracle database 12c DBA官方手册》
文心一言

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/467087.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【前端】JavaScript 方法速查大全-对象(二)

🔥 前言 在现代Web开发中,JavaScript已经成为不可或缺的编程语言。无论是前端开发还是后端服务,JavaScript都扮演着重要角色。为了帮助开发者更高效地使用JavaScript,本文将为您提供一个全面、系统的JavaScript方法参考&#xff…

右旋圆极化散射后的stocks矢量 与T3矩阵的关系

T3矩阵如下 斯托克斯与T3的关系如下。 斯托克斯与T3均没有平均处理,即斯托克斯是完全极化波的(一种琼斯矢量得到),T3是由一个散射矩阵得到,只有一个特征值。

电子电气架构 -- 智能汽车电子电气架构开发关键技术

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所有人的看法和评价都是暂时的,只有自己的经历是伴随一生的,几乎所有的担忧和畏惧,都是来源于自己的想象,只有你真的去做了,才会发现有多快乐。…

Windows下mysql数据库备份策略

Windows下mysql的增量备份和全量备份,并利用schtasks设置定时任务执行bat脚本。 一、备份要求 序号 备份类型 备份频次 备份时间 1 增量备份 每周一-每周六各一次 18:00:00 2 全量备份 每周日一次 18:00:00 二、备份方法 2.1增量备份 2.1.1准备工作…

使用CentOS宝塔面板docker搭建EasyTier内网穿透服务

0. 前言 EasyTier是一个简单、安全、去中心化的内网穿透 VPN 组网方案,部署方便,支持 MacOS/Linux/Windows/FreeBSD/Android平台,而且作者搭建了一个公共服务器,不想折腾自建服务,可以使用默认的公共服务器地址 tcp:/…

Moment.js、Day.js、Miment,日期时间库怎么选?

一直以来,处理时间和日期的JavaScript库,选用的都是Momment.js。它的API清晰简单,使用方便灵巧,功能还特别齐全。 大师兄是Moment.js的重度使用者。凡是遇到时间和日期的操作,就把Moment.js引用上。 直到有天我发现加…

AOSP去特征|AOSP导入android-studio|AOSP导入clion

什么是AOSP 开源性:AOSP的源代码公开,任何人都可以获取和修改,适合想要开发或自定义安卓系统的开发者。 灵活性:AOSP提供了基本的安卓功能,制造商可以基于AOSP开发出自己的定制系统(如三星的One UI、小米的…

JavaScript 网页设计详解教程

JavaScript 网页设计详解教程 引言 JavaScript 是一种广泛使用的编程语言,主要用于网页开发。它使得网页具有动态交互性,能够响应用户的操作。随着前端开发的不断发展,JavaScript 已成为现代网页设计中不可或缺的一部分。本文将详细介绍 Ja…

Android关机流程知多少?

在 Android 中,关机流程涉及系统各个组件的协同工作,确保设备在断电之前能够安全地关闭所有活动并保存数据。以下是 Android 系统中关机流程的详细介绍: 1. 用户触发关机请求 关机流程由用户的操作触发,通常有以下几种方式&#…

【Mac】PD报错:无法为“Windows” 完成操作,虚拟机ID无效的解决办法

Parallels Desktop是Mac上一款非常常用的虚拟机软件,但是在使用过程中,可能会遇到一些问题不知道如何处理。比如有时会遇到PD报错:无法为“Windows 11”完成操作,虚拟机ID无效。 错误原因 电脑上安装过虚拟机,虚拟机被…

51c大模型~合集17

我自己的原文哦~ https://blog.51cto.com/whaosoft/11599989 #关于大模型「越狱」的多种方式 此项目是由伊利诺伊大学香槟分校(UIUC)的汪浩瀚教授主导,汇集了多名intern的共同努力而成。长久以来,这个跨学科的团队一直在前沿科…

一:时序数据库-Influx应用

目录 0、版本号 1、登录页面 2、账号基本信息 3、数据库案例 4、可视化 5、java案例 0、版本号 InfluxDB v2.4.0 1、登录页面 http://127.0.0.1:8086/signin 账号:自己账号 密码:自己密码 2、账号基本信息 查看用户id和组织id!&…

Uefi Application小游戏开发之贪吃蛇

这段代码是一个 UEFI 应用程序&#xff0c;它实现了一个简单的贪吃蛇游戏。 #include <Uefi.h> #include <Library/UefiLib.h> #include <Library/ShellCEntryLib.h> #include <Library/UefiBootServicesTableLib.h> #include <Library/UefiRuntim…

C++设计模式结构型模式———组合模式

文章目录 一、引言二、组合模式三、总结 一、引言 组合模式是一种结构型设计模式&#xff0c; 可以使用它将对象组合成树状结构&#xff0c; 并且能像使用独立对象一样使用它们。代码实现中涉及了递归调用。组合模式与传统上的“类与类之间的组合关系”没有关联&#xff0c;不…

『大模型笔记』IBM技术团队:什么是智能体型RAG!

『大模型笔记』IBM技术团队:什么是智能体型RAG! 文章目录 一. 『大模型笔记』IBM技术团队:什么是智能体型RAG!二. 参考文献一. 『大模型笔记』IBM技术团队:什么是智能体型RAG! ✅检索增强生成(RAG)是一种结合检索和生成能力的技术,通过从向量数据库检索相关信息作为上…

快速傅里叶变换(FFT)基础(附python实现)

对于非专业人士&#xff0c;傅里叶变换一直是一个神秘的武器&#xff0c;它可以分析出不同频域的信息&#xff0c;从时域转换到频域&#xff0c;揭示了信号的频率成分&#xff0c;对于数字信号处理&#xff08;DSP&#xff09;、图像、语音等数据来说&#xff0c;傅里叶变换是最…

丹摩征文活动|新手入门指南

在AI大模型发展的今天&#xff0c;高性能计算平台已经成为研究和应用领域中不可或缺的工具。丹摩智算平台专注于为用户提供强大的算力支持和便捷的操作流程&#xff0c;帮助研究者和开发者更高效地训练和优化AI模型。本教程将深入介绍丹摩智算平台的核心功能及具体操作步骤&…

Java项目实战II基于Spring Boot的便利店信息管理系统(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 在快节奏的…

【VScode】VScode内的ChatGPT插件——CodeMoss全解析与实用教程

在当今快速发展的编程世界中&#xff0c;开发者们面临着越来越多的挑战。如何提高编程效率&#xff0c;如何快速获取解决方案&#xff0c;成为了每位开发者心中的疑问。今天&#xff0c;我们将深入探讨一款颠覆传统编程体验的插件——CodeMoss&#xff0c;它将ChatGPT的强大功能…

数据冒险-dadd,sub和and

从图中的流水线执行情况来看&#xff0c;我们可以分析指令之间的依赖关系。图中每条指令对应的执行阶段标注为 IF (取指令)&#xff0c;ID (指令译码)&#xff0c;EX (执行)&#xff0c;Mem (访存)&#xff0c;和 WB (写回)。以下是对每条指令依赖情况的分析&#xff1a; 第一条…