ORACLE数据库特性

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的几种方式

1296811-20190518093313295-418823682.jpg

一号机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实例结构以及进程理解

1296811-20190518093305055-2063627260.jpg

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内存结构图

1296811-20190518093250047-1604940406.png

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不能跨文件。

转载于:https://www.cnblogs.com/mumuyinxin/p/10884691.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值