ORACLE数据库特性

一、学习路径

  1. ORACLE环境安装 (unix)
  2. ORACLE基本概念
  3. JDBC如何访问ORACLE (配合JAVA EE)
  4. 提升ORACLE的SQL解决能力 (项目中的复杂查询、企业笔面试)
  5. ORACLE数据库特性
  6. ORACLE基础DBA

二、ORACLE的进程情况

  1. linux环境下的进程 (多进程)

    pmon (process monitor)

    dbwr (database writer)

    lgwr (logger writer)

    ......

  2. WINDOWS环境下的进程 (单进程)

    oracle.exe

三、ORACLE服务器的启动和关闭 (SQLPLUS环境挂起和恢复等)

//关闭数据库
SQL> shutdown immediate
Database closed. -- 数据库对外服务停止
Database dismounted. -- 实例和数据库脱离联系
ORACLE instance shut down. -- 实例关闭 //ORACLE有很多错误提示,其都给这些错误提示提供了各种编号
SQL> show sga
ORA-01034: ORACLE not available --ORACLE没有启动
Process ID: 5704
Session ID: 131 Serial number: 90 SQL>!
暂时挂起SQLPLUS环境来到命令行shell界面,然后待会可以使用exit来返回 [oracle@dbtest ~]$ exit 返回SQLPLUS环境
exit SQL> startup 启动ORACLE服务器
ORACLE instance started. Total System Global Area 1653518336 bytes
Fixed Size 2213896 bytes
Variable Size 973080568 bytes
Database Buffers 671088640 bytes
Redo Buffers 7135232 bytes
Database mounted.
Database opened. -- oracle开启对外服务 //Fixed Size表示固定区域,存储SGA各个组件的信息。不能修改大小。
//Variable Size表示可变区域,比如共享池、java池、大池等。
//Database Buffers表示数据库高速缓冲区。
//Redo Buffers表示日志缓冲区。

外部连接到ORACLE,ORACLE会产生一个本地进程对其进行服务

oracle 6101 1 0 08:53 ? 00:00:00 oracleorcl (LOCAL=NO)

oracle 6123 1 0 08:53 ? 00:00:00 oracleorcl (LOCAL=NO)

连接Oracle的几种方式

一号机172.19.24.240

二号机172.19.24.2,凭借超管账号密码通过SecureCRT连接一号机,从而打开一号机上的Oracle数据库,属于上图中的红线路径。

三号机172.19.24.3,凭借Oracle数据库管理者账号密码通过Sqlplus或PL/SQL登录一号机上的Oracle数据库,属于上图的绿线路径。

四、几个关注点

1. ORACLE清屏指令

linux : clear scr

sqlplus:clear scr (cle scr)

2. Oracle服务器组成

oracle server = oracle instance + oracle database

  • oracle instance: SGA+background process
  • oracle database: (由若干种文件构成)

SGA:System Global Area(系统全局区),公用的

3. oracle三种类型的进程

  • user process (sqlplus, plsql developer, toad 客户端)
  • server process (当一个用户进程连接过来的时候,服务器将创建一个对接进程专门为其服务)
  • background process (专注于服务器服务的核心服务器进程,比如pmon,smon,ckpt,dbwr...)

oracle实例结构以及进程理解

4. SQLPLUS可以执行2种指令:

  • SQLPLUS自有指令,可以不加;结尾
  • SQL语句指令,必须加;结尾

5. 查看linux环境变量

//查看ORACLE的环境变量 --- 环境变量的过滤
env |grep ORACLE
ORACLE_UNQNAME=DB11G
ORACLE_SID=orcl
ORACLE_BASE=/u01/app/oracle
ORACLE_HOSTNAME=dbtest.oracle.com
ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1 //oracle产品所在目录 --- 引用linux环境变量
cd $ORACLE_BASE/product/11.2.0/db_1
//oracle数据库所在目录
cd $ORACLE_BASE/oradata
//查看表空间
//新建表如果没有指明放在哪个表空间内,则默认是放在系统表空间内
select * from dba_tablespaces;
//查看数据文件位置以及对应表空间
select * from dba_data_files;

6. SQL语句执行计划

SQL -> 验证 -> 编译 -> 生成执行计划

SQL语句是不能直接被数据库软件理解和运行的,所有的数据库软件都需要对SQL语句做解析,转成其能够理解的二进制模式才能运行;同时为了更好更快的执行SQL语句,每个数据库都为某条SQL提供了一个最优化的执行计划(execution plan).

ORACLE会把所有的SQL语句的执行计划都缓存在内存中,保存在shared poollibrary cache中。如果下一次又执行同样的语句,那么ORACLE就不再解析这条SQL语句,而是直接使用缓存中的SQL语句解析结果,我们称这样的行为叫走SQL CACHE HIT. 如果SQL语句大量不同,就会导致SQL CACHE MISS,则需要重新生成执行计划,降低了系统效率。

//使用准备语句,SQL就一句,能够大幅提升CACHE HIT
select * from tbl_student where stu_no=? //SQL语句变化量大,CACHE很容易被清洗
select * from tbl_student where stu_no=+"'"+12+"'"

7. SGA构成

SGA将占用大量的内存空间,主要是为了做缓存,提高访问速度,所以SGA能多大就多大。

一个实例一个SGA, 一个ORACLE进程(server process,background process)一个PGA(Program Grobal Access)进程全局区;PGA属于私用的。

SGA的内部,有各种缓存原件构成

oracle内存结构图

SGA的主要构成:

1. shared pool
a. library cache (SQL的执行计划缓存在这里)
b. data dictionary cache (dd cache的访问是非常频繁的,不做缓存将对性能造成巨大影响)
2. database buffer cache
最重要的,最大的真正的数据信息缓存。数据文件中的数据和即将保存到数据文件中的数据全部缓存在这里。
3. redo log buffer
记录所有对数据库中的数据块的改变
4. Large Pool
5. java pool
oracle支持JAVA语言进行编程和书写存储过程,这个POOL主要是对JAVA对象进行缓存。

8. oracle数据库物理结构

Oracle 的文件体系结构为:
数据文件.dbf(真实数据、日志文件.rdo、控制文件.ctl、参数文件.ora)。 *.dbf和*.ctl(控制数据库和实例之间的对接,一个instance只能对接一个数据库,而一个数据库可以对接多个实例)
多个实例可以操作一个数据库,这种现象叫做oracle集群(oracle RAC) *.log(重做日志文件文件)
数据库中任何写入操作,都将被记载在案,一旦需要回滚,撤销操作,则依托重做日志文件即可实现该行为。

9. oracle数据库逻辑结构

所有的物理文件其实只是代表了一个ORACLE数据库,注意只有1个数据库。
segment(段)
extent(区)
1个ORACLE数据库 => n个表空间 (tablespace)
1个tablespace => n个segment
1个segment => n个extent
1个extent => n个连续的block (1个block的默认大小是8kb)
1个block的大小是可以配置的,但是必须是操作系统block大小的整数倍。
1个tableplace可以由多个datafile组合而成。
1个segment可以跨数据文件,也就是说这个segment某些extent在datafile A中,而其它extent在datafile B中是可以的,extent不能跨文件。

ORACLE数据库特性的更多相关文章

  1. 【Oracle教程资源大合集】Oracle数据库免费学习资源汇总

    Oracle的产品非常丰富,各类学习资源也五花八门,本文将介绍Oracle官方的免费教程与风哥整理的Oracle视频教程: 1.Oracle帮助中心 Oracle帮助中心也称为Oracle文档中心,这 ...

  2. Oracle 数据库的绑定变量特性及应用

    Oracle 数据库的绑定变量特性及应用[-----]转载自https://www.cnblogs.com/rootq/(原地址) 关键词: 绑定变量(binding variable),共享池(sh ...

  3. Oracle数据库该如何着手优化一个SQL

    这是个终极问题,因为优化本身的复杂性实在是难以总结的,很多时候优化的方法并不是用到了什么高深莫测的技术,而只是一个思想意识层面的差异,而这些都很可能连带导致性能表现上的巨大差异. 所以有时候我们应该先 ...

  4. Oracle数据库全球化

    一.自定义数据库和各个会话的语言相关行为 1.1 全球化功能 1.2 使用全球化支持功能 二.使用数据库和NLS字符集 2.1 语言排序与选择 2.2 Locale Builder 2.3 使用时区 ...

  5. Oracle数据库体系结构、启动过程、关闭过程

    一.Oracle数据库体系结构体系结构由下面组件组成:1.Oracle服务器(Server):由数据库实例和数据库文件组成,另外在用户建立与服务器的连接时启动服务器进程并分配PGA(程序全局区) (1 ...

  6. Oracle 数据库简单操作

    现在大型企业一般都用Oracle数据库,Oracle数据库在一般采用expdp,impdp 导出导入数据,但是在操作中经常会遇到一些问题.下面来浅析这些问题. 1. 导出数据 一般导出数据的时候需要建 ...

  7. .net中使用ODP.net访问Oracle数据库(无客户端部署方法)

      ODP.net是Oracle提供的数据库访问类库,其功能和效率上都有所保证,它还有一个非常方便特性:在客户端上,可以不用安装Oracle客户端,直接拷贝即可使用. 以下内容转载自:http://b ...

  8. oracle数据库从入门到精通

    oracle产品线围绕企业开发平台的企业开发平台四大组件:unix,weblogic中间件,java编程语言,oracle数据库oracle 开发主要分两类数据库管理:dba数据库编程:分两部分   ...

  9. CentOS以及Oracle数据库发展历史及各版本新功能介绍, 便于构造环境时有个对应关系

    CentOS版本历史 版本 CentOS版本号有两个部分,一个主要版本和一个次要版本,主要和次要版本号分别对应于RHEL的主要版本与更新包,CentOS采取从RHEL的源代码包来构建.例如CentOS ...

随机推荐

  1. [daily][qemu][kvm] 使用qemu/kvm模拟numa节点

    qemu的配置参数又复杂又难用,man手册写的也是非常对付,很多信息都没有. 而且,竟然遗弃掉旧的配置,换用新的配置.不过这也是好事,说明它在发展,我是欢迎的. 唯一的问题是,要经常跟着它一起更新配置 ...

  2. Flink原理(五)——容错机制

    本文是博主阅读Flink官方文档以及<Flink基础教程>后结合自己理解所写,若有表达有误的地方欢迎大伙留言指出. 1.  前言 流式计算分为有状态和无状态两种情况,所谓状态就是计算过程中 ...

  3. 基于k8s集群部署prometheus监控ingress nginx

    目录 基于k8s集群部署prometheus监控ingress nginx 1.背景和环境概述 2.修改prometheus配置 3.检查是否生效 4.配置grafana图形 基于k8s集群部署pro ...

  4. Luogu P1196 银河英雄传说

    Luogu P1196 银河英雄传说 我们考虑用并查集来维护战舰的情况. 同时,我们用一个$d$数组来记录$x$与$fa[x]$之间的距离.再用$size$数组记录战舰当前所在列的战舰数. 易知两艘在 ...

  5. /bin/false和/sbin/nologin的区别

    /bin/false是最严格的禁止login选项,一切服务都不能用./sbin/nologin只是不允许login系统 其中树莓派的/sbin/nologin文件在/usr/sbin/nologin小 ...

  6. 安装k8s,使用root帐号的初始化脚本

    现在稳定性差不多了.可以总结一下了. 真正使用时,有几个地方,还是确认一下,再正式运行吧. #!/bin/bash # Version V0. ---: ;fi K8S_VERSION="1 ...

  7. 微信小程序~生命周期方法详解

    生命周期是指一个小程序从创建到销毁的一系列过程 在小程序中 ,通过App()来注册一个小程序 ,通过Page()来注册一个页面 先来看一张小程序项目结构 从上图可以看出,根目录下面有包含了app.js ...

  8. java中List集合

    List集合是一个元素有序可以重复的集合,集合中每个元素都有其对应的顺序索引.List集合允许使用重复集合,前面博客写到Set不允许有重复集合.List集合可以通过索引来访问指定位置的集合元素. Li ...

  9. HDFS集群中DataNode的上线与下线

    在HDFS集群的运维过程中,肯定会遇到DataNode的新增和删除,即上线与下线.这篇文章就详细讲解下DataNode的上线和下线的过程. 背景 在我们的微职位视频课程中,我们已经安装了3个节点的HD ...

  10. GITHUB添加SSH内容

    首先,你需要注册一个 github账号,最好取一个有意义的名字,比如姓名全拼,昵称全拼,如果被占用,可以加上有意义的数字. 本文中假设用户名为 chuaaqiCSDN(我的博客名的全拼) 一.gihu ...