ORACLE数据库基本概念

ORACLE数据库基本概念

Sqlplus登录方法

➢系统用户登录: sqlplus username/password@serviceName as sysdba
➢普通用户登录: sqlplus username/password@serviceName

SQLPlus下的常用命令

在这里插入图片描述

数据库启动的三个阶段

启动的三个阶段
1、nomount:读初始化参数文件,启动实例。这种方式启动下可执行:重建控 制文件、重建数据库。
2、mount:打开控制文件。这种方式启动下可执行:数据库日志归档、数据库介质恢复、使数据文件联机或脱机、重新定位数据文件、重做日志文件。
3、open:打开数据文件,日志文件。这种方式下可访问数据库中的数据。
在这里插入图片描述

启动命令

  1. startup nomount 非安装启动,这种方式启动下可执行:重建控制文件、重建数据库。读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件。
  2. alter database mount 安装启动,这种方式启动下可执行:数据库日志归档、数据库介质恢复、使数据文件联机或脱机、重新定位数据文件、重做日志文件。执行“nomount”,然后打开控制文件,确认数据文件和联机日志文件的位置,但此时不对数据文件和日志文件进行校验检查。
  3. alter database open 先执行“nomount”,然后执行“mount”,再打开包括Redo log文件在内的所有数据库文件,这种方式下可访问数据库中的数据。
  4. startup 此命令等同于依次执行以下三个命令:startup nomount、alter database mount,alter database open。
  5. startup mount startup mount选项执行nomount选项的所有工作,另外打开控制文件。这时Oracle可以从控制文件中查找信息。当处于这个模式时,可以执行一些管理型任务,比如数据恢复等。注意事项:此命令是直接从未启动状态启动到mount阶段,如果系统已经启动到nomount,则使用此命令会报错,应该使用alter database mount。
  6. startup open startup open选项就是默认的启动模式。open选项执行nomount和mount选项的所有步骤。在此阶段打开打开数据文件,日志文件。这时数据库的所有功能都可用。注意事项:此命令是直接从未启动状态启动到open阶段,如果系统已经启动到mount,则使用此命令会报错,应该使用alter database open。

关闭命令

  1. shutdown normal 不允许新的连接、等待会话结束、等待事务结束、做一个检查点并关闭数据文件。启动时不需要实例恢复。
  2. shutdown transactional 不允许新的连接、不等待会话结束、等待事务结束、做一个检查点并关闭数据文件。启动时不需要实例恢复。
  3. shutdown immdediate 把数据缓存中的数据写入到数据文件中后,立即关闭数据库。不允许新的连接、不等待会话结束、不等待事务结束、做一个检查点并关闭数据文件。没有结束的事务是自动rollback的。启动时不需要实例恢复。
  4. shutdown abort 不做任何工作,强制关闭数据库。不允许新的连接、不等待会话结束、不等待事务结束、不做检查点且没有关闭数据文件。启动时自动进行实例恢复。

ORACLE实例

简单讲,所谓的Oracle instance (实例) 其实指的就是内存结构和一系列进程结构。实例=内部+进程

ORACLE实例与数据库的区别

刚接触ORACLE的人肯定会对实例和数据库感到困惑,实例到底代表些什么?|为什么会有这个概念的出现?
  ORACLE实例 = 进程 + 进程所使用的内存(SGA) ;
  实例是一个临时性的东西,你也可以认为它代表了数据库某一时刻的状态! 
  数据库 = 重做文件 + 控制文件 + 数据文件 + 临时文件;
  数据库是永久的,是一个文件的集合。

ORACLE实例和数据库之间的关系:
   1.临时性和永久性 
   2.实例可以在没有数据文件的情况下单独启动 startup nomount , 通常没什么意义 
   3.一个实例在其生存期内只能装载(alter database mount)和打开(alter database open)一个数据库 
   4.一个数据库可被许多实例同时装载和打开(即RAC),RAC环境中实例的作用能够得到充分的体现!

下面对实例和数据库做详细的诠释: 
  在Oracle领域中有两个词很容易混淆,这就是“实例”(instance)和“数据库”(database)。作为Oracle术语,这两个词的定义如下: 
数据库(database):物理操作系统文件或磁盘(disk)的集合。使用Oracle 10g的自动存储管理(Automatic Storage Management,ASM)或RAW分区时,数据库可能不作为操作系统中单独的文件,但定义仍然不变。 
实例(instance):一组Oracle后台进程/线程以及一个共享内存区,这些内存由同一个计算机上运行的线程/进程所共享。这里可以维护易失的、非持久性内容(有些可以刷新输出到磁盘)。就算没有磁盘存储,数据库实例也能存在。也许实例不能算是世界上最有用的事物,不过你完全可以把它想成是最有用的事物,这有助于对实例和数据库划清界线。

ORACLE进程

系统监控进程(SMON) :SMON负责系统监视,以及一些系统清理和恢复工作。
进程监控进程(PMON) :PMON用于监控和管理其他进程。清除失败的后台进程,释放资源,回滚失败进程的事务。
数据写入进程(DBWR) :DBWR缓冲区中的脏数据写数据文件的进程。
日志写入进程(LGWR) :LGWR将重做日志缓冲区中的内容写入到重做日志文件中。
检查点进程(CKPT):CKPT用于触发DBWR将数据缓冲区数据写到磁盘。
归档进程(ARCH) :ARCH(the Archiver Process )负责将重做日志复制到归档存储器,以便将来恢复使用。

Oracle体系结构

文件系统

➢控制文件:为数据库提供各种路径和状态
➢数据文件:存放实际数据
➢重做日志文件:保护数据安全和数据恢复
➢参数文件:设定数据库各项属性的限制

数据文件

正常时
1)存放实际的数据;
2)隶属于某个表空间
—数据表空间
—undo表空间
—临时表空间
3)查看表空间对应的数据文件信息:
Select file_name.tablespace_name from dba_data_files;
Select file_name.tablespace_name from dba_temp_files;
损坏时:
1)通过备份数据恢复
—还原备份文件
—用归档+在线redo恢复
2) 用redo信息恢复
—创建新数据文件
—用归档+在线redo恢复

控制文件

1) 包含:a.数据库的名字;
b.数据库建立时间;
c.数据文件、在线日志文件、归档文件的信息;
d.表空间的信息;
e.备份和恢复信息
注意:Oracle数据库的控制文件是在创建数据库时自动创建的,默认情况下,在数 据库的创建期间 至少有一个控制文件的副本。一般只有在控制文件全部损坏,或者修改某些永久性参数(例如 MAXLOGFILES、MAXLOGMEMBERS),或者修改数据库名称这三种情况下才会重新创建控制文 件。

2)作用:a.为数据库提供各种路径和状态;
b.数据库恢复。

重做日志文件

核心作用:a.保护数据的安全;b.恢复数据.
附加作用:数据同步和分析.

参数文件—约定数据库默认的值

a.设定数据库的限制;
b.设定用户或者进程的限制;
c.设定数据库资源限制;
d.调整系统性能;

内存结构

SAG

系统全局区 (SGA):由所有服务器和后台进程共享。SGA 中存储的数据示例包括高速缓存的数据块和 共享 SQL 区域。主要包括
数据库缓冲区高速缓存:用于缓存从磁盘检索到的数据块
重做日志缓冲区:用于缓存重做信息,直到其可以写入磁盘为止
共享池:用于缓存可在用户间共享的各种结构
大型池:用于缓冲大型 I/O 请求的可选区域,以便支持并行查询、共享服务器、Oracle XA 以及某些类型的备份操作
Java池:用于存放 Java 虚拟机(JVM) 中特定于会话的 Java 代码和数据
流池:由 Oracle Streams 使用
保留缓冲区高速缓存:用于存放会尽可能长地保留在缓冲区高速缓存中的数据
循环缓冲区高速缓存:用于存放缓冲区高速缓存中很快过期的数据
nK 块大小缓冲区高速缓存:用于缓存大小与默认数据库块大小不同的数据块,用来支持可传输的表空间

PAG

程序全局区 (PGA):各个服务器进程和后台进程专用,每个进程都有一个 PGA。
在这里插入图片描述

逻辑结构

➢块:是一个或一组连续的os块,大小是os块的整数(8k,521B),是数据库中粒度最小的组织单位与管理单位 。是数据文件disk存储空间单位,也是数据库I/O的最小单位;数据块大小有DB_BLOCK_SIZE参数决定,默认8k。
➢区:是一组表空间内连续分配的相邻数据块,是数据块分配disk空间的最小逻辑单位,也是表中数据增长的基本单位,一个oracle对象至少包含一个数据区。
➢段:包含表空间中一种指定类型的逻辑存储结构,是由一组区空间 (Extent)组成的。在Oracle数据库中有几种类型的段:数据段、索引段、回滚段和临时段。段的关键字(SEGMENT)
➢表空间:是组织数据和进行空间分配的逻辑结构。表空间的关键字(TABLESPACE)
在这里插入图片描述

块结构
块头: 块概要信息
表目录:在改块存储了数据行动表信息
行目录:存储改块的数据行信息
空闲区:由于插入新行和需要的额外空间
行数据:存储在该块中数据行的具体数据

块参数:pctfree、pctused
当向一个空数据块插入的数据量达到该数据块大小的100-pctfree时,既停止对该块进行插入(剩余空间留给update更新使用),再分配一个新的数据块进行插入,并将该块从空闲块列表freelist中删除。经常发生update操作的表应将pctfree调高。
当数据块内数据被删除到pctused所指定的值时,既将该块移入空闲列表freelist,使其可以接受新数据段插入。
注意:经常使用delete的表应将pctused调高,以便能有效利用空间,因为一个pctused值较高的数据块,可以存放更多的数据。如果和pctfree配合使用则pctused越大越有利于insert,pctfree越大越有利于update,两者加起来不能错过100。
行迁移:
若一行记录初始插入时可以存放在一个数据块中,随着回来更新导致行长增加,当原有的数据块不能满足存储需要时,发生行迁移,将整行数据迁移到一个新的数据块上,而该行存取的原空间里会存放一个指针,指向该行新的位置
行链接:
当第一个插入数据时的块就不能 存下一行记录,系统将使用链接在多个块存储该记录 。

区:是一组表空间内连续分配的相邻数据块,是数据块分配disk空间的最小逻辑单位,也是表中数据增长的基本单位,一个oracle对象至少包含一个数据区。

Storage分配参数
initial:段建立时被分配的第一个区的大小
Next:段被分配的第二个区的大小
Minextents:段被分配的区个数下限
Maxextents:段被分配的区个数上限
Pct-increase : 从第三个分区开始段被分配的新区比前一个分配的新区扩大的百分比

段的类型

数据段:对于每一个非聚集的表有一个数据段,表的所有数据存放在该段。每一聚集(Cluster)有一个数据段,聚集中每一个表的数据存储在该段中。
索引段:每一个索引有一个索引段,存储索引数据。索引段也不需要用户来创建。
回滚段:由DBA建立,用于临时存储要撤销的信息,这些信息用于生成读一致性数据库信息、在数据库恢复时使用,回滚未提交的事务。
临时段:当一个SQL语句需要临时工作区时,由Oracle建立。当语句执行完毕,临时段的空间退回给系统。

数据段

说明:数据段的段名默认情况下和表名相同
例:查询emp表的数据段

  select     segment_name,
             segment_type,
             tablespace_name,
             bytes
             from dba_segments 
             where 
            segment_name=‘EMP’

经检验sengment_name的值区分大小写

索引段

说明:建立索引系统会创建同名索引段,通过dba_indexes可查

例:create index empin on  emp(ename);
        select  index_name,
                    table_name,
                    tablespace_name
                    from dba_indexes where 
                    index_name=‘EMPIN’
回滚段

回滚段用于存用户数据修改之前的值,因而可以在特定条件下回退数据,回滚段事务是一对多的关系,一个事务只能使用一个回滚段。当一个事务开始时系统会分配一个回滚段存储回滚信息,当所有回滚段被事务占用时,系统将创建新的回滚段来存储回滚信息,当表空间无空间可用于分配回滚段时,多个事务将共用一个回滚段。

回滚段信息显示

                 DBA_ROLLBACK_SEGS
                 V$ROLLNAME(USN 回滚段编号,NAME  回滚段名)
                 V$ROLLSTAT(回滚段状态信息视图)
                 V$SESSION(在本视图中,每一个连接到数据库实例中的session都拥有一条记录。)
查询回滚段
例·:Select segment_id,segment_name from   dba_rollback_segs; 

表空间

功能和作用
1. 组织数据段空间控制存储空间分配
2. 通过使单个表空间在线或离线,控制数据的可用性
3. 通过表空间划分实现跨越设备分配数据存储,提高性能
4. 通过指定用户使用表空间权限实现对用户的限制(linux中控制文件权限来控制用户权限)
5. 执行部分数据的后备和恢复操作
特点
1. 一个数据库逻辑上至少由一个系统表空间构成
2. 一个数据库逻辑上至少由一个数据文件构成
3. 一个表空间至少包括一个段
4. 表空间的大小等于它从属数据文件大小的总和
查询表空间使用情况

 select * from dba_tablespaces;  查询数据库所有表空间信息
 select * from dba_data_files; 查询表空间所含数据文件信息,吧含临时表

查询表空间大小

select * from dba_temp_files;查临时表空间所含数据文件
select  tablespace_name,sum(bytes)
 from dba_data_files 
 group by  tablespace_name;    查询表空间大小
select  tablespace_name,sum(bytes) 
from dba_free_space 
group by  tablespace_name;  查询表空间空闲空间大小
临时表空间

临时表空间主要存储oracle数据库运行期间所产生的历史数据,数据库关闭后,临时表空间的数据将会全部被清除,故临时表空间以外的所有表空间都属于永久性表空间。
新建临时表空间

Create TEPMORARY TABLESPACE  TEMP01 
TEMPFILE ‘C:TEMP01.BDF’ SIZE 100M;

SQL语言的分类

DDL:数据定义语言;cteate,alter,drop
DML:数据操作语言;insert,update,delete
DQL:数据查询语言;select
DCL:据控制语言;grant,revoke,commit,rollback
CCL:通用命令语言;declare,set

事务管理

在ORACLE中一个事务是由一个可执行的SQL语句开始,一个可执行SQL语句产生对实例的调用。在事务开始时,被赋给一个可用回滚段,记录该事务的回滚项。一个事务以下列任何一个出现而结束。

  1. 当COMMIT或ROLLBACK(没有SAVEPOINT子句)语句发出。
  2. 一个DDL语句被执行。在DDL语句执行前、后都隐式地提交。
  3. 用户撤消对ORACLE的连接(当前事务提交)。
  4. 用户进程异常中止(当前事务回滚)。

提交事务

提交一事务,即将在事务中由SQL语句所执行的改变永久化。
在提交前,ORACLE已有下列情况:

  1. 在SGA(System Global Area:由所有服务进程和后台进程共享)的回滚段缓冲区已生成回滚段记录,回滚信息包含有所修改值的老值。
  2. 在SGA的日志缓冲区已生成日志项。这些改变在事务提交前可进入磁盘。
  3. 对SGA的数据库缓冲区已作修改,这些修改在事务真正提交之前可进入磁盘。

在事务提交之后,有下列情况:
4. 对于与回滚段相关的内部事务表记录提交事务,并赋给一个相应的唯一系统修改号(SCN),记录在表中。
5. 在SGA的日志缓冲区中日志项由LGWR进程写入到在线日志文件, 这是构成提交事务的原子事务。
6. 在行上和表上的封锁被释放。
7. 该事务标志为完成 。

回滚事务

回滚事务的含义是撤消未提交事务中的SQL语句所作的对数据修改。
ORALCE允许撤消未提交的整个事务,也允许撤消部分。
在回滚整个事务(没有引用保留点)时,有下列情况:

  1. 在事务中所有SQL语句作的全部修改,利用相应的回滚段被撤消。
  2. 所有数据的事务封锁被释放。
  3. 事务结束。
    当事务回滚到一保留点(具有SAVEPOINT)时,有下列情况:
  4. 仅在该保留点之后执行的语句被撤消。
  5. 该指定的保留点仍然被保留,该保留点之后所建立的保留点被删除。
  6. 自该保留点之后所获取的全部表封锁和行封锁被释放,但指定的保留点以前所获取的全部数据封锁继续保持。
  7. 该事务仍可继续。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值