oracle数据库架构
3.1 Client/Server
oracle 服务端分为两部分:
Instance
实例Database
数据库
实例, 又称为数据库引擎,由 SGA(System Global Area, 系统全局区)
和 一系列后台进程
组成。它需要启动才会生成,用来加载并管理一个数据库。
数据库, 是保存在硬盘上的文件集合,它是数据的主要载体。
- $OracleBase\oradata\[数据库名字]\
3.2 实例启动过程
服务启动的大致过程:
- [读取] 读取系统的 ORACLE_SID 环境变量,确定要启动的实例名字,比如为 xxoo
- [加载] 从
$ORABASE/admin/xxoo
和$ORA_HOME/database/SPFILEXXOO.ora
等位置加载相关配置文件。配置文件的名字是根据 sid 来定义的。 - [启动] 从配置文件中,读取相关信息,比如数据库名字、数据库控制文件位置、SGA 等信息,并根据这些,初始化数据库加载需要的
内存空间(SGA)
和相关进程
。 - [装载] 根据配置文件中读取的数据库信息,找到各种数据文件位置,并装载数据库。
- [启动] 进行数据校验等,如果没有问题,启动数据库。
可以通过查看启动过程协助理解:
- -- 首先,登录 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
从文件角度分析,一个数据库包含下面几类(组件):
- 控制文件(control file)。记录数据库的物理结构和其他信息,如数据库名称、各种文件位置等。多副本。
- select * from v$controlfile;
- 数据文件(data file)。用来存储数据的文件,会自动扩张。数据以块为单位进行保存。
- select name, status, enabled from v$datafile;
- 重做日志文件(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;
- -- 需要理解 Oracle 日志的思路:
- 归档日志文件。是重做日志的补充(redo log 记录的记录是有限的),可以把写满的 redo log 进行备份。
- -- Oracle 的归档模式默认是关闭的
- -- 归档模式会占用大量空间
- -- 但他们用更多的空间,保存更多的历史记录,保障更大的安全性
- -- 查看状态
- archive log list;
- -- 切换数据库到归档模式
- alter database archivelog;
- -- 启动
- archive log start;
- -- 查看状态
- archive log list;
- -- Oracle 的归档模式默认是关闭的
- 其他文件
3.4 数据库的逻辑组件
从 Oracle 内部管理数据的角度,可以将 Oracle 分为4个组件:
- 表空间(tablespace)
- 段(Segment)
- 区(Extend)
- 块(Block)
oracle数据库架构的更多相关文章
- Oracle 数据库架构
Oracle 数据库架构 查看数据库在linux系统的安装目录路径情况: [root@localhost ~]# cd /u01/app/oracle/oradata/orcl/ [root@loca ...
- OCA读书笔记(1) - 浏览Oracle数据库架构
Objectives: List the major architectural components of Oracle DatabaseExplain the memory structuresD ...
- Linux服务器下对Oracle数据库expdp(导出)和impdp(导入)
紧接上篇文章,Oracle数据库架构已经创建完成,我的需求是:将老服务器上的数据库迁移到新的数据库上. 这就用到impdp(导入)操作. 要想实现对新数据库的impdp(导入)工作, 首先需要从老的数 ...
- 关于Oracle数据库故障诊断基础架构
本节包含有关Oracle数据库故障诊断基础结构的背景信息.它包含以下主题: 故障诊断基础架构概述 关于事件和问题 故障诊断基础设施组件 自动诊断信息库的结构,内容和位置 故障诊断基础架构概述 故障诊断 ...
- Oracle数据库的文件以及Oracle体系架构
第一部分.Oracle数据库的文件 1.参数文件:控制实例的行为的参数的集合 参数文件的作用 设定数据库的限制 设置用户或者进程的限制 设定数据库资源的限制 调整系统的性能 主要的参数文件 SGA_T ...
- Oracle 数据库知识汇总篇
Oracle 数据库知识汇总篇(更新中..) 1.安装部署篇 2.管理维护篇 3.数据迁移篇 4.故障处理篇 5.性能调优篇 6.SQL PL/SQL篇 7.考试认证篇 8.原理体系篇 9.架构设计篇 ...
- 将Oracle数据库中的数据写入Excel
将Oracle数据库中的数据写入Excel 1.准备工作 Oracle数据库"TBYZB_FIELD_PRESSURE"表中数据如图: Excel模板(201512.xls): 2 ...
- Oracle数据库基础知识
oracle数据库plsql developer 目录(?)[-] 一 SQL基础知识 创建删除数据库 创建删除修改表 添加修改删除列 oracle cascade用法 添加删除约束主键外 ...
- ORACLE数据库SQL语句的执行过程
SQL语句在数据库中处理过程是怎样的呢?执行顺序呢?在回答这个问题前,我们先来回顾一下:在ORACLE数据库系统架构下,SQL语句由用户进程产生,然后传到相对应的服务端进程,之后由服务器进程执行该SQ ...
随机推荐
- EDM营销技巧之如何进行用户唤醒
一般来说,EDM营销中肯定有些用户就长期不关注我们的邮件.这个时候我们应该如何唤醒用户呢?本文给大家分享一下技巧. 首先,我们要注重电子邮件地址的价值.只有好的新的邮件地址库,才能引起用户足够的关注. ...
- getBoundingClientRect 和 requestAnimFrame 的polyfill
概述 今天在项目中用到了 getBoundingClientRect 和 requestAnimFrame ,查了下它们的polyfill,记录下来,供以后开发时参考,相信对其他人也有用. getBo ...
- 分布式任务队列 Celery —— 应用基础
目录 目录 前文列表 前言 Celery 的周期定时任务 Celery 的同步调用 Celery 结果储存 Celery 的监控 Celery 的调试 前文列表 分布式任务队列 Celery 分布式任 ...
- Spring 初识
一.Spring是什么? 首先可以进入Spring官网 https://spring.io/ 看一下相关介绍. Spring为开发者提供了一站式的轻量级应用开发平台.简单来说,Spring为开发者提供 ...
- Text Elements(文本元素)对象
1.T-Code:SE32 操作路径:主菜单——转到——内文元素——选择内文 2. 清单标题(List heading) 用于定义Report标题名称及描述,如图: 2. 選擇內文 (Selectio ...
- mybatis参数传参、取值处理等
单个参数:mybatis不会做特殊处理 取值方式:#{参数名} 这里参数名不必与方法的形参名称一致,可以用任意参数名来接受实参 例子:方法:update(Integer id) sql映射文件取值#{ ...
- centos7:Zookeeper集群安装
将安装包上传到安装目录 解压文件 tar -zxvf zookeeper-3.4.12.tar.gz 移动解压后的文件到软件目录 mv zookeeper-3.4.12 /home/softwareD ...
- Java课堂疑问解答与思考5
一:运行 TestInherits.java 示例,观察输出,总结. TestInherits.java class Grandparent { public Grandparent() { Syst ...
- Pytorch搭建卷积神经网络用于MNIST分类
import torch from torch.utils.data import DataLoader from torchvision import datasets from torchvisi ...
- 《React+Redux前端开发实战》笔记1:不涉及React项目构建的Hello World案例
本小节实现一个不涉及项目构建的Hello World. [React的第一个Hello World网页] 源码地址:https://jsfiddle.net/allan91/2h1sf0ky/8/ & ...