AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 69989
Accepted
AKL
AKL
Asked: 2014-07-09 12:14:35 +0800 CST2014-07-09 12:14:35 +0800 CST 2014-07-09 12:14:35 +0800 CST

数据库实例和数据库

  • 772

我做了一些研究,最后得出了这个结论:

数据库实例=进程+内存

数据库=(物理)日志文件+控制文件+数据文件。

  1. 这种理解是否正确?
  2. 应用程序可以使用同一数据库的多个数据库实例吗?
  3. 数据库中的一个表可以同时被多个数据库实例使用吗?

谢谢。

database-design application-design
  • 2 2 个回答
  • 362 Views

2 个回答

  • Voted
  1. Kitet
    2014-07-09T12:47:31+08:002014-07-09T12:47:31+08:00

    从技术上讲,实例驻留在内存中,数据库(物理文件)驻留在磁盘上。可以有一个没有数据库的实例(一个例子是在创建数据库之前启动的实例)。也可以有一个没有实例的数据库(例如数据库文件驻留在磁盘上但实例未运行,或者文件复制到其他位置,类似这些)。通常,您通过将客户端连接到它的实例来使用数据库,以便对其中包含的数据进行一些处理。因此,一个实例在启动时会将自己与一个或多个数据库相关联(例如,Firebird - 一个服务器进程可用于连接到多个数据库)。

    第二个问题:仅在某些高可用性环境中,即 Oracle 上的 RAC,其中多个实例集群以服务同一个数据库。这对最终用户是透明的,所以实际上不能。如果您谈论的是非集群配置,那么不可以——没有两个实例可以使用同一组数据库文件,因此没有应用程序可以使用连接到同一组数据库文件的多个实例。至少在我所知道的 RDBMS 中没有。但是,理论上,应用程序可以使用两个实例为同一数据库的两个不同副本提供服务,为什么不呢。只是我看不到这样做的现实理由。

    第三个问题:已经回答了。除非是某种 HA 环境,否则任何数据库都不能由两个实例提供服务。

    编辑对象类型

    这是查询select distinct object_type from dba_objects我的 Ora 10g 的结果,连我自己都感到惊讶:

    CONSUMER GROUP, INDEX PARTITION, SEQUENCE, QUEUE, SCHEDULE, TABLE PARTITION, RULE, PROCEDURE, OPERATOR, LOB PARTITION, WINDOW, LOB, PACKAGE, PACKAGE BODY, LIBRARY, RULE SET, PROGRAM, TYPE BODY, CONTEXT, TRIGGER, JOB CLASS, UNDEFINED, DIRECTORY, MATERIALIZED VIEW, TABLE, INDEX, SYNONYM, VIEW, FUNCTION, WINDOW GROUP, CLUSTER, TYPE, RESOURCE PLAN, EVALUATION CONTEXT, JOB

    • 9
  2. Best Answer
    Vérace
    2014-07-09T12:44:27+08:002014-07-09T12:44:27+08:00

    我猜您在这里谈论的是 Oracle。请参阅我对这个关于 Oracle 中模式和数据库之间区别的问题的答复。另请参阅我对 Phil Sumner 关于使用不在同一模式中的表的回复的评论 - 是的,这是可能的,但不是理想的解决方案。

    [编辑以回应 OP 的评论]

    是的,您所说的正是它在 RDBMS 中的工作方式——这就是 Oracle、MS Server 和 MySQL(尽管存在关于不是_true_ RDBMS 的争论)。

    要以您提出问题的方式回答您的问题:

    你说:

    Database instance = processes + memory
    

    是的,“实例”可以看作是这个——它主要是 Oracle 术语。其他人可能称它为“服务器”或(不幸的是!)“数据库”。最好区分实例(在 cpu/内存结构中)和物理文件)。

    Database = (physical) log files + control files + data files.
    

    数据库(在现代 RDBMS 意义上)是您编写的内容,除了您错过了实际数据(+ 日志文件、控制文件、初始化参数(通常是文本)文件)。

    不幸的是,这就是现代术语中事情变得非常混乱的地方。

    对于软件(实例)+ 数据库(磁盘上的文件),我会使用(如果我想说得非常清楚的话)术语“系统”(甚至运行系统)。

    请注意,这些术语可能会被滥用和破坏,并且没有一个通用的权威术语被普遍接受。

    要回答这个

    如果我错了,请纠正我,表是在数据库中创建和存储的,数据库实例使用数据库中存在的这些表来执行插入、删除、查询等操作。

    你在这方面是绝对正确的——至少对于 RDBMS 是这样。

    • 1

相关问题

  • 过滤索引是否有助于改进基于输入时间的查询,还是应该避免这种情况?

  • MySQL VARCHAR 和 TEXT 数据类型有什么区别?

  • 存储计算值或根据要求重新计算它们更好吗?[复制]

  • 存储与计算聚合值

  • 在数据仓库中实现多对多关系有哪些方法?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve