ORACLE数据库特性
ORACLE数据库特性
一、学习路径
- ORACLE环境安装 (unix)
- ORACLE基本概念
- JDBC如何访问ORACLE (配合JAVA EE)
- 提升ORACLE的SQL解决能力 (项目中的复杂查询、企业笔面试)
- ORACLE数据库特性
- ORACLE基础DBA
二、ORACLE的进程情况
linux环境下的进程 (多进程)
pmon (process monitor)
dbwr (database writer)
lgwr (logger writer)
......
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 pool的library 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数据库特性的更多相关文章
- 【Oracle教程资源大合集】Oracle数据库免费学习资源汇总
Oracle的产品非常丰富,各类学习资源也五花八门,本文将介绍Oracle官方的免费教程与风哥整理的Oracle视频教程: 1.Oracle帮助中心 Oracle帮助中心也称为Oracle文档中心,这 ...
- Oracle 数据库的绑定变量特性及应用
Oracle 数据库的绑定变量特性及应用[-----]转载自https://www.cnblogs.com/rootq/(原地址) 关键词: 绑定变量(binding variable),共享池(sh ...
- Oracle数据库该如何着手优化一个SQL
这是个终极问题,因为优化本身的复杂性实在是难以总结的,很多时候优化的方法并不是用到了什么高深莫测的技术,而只是一个思想意识层面的差异,而这些都很可能连带导致性能表现上的巨大差异. 所以有时候我们应该先 ...
- Oracle数据库全球化
一.自定义数据库和各个会话的语言相关行为 1.1 全球化功能 1.2 使用全球化支持功能 二.使用数据库和NLS字符集 2.1 语言排序与选择 2.2 Locale Builder 2.3 使用时区 ...
- Oracle数据库体系结构、启动过程、关闭过程
一.Oracle数据库体系结构体系结构由下面组件组成:1.Oracle服务器(Server):由数据库实例和数据库文件组成,另外在用户建立与服务器的连接时启动服务器进程并分配PGA(程序全局区) (1 ...
- Oracle 数据库简单操作
现在大型企业一般都用Oracle数据库,Oracle数据库在一般采用expdp,impdp 导出导入数据,但是在操作中经常会遇到一些问题.下面来浅析这些问题. 1. 导出数据 一般导出数据的时候需要建 ...
- .net中使用ODP.net访问Oracle数据库(无客户端部署方法)
ODP.net是Oracle提供的数据库访问类库,其功能和效率上都有所保证,它还有一个非常方便特性:在客户端上,可以不用安装Oracle客户端,直接拷贝即可使用. 以下内容转载自:http://b ...
- oracle数据库从入门到精通
oracle产品线围绕企业开发平台的企业开发平台四大组件:unix,weblogic中间件,java编程语言,oracle数据库oracle 开发主要分两类数据库管理:dba数据库编程:分两部分 ...
- CentOS以及Oracle数据库发展历史及各版本新功能介绍, 便于构造环境时有个对应关系
CentOS版本历史 版本 CentOS版本号有两个部分,一个主要版本和一个次要版本,主要和次要版本号分别对应于RHEL的主要版本与更新包,CentOS采取从RHEL的源代码包来构建.例如CentOS ...
随机推荐
- FreeRTOS队列操作
API函数 //创建 #if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) #define xQueueCreate( uxQueueLength, uxItemS ...
- UCOSII消息队列
主结构体 typedef struct os_q { /* QUEUE CONTROL BLOCK */ struct os_q *OSQPtr; /* Link to next queue cont ...
- DRF 有无外键操作实例
models.py from django.db import models # Create your models here. class Category(models.Model): &quo ...
- javascript_19-DOM初体验
DOM DOM: 文档对象模型(Document Object Model),又称为文档树模型.是一套操作HTML和XML文档的API. DOM可以把HTML和XML描述为一个文档树.树上的每一个分支 ...
- MySQL JOIN原理(转)
先看一下实验的两张表: 表comments,总行数28856 表comments_for,总行数57,comments_id是有索引的,ID列为主键. 以上两张表是我们测试的基础,然后看一下索引,co ...
- SpringCloud2.0 Turbine 断路器集群监控 基础教程(九)
1.启动基础工程 1.1.启动[服务中心]集群,工程名称:springcloud-eureka-server 参考 SpringCloud2.0 Eureka Server 服务中心 基础教程(二) ...
- spring+mybatis通用dao层、service层的实现
个人理解: 1.mybatis-spring.jar 提供了SqlSessionTemplate类该类可以对数据库进行CRUD操作(底层其实还是SqlSession) 2.我们可以集成SqlSessi ...
- HTTP头部
10-URI的基本格式以及与URL的区别 HTTP连接的常见流程 从TCP编程上看HTTP请求处理 长连接与短连接 补充一下代理的知识 什么是正向代理,什么是反向代理? 想在外部公网访问公司内部局域网 ...
- [Javascript] Avoid Accidental Returns of New State by using the void Keyword
For example we have a 'useState' function, which takes a state and a function to update the state: c ...
- 洛谷 P2296 寻找道路 题解
每日一题 day42 打卡 Analysis 首先,预处理,把每条边反向. 从终点开始bfs,标记从终点开始可以走到的点. 第二步,枚举每一个点,如果这个点没有被标记,则枚举它的每一条出边(反向后的) ...