oracle 表空间与实例妙用,解决业务存储与权限处理难题

oracle 表空间与实例妙用,解决业务存储与权限处理难题

一、方案背景

在同一个研发数仓中,现使用 Oracle 数据库存储生产和质量的数据。为了满足业务发展需求,需要新增财务数据的存储,同时确保不影响现有的生产和质量数据。本方案旨在通过新增一个全新的 Oracle 表空间或实例,实现既在一个数仓里同时存储生产、质量、财务的数据,又不影响现有数据的目的。

二、相关概念

(一)表空间

表空间是 Oracle 数据库中用于存储数据的逻辑存储区域,是数据库存储的逻辑单位,用于存储数据库中的数据对象,如表、索引等。一个数据库可以包含多个表空间,每个表空间可以包含一个或多个数据文件。表空间主要有永久表空间、临时表空间和撤销表空间三种类型。常见的 Oracle 数据库会默认创建 SYSTEM、SYSAUX、USERS 等永久表空间,以及 TEMP 临时表空间和 UNDOTBS1 撤销表空间。

Oracle表空间介绍图片
该图展示了数据库结构,大椭圆代表 数据库,内有 系统表空间、撤销表空间 及 表空间1 - 3。左侧黄色便签写有“这两个表空间是必须存在的”。下方两个矩形,左为 表空间,内有 段1 - 3;右为 段,含 区1、区2 及多个 数据块。通过此图可以直观地看到表空间在数据库结构中的位置和组成。

(二)实例

一个 Oracle 数据库实例由一组用于管理数据库文件的内存结构和一系列后台进程组成。内存结构包括系统全局区(SGA),用于缓存数据和执行计划等;后台进程包括进程监视进程(PMON)、系统监视进程(SMON)、数据库写入进程(DBWR)等,负责不同的系统级任务,如进程监控、实例恢复、数据写入等。数据库和实例之间的关系可以是一对一(单实例配置)或一对多(Oracle RAC 配置)。

Oracle实例介绍图片
此图是关于 Oracle 实例和数据库的示意图。图上方标题为“图 1 - 1 Oracle 实例和数据库”。图中主要展示了 实例 部分,包含 系统全局区 (SGA),SGA 又分为 共享池(其中有 库缓存、数据字典缓存 等)、大池 等区域。此外,还有 数据库缓冲区缓存、重做日志缓冲区 等部分。图中显示了多个组件之间的关系,如 程序全局区 与 服务器进程 的关联,数据库写入进程、检查点进程 等后台进程与其他部分的连接。下方有 用户进程,以及 数据库 部分,包含 数据文件、控制文件、联机重做日志 等。通过该图可以清晰地了解 Oracle 实例的组成和各部分之间的关系。

三、方案选择

(一)新增表空间方案

1. 优点
  • 操作相对简单,不需要像创建实例那样进行复杂的配置和资源分配。
  • 共享数据库实例的资源,不会额外占用大量的系统资源,如内存和 CPU。
  • 与现有生产和质量数据在同一个数据库实例中,便于数据的统一管理和维护。
2. 缺点
  • 如果表空间所在的数据文件出现问题,可能会影响到整个数据库实例的稳定性。
  • 随着数据的增长,可能需要对表空间进行频繁的扩展操作。

(二)新增实例方案

1. 优点
  • 与现有生产和质量数据实例完全隔离,一个实例出现问题不会影响到其他实例的正常运行,提高了数据的安全性和稳定性。
  • 可以根据财务数据的特点和需求,独立配置实例的参数,如内存分配、进程数量等,优化性能。
2. 缺点
  • 创建和管理实例的过程较为复杂,需要具备较高的技术水平和经验。
  • 会占用额外的系统资源,如内存、CPU 和磁盘空间,增加了硬件成本。

(三)方案决策

综合考虑操作的复杂性、资源占用和数据隔离等因素,建议优先选择新增表空间的方案。如果财务数据对安全性和独立性要求极高,且系统资源充足,也可以考虑新增实例的方案。以下将分别详细介绍两种方案的实施步骤。

四、新增表空间方案实施步骤

(一)连接到数据库

使用 Oracle SQL Developer、SQLPlus 或任何其他 Oracle 连接工具连接到数据库。例如,在命令行中使用 SQLPlus 连接:

sqlplus /nolog
conn sys/password as sysdba

(二)创建表空间

使用以下 SQL 语句创建一个新的表空间,用于存储财务数据。示例代码如下:

CREATE TABLESPACE finance_tablespace 
DATAFILE '/u01/app/oracle/oradata/finance/finance01.dbf' 
SIZE 10G AUTOEXTEND ON NEXT 1G MAXSIZE UNLIMITED;

上述代码创建了一个名为 finance_tablespace 的表空间,数据文件初始大小为 10GB,并且开启了自动扩展功能,每次扩展 1GB,最大不限制大小。

(三)创建用户并指定表空间

创建一个新的用户,用于管理和操作财务数据,并将其默认表空间设置为刚创建的 finance_tablespace。示例代码如下:

CREATE USER finance_user IDENTIFIED BY password 
DEFAULT TABLESPACE finance_tablespace 
TEMPORARY TABLESPACE temp;

(四)授予用户权限

为新用户授予必要的权限,使其能够在新表空间中创建和管理对象。示例代码如下:

GRANT CONNECT, RESOURCE, UNLIMITED TABLESPACE TO finance_user;

(五)验证表空间创建

使用以下 SQL 语句验证表空间是否创建成功:

SELECT * FROM DBA_TABLESPACES WHERE TABLESPACE_NAME = 'finance_tablespace';

五、新增实例方案实施步骤

(一)确定数据库系统结构

根据业务需求和硬件资源情况,确定数据库的体系结构,包括数据库的大小、存储结构、数据块大小、字符集等参数。例如,如果业务数据量大且变化频繁,可以选择较大的数据块大小;如果需要支持多种语言,可以选择 UTF - 8 字符集。

(二)创建数据库实例

使用 Oracle 提供的 DBCA(Database Configuration Assistant)工具进行操作。具体步骤如下:

  1. 启动 DBCA:在操作系统中,通过命令启动 DBCA:dbca
  2. 选择操作:在 DBCA 界面中,选择“创建数据库”,然后点击“下一步”。
  3. 选择数据库类型:可以选择事务处理型(适合 OLTP 场景)、数据仓库型(适合 OLAP 场景)或自定义数据库(允许用户根据具体需求选择参数配置)。
  4. 设置数据库标识:输入数据库名称(全局数据库名称)和 SID(系统标识符)。
  5. 配置存储选项:选择存储管理方案,如文件系统存储、ASM(自动存储管理)或 Oracle Cloud(适用于云环境)。
  6. 配置内存、字符集和其他高级选项:设置内存分配、字符集、连接模式等高级配置。推荐设置 SGA 和 PGA 内存大小,并选择支持多语言的 AL32UTF8 字符集。
  7. 创建数据库:DBCA 将根据配置自动创建数据库实例并生成相关文件,包括参数文件、控制文件、 数据文件
    等。

(三)配置实例参数

配置实例参数,如内存分配、进程数量、会话数量等,以满足财务数据的处理需求。例如,可以通过修改初始化参数文件(PFILE 或 SPFILE)来调整这些参数。示例代码如下:

ALTER SYSTEM SET SGA_TARGET = 2G SCOPE = SPFILE;
ALTER SYSTEM SET PROCESSES = 500 SCOPE = SPFILE;

(四)创建并配置数据库

创建数据库的数据文件、控制文件、重做日志文件等,并进行相应的配置。可以使用 SQL 语句来完成这些操作,示例代码如下:

CREATE DATABASE finance_db 
USER SYS IDENTIFIED BY password 
USER SYSTEM IDENTIFIED BY password 
LOGFILE GROUP 1 ( '/u01/oradata/finance_db/redo01.log' ) SIZE 50M, 
GROUP 2 ( '/u01/oradata/finance_db/redo02.log' ) SIZE 50M 
DATAFILE '/u01/oradata/finance_db/system01.dbf' SIZE 500M 
SYSAUX DATAFILE '/u01/oradata/finance_db/sysaux01.dbf' SIZE 250M;

(五)测试数据库连接

使用 SQL*Plus 或其他工具测试数据库连接是否正常。示例代码如下:

sqlplus /nolog
conn sys/password as sysdba

(六)设置并启动实例

设置实例的启动模式和自动启动设置,确保数据库实例能够在系统启动时自动启动。示例代码如下:

STARTUP;

六、整体示意图

Oracle数据库新增表空间或实例的整体示意图
该示意图展示了数据库逻辑与物理结构的关系。左侧逻辑结构自上而下为 数据库、方案、表空间、段、区、Oracle 数据块;右侧物理结构为 数据文件 和 操作系统块,中间以红线分隔。通过该图可以直观地看到表空间在数据库结构中的位置和作用,以及与物理存储的对应关系。同时,新增用户绑定新增表空间或实例后,在图中可以体现为新的用户与新的表空间或实例建立关联,进一步完善了整个数据库的架构展示。这里对图中概念用中文解释如下:

  • 数据库:是数据的集合和管理的整体,包含了所有的数据对象和相关的配置信息。
  • 方案:可以理解为数据库中一组相关对象的逻辑集合,通常与特定的用户或应用相关联。
  • 表空间:是数据库中用于存储数据的逻辑区域,一个数据库可以有多个表空间,每个表空间可以包含多个数据文件。
  • :是表空间中的一个逻辑存储单元,通常对应一个数据库对象,如表或索引。
  • :是段的组成部分,由一组连续的数据块组成,是数据库分配存储空间的基本单位。
  • Oracle 数据块:是数据库中最小的存储和 I/O 单位,数据在磁盘上以数据块的形式存储。
  • 数据文件:是数据库的物理存储文件,用于实际存储数据,一个表空间可以对应多个数据文件。
  • 操作系统块:是操作系统层面的存储块,与 Oracle 数据块有对应关系。

七、风险评估与应对措施

(一)新增表空间方案风险

1. 数据文件损坏风险

如果表空间所在的数据文件出现损坏,可能会导致财务数据丢失或无法访问。应对措施:定期对数据文件进行备份,使用 RMAN(Recovery Manager)工具进行备份和恢复操作。同时,设置数据文件的自动扩展功能,避免因空间不足导致数据写入失败。

2. 性能影响风险

随着财务数据的增长,可能会对数据库实例的性能产生影响,如查询响应时间变长。应对措施:定期对表空间进行性能优化,如重建索引、统计信息收集等。同时,根据数据增长情况,合理调整表空间的大小和扩展策略。

(二)新增实例方案风险

1. 资源不足风险

新增实例会占用额外的系统资源,如果系统资源不足,可能会导致整个系统性能下降。应对措施:在创建实例之前,充分评估系统资源的使用情况,合理分配内存、CPU 和磁盘空间。同时,监控系统资源的使用情况,及时进行调整。

2. 配置错误风险

实例的配置过程较为复杂,如果配置错误,可能会导致实例无法正常启动或运行。应对措施:在配置实例参数之前,仔细阅读 Oracle 官方文档,参考最佳实践进行配置。同时,在测试环境中进行充分的测试,确保配置的正确性。

八、总结

本方案提供了在 Oracle 数据库中新增财务数据存储的两种方案,即新增表空间和新增实例。通过详细的实施步骤和风险评估,能够帮助企业在满足业务需求的同时,确保数据的安全性和稳定性。建议根据实际情况选择合适的方案,并在实施过程中严格按照步骤进行操作,以降低风险。

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

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

相关文章

迅为RK3576开发板NPU环境搭建和使用rknn-toolkit2功能演示模型转换

开发板采用核心板底板结构,在我们的资料里提供了底板的原理图工程以及PCB工程,可以实现真正意义上的裁剪、定制属于自己的产品,满足更多应用场合。 迅为针对RK3576开发板整理出了相应的开发流程以及开发中需要用到的资料,并进行详…

如何在 Python 中连接 Elasticsearch 并使用 Qwen3 来实现 RAG

今天的这篇文章是 “在本地电脑中部署阿里 Qwen3 大模型及连接到 Elasticsearch” 的续篇。我们接着上次的文章,继续探索如何使用 Qwen3 来实现 RAG。在本练习中,我们使用 Elastic Stack 9.0.1 版本。 创建 Elasticsearch API key 我们按照如下的步骤来…

Domain 层完全指南(面向 iOS 开发者)

目录 为什么需要 Domain 层清晰的三层架构核心概念:Entity / Value Object / Use Case / RepositorySwift 代码实战测试策略在旧项目中落地的步骤结语 1 为什么需要 Domain 层 在传统 MVC / MVVM 中,我们往往把业务规则写进 ViewController 或 ViewMod…

华为OD机试_2025 B卷_矩形相交的面积(Python,100分)(附详细解题思路)

题目描述 给出3组点坐标(x, y, w, h)&#xff0c;-1000<x,y<1000&#xff0c;w,h为正整数。 (x, y, w, h)表示平面直角坐标系中的一个矩形&#xff1a; x, y为矩形左上角坐标点&#xff0c;w, h向右w&#xff0c;向下h。 (x, y, w, h)表示x轴(x, xw)和y轴(y, y-h)围成…

17、Rocket MQ快速实战以及核⼼概念详解

⼀ 、MQ简介 MQ&#xff1a;MessageQueue&#xff0c;消息队列。是在互联⽹中使⽤⾮常⼴泛的—系列服务中间件。 这个词可以分两个部分来看&#xff0c; —是Message&#xff1a;消息。消息是在不同进程之间传递的数据。这些进程可以部署在同—台机器上&#xff0c;也可以 分…

设计模式之手写策略模式实现动态支付(Java实现)

首先&#xff0c;定义一个接口类 import java.util.Map;public interface PayInterface {/*** 支付方法* param amount 支付金额* param paymentInfo 支付信息&#xff08;如卡号、密码等&#xff09;* return 支付结果*/boolean pay(double amount, Map<String, String>…

Spring Boot 虚拟线程 vs WebFlux:谁更胜一筹?

Spring Boot 作为构建现代 Java 应用程序的强大框架,为开发者提供了多种处理并发和可扩展性的解决方案。其中最受关注的两种方案是 Spring Boot 虚拟线程(Java 21 引入)和 Spring Boot WebFlux(基于响应式编程)。虽然两者都致力于优化资源利用率和提升高并发处理能力,但在…

淘宝商品搜索接口|关键字获取商品列表API接入指南

在电商领域&#xff0c;淘宝作为中国最大的电子商务平台之一&#xff0c;拥有海量的商品资源。对于开发者而言&#xff0c;通过淘宝开放平台提供的 API 接口&#xff0c;能够实现与淘宝平台的深度整合&#xff0c;其中关键字搜索商品 API 接口尤为重要。它允许开发者根据特定的…

Centos 离线部署(MQTT)EMOX脚本并设置开机自启

文件结构 install_emqx.sh #!/bin/bash # Filename: install_emqx.sh # Description: EMQX离线一键部署脚本 (针对特殊目录结构)# 检查root权限 if [[ $EUID -ne 0 ]]; thenecho "请使用root权限运行此脚本&#xff01;" exit 1 fi# 定义依赖包和安装路径 DEP_RPM&…

机器学习基础:从概念到应用的全面解析

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家、CSDN平台优质创作者&#xff0c;高级开发工程师&#xff0c;数学专业&#xff0c;10年以上C/C, C#, Java等多种编程语言开发经验&#xff0c;拥有高级工程师证书&#xff1b;擅长C/C、C#等开发语言&#xff0c;熟悉Java常用开…

【机器学习1】线性回归与逻辑回归

‌逻辑回归与线性回归的主要区别在于理论基础、应用场景和数学模型。 1 线性回归 1.1 理论基础 线性回归主要用于建模自变量与连续性因变量之间关系的统计方法&#xff0c;试图利用一条线来拟合自变量与因变量之间的线性关系。 1.2 应用场景 从应用场景来说&#xff0c;适…

小程序 顶部栏标题栏 下拉滚动 渐显白色背景

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/3164fd0e6d6848efaa1e87e02c35179e.png 下拉 100px 后 变成渐变成白色 显示原理 <wd-navbar fixed safeAreaInsetTop :bordered"false":custom-style"background-color: rgba(255, 255, 255, op…

Java底层原理:深入理解类加载机制与反射

一、Java类加载机制 Java类加载机制是Java运行时环境的重要组成部分&#xff0c;它负责将字节码文件加载到JVM内存中&#xff0c;并将其转换为可执行的类。类加载机制的实现涉及类加载器&#xff08;ClassLoader&#xff09;、类加载过程和类加载器的层次结构。 &#xff08;…

Android 中查看数据库内容方式

一、背景 创建的db数据库&#xff0c;有时候需要查看数据库中的数据内容,或者查看数据是否有更新到数据等等。这时候就需要查看数据库的内容。 二、数据库路径 博主用的是第三方的greendao数据库框架,生成的.db文件路径如下:(路径仅供参考) /data/data/app_package/database…

unity实现浮动组件

目录 前言方法后言组件代码 前言 在unity中&#xff0c;要让一个物体变得让人感到轻飘飘的&#xff0c;就可以给一个物体添加上浮动组件。今天我们就来实现它。 方法 我们先来看一下 sin ⁡ \sin sin函数的曲线。 在这条曲线上&#xff0c;随着 x x x向右移动&#xff0c; y…

Cisco Nexus93240接口带宽显示异常高故障- bug

hardware: cisco N93240 software: 9.3(10) 1个万兆接口&#xff0c;显示的rate超出几万倍 开case查询&#xff0c;告知是bug&#xff0c;需要版本升级解决。

pyhton基础【15】函数进阶一

目录 一. 函数进阶 1. 默认参数&#xff1a; 2. 关键字参数&#xff1a; 3. 可变参数&#xff1a; 4. 装饰器&#xff1a; 5. 匿名函数lambda&#xff1a; 6. 高阶函数&#xff1a; 7. 递归函数&#xff1a; 8. 类型注解&#xff1a; 二.函数参数的高级使用 缺…

【软考高级系统架构论文】论企业应用系统的数据持久层架构设计

论文真题 数据持久层 (Data Persistence Layer) 通常位于企业应用系统的业务逻辑层和数据源层之间,为整个项目提供一个高层、统一、安全、并发的数据持久机制,完成对各种数据进行持久化的编程工作,并为系统业务逻辑层提供服务。它能够使程序员避免手工编写访问数据源的方法…

ubuntu使用 Conda 安装 pyseer详细教程

pyseer 是一个用于 微生物全基因组关联分析(GWAS) 的生物信息学工具。它可以帮助研究者识别微生物(如细菌)中与表型(如耐药性、毒力、致病性)相关的遗传变异。 一、安装mamba conda install -n base -c conda-forge mamba二、创建虚拟环境 conda create -n pyseer-env …

Redis04

redis 一、redis的作用和使用场景 redis是一个内存级的高速缓存数据库。&#xff08;对比磁盘IO&#xff09; 使用场景&#xff1a;1、并发访问量大的 2、数据量小 3、修改不频繁 项目中&#xff1a;1、验证码 2、登录成功用户信息 3、首页&#xff08;模块数据 轮播图&…