3.1 Client/Server

Oracle 采取的是 Client/Server 架构

oracle 服务端分为两部分:

  1. Instance 实例
  2. Database 数据库

实例, 又称为数据库引擎,由 SGA(System Global Area, 系统全局区) 一系列后台进程 组成。它需要启动才会生成,用来加载并管理一个数据库。

数据库, 是保存在硬盘上的文件集合,它是数据的主要载体。

$OracleBase\oradata\[数据库名字]\

3.2 实例启动过程

服务启动的大致过程:

  1. [读取] 读取系统的 ORACLE_SID 环境变量,确定要启动的实例名字,比如为 xxoo
  2. [加载] 从 $ORABASE/admin/xxoo$ORA_HOME/database/SPFILEXXOO.ora 等位置加载相关配置文件。配置文件的名字是根据 sid 来定义的。
  3. [启动] 从配置文件中,读取相关信息,比如数据库名字、数据库控制文件位置、SGA 等信息,并根据这些,初始化数据库加载需要的 内存空间(SGA)相关进程
  4. [装载] 根据配置文件中读取的数据库信息,找到各种数据文件位置,并装载数据库。
  5. [启动] 进行数据校验等,如果没有问题,启动数据库。

可以通过查看启动过程协助理解:

-- 首先,登录 sys 用户,只有管理员才有完全操纵数据库的权力
-- shutdown 用来关闭。如果不带参数,默认为 normal
---- immediate 表示立即关闭,如果有未处理完操作,回滚并断开
---- normal 表示等待所有连接断开才关闭数据库
---- transaction 表示等事务介绍才断开
shutdown immediate; -- 启动数据库,分解为三个动作:
---- 启动实例
---- 利用启动的实例去挂载数据库
---- 校验并打开数据库
-- 只有完全打开,才能进行完全的数据操作
-- 也可以指定参数,启动到某个阶段。这是在维护数据库中使用的命令。
startup -- 如果不加参数,
startup nomount -- 启动到 nomount 阶段
startup mount -- 启动到 mount 阶段 -- 当然,也可以这样分步启动:
startup nomount
alter database mount
alter database open

3.3 数据库的物理组件

数据库是保存在操作系统的一系列文件。

默认安装情况下,这些文件都在 $ORACLE_BASE/oradata 文件夹下:

oradata/
└── orcl [数据库的名字]
├── CONTROL01.CTL
├── CONTROL02.CTL
├── EXAMPLE01.DBF
├── REDO01.LOG
├── REDO02.LOG
├── REDO03.LOG
├── SYSAUX01.DBF
├── SYSTEM01.DBF
├── TEMP01.DBF
├── UNDOTBS01.DBF
└── USERS01.DBF

从文件角度分析,一个数据库包含下面几类(组件):

  1. 控制文件(control file)。记录数据库的物理结构和其他信息,如数据库名称、各种文件位置等。多副本。

    select * from v$controlfile;
    
  2. 数据文件(data file)。用来存储数据的文件,会自动扩张。数据以块为单位进行保存。
    select name, status, enabled from v$datafile;
    
  3. 重做日志文件(redo log)。用来记录用户的所有操作,为了备份恢复。一个数据库至少有两个日志组,每个日志组至少有一个成员,成员之间是镜像关系。用户的操作会记录到 redo log 中,当一个组记录满了,会自动切换到下一个组。轮流循环。
    -- 需要理解 Oracle 日志的思路:
    -- 它采取了【多个分组,轮流循环写入;每组多成员,互为镜像;保存更多信息,使用归档模式】的方式,保证了记录安全性。
    -- 在生产环境中,需要日志调整到不同的磁盘中,这样,即使某个文件损坏,或某块磁盘损坏,都可以通过镜像的日志文件对数据进行恢复。 -- 查看 redo log 日志组
    select * from v$log;
    select * from v$logfile; -- 增加/删除 日志组
    alter database add logfile 'd:/sss.rlog' size 100m;
    alter database drop logfile 'd:/sss.rlog'; -- 清空日志组
    alter database clear logfile group 1;
    alter database clear unarchived logfile group 1; -- 为日志组 增加/重命名/删除 成员
    alter database add logfile member 'd:/ssss.log' to group 1;
    alter database rename file 'd:/ssss.log' to 'd:/ssss.rlog';
    alter database drop logfile member 'd:/ssss.rlog'; -- 日志组一般是在写满的时候自动切换。
    -- 我们也可以手动切换
    alter system switch logfile;
  4. 归档日志文件。是重做日志的补充(redo log 记录的记录是有限的),可以把写满的 redo log 进行备份。
    -- Oracle 的归档模式默认是关闭的
    -- 归档模式会占用大量空间
    -- 但他们用更多的空间,保存更多的历史记录,保障更大的安全性 -- 查看状态
    archive log list; -- 切换数据库到归档模式
    alter database archivelog; -- 启动
    archive log start; -- 查看状态
    archive log list;
  5. 其他文件

3.4 数据库的逻辑组件

从 Oracle 内部管理数据的角度,可以将 Oracle 分为4个组件:

  1. 表空间(tablespace)
  2. 段(Segment)
  3. 区(Extend)
  4. 块(Block)

oracle数据库架构的更多相关文章

  1. Oracle 数据库架构

    Oracle 数据库架构 查看数据库在linux系统的安装目录路径情况: [root@localhost ~]# cd /u01/app/oracle/oradata/orcl/ [root@loca ...

  2. OCA读书笔记(1) - 浏览Oracle数据库架构

    Objectives: List the major architectural components of Oracle DatabaseExplain the memory structuresD ...

  3. Linux服务器下对Oracle数据库expdp(导出)和impdp(导入)

    紧接上篇文章,Oracle数据库架构已经创建完成,我的需求是:将老服务器上的数据库迁移到新的数据库上. 这就用到impdp(导入)操作. 要想实现对新数据库的impdp(导入)工作, 首先需要从老的数 ...

  4. 关于Oracle数据库故障诊断基础架构

    本节包含有关Oracle数据库故障诊断基础结构的背景信息.它包含以下主题: 故障诊断基础架构概述 关于事件和问题 故障诊断基础设施组件 自动诊断信息库的结构,内容和位置 故障诊断基础架构概述 故障诊断 ...

  5. Oracle数据库的文件以及Oracle体系架构

    第一部分.Oracle数据库的文件 1.参数文件:控制实例的行为的参数的集合 参数文件的作用 设定数据库的限制 设置用户或者进程的限制 设定数据库资源的限制 调整系统的性能 主要的参数文件 SGA_T ...

  6. Oracle 数据库知识汇总篇

    Oracle 数据库知识汇总篇(更新中..) 1.安装部署篇 2.管理维护篇 3.数据迁移篇 4.故障处理篇 5.性能调优篇 6.SQL PL/SQL篇 7.考试认证篇 8.原理体系篇 9.架构设计篇 ...

  7. 将Oracle数据库中的数据写入Excel

    将Oracle数据库中的数据写入Excel 1.准备工作 Oracle数据库"TBYZB_FIELD_PRESSURE"表中数据如图: Excel模板(201512.xls): 2 ...

  8. Oracle数据库基础知识

    oracle数据库plsql developer   目录(?)[-] 一     SQL基础知识 创建删除数据库 创建删除修改表 添加修改删除列 oracle cascade用法 添加删除约束主键外 ...

  9. ORACLE数据库SQL语句的执行过程

    SQL语句在数据库中处理过程是怎样的呢?执行顺序呢?在回答这个问题前,我们先来回顾一下:在ORACLE数据库系统架构下,SQL语句由用户进程产生,然后传到相对应的服务端进程,之后由服务器进程执行该SQ ...

随机推荐

  1. Binary-to-text ecoding:

    binary to Text ecoding是指将二进制数据转换成可打印的符号 如果传输channel 不允许二进制数据(如email) 一般使用Base64 ASCII 标准使用128位来表示字母数 ...

  2. 是否被封禁ip或端口的检测网站 ping

    国内的: http://tool.chinaz.com/port (可以检测端口) https://tools.ipip.net/ping.php (貌似不可以检测端口) 国外的: https://w ...

  3. centos6.5+jdk1.7+mysql5.6+tomcat8.0部署jpress

    前言:此篇记录在linux下搭建环境部署jpress,mysql使用的是源码安装 1.准备 2.安装 3.部署 1.准备 a.准备centos6.5服务器环境 mysql-5.6.19.tar.gz  ...

  4. Linux监控命令之==>sar

    一.使用说明 sar 是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况.系统调用的使用情况.磁盘I/O.CPU效率.内存使用状况.进程活动及 ...

  5. 8 redo log内部结构分析(IMU/非IMU)--update示例

    Oracle内核的进步 ---- 新.老Redo机制对比 体系结构 非IMU下的redo产生过程 --分析redo log(update) SQL> set sqlprompt "_U ...

  6. 20191127 Spring Boot官方文档学习(4.12)

    4.12.缓存(Caching) Spring框架提供了对应用程序透明添加缓存的支持.从本质上讲,抽象将缓存应用于方法,从而根据缓存中可用的信息减少执行次数.缓存逻辑是透明应用的,不会对调用者造成任何 ...

  7. 在线cron表达式生成工具

    http://cron.qqe2.com/ 名称 是否必须 允许值 特殊字符 秒 是 0-59 , - * / 分 是 0-59 , - * / 时 是 0-23 , - * / 日 是 1-31 , ...

  8. 自定义SpringBoot启动控制台图标

    使用过SpringBoot的小伙伴众所周知,在启动的过程中,在控制台会首先打印spring的图标以及版本号(这里以IDEA为例) 如果需要更改这个打印图标的话, 需要以下步骤: 1.打开SpringB ...

  9. ant buid.xml 模板

    <?xml version="1.0" encoding="UTF-8"?> <project name="ant" de ...

  10. SSM框架之AOP、动态代理、事务处理相关随笔

    AOP: 原理:底层利用动态代理(两种动态代理技术都使用了) 两种实现方案: 第一种:JDK动态代理技术 实现的InvocationHandler接口,要想实现某个类的动态代理对象,必须有接口有实现类 ...