ORACLE记录-ORACLE入门级必知必会

在学习或者应用oracle数据库之前,我们应该先学会如何查阅官方文档(这是最可靠也是最有说服力的武器~)

访问链接:Oracle Database Documation

一、官方文档导读

官方文档左侧目录包括:
Install and Upgrade
Administration
Development
Security
Performance
Clustering
High Availability
Data Warehousing
Spatial and Graph
Distributed Data
Machine Learning

其中,在入门级的学习里,我们需要重点关注
Install and Upgrade、Administration、High Availability

安装和升级为使用数据库软件阶段需要使用到的部分。

在使用数据库前我们可以先整体了解Oracle的底层原理、技术架构,以方便我们后续在使用中能清楚每个指令的来龙去脉。

此部分只关注DBA需要使用到的章节,开发部分会忽略~

Administration -> Most Popular

官档名字涵盖内容(个人归纳)
Database Concepts关系型数据库、SQL介绍、数据库体系、实例架构、应用架构
Databse Reference初始化参数、视图相关、等待事件
Database SQL Language Reference操作命令,select * from、alter database、alter system
Database PL/SQL Language ReferencePL/SQL,触发器、包
Database PL/SQL Packages and Types Reference数据库常用存储过程,dbms_xplan.display

High Availability 部分主要为 :高可用的备份恢复、实时同步DG等。

二、Oracle体系架构

2.1 简述Oracle发展历程

  • 1977年,Larry Ellison, Bob Miner, and Ed Oates 成立RSI( Relational Software, Inc. )【1983年,RSI成为Oracle Systems Corporation,后来成为Oracle Corporation】

  • 1979年,RSI推出了Oracle v2 是第一个基于SQL的商业可用RDBMS,成为关系型数据库历史的里程碑

  • 1983年,发布的Oracle v3是第一个在大型机、小型计算机和个人计算机上运行的关系数据库。该数据库使用C语言编写,使得该数据库能够被移植到多个平台上。

  • Version 4引入了多版本读一致性。1985年发布的Version 5支持客户端/服务端计算和分布式数据库系统。Version 6提供了磁盘I/O、行锁定、可伸缩性、备份和恢复的增强。此外,Version 6还引入了PL/SQL语言的第一个版本,这是一种专有的过程化扩展SQL。

  • 1992年,发布的Oracle7引入了PL/SQL存储过程和触发器。

  • 1999年,发布的Oracle8i数据库提供了对互联网协议的本机支持以及对Java的服务器端支持。Oracle8i是为互联网计算而设计的,使数据库能够部署在多层环境中。

  • 2001年,Oracle9i数据库引入了Oracle RAC,使多个实例能够同时访问单个数据库。此外,Oracle XML Database (Oracle XML DB)引入了存储和查询XML的功能。

  • 2003年,发布的Oracle Database 10g引入了网格计算。该版本通过基于低成本商品服务器构建网格基础架构,使组织能够虚拟化计算资源。关键目标是使数据库自管理和自调整。Oracle Automatic Storage Management (Oracle ASM)通过虚拟化和简化数据库存储管理,帮助实现这一目标。

  • 2007年,发布的Oracle Database 11g引入了许多新功能,使管理员和开发人员能够快速适应不断变化的业务需求。适应性的。

  • 2013年,发布的Oracle Database 12c,专为云环境设计,具备新的多租户架构、内存列存储(IM列存储)以及对JSON文档的支持。Oracle Database 12c帮助数据库管理员更有效地利用IT资源,同时继续降低成本并提高终端用户的服务水平。

  • Oracle Database 18c简化了与目录服务(如Microsoft Active Directory)的集成。它还引入了功能,以利用内存不仅用于列式数据模型,还用于高速行访问。

  • Oracle Database 19c是Oracle Database 12c(Release 12.2)产品系列的长期支持版本。此版本的主要重点是稳定性。Oracle Database 19c还针对JSON和Active Data Guard等功能引入了几项小但重要的改进。

  • Oracle数据库21c通过引入Oracle Blockchain Tables和本地JSON数据类型等功能,改进了开发者的体验。对自动内存增强的增强使IM列存储大部分是自我管理的。

2.2 Oracle数据库架构详解

先上一张必背/备图;
Oracle Instance and Database
12C后的多租户:
在这里插入图片描述
在这里插入图片描述
Oracle 分片架构

在这里插入图片描述

2.2.1 Oracle存储架构

物理层面(可见的):Data Files \ Control Files \ Online Redo Log
逻辑层面(细粒度的、逻辑存储空间):data blocks \ extents \ segments \ tablespaces
在这里插入图片描述

数据块

Oracle数据库块是Oracle数据库中存储和管理数据的基本单位。

每个块有固定的大小,通常为8KB或16KB,由Oracle数据库自动分配和管理。每个块可以存储一条记录或多条记录,具体取决于记录的大小。块是数据库中最小的可分配单元,而表、索引和段等对象是由多个块组成的。

在Oracle数据库中,块是为了提高I/O性能而设计的。当从磁盘中读取数据时,数据库将读取整个块,而非单个记录。这意味着,即使只需要访问一个记录,也必须读取整个块。因此,块的大小会对数据库性能产生重大影响。

Oracle数据库块还包含了一些元数据信息,如块的状态、块的校验和、数据文件编号等。这些元数据信息帮助数据库识别块是否可用,以及块的位置和状态。通过对这些元数据信息的管理,数据库可以更有效地管理块的分配和释放,从而提高数据库性能。

64位linux 和64位oracle,默认oracle表空间数据文件用的BLOCKSIZE是8k,表空间数据文件最大是32G。

运行以下命令查询数据块的大小:

SELECT block_size FROM dba_tablespaces WHERE tablespace_name = 'tablespace_name';
数据区

Oracle数据库区是指数据库实例的逻辑部分,它包含了数据库的所有数据和对象,例如表、索引、视图、存储过程、触发器等。Oracle数据库区还包括了数据库管理器(管理和监控数据库)和安全管理器(管理访问权限和加密)等组件。

在一个Oracle数据库中,可以创建多个数据库区,每个数据库区的数据和对象是相互独立的,但是它们共享同一个数据库管理器和安全管理器。

常见的Oracle数据库区包括:

  • SYSTEM区:该区域包含了数据库的元数据,例如表空间、用户、角色、对象权限等。

  • SYSAUX区:该区域包含了一些不属于SYSTEM区的但是需要共享的数据,例如数据字典缓存、成本优化器统计信息等。

  • USERS区:该区域包含了用户定义的数据和对象。

  • TEMP区:该区域用于存储临时数据,例如排序操作中的临时表。

  • UNDO区:该区域用于存储撤销信息,以便在事务回滚时恢复数据。

  • REDO区:该区域用于存储数据库操作的日志,以便在数据恢复时使用。

除了以上常见的数据库区外,还可以创建自定义的数据库区,以满足不同的需求和应用场景。

运行以下命令查询表中每个区的大小:(已建立分区才可查询)

SELECT segment_name, partition_name, bytes 
FROM dba_segments WHERE owner = 'schema_name' AND segment_name = 'table_name';

Oracle数据段是Oracle数据库中的一种数据存储结构,用于存储数据,包括表数据、索引数据、回滚段数据等。Oracle数据段的实现方式主要有堆表(Heap Table)、索引组织表(Index-Organized Table,IOT)、分区表(Partitioned Table)和临时表(Temporary Table)等。

堆表是最常见的数据段类型,它使用单一的物理存储结构来存储表中的所有数据。相比之下,索引组织表使用B-Tree索引来组织数据,适用于主键或唯一约束列的查询。分区表可以将大表拆分成更小的分区,从而提高查询效率。临时表则是用于临时存储查询结果的表格。

查询表空间中所有段及其大小:

SELECT segment_name, segment_type, bytes/1024/1024 AS size_mb 
FROM user_segments 
WHERE tablespace_name = 'tablespace_name';

段的初始区

表空间

Oracle表空间是Oracle数据库中管理和存储数据的基本单位,可以理解为一组物理文件的集合。

  • 用于存储表、索引、视图、存储过程等数据库对象。
  • 表空间由数据文件组成,每个数据文件可以在磁盘上分别存储数据,并包含一个或多个段。
  • 表空间可以包含一个或多个数据文件,并且每个数据文件只能属于一个表空间。
数据文件、控制文件、日志文件

数据文件:数据文件是Oracle数据库的核心文件,它们存储了所有表、索引、数据和其他对象的实际数据。数据文件通常不在Oracle安装目录下,而是存储在磁盘上的数据目录中。每个数据库可以有多个数据文件,每个数据文件可以达到几乎任意的大小。Oracle使用数据文件进行磁盘读写操作,其中包括数据的插入、更新、删除和查询等操作。

控制文件:控制文件是Oracle数据库的元数据文件,它记录了数据库的结构信息和状态信息,包括数据库的名称、文件名、表空间的存储信息等等。控制文件通常存储在Oracle安装目录下,每个数据库只有一个控制文件。控制文件的作用是维护数据一致性,当数据库启动时,Oracle会首先读取控制文件来确定数据文件和日志文件的位置,以及其他数据库设置的参数。

日志文件:日志文件是Oracle数据库中的一种特殊文件,用于记录所有的数据库事务操作,包括修改、插入和删除等操作。日志文件包括在线日志文件(online redo log)和归档日志文件(archive redo log)。在线日志文件用于记录尚未完成的事务,而归档日志文件则用于记录已经完成的事务。日志文件的主要作用是保证数据库的可恢复性,在数据库发生故障时,可以使用日志文件进行恢复操作。

2.2.2 Oracle实例架构

数据库实例
startup命令会创建一个实例。

OFA(Optimal Flexible Architecture)是 Oracle 数据库的一个建议的文件系统布局和命名约定的规范。
它旨在简化数据库管理,提高性能和可靠性。

OFA 的主要概念包括:

数据文件、控制文件和日志文件应该分别存放在不同的目录中,以提高性能和可靠性。

所有相关文件都应该有一个基本的文件名,例如 datafile、controlfile、logfile 等,并且应该包含文件标识符,例如,system01.dbf、control01.ctl 等。

Oracle 数据库安装应该放置在一个单独的目录中,以便进行管理和维护。

所有数据库实例应该有一个独立的目录结构,并且应该使用标准的命名约定,包括实例名以及有意义的目录和文件名。

单实例和集群架构图
进行实例恢复的的情况——
(相关后台进程:SMON)

数据库崩溃:当数据库崩溃(如系统故障或断电等)时,可能需要进行实例恢复。

数据库文件损坏:如果数据库的数据文件或控制文件损坏,可能需要进行实例恢复。

恢复点回退:如果恢复点回退导致数据库出现问题,可能需要进行实例恢复。

部分数据库恢复: 如果只需要恢复部分数据库,可能需要进行实例恢复。

当一个实例启动之后,Oracle机制就会分配一系列内存区和后台进程	
内存架构
SGA+PGA+UGA+Software code areas

SGA=Database Buffer Cache + In-Memory Area + Redo Log Buffer + Shared Pool + Large Pool + Java Pool + Fixed SGA + Optional Performance-Related SGA Subareas

进程架构

Oracle数据库中的进程可以分为两类:前台进程和后台进程。

前台进程(foreground processes)是用户直接与数据库交互的进程,包括用户进程和服务器进程。用户进程是在客户端上运行的进程,通过SQL或PL/SQL语句访问服务器进程,而服务器进程则是在数据库服务器上运行的进程,负责接收和处理用户请求并响应。

后台进程(background processes)运行在数据库服务器上,不直接与用户交互,它们负责管理数据库的内部操作,例如维护数据文件、执行备份和恢复操作、执行数据清理和归档操作等。后台进程包括系统监视器进程、后台写进程、用户进程监视器进程、检查点进程、日志写进程、进程调度器等。

Oracle数据库的进程架构是高度优化的,它充分利用了现代计算机的多任务、多线程和并行处理能力,以提高数据库的性能和可靠性。同时,通过合理的进程管理和监控机制,Oracle数据库可以快速识别并解决任何可能出现的故障或异常情况,从而确保数据库的稳定性和可用性。

当用户运行如ProC程序或SQLPlus的应用程序时,操作系统会创建一个客户端进程(有时称为用户进程)来运行用户应用程序。客户端应用程序中链接了Oracle数据库库,这些库提供了与数据库通信所需的API。

应用服务连接

客户机/服务器体系结构的优点

分布式处理环境中的Oracle数据库客户机/服务器体系结构提供了许多好处。

包括:

客户端应用程序不负责执行数据处理。相反,它们从用户请求输入,从服务器请求数据,然后使用客户机工作站或终端的显示功能(例如,使用图形或电子表格)分析和呈现这些数据。

客户机应用程序不依赖于数据的物理位置。即使将数据移动或分发到其他数据库服务器,应用程序也可以继续运行,很少或不做任何修改。

Oracle数据库利用其底层操作系统的多任务处理和共享内存功能。因此,它为客户端应用程序提供了尽可能高的并发性、数据完整性和性能。

客户机工作站或终端可以针对数据的表示进行优化(例如,通过提供图形和鼠标支持),而服务器可以针对数据的处理和存储进行优化(例如,通过拥有大量内存和磁盘空间)。

在网络环境中,可以使用廉价的客户机工作站有效地访问服务器的远程数据。

数据库可以随着系统的增长而扩展。您可以添加多个服务器来在整个网络中分配数据库处理负载(水平扩展),或者您可以将数据库移动到小型机或大型机上,以利用更大系统的性能(垂直扩展)。在这两种情况下,数据和应用程序的维护几乎不需要修改,因为Oracle数据库在系统之间是可移植的。

在网络环境中,共享数据存储在服务器上,而不是存储在所有计算机上,这使得管理并发访问更容易、更有效。

在网络环境中,客户机应用程序使用SQL语句向服务器提交数据库请求。接收到SQL语句后,服务器处理每个SQL语句,并将结果返回给客户机。网络流量被最小化,因为只有请求和结果通过网络传输。

三、Oracle监听相关

监听器的作用:监听器允许客户端应用程序通过网络连接到Oracle数据库实例。它监听特定端口上的连接请求,并将连接请求转发到相应的数据库实例,从而实现客户端与数据库之间的通信。

监听器的配置文件:监听器的配置文件是listener.ora,它包含了监听器的配置信息,如监听器的名称、监听地址、监听端口等。该文件通常位于Oracle软件安装目录下的network/admin目录中。

对于升级到19c的Oracle,如果客户端为11g,需要配置sqlnet.ora:

SQLNET.ALLOWED_LOGON_VERSION_SERVER=10
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10
NAMES.DIRECTORY_PATH=(TNSNAMES) --指的是先指定文件中查找连接名的记录

无配置会遇到的报错如下:
ERROR:
ORA-12154: TNS: 无法解析指定的连接标识符

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值