Oracle体系结构(个人学习笔记)

Oracle体系结构:

物理存储结构:

在这里插入图片描述

控制文件

​ 维护数据库的全局物理结构,用以支持数据库成功地启动和运行。只要数据库是打开的,控制文件必须处于可写状态。如果控制文件不能被访问,那么数据库也不能正常工作。

控制文件存储了数据库名,数据库的数据文件和联机重做日志文件的名称和位置,数据库建立日期,数据库检查点,数据库当前序列号,数据库中表空间名等信息。

每个数据库可包含两个或多个控制文件。.CTL后缀结尾


数据文件

​ 物理存储Oracle数据库数据的文件。包括用户数据和系统数据。用户数据用来存放用户对象(表,索引),系统数据指数据字典中的数据。

一个Oracle数据库有多个数据文件,一个数据文件对应一个数据库。

.DBF结尾


重做日志文件

​ 专门记录用户对数据库的所有修改,一旦数据库出现问题(断电,死机),可以利用重做日志文件将数据库恢复到一个正确的状态。用于记录对数据库的所有修改,修改信息包括用户对数据的修改,以及管理员对数据库结构的修改。

每个数据库至少包含两个重写日志文件组

每个重写日志文件成员对应一个物理文件。

重写日志文件以循环方式进行写操作。

.log结尾


初始化参数文件,口令文件,归档日志文件

逻辑存储结构:

​ 逻辑存储结构由表空间,段,区,数据块组成。

块组成区,区组成段,段组成表空间,表空间组成数据库。

  • 增强Oracle数据库可移植性
  • 降低Oracle数据库使用者的操作难度
  • 增加数据的使用安全性

表空间:

​ Oracle数据库最大的逻辑结构。一个数据库在逻辑上由多个表空间组成,一个表空间只隶属于一个数据库。表空间在物理说包含一个或多个数据文件

Oracle数据库中表空间的个数决定了数据文件的最小个数。

区:

​ 区由一组连续的Oracle数据块组成。一个段由若干个区组成,当创建一个段时(如创建一个表时),系统会在相应表空间中找到空闲区为该段分配空间。

块:

块是数据库中最小,最基本的存储单位。数据块的基本结构由块头部,表目录,行目录,空闲空间,行空间等几部分组成

数据库实例也称作服务器,由系统全局区(SGA)和后台进程组成,

实例用来访问数据库且只能打开一个数据库,一个数据库可以被多个实例访问

内存结构

内存是Oracle重要的信息缓存区和共享区。

Oracle使用的主要内存结构:

  • SGA:系统全局区。可以被所有用户共享。

    数据块缓冲区:数据库数据高速缓存区。目的:为了缓存操作的数据,从而减少系统读取磁盘的次数

    字典缓存区:当数据库需要读取存储在数据字典中的对象信息时,需要将该信息存储在字典缓存区中。

    重做日志缓冲区:数据恢复

    共享池:由库缓存区和数据字典高速缓存区两部分组成,存储最近使用过的数据定义,最近执行过的SQL命令,以便共享

  • PGA:程序全局区。保存单个进程的绘画数据和控制信息。内容为指定服务器进程所专用,不能被其他服务器进程所共享。

进程结构

进程是操作系统中一个独立的可以调度的活动,用于完成指令的任务。

  • 用户进程:为运行用户应用程序或Oracle工具所建立的进程。
  • 服务器进程:处理用户进程的各种请假。
  • 后台进程:DBWR(数据库写入进程),LGWR(日志写入进程),SMON(系统监控进程),PMON(进程监控进程),CKPT(检查点进程)

数据库例程

也叫实例,每一个运行的Oracle数据库都有一个对应的实例。由系统全局区和一些后台进程组成。

一个数据库可以由多个实例打开,一个实例只能打开一个数据库。

多个实例可以同时运行在同一个机器上。它们彼此访问各自独立的物理数据库。

当实例启动后,Oracle会把这个实例和对应的物理数据库关联起来。这个过程叫“加载”(Mounting)。这个时候数据库将处于准备打开的状态。只有管理员能关闭

数据库例程启动和关闭:

STARTUP

SHUTDOWN

PL/SQL

基本结构:块

组成部分:声明部分,可执行部分,错误处理部分

声明常量时必须加关键字CONSTANT,常量在声明时必须初始化,否则在编译时会出错。

变量名 [CONSTANT] 数据类型 [NOT NULL][:= | DEFAULT PL/SQL表达式]

数据类型:标量类型,参考类型,LOB类型和用户自定义类型

  • 标量类型:
    • 数值型NUMBER,
    • 字符型(CHAR定长,VARCHAR2 变长),
    • 日期型DATE(DD-MON-YY)
    • 布尔型 BOOLEAN
  • 参考型
    • %TYPE,定义一个变量,其数据类型可以与已经定义的某个数据变量的类型相同,或者和数据表某一列的数据类型相同
    • %ROWTYPE:前面是表名或者游标名
[DECLARE]
[BEGIN]
[EXCEPTION]
END;

set serveroutput on;
begin
DBMS_OUTPUT.PUT_LINE('我喜欢');
DBMS_OUTPUT.PUT_LINR("haha");
end;

DECLARE
v_length NUMBER:=&length;
v_width NUMBER:=&width;
v_area NUMBER;
BEGIN
v_area:=v_width*v_length;
DBMS_OUTPUT.PUT_LINE('该长方形的面积为:'||v_area);
END:

DECLARE
v_length NUMBER:=&length;
v_width NUMBER:=&Width;
v_area NUMBER;
BEGIN
	DECLARE
	v_cir NUMBER;
	BEGIN
	v_cir:=(v_length+v_width)*2;
	DBMS_OUTPUT.PUT_LINE('子块中,该长方形的周长为:'||v_cir);
	END;
v_area:=v_width*v_length;
DBMS_OUTPUT.PUT_LINE('主块中,该长方形的面积为:'||v_area);
END;
	
Declare
v_sc sc%rowtype; /*v_sc参考sc表中记录的类型*/
begin
	v_sc.sno:='20180001';
	v_sc.cno:='c2';
	v_sc.grate:=95;
	insert into sc
	valuse(v_sc.sno, v_sc.con, v_sc.grate);
end;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值