个人原创,转载请在文章头部明显位置注明出处:https://www.cnblogs.com/sunshine5683/p/10080102.html

在上一篇进阶中大概讲解了一些关于进阶方面的知识,今天就将进阶内容做个总结!

一、OracleServer实例DB的概念:

1、Oracle关系数据库管理系统(RDMS)

  • 集成了开放的、全面的、集成的信息管理方法.
  • 一个实例对应一个OracleServer,要查询oracleServer,直接查询后台进程就可以了
  • 查看实例个数:

ps -ef|grep ora_|cut -d '_' -f3|uniq

ps -ef|grep ora_|cut -d '_' -f3|sort|uniq(有几条就几个oracleServer)

  • 后台进程是在实例启动的时启动的,时将文件写到磁盘上的

访问实例:V$instance,访问数据库: v$database

语句:select instance_name from v$instance_name;

select db_unique_name from v$database;

show parameter service_name  (查看服务名)

一个实例返回一个数据库

注意:查看实例或数据库名时,保证数据库启动到mount(此阶段仅仅物理阶段可用)阶段或者open(此阶段打开物理机构和逻辑结构)阶段,在nomout阶段不可以查询

注意:所有的12c跑应用程序都在pdb里面跑,而不再cdb里面跑

  • 实例名跟库名不一定相同,这是允许的

二、如何连接到数据库

1、连接到服务器:

所有连接数据库都需要有相应的翻译工具或者相应的客户端工具,eg:Java访问工具:jdbc等。

  • 10g里面连接工具:ojdbc14.jar   classes12.jar   ojdbc14.jar
  • 11g 里面的连接工具:ojdbc6.jar   ojdbc7.jar

所以要访问数据库,只需要安装以上任意连接工具的驱动包就可以

2、oracle中的客户端工具:

  • sqlplus:
  • sqldevelop:
  • toad:
  • pl/sql develop:

以上客户端实现的时候都是通过ORACLE NET实现的

查看服务名:

也可以通过以下命令查看服务名

>show parameter dispathcer

3、windows上面访问数据库:

三、Oracle DB体系结构概览

1、用户进程

用户进程要连接数据库,有本地连接,有远程连接,但都会在服务器端产生用户进程

  • 连接到数据库实例:

连接:用户进程和实例之间的通信

会话:用户通过用户进程与实例建立的特定连接

  • 远程连接:tcp三次握手
  • 本地连接:数据库和客户端在同一台电脑:通过套接字连接

本地远程连接数据库,然后进入服务端,desc v$session 就可以看到连接用户客户端信息

  • 专有连接:一个用户进程对应一个服务进程,连接模式为NONE:共享连接
  • 共享连接:一个服务进程对应多个用户进程, 连接模式DEDICATED:专有连接

2、服务器进程

1>访问服务器进程在v$process视图中查看,服务器进程是接收用户进程请求并做相应的处理的。

2>用户进程产生会话之后,该会话将保留在内存当中,每个用户进程都有自己的独立的PGA区。

3>查看访问数据库的操作系统进程id语句:

Select spid from v$process where addr in(select paddr from v$session where username=’SCOTT’);

4>看操作系统进程:

  • ho ps –ef|grep 2036
  • ho ps –ef|grep 4407

5>查看该进程消耗资源情况:top –p 4407

每一个视图都可以进程跟踪,使用desc v$process可以看到TRACEFILE(跟踪文件)文件。

6>只要dba的用户,在Oracle里面都可以使用:show parameter pga_a查看pga的内存大小,pga的值本身是自动管理的,但在11g中,可以通过权值修改其大小。

7>修改pga的大小:

  • alter system set pga_aggregate_target=5g;
  • show parameter pga

8>对于耗资源的进程,可以杀掉(假如是4406进程):kill -9 4406

四、sga

在10g中可以用show parameter sga_target查看sga大小,在11g和12c中可能看到的大小

查看sga的信息:select * from v$sgainfo;

1、共享池

1>库高速缓存:用来接收pga传递过来的hashvalue,如果该值存在,做软分析,否则,做硬分析,定义语句是全标扫描还是索引扫描

2>数据字典高速缓存:提供访问的对象是表还是索引还是同义词,表空间、数据文件等,进行递归调用

3>服务器进程用来读取数据文件到数据高速缓存区中,然后进行的读取

2、数据库高速缓冲区

有两种block,读的block和写的block,与块的读取有关

3、重做日志缓冲区

与块的更改有关,其大小需要手工设置。

五、后台进程

1、CKPT

  • 只要在用户进程里面执行除了查询之外的的任何操作,都会触发CKPT,触发后,CKPT除了通知控制文件和数据文件外,还会通知DBWn将在数据库缓冲区高速缓存区执行过的DDL或者DCL的操作写到数据文件中去(注意:通知DBWn去写,但是DBWn未必就立马去写)。
  • 当CKPT触发了,LGWR也写完了,大师DBWn还没写完,在下次启动时候,会自动将LGWR记录在联机重做日志文件中保存的undo内容写到数据文件中。
  • SGA里面的操作由SMON(系统监视进程)和PMON(进程监视进程)协调。
  • Oracle中最重要的5个进程:SMON ,PMON,DBWn,CKPT,LGWR。
  • 显示相应的视图:desc v$process,查看后台进程:desc v$bgprocess视图中:
  • 查看当前正在使用的后台进程:select paddr,name from v$bgprocess where paddr<>’00’;
  • 查看数据文件:select name from v$datafile;
  • 查看日志文件位置:select member from v$logfile;
  • 查看控制文件位置:select name from v$controlfile;
  • 参数文件:show parameter spfile

1>数据文件:表空间、表、索引都在数据文件中

六、sga的其他组件

1、数据高速缓冲区

2、重做日志缓冲区

3、大型池

4、Java池和流池

5、程序全局区(PGA)

6、系统全局区(SGA)

7、数据库写进程(DWRn)

将数据库缓冲区高速缓存区中经过修改的缓冲区写入磁盘:有两种写入方式:

1>在执行其它处理时异步执行

2>推进检查点

  • 查看:show parameter db_wr;
  • 数据库写进程是可以修改的:alter system set db_writer_processes=30; a scope=spfile; /(表示执行)

8、日志写进程(LGWR)

1>将重做日志缓冲区中的内容写入磁盘上的重做日志文件中

2>在以下情况下执行写操作:

  • 用户进程提交事务处理时
  • 重做日志缓冲区的三分之一已满时
  • 在DBWn进程将经过修改的缓冲区写入磁盘之前
  • 每隔3秒

9、检查点进程(CKPT)

1>将检查点信息记录在以下位置

  • 控制文件
  • 每隔数据文件头

10、系统件事进程(SMON)

1>在实例启动时候执行恢复

2>清除不使用的临时段

11、进程监器视进程(PMON)

在用户进程失败时候执行进程恢复

1>     清楚数据库缓冲区高速缓存

2>     释放该用户进程使用的资源

3>     监视会话是否发生空闲会话超时

4>     将数据库服务动态注册到监听程序

12、恢复器进程:

1>     用于分布式数据库配置

2>     自动连接到其它那些与有问题的分布式处理有关的数据库

3>     自动解决所有有问题的事务处理

4>     删除对应于所有有问题的事务处理所有行

13、归档进程(ARCn)

是一个可选进程。

1>     在发生日志切换之后,将重做日志文件复制到指定的存储设备

2>     可以手机事务处理重做数据,并将该数据传输到备用目标位置

14、告警日志

1>查看告警日志的路径:show parameter background_dump_dest;

3>     读该告警日志:ho ls  /u01/oracle/admin/wyzc10g/bdump/alert_wyzc10g.log

在任何的版本都可以通过以上路径去访问,只是不同的版本可能路径不一样,如:在11g当中查看路径:show parameter backgr; 可以看到路径为:/u01/oracle/diag/rdbms/wyzc11g/wyzc11g/trace/alert_wyzc11g.log

同样可以读该日志:

ho ls / u01/oracle/diag/rdbms/wyzc11g/wyzc11g/trace/alert_wyzc11g.log

七、逻辑结构

1、逻辑和物理数据库结构:

  • 方案:语句、表、索引、函数、过程、包等
  • 数据库:一个数据库可以放32272个表空间
  • 表空间:一个表空间可以放1023个数据文件
  • 段;自动管理后,空间分配等都可自动管理,减少dba的工作量。一个表空间可以放多个段。
  • 区:区里面存放的都是block,如果采用的是10g及其以后的版本,都采用的是本地管理,字典管理已经不使用了。
  • Oracle数据块:Oracle最大的block只有32k
    • 数据文件:
    • 操作系统块:

2、物理结构:

3、SYSTEM和SYSAUX表空间

1>     SYSTEM和SYSAUX表空间是在创建数据库时创建的必须存在的表空间,这些表空间必须联机。

2>     SYSTEM表空间用于核心功能(例如数据字典表)

3>     辅助的SYSAUX表空间用于附加的数据库组件(如Oracle Enterprise Repository)

4>     数据块会映射到磁盘块,不建议使用SYSTEM和SYSAUX表空间来存储应用程序的数据。

4、自动存储管理

1>     是可移植的高性能集群文件系统

2>     管理Oracle DB文件

3>     通过ASM集群文件系统(ACFS)管理应用程序文件

4>     将数据分配到各个次盘中以平衡负载

5>     建立数据镜像以防范故障

6>     解决存储管理挑战

5、ASM存储组件

ASM最终调的是硬盘

八、12c体系结构的不同之处

Oracle中的三大容器:CDB$ROOT容器、PDBSEED容器和PDBContainer容器

九、DML语句:

注意:在写sql语句时候如:selet * from aaa ;此时发现报错’selet’,返回重新纠正就都的重写,此时只需要替换一下就可以,’c/selet/select’然后回车,就会将错误字符改正并正常执行。

1.buffer cache --undo block

修改前的data block 数据进行镜像

2.undo 变化 所有redo记录undo变化的过程

3.buffer cache --data block 修改

4.data block 变化  redo记录变化过程

5.Insert操作成功

Insert执行时候1,2,3,4,5执行完成后,Oracle数据要进行:提交 回退|不提交。

不提交>此时undo数据属于修改后的状态,未提交,undo数据只能被当前的事务所在的会话调用,其他会话不能看到DML修改后的结果,看到的是上次提交的状态

回退>此时使用修改前的undo镜像,覆盖修改的data block,这样就撤销了修改的信息,标记undo事务数据不需要

提交>标记ITL信息为新的SCN,undo数据为提交状态,变为历史undo数据,写到磁盘上,将块数据标记为脏数据,该脏数据需要下次dbwr写到磁盘上,该数据也将成为其他会话看到的提交的数据

长时间不提交,DML事务达,很长时间没有结束,可能影像其他的会话执行所在行的DML

DML在对一张表进行操作的时候,会将该表锁定,到commit或着collback后释放

十、DDL语句:

1、其中上面1、2看到DDL是否修改数据字典 ,若修改字典, 1,2执行,2、4都要执行

2、DDL操作成功

十一、执行计划

1、EXPLAIN PLAN 命令模拟sql执行跟踪

2、查询V$sql_plan视图

3、查询AWR

4、SQL*PLUS AUTOTRACE:统计信息

取当前的执行计划:在内存中已经存在一个sql情况:

1>  找到对应sql语句的游标id:select sql_id from v$sql where sql_text like 'select * from t1%';

2>  使用嵌套表查询当前语句的执行计划:

select * from table(dbms_explan.display_cursor('alln3qb4qvzrt')); 得到执行计划

常用查看执行计划语句:1>ls /u01/oracle/11g/sqlplus/admin/

5、执行计划的缩进执行顺序:

1、缩进不同,少的为父亲,多的为儿子。父子关系执行时候:先儿子后父亲

2、缩进相同,上面的为哥哥,下面的为弟弟,执行时候:先哥哥后弟弟

3、缩进是可以嵌套的:以父亲/祖父同级的为一个家族

6、SQL跟踪工具:

1>通常在会话级启用

2>收集按照会话分组的sql语句的会话统计信息

3>产生可通过tkprof格式化输出

4>方法:对于当前会话:EXEC dbms_monitor(待完成)

7、SQL 优化器:

rule:表示使用rule优化器,现已被淘汰,用与10g   使用rbo

choose:有统计信息的优化器,使用cbo不使用rbo

10gr2 :开始统计信息,可以动态采样,没有统计信息,也不使用rbo

all_rows   first_rows   first_rows_n

其中  rule基于规则,

如果没有统计信息,将采用rbo

8、生成优化程序跟踪

1>设置一个事件-10053优化程序跟踪

建索引:

Create index emp_d_i on emp(deptno);

create index emp_s_d_i on emp();

create index emp_s_d_i on emp(sal,deptno);

2>执行相关语句

十二、Oracle中的函数—单行函数之字符函数

单行函数:不管输入几行,返回的只有一行。

1、Character:字符函数

大小写:

  • LOWER(String):全部转换为小写
  • upper(String):全部转换为大写
  • initcap(String):将首字母转换为大写

字符处理函数:

  • concat(String,String):字符串连接函数,要连接三个字符串,需用嵌套,其嵌套为:concat(concat(StringValue,StringValue),StringValue)
  • substr(expr,m,n):截取字符串expr,其中m表示从哪里开始,m可为负数,表示反向截取,n表示取多少个,省略n表示从第m个字符把后面所有的字符都截取出来。应用场景:如找到第二个字符是A的员工:select ename from emp where substr(ename,2,1)=’A’;
  • length():该函数有四种形式,lengthc、lengthb、length2、length4
  • instr(StringValue,’a’):返回字符在第一个字符串中的位置,若找到,返回位置,没找到,返回0,应用场景:找到第一个字符是A开头的员工,select ename from emp where instr(ename,’A’)=1。

2、Gerneral:通用函数

3、Numbers:数字函数

4、Conversion:转化函数

5、DateValue日期函数

以上空着的部分将在后续总结中进行填补!

OracleServer总结进阶之系统分析(进阶完结)的更多相关文章

  1. Python:什么是进阶,如何进阶?

    目录 Python:什么是进阶,如何进阶? 1. 什么是进阶? 2. 如何进阶? 3. 除此之外呢? Python:什么是进阶,如何进阶? 1. 什么是进阶? 一门编程语言的基础部分,往往非常简单.如 ...

  2. 【 D3.js 进阶系列 】 进阶总结

    进阶系列的文章从去年10月开始写的,晃眼又是4个多月了,想在年前总结一下. 首先恭祝大家新年快乐.今年是羊年吧.前段时间和朋友聊天,聊到十二生肖里为什么没猫,我张口就道:不是因为十二生肖开会的时候猫迟 ...

  3. Ionic APP-Web SPA开发进阶(二)Ionic进阶之路由去哪了

    Ionic进阶之路由去哪了 项目需求 在查看药品时,从药品列表中可以通过点击药品列表获取某一药品详情.提交订单时,同样可以查看药品详情.两种情形下,从药品详情返回后,应分别返回至原来的页面.如下图所示 ...

  4. NodeJS学习笔记 进阶 (13)Nodejs进阶:5分钟入门非对称加密用法

    个人总结:读完这篇文章需要5分钟,这篇文章讲解了Node.js非对称加密算法的实现. 摘录自网络 地址: https://github.com/chyingp/nodejs-learning-guid ...

  5. NodeJS学习笔记 进阶 (12)Nodejs进阶:crypto模块之理论篇

    个人总结:读完这篇文章需要30分钟,这篇文章讲解了使用Node处理加密算法的基础. 摘选自网络 Nodejs进阶:crypto模块之理论篇 一. 文章概述 互联网时代,网络上的数据量每天都在以惊人的速 ...

  6. iOS进阶路线以及进阶书籍

    第一,熟悉ARC机制:首先要了解ARC的前世今生.假设了解不清楚会导致两种可能,1,一个对象的引用莫名奇异为空.或失效了.这个一般都能在开发阶段及时发现,由于会导致应用异常.2.导致内存溢出:不了解A ...

  7. 汇编语言进阶和Makefile进阶---第二天

    摘要: 原创博文:转载请标明出处:http://www.cnblogs.com/zxouxuewei 首先加载启动代码: ; hello-os ; TAB=4 ORG 0x7c00 ; 指明程序装载地 ...

  8. SpringBoot进阶之web进阶

    1.表单验证: 实体类添加: @Min(value = 18 ,message = "未成年少女禁止入内!")最小值限制为18,如果小于18则返回message中的信息 注入校验, ...

  9. 2小时学会spring boot 以及spring boot进阶之web进阶(已完成)

    1:更换Maven默认中心仓库的方法 <mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirr ...

随机推荐

  1. JQuery Mobile - 如何让listview不显示向右的箭头?

    先看一下有向右箭头的截图吧 这个listview第二个项目,就有向右的箭头,如果单纯显示具体数据,没有扩展显示的内容,那么这个向右的箭头就是多余的,在这种情况下,最好是去掉这个向右箭头,程序中已经在第 ...

  2. CRUD组件的高阶使用

    1.list页面自定列显示: class PermissionConfig(sites.AryaConfig):       def dabo(self, obj=None, is_header=Fa ...

  3. 简单的卷积神经网络(CNN)的搭建

    卷积神经网络(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现.与普通神经网络非常相 ...

  4. js面试题——找到数组中的重复元素并判断重复次数且输出重复元素

    var countArr = [1,2,3,4,5,6,3,4,3,3,7,8,9,32,1,11,2,3,3,3]; var res = {}; var maxnum=0; var max; fun ...

  5. 如何让IE 低版本下支持 css3属性

    依赖源  该文件为  ie-css3.htc    (特别提示.htc为二进制文件,只会在ie中识别,让IE浏览器支持CSS3的一些属性) 以下为依赖文件源码 通过源码我们可以看到 该文件在一定程度上 ...

  6. 2019年北航OO第一次博客总结

    一.基于度量对程序结构的分析 1. 第一次作业 1.1 基于类的分析的度量 首先,基于类的属性个数,方法个数,每个方法的规模,每个方法的控制分支数目,类总代码规模等特征对本次作业的结构进行分析. 1. ...

  7. crop和resize操作区别

    crop:对图像进行剪切 resize:对图像进行伸缩 实践代码 import cv2 bb2d = [30, 30, 72 ,42] image = cv2.imread('car.png') pt ...

  8. 【xsy3423】党² 线段树+李超线段树or动态半平面交

    本来并不打算出原创题的,此题集CF542A和sk的灵感而成,算个半原创吧. 题目大意: 给定有$n$个元素的集合$P$,其中第$i$个元素中包含$L_i,R_i,V_i$三个值. 给定另一个有$n$个 ...

  9. uiautomatorviewer 双击闪退问题解决

    最近在学习app自动测试,结果在打开uiautomatorviewer查看app界面元素时,就出现了闪退的问题,找了很多很多方法,最后终于可以解决了,详情请继续往下看 首次安装adt的步骤 将下载的压 ...

  10. Mac 10.12连接iSCSI硬盘软件iSCSI Initiator X

    Mac下的iSCSI协议苹果一直以来没有集成,而网络上流传的最好用支持iSCSI硬盘的软件是globalSAN,但是这个软件是收费的,当然有破解版,只不多不太好找,因为现在用iSCSI的用户已经很少了 ...