Oracle 第3章:Oracle数据库体系结构

news/2024/10/28 18:19:27/

在讨论 Oracle 数据库的体系结构时,我们主要关注两个方面:实例(Instance)和数据库(Database)。这两个概念是理解 Oracle 数据库工作原理的基础。

实例与数据库文件

实例 是运行在内存中并由一组后台进程组成的集合。它负责管理数据库的数据存储,并提供访问这些数据的方法。当启动一个 Oracle 数据库时,实际上是启动了一个实例来管理数据库文件。

数据库文件 则是在磁盘上的一组文件,这些文件包含实际的数据、索引等信息。数据库文件可以分为控制文件、数据文件、重做日志文件等几种类型。

表空间与数据文件

表空间(Tablespace)是数据库的一个逻辑划分。每个表空间由一个或多个物理文件(数据文件,Datafile)组成。表空间中的所有对象(如表、索引等)都必须属于某一个表空间。当创建数据库对象时,需要指定该对象应该位于哪个表空间内。

创建表空间的 SQL 语句示例:
sql">CREATE TABLESPACE users
DATAFILE '/u01/app/oracle/oradata/orcl/users.dbf'
SIZE 100M
AUTOEXTEND ON
NEXT 10M
MAXSIZE UNLIMITED;

这段 SQL 语句创建了一个名为 users 的表空间,并指定了它的数据文件路径、初始大小、自动扩展功能以及最大扩展大小。

在表空间中创建表的 SQL 语句示例:
sql">CREATE TABLE my_table (id NUMBER(10) PRIMARY KEY,name VARCHAR2(50),age NUMBER(3)
)
TABLESPACE users;

这个例子展示了如何在一个已经存在的表空间 users 中创建一个表 my_table

结合案例源代码详细讲解

假设我们有一个电子商务应用程序,我们需要创建一个用户表空间来存储用户信息。我们可以按照以下步骤进行操作:

  1. 创建表空间

    sql">CREATE TABLESPACE users_tbs
    DATAFILE '/path/to/datafile/users_tbs.dbf'
    SIZE 200M
    AUTOEXTEND ON
    NEXT 10M;
    
  2. 创建用户表

    sql">CREATE TABLE users (user_id NUMBER(10) CONSTRAINT users_pk PRIMARY KEY,username VARCHAR2(50),password VARCHAR2(50),email VARCHAR2(100)
    )
    TABLESPACE users_tbs;
    

在这个例子中,我们首先创建了一个名为 users_tbs 的表空间,并设置了一个初始大小为 200MB 的数据文件。接着,我们在 users_tbs 表空间中创建了一个 users 表,用于存储用户的 ID、用户名、密码和电子邮件地址。

以上就是关于 Oracle 数据库体系结构中的实例与数据库文件、表空间与数据文件的基本介绍及示例。希望这可以帮助你更好地理解和使用 Oracle 数据库

当然,我们可以继续深入探讨 Oracle 数据库体系结构以及相关的一些高级特性。

控制文件

控制文件(Control File)包含了数据库的物理结构的信息,比如数据库名称、位置和状态等。控制文件对于数据库的正常运行至关重要,因此通常会有多个副本以防止单点故障。

重做日志文件

重做日志文件(Redo Log Files)记录了对数据库所做的所有修改。如果数据库崩溃,Oracle 使用这些文件来恢复未提交的事务。重做日志文件通常有多个,分成不同的组。

临时表空间

临时表空间(Temporary Tablespace)用来存储临时对象,例如排序操作、索引创建期间产生的中间结果等。临时对象只存在于事务期间,在事务结束时会被自动删除。

创建临时表空间的 SQL 语句示例:
sql">CREATE TEMPORARY TABLESPACE temp_tbs
TEMPFILE '/u01/app/oracle/oradata/orcl/temp.dbf'
SIZE 50M
AUTOEXTEND ON
NEXT 10M
MAXSIZE UNLIMITED;

这段 SQL 语句创建了一个名为 temp_tbs 的临时表空间,并指定了它的临时文件路径、初始大小、自动扩展功能以及最大扩展大小。

存储参数

在创建表或者索引时,还可以指定存储参数来优化存储空间的使用,比如设置块的使用方式(比如是否压缩)、段的管理方式等。

设置存储参数的 SQL 语句示例:
sql">CREATE TABLE orders (order_id NUMBER(10) CONSTRAINT orders_pk PRIMARY KEY,customer_id NUMBER(10),order_date DATE
)
TABLESPACE orders_tbs
STORAGE (INITIAL 64K,NEXT 1M,MINEXTENTS 1,MAXEXTENTS 20,PCTINCREASE 0
);

此 SQL 语句创建了一个名为 orders 的表,并且指定了该表的存储参数,包括初始分配的空间大小、每次扩展的大小、最小扩展次数、最大扩展次数以及扩展百分比。

小结

通过上述内容,你可以看到 Oracle 数据库的体系结构是如何通过实例管理和数据库文件来实现的。了解这些基础概念有助于更好地设计和维护数据库系统。

好的,让我们继续深入探讨 Oracle 数据库的体系结构,并且进一步讨论一些与数据库性能、安全性和管理相关的特性。

数据字典

数据字典(Data Dictionary)是 Oracle 数据库内部用于存储有关数据库结构信息的对象集合。它保存了所有数据库对象的元数据,比如表、视图、存储过程等的定义。数据字典还记录了数据库的状态和其他重要的配置信息。DBA 可以通过查询数据字典视图来获取数据库对象的状态信息。

用户和权限

在 Oracle 数据库中,用户账号用于身份验证和授权。每个用户账号都有其特定的权限集,这些权限决定了用户可以执行的操作。权限分为系统权限(如创建表、索引等)和对象权限(如选择表中的数据、更新数据等)。

创建用户和赋予权限的 SQL 语句示例:
sql">-- 创建新用户
CREATE USER john IDENTIFIED BY password;-- 为用户分配默认表空间
ALTER USER john DEFAULT TABLESPACE users;-- 分配临时表空间
ALTER USER john TEMPORARY TABLESPACE temp;-- 授予必要的权限
GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW TO john;

这段 SQL 语句创建了一个名为 john 的新用户,并为其分配了默认表空间 users 和临时表空间 temp,同时赋予了创建会话、表和视图的权限。

角色

角色是一组权限的集合,可以简化权限管理。管理员可以定义角色并将一组权限分配给它,然后将角色授予用户。

创建角色和分配权限的 SQL 语句示例:
sql">-- 创建角色
CREATE ROLE data_entry;-- 分配权限给角色
GRANT INSERT, UPDATE ON sales.orders TO data_entry;-- 将角色授予用户
GRANT data_entry TO jane;

这段 SQL 语句创建了一个名为 data_entry 的角色,并将 INSERTUPDATE 权限分配给了 sales.orders 表,最后将 data_entry 角色授予了用户 jane

数据库审计

为了确保数据库的安全性和合规性,可以启用数据库审计功能来跟踪和记录敏感操作。审计可以针对特定的用户、角色或整个数据库

启用审计的 SQL 语句示例:
sql">-- 审计特定用户的所有活动
AUDIT ALL ON SYSTEM BY john;-- 审计特定表上的 SELECT 操作
AUDIT SELECT ON sales.orders;

数据库备份与恢复

为了防止数据丢失,需要定期备份数据库。Oracle 提供了多种备份解决方案,如 RMAN(Recovery Manager)工具,它可以用来创建完整的数据库备份,也可以用来进行增量备份。

使用 RMAN 进行完整备份的命令示例:
$ rman target /
RMAN> backup database plus archivelog delete input;

这条命令会在 RMAN 命令行界面中执行一个完整的数据库备份,同时备份归档日志,并删除旧的归档日志。


http://www.ppmy.cn/news/1542653.html

相关文章

一个和v-html功能一样且能防止xss攻击的插件

一个和v-html功能一样且能防止xss攻击的插件 vue-dompurify-html 牛皮plus 在页面上显示富文本内容 在vue中可以用v-html来实现 但是v-html有一个弊端:无法防止xss攻击 现在和大家分享一个插件: 既能实现v-html的功能,又能防止xss攻击&#…

线性可分支持向量机的原理推导 9-29对偶可行性条件 公式解析

本文是将文章《线性可分支持向量机的原理推导》中的公式单独拿出来做一个详细的解析,便于初学者更好的理解。 公式 9-29 是支持向量机(SVM)优化过程中 Karush-Kuhn-Tucker(KKT) 条件的一个部分,表示对偶可行…

VScode插件:前端每日一题

大文件上传如何做断点续传? 在前端实现大文件上传的断点续传,通常会将文件切片并分块上传,记录每块的上传状态,以便在中断或失败时只上传未完成的部分。以下是实现断点续传的主要步骤和思路: 1. 文件切片 (File Slici…

智能语音设备测试 | 音频基础

一、音频信号的基本属性 频率(Frequency) 定义:音频信号的频率表示声音的高低,通常以赫兹(Hz)为单位。范围:人耳能够听到的频率范围大约在20Hz到20kHz之间。 振幅(Amplitude&#xf…

Visual Basic介绍及简单例子

Visual Basic(简称 VB)是一种由微软公司开发的包含协助开发环境的事件驱动编程语言。 一、主要特点 易于学习和使用: Visual Basic 具有直观的可视化开发环境,使用户可以通过拖放控件和设置属性的方式快速创建用户界面。对于初学者来说,这种方式非常容易上手,无需深入了…

vscode插件live server无法在手机预览调试H5网页

环境 Window10、vscode:1.94.2、Live Server:v5.7.9、Live Server (Five Server):v0.3.1 问题 PC端预览没有问题,但是在手机点击链接显示访问失败 排查 1. 是否同一局域网 意思就是电脑、手机是不是访问同一个网络。电脑插得…

面试中的一个基本问题:如何在数据库中存储密码?

面试中的一个基本问题:如何在数据库中存储密码? 在安全面试中,“如何在数据库中存储密码?”是一个基础问题,但反映了应聘者对安全最佳实践的理解。以下是安全存储密码的最佳实践概述。 了解风险 存储密码必须安全&am…

【数据仓库】数据仓库面试题

简单整理了一下题目和答案,希望对大家有所帮助。 第一面:基础技术与概念 什么是ETL?请解释ETL过程中的每个步骤。 ETL是Extract, Transform, Load的缩写,用于描述将数据从源系统提取、转换为适合分析的形式、最后加载到目标系统的…