拓扑园

  • O&M
    • Universal部署
    • PHP+VUE+Laravel相关
  • Oracle性能优化
  • Oracle项目案例
    • Oracle近期项目案例(目录)
    • Oracle实战问题解析(目录)
    • Oracle数据库名变更流程(2种方式)
    • Oracle数据库目录更换流程(使用Oracle的clone工具)
    • Oracle数据库迁移方案(目录)
    • 标准化文档系列
  • Oracle基础知识
    • LLL的Oracle培训(分类)
    • LLL的docker培训(分类)
    • 标准化文档系列--(分类)
    • Oracle核心经典分析(分类)
    • 图灵小队----(分类并包含以下文章)
    • --MySQL8.0/Oracle/Memcached/Redis等安装配置于RHEL/OL6/7/8.X系列-运行环境最优配置
    • --PG安装配置于RHEL/9X系列-运行环境最优配置
    • --自动维护任务详解-开启、关闭信息统计收集(统计信息)
    • --图灵小队—Oracle/PostgreSQL下创建一个用户测试表(自行定义数据行)
    • --图灵小队-Oracle存储过程导出表的明细_UTL_FILE(文章)
    • --图灵小队-Oracle数据库删除/卸载操作指南(文章)
    • --图灵小队-Oracle常用性能查询SQL语句(文章)
    • --图灵小队-Oracle数据库上线前检查(文章)
    • --图灵小队-Oracle常用SQL语句(文章)
    • --图灵小队—Linux/Oracle脚本/MySQL合集(持续更新)
    • --图灵小队-Oracle技巧记录(文章)
    • ADG
    • RAC
    • ASM
    • OGG
    • RMAN
    • EXPDP/IMPDP
    • 工厂数据导入导出系列
  • MySQL
    • MySQL数据库规范
    • MySQL项目案例
    • MySQL安装配置
    • MYSQL集群项目
    • MySQL常见处理
    • MySQL-Sysbench专题
    • MySQL-Percona Toolkit专题
  • Linux
    • Shell编程
    • kubernetes
    • docker
    • Linux
    • PHP
    • Nginx
    • haproxy
    • mail
    • 网站
    • 域名
    • 网址收藏
  • 数据中心
    • 新框架系统集合
    • 工作文档
    • EBS数据文件扩容
    • VMware虚拟化
    • EBS系列
    • 大数据
    • SVN
    • zabbix
    • SAP
    • 备份相关
    • FC交换机
    • SVN
  • K-Studing
    • D8-Python学习
    • Oracle/MySQl等面试题
    • LG-MySQL
    • LG-Docker/K8S
    • LG-PostgreSQL
    • LG-ORACLE_BBED
    • LG-ORACLE
    • LG-Elasticsearch(ES)+ELK
    • Oracle-19C-OCP
    • WERN_ORACLE培训
    • redis数据库
    • Nginx培训学习系列
  • 其他
    • 外研英语4年级下册-听力
    • 影视系列
    • 如何使用iTunes软件通过抓包下载旧版本的ios的app
天高任鸟飞
Oracle/MySQL数据库恢复/数据迁移/生产规范报告技术交流:TEL:18562510581(微信同号);加微信入群
  1. 首页
  2. 技术学习系列
  3. WERN_ORACLE培训
  4. 正文

第07部分 Oracle11g的体系结构

2020年3月9日 704点热度 0人点赞 0条评论

一、目标:(OCP的部分内容)

(1)初步理解Oracle11g的物理、逻辑结构

    物理结构:是指有哪些文件组成

    逻辑结构:是指逻辑层面有哪些构成

(2)理解SGA、PGA的作用及构成

    内存=SGA+PGA

(3)理解9i中的自动PGA管理的含义

(4)理解10g中的自动SGA管理的含义,以及MMAN进程和MMON进程的含义

(5)理解11g中的AMM的含义,以及MMAN进程的含义,掌握如何配置11g的AMM

(6)理解11g中的默认的表空间的结构的特点

二、Oracle 11g 体系结构

1、数据库的体系结构是指数据库的组成、工作过程与原理,以及数据在数据库中的组织与管理机制

2、Oracle服务器提供开放、全面和综合的信息管理,它由Oracle数据库和Oracle实例组成

    (1) oracle数据库:一个一个的数据文件(数据文件、控制文件、日志文件、参数文件、口令文件、归档日志文件等)

    (2) oracle实例=管理数据库的后台进程+内存结构(SGA+PGA)

image.png

三、oracle 11g 主要组件

【ORACLE数据库(数据文件+控制文件+日志文件+参数文件等)+ORACLE实例(内存结构(SGA+PGA)+后台进程)】

image.png

四、oracle实例的内存结构、后台进程

1、Oracle 11g实例

    (1)、Oracle 实例是内存结构(SGA和PGA)和后台进程(SMON、PMON、DBWR、LGWR、ARC、CKPT等)的集合

    (2)、启动Oracle 实例的过程,即:分配内存、启动后台进程

2、Oracle 11g 内存结构

image.png

(1)内存区:系统全局区(SGA)+程序全局区(PGA)

(2)计算机的整个内存的80%分配给:SGA(oracle内存的80%)+PGA(oracle内存的20%)

(3)SGA和PGA的比例分配

image.png

3、orcle的所有进程

(1)用户进程、服务器进程、后台进程的关系,以及和客户端、服务器端的对应关系

image.png

(2)

image.png

4、SGA

(1)oracle实例启动时,内存分配SGA

image.png

(2)数据库信息存储于SGA,由多个数据库进程共享

(3)SGA包括:共享池、数据缓冲区、日志缓冲区、Large池、Java池、Stream池

     <1>共享池(最重要的:保存执行计划,跨用户或本用户执行相同语句时,可以提高查询速度):

        a、共享池是对SQL、PL/SQL程序进行语法分析、编译、执行的内存区域

            select  count(*)  from emp;——语法分析、编译、生成执行计划、运行执行计划,在共享池完成

            第一次运行上述语句时,需要经过语法分析、编译、生成执行计划、运行执行计划,在共享池完成,并将执行计划存储在共享池中;

            第二次再运行上述语句时,sql会先到共享池中找此执行计划,是否已经在共享池中存在。因为之前已经生成过一次,此时找到了,就跳过了语法分析、编译、生成执行计划过程,直接运行执行计划,提高查询速度。

            何为相同的执行计划:所有的sql语法完全一致才可以(包括,字母大小写,空格等),不能有一点差别,才能共享这块池

        b、共享池由库缓存和数据字典缓存组成(OCP部分)。

        c、共享池的大小直接影响数据库的性能。

     <2>数据缓冲区

        用户——缓冲区——硬盘数据【用户不和硬盘数据直接接触】

        select,将数据从硬盘读到缓冲区,用户在到缓冲区获取

        update,将要修改的数据读到数据缓冲区中修改,修改完成,在某个时间点,由数据缓存区写入磁盘

        delete,将要删除的数据读入到数据缓冲区,进行删除,在某个时间点,由数据缓冲区写入磁盘

        insert,将数据插入到数据缓冲区,在某个时间点,由数据缓冲区写入硬盘

    a、用于存储从磁盘数据文件中读入的数据,所有用户共享。

    b、服务器进程将读入的数据保存在数据缓冲区中,当后续的请求需要这些数据时可以在内存中找到,不需要再从磁盘读取,提高了读取速度。

    c、数据缓冲区的大小对数据库的读取速度有直接的影响。

  <3>日志缓冲器   

    a、日志记录数据库的所有修改信息,日志信息首先产生于日志缓冲区。 

    b、当日志缓冲区的日志数据达到一定数量时(日志缓冲区达到1M或占用1/3或发出commit操作),由后台进程将日志数据写入在线日志文件中。

    c、相对来说,日志缓冲区对数据库的性能影响较小。

  <4>Large池 

    为了进行大的后台进程操作而分配的内存空间,主要指备份恢复(如rman)、大型IO操作、并行查询(如:数据仓库)等。 

  <5>Stream池

    为了stream应用而分配的内存空间

  <6>JAVA池  

    为了java应用而分配的内存空间

5、PGA

(1)服务器进程启动时,内存分配PGA

(2)程序全局区(PGA)包含单个服务器进程所需的数据和控制信息,比如每个session传入的SQL绑定变量、以及对该session进行控制的控制信息。如果该session进行了排序或hash连接操作,也会使用PGA中的内存。

(3)PGA是在用户进程连接到数据库并创建一个会话时自动分配的,保存每个与Oracle 数据库连接的用户进程所需的信息

(4)共享连接模式和专用连接模式,PGA的管理方式不同。大多情况下,采用专用连接模式。其产生的用户进程和服务器进程后面讲述

(5)对专用连接来说,用户在客户端启动了一个应用程序,例如sql*plus,就是在客户端启动一个用户进程;与oracle服务器端连接成功后,会在服务器端生成一个服务器进程,该服务器进程作为用户进程的代理进程,代替客户端执行各种命令并把结果返回给客户端。

(6)用户进程一旦中止,服务器进程立刻中止。

    <1>PGA的专用连接(8i之后改为专用连接 )

        对于用户而言SGA是共享的,PGA是专用的(专用连接)不共享

image.png

    <2>PGA的共享连接(8i和8i之前是共享连接,之后就没有了)

        a、服务器进程,在用户连接之前就有

        b、一个用户进程可以使用多个服务器进程

        c、1个服务器进程也可以让多个用户接入

image.png


6、oracle 11g会话

    (1)会话是用户与 Oracle 服务器的单个连接

    (2)当用户与服务器建立连接时创建会话

    (3)当用户与服务器断开连接时关闭会话

    (4)从v$session中查询会话信息

    scott登录前后对比:

SQL> select username from v$session where username='SCOTT';

断开连接:sql>disconnect;

image.png

7、ORACLE实例的后台进程

(1)PMON:进程监控进程

    a、清理出现故障的进程。 

    b、释放所有当前挂起的锁定。

    c、释放故障进程使用的资源。

(2)SMON:系统监控进程

    a、在实例失败之后,重新打开数据库时自动恢复实例。 

    b、整理数据文件的自由空间,将相邻区域结合起来。

    c、释放不再使用的临时段。 

(3)DBWR 数据写入进程

    a、管理数据缓冲区,将最近使用过的块保留在内存中。

    b、将修改后的缓冲区数据写入数据文件中。 

(4)LGWR 日志写入进程

    a、负责将日志缓冲区中的日志数据写入日志文件。 

    b、系统有多个日志文件,该进程以循环的方式将数据写入文件。

(5)CKPT检查点进程:为了防止实例崩溃,为了尽快进行实例恢复的进程。(OCP讲ckpt进程的工作方式)

    检查点包括两种:完全检查点、增量检查点。

    完全检查点只有下面两种情况下被触发:

    a、用户发出 alter system checkpoint;

    b、除了shutdown abort以外的其他方式正常关闭数据库。

    增量检查点触发情况:

    c、每隔三秒。

    d、在线日志切换。

    查看进程的语句:select * from v$process;【sys或system可以查看】

image.png

8、控制DBWR进程数量

    (1)查看DBWR的数量:

    SQL>show paramter db_wr;【只有sys用户可以查看】

image.png

    或通过process查看

select  PROGRAM,

 image.png

(2)增加DBWR的数量

SQL> show parameter db_wr;

SQL> alter system set db_writer_processes=3 scope=spfile;

image.png

image.png

(3)查看ARC 归档日志进程:select * from v$process where program like '%ARC%';——开启归档日志  

image.png 

9、9i中的自动PGA管理

    (1)前提是:必须设置初始化参数workarea_size_policy为AUTO。

    (2)自动PGA管理,DBA根据数据库的负载情况,估计所有的session大概需要消耗的PGA的总的大小,然后把该值设置成初始化参数pga_aggregate_target,Oracle就会自动调整每个session的PGA的大小。

10、10g中的自动SGA管理(6个部分)

(1)自动SGA管理,即ASMM,Automatic Shared Memory Management。只为SGA分配一个总的大小就可以了,不必像9i那样具体分配SGA中的每一个部分的大小。

(2)在设置初始化参数statistics_level为typical或all,才可以启动ASMM。然后可以使用10g提供的一个新的初始化参数sga_target来定义了整个SGA的大小。

(3)为此,10g有一个新的后台进程MMAN,即memory manager,用于进行自动SGA管理。

(4)注意另一个后台进程MMON,即memory monitor,用于自动统计信息收集。

11、11g中的自动内存管理(包含SGA+PGA)

(1)自动内存管理,即AMM,Automatic Memory Management。只为Oracle的使用整体分配一个总的内存大小就可以了,不必像10g那样具体分配SGA和PGA的大小。

启用AMM的条件:

  <1>初始化参数statistics_level为typical或all,才可以启动AMM。SQL> show parameter statistics;

image.png

  <2>注意:如果使用AMM,则sga_target和pga_aggregate_target的值应该设置成0,如果不为零,设置为零。

SQL>alter system set sga_target=0 scope=both; 

SQL>alter system set pga_aggregate_target=0 scope=both;

image.png

  <3>新的初始化参数memory_target来定义了整个内存的大小,即SGA加上PGA的总的大小。

SQL> show parameter memory;

  <4>新的初始化参数memory_max_target来定义了memory_target最大可以达到的值。

SQL> show parameter memory;

image.png

但是,当内存大于4G时,不允许使用AMM自动内存管理

image.png

(5)11g中的后台进程MMAN,用于进行自动内存管理。

(6)可以show parameter的参数,都放在参数文件spfile.ora文件中了

五、数据库结构

1、Oracle 数据库由操作系统文件组成,这些文件为数据库信息提供实际物理存储区

2、Oracle 数据库包括逻辑结构和物理结构

image.png

六、物理组件就是Oracle数据库所使用的操作系统物理文件。

  (1) 主要物理文件可分为三类: 

        数据文件:数据文件用于存储数据库数据,如表、索引数据等。

        控制文件:控制文件是记录数据库物理结构的二进制文件。

        在线日志文件:记录对数据库的所有修改信息,用于故障恢复。

        丢失这些文件,数据库不可以继续运行,需要进行介质恢复。

    (2)非主要物理文件包括:

        参数文件:$ORACLE_HOME/dbs/spfile.ora或initorcl.ora等

        密码文件:$ORACLE_HOME/dbs/

        告警和跟踪文件:/data/u01/app/oracle/diag/rdbms/orcl/orcl/trace

        归档日志文件:

        备份文件:

        丢失这些文件,数据库仍然可以继续运行,不需要进行介质恢复。

七、数据库结构——逻辑结构

Oracle的逻辑组件包括

image.png

1、表空间是数据库中最大的逻辑单位,一个 Oracle 数据库至少包含一个表空间,就是名为SYSTEM的系统表空间。

2、每个表空间是由一个或多个数据文件组成的,一个数据文件只能与一个表空间相关联。

3、表空间的大小等于构成该表空间的所有数据文件大小之和

4、创建表空间语法:CREATE TABLESPACE tablespacename DATAFILE ‘filename’ [SIZE integer [K|M]] [AUTOEXTEND [OFF|ON]];

5、查看表空间:SQL>select * from v$tablespace;

6、查看dba数据文件,和v$tablespace联合查看

 (1)查看表空间资源使用情况):

SELECT UPPER(F.TABLESPACE_NAME) "表空间名",   
 D.TOT_GROOTTE_MB "表空间大小(M)",   
 D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",   
 TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') "使用比",   
 F.TOTAL_BYTES "空闲空间(M)",   
 F.MAX_BYTES "最大块(M)"  
 FROM (SELECT TABLESPACE_NAME,   
 ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,   
 ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES   
 FROM SYS.DBA_FREE_SPACE   
 GROUP BY TABLESPACE_NAME) F,   
 (SELECT DD.TABLESPACE_NAME,   
 ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB   
 FROM SYS.DBA_DATA_FILES DD   
 GROUP BY DD.TABLESPACE_NAME) D   
 WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME   
 ORDER BY 4 DESC;

  (2)查看表空间以及其下数据文件

中文展示:
select     
    b.file_name 物理文件名,
    b.tablespace_name 表空间,
    b.bytes/1024/1024 大小M,
    (b.bytes-sum(nvl(a.bytes,0)))/1024/1024  已使用M,
    substr((b.bytes-sum(nvl(a.bytes,0)))/(b.bytes)*100,1,5)  利用率 
    from dba_free_space a,dba_data_files b 
    where a.file_id=b.file_id 
    group by b.tablespace_name,b.file_name,b.bytes 
    order by b.tablespace_name;
英文展示:
    select     
    b.file_name datafile,
    b.tablespace_name tablespace,
    b.bytes/1024/1024 total_M,
    (b.bytes-sum(nvl(a.bytes,0)))/1024/1024 used_M,
    substr((b.bytes-sum(nvl(a.bytes,0)))/(b.bytes)*100,1,5)  percent 
    from dba_free_space a,dba_data_files b 
    where a.file_id=b.file_id 
    group by b.tablespace_name,b.file_name,b.bytes 
    order by b.tablespace_name;

7、默认表空间(从v$tablespace中查看)

SYSTEM、SYSAUX、TEMP、UNDOTBS1、USERS、EXAMPLE

    (1)SYSTEM是系统表空间,存放系统的最基本的信息,如果SYSTEM表空间坏掉,Oracle将无法启动。

    (2)SYSAUX从10g中引入,作为SYSTEM的辅助表空间,用以减少SYSTEM表空间的负荷 。 以前其他表空间中的一些组件,现在放到SYSAUX表空间中了。

            比如,以前SYSTEM表空间中LogMiner、以前SYSTEM表空间中Logical Standby、Spatial、以前DRSYS表空间中Oracle Text等。

    (3)TEMP是临时表空间,当排序不能在分配的空间中完成时,就会使用磁盘排序的方式,即在Oracle实例中的临时表空间中进行。

    (4)UNDOTBS1是撤销表空间,是UNDO类型的表空间,保存用户进行DML操作中,修改前的数据。

    (5)USERS是数据库默认的永久表空间。用户创建后,如果默认,那么用户下的数据都在USERS这个表空间中,select * from dba_users  where username='TEST';

    (6)EXAMPLE是数据库测试用例所涉及的表的所属表空间。

8、创建表空间及用户的关系

    (1)用户创建后:SQL> create user test identified by test;

    (2)test用户默认是在USES表空间下,后期test用户下的表和所有数据都在此表空间下。

        SQL> select default_tablespace from dba_users where username='TEST';

        SQL> select *  from dba_tables where owner='TEST';

image.png

image.png

    (3)如果创建过程,指定了表空间,则就在此表空间中;

    SQL>create user messhycbz identified by "Mes#shycbz" default tablespace MESPRD_TBSP temporary tablespace TEMP profile DEFAULT;

    (4)更改数据库的默认表空间为其他的

    SQL> alter database default tablespace testtbs;

9、段、区、块

    (1)段:

        段是构成表空间的逻辑存储结构,段由一组区组成。 

        按照段所存储数据的特征,将段分为若干种类型,主要有数据段、索引段、回退段和临时段。

    (2)区:

        区为段分配空间,它由连续的数据块组成。 

        当段中的所有空间已完全使用时,系统自动为该段分配一个新区。

        区不能跨数据文件存在,只能存在于一个数据文件中。

    (3)块:      

        数据块是Oracle服务器所能分配、读取或写入的最小存储单元。

        Oracle服务器以数据块为单位管理数据文件的存储空间。 

        SQL>show parameter db_block_size;——8192字节,每个块就是8192,每次读取,至少是8192字节;

        select ename form emp where empno =7934; ——把MILLER所在的数据块,完整的从硬盘督导数据库缓冲区,再交给用户。

        虽然MILLER只有6个字节,但是因为块就是最小存储单元,依然会读取8192字节数据,

    (4)模式(模式=用户)

        模式是对用户所创建的数据库对象的总称。 

        模式对象包括表、视图、索引、同义词、序列、过程和程序包等。

10、区分ASM、ASMM、AMM、ASSM

    ASM:存储方式,不写入内存

    ASMM:自动共享管理
    AMM:自动内存管理

    ASSM:自动段存储管理

(1)  

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2020年3月16日

admin

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

COPYRIGHT © 2022 拓扑园. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

鲁ICP备2021020523号

鲁ICP备2021020523号