3.1 Client/Server

Oracle 采取的是 Client/Server 架构

oracle 服务端分为两部分:

  1. Instance 实例
  2. Database 数据库

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

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

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

3.2 实例启动过程

服务启动的大致过程:

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

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

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

3.3 数据库的物理组件

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

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

  1. oradata/
  2. └── orcl [数据库的名字]
  3. ├── CONTROL01.CTL
  4. ├── CONTROL02.CTL
  5. ├── EXAMPLE01.DBF
  6. ├── REDO01.LOG
  7. ├── REDO02.LOG
  8. ├── REDO03.LOG
  9. ├── SYSAUX01.DBF
  10. ├── SYSTEM01.DBF
  11. ├── TEMP01.DBF
  12. ├── UNDOTBS01.DBF
  13. └── USERS01.DBF

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

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

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

    一般来说,EDM营销中肯定有些用户就长期不关注我们的邮件.这个时候我们应该如何唤醒用户呢?本文给大家分享一下技巧. 首先,我们要注重电子邮件地址的价值.只有好的新的邮件地址库,才能引起用户足够的关注. ...

  2. getBoundingClientRect 和 requestAnimFrame 的polyfill

    概述 今天在项目中用到了 getBoundingClientRect 和 requestAnimFrame ,查了下它们的polyfill,记录下来,供以后开发时参考,相信对其他人也有用. getBo ...

  3. 分布式任务队列 Celery —— 应用基础

    目录 目录 前文列表 前言 Celery 的周期定时任务 Celery 的同步调用 Celery 结果储存 Celery 的监控 Celery 的调试 前文列表 分布式任务队列 Celery 分布式任 ...

  4. Spring 初识

    一.Spring是什么? 首先可以进入Spring官网 https://spring.io/ 看一下相关介绍. Spring为开发者提供了一站式的轻量级应用开发平台.简单来说,Spring为开发者提供 ...

  5. Text Elements(文本元素)对象

    1.T-Code:SE32 操作路径:主菜单——转到——内文元素——选择内文 2. 清单标题(List heading) 用于定义Report标题名称及描述,如图: 2. 選擇內文 (Selectio ...

  6. mybatis参数传参、取值处理等

    单个参数:mybatis不会做特殊处理 取值方式:#{参数名} 这里参数名不必与方法的形参名称一致,可以用任意参数名来接受实参 例子:方法:update(Integer id) sql映射文件取值#{ ...

  7. centos7:Zookeeper集群安装

    将安装包上传到安装目录 解压文件 tar -zxvf zookeeper-3.4.12.tar.gz 移动解压后的文件到软件目录 mv zookeeper-3.4.12 /home/softwareD ...

  8. Java课堂疑问解答与思考5

    一:运行 TestInherits.java 示例,观察输出,总结. TestInherits.java class Grandparent { public Grandparent() { Syst ...

  9. Pytorch搭建卷积神经网络用于MNIST分类

    import torch from torch.utils.data import DataLoader from torchvision import datasets from torchvisi ...

  10. 《React+Redux前端开发实战》笔记1:不涉及React项目构建的Hello World案例

    本小节实现一个不涉及项目构建的Hello World. [React的第一个Hello World网页] 源码地址:https://jsfiddle.net/allan91/2h1sf0ky/8/ & ...