oracle11g期末复习

本文详细介绍了Oracle 11g的后台进程如DBWR、LGWR、ARCH等,涵盖了服务器元素、数据库存储结构、逻辑存储结构、实例内存结构,以及DBCA功能、数据库关闭方式、表空间管理、用户权限、数据完整性约束、序列与同义词等内容。
摘要由CSDN通过智能技术生成

oracle11g

oracle的后台进程:

oracle的后台进程包括:

  1. 数据库写入进程(DBWR):负责将SGA数据库缓冲区缓存中的脏数据块写入数据文件。
  2. 日志写入进程(LGWR):负责把日志缓冲区内的重做日志写入联机重做日志文件
  3. 归档进程(ARCH):发生日志文件切换时,如果数据库运行在归档模式下,归档进程将把填写过的联机重做日志文件复制到指定位置进行归档
  4. 检查点进程(CKPT)
  5. 进程监视进程(PMON)
  6. 系统监视进程(SMON)

oracle服务器元素有哪些?

  1. 安装在计算机上的oracle数据库系统管理软件
  2. oracle实例
  3. 数据库
  4. 服务器进程
  5. oracle net

在这里插入图片描述

oracle数据库存储结构:

  1. 数据文件
  2. 控制文件
  3. 重做日志文件

除了上面三种文件以外,oracle数据库在管理数据库时还用到了一些其他的辅助文件包括

  1. 参数文件
  2. 口令文件
  3. 警告日志文件
  4. 跟踪文件

oracle数据库逻辑存储结构

  1. 表空间:用于存储数据库中的所有数据,表空间的数据被物理存放在数据文件中
  2. 段:用于存储和隔离不同数据库对象的数据
  3. 区:oracle数据库内存储空间的最小分配单元
  4. 数据块:oracle数据库的I/O单位

注:oracle数据库中的段可分为:表段,索引段,回滚段和临时段四种

数据库、表空间、数据文件三者之间关系?

一个数据库在物理上包含多个数据文件,逻辑上包含多个表空间;
一个表空间包含一个或多个数据文件,一个数据文件只属于某个表空间
存储结构

实例内存结构(SGA)组成区域:

  1. 固定SGA:SGA的自启区域,使用这个区域去查找其他区域
  2. 数据缓冲区缓存:用于缓存读入或写出磁盘的数据
  3. 重做日志缓冲区:
  4. 共享池
  5. 大型池,java池
  6. 流池

DBCA具有以下功能:

  1. 创建数据库;
  2. 配置数据库;
  3. 删除数据库;
  4. 生成创建数据库的脚本代码;
  5. 管理数据库模板

Oracle数据库从关闭到打开要经历如下几个状态:

  1. 关闭(Close):数据库实例和所有数据库文件均已关闭;
  2. 已启动(Started,也就是未装载,Nomount):进入这个状态后,实例已启动,并且打开了数据库的初始化参数文件;
  3. 装载(Mount):打开数据库的控制文件;
  4. 打开(Open):打开数据库的数据文件和日志文件。

在这里插入图片描述

关闭数据库:

  1. normal:正常关闭
  2. transactional:事务关闭
  3. immediate:立即关闭
  4. abort:异常关闭
1.执行SHUTDOWN NORMAL命令后,Oracle实例将:
	禁止新建连接;
	等待当前所有已连接用户主动断开之后再关闭数据库。如果当前用户不主动断开连接,他们仍可继续执行数据库操作,但这会导致shutdown命令因超时而执行失败。

2.执行SHUTDOWN TRANSACTIONAL命令后,Oracle实例将:
	禁止新建连接;
	禁止已连接用户启动新的事务,但会等待已启动事务执行完成,然后断开用户连接,关闭数据库。所以,只要所有连接用户结束他们的当前事务,该命令即可成功关闭数据库。
	
3.执行SHUTDOWN IMMEDIATE命令后,Oracle实例将:

	禁止新建连接;
	禁止已连接用户启动新的事务,当前未完成的事务被立即回滚,然后断开用户连接,关闭数据库。所以,该命令关闭数据库的速度比前两种更快 。

以上三种关闭方式中,用户事务都能完成(要么提交,要么回滚),在关闭数据库之前还会执行检查点,所以可以确保所关闭的数据库处于一致状态,下次启动时不需要做实例恢复。因此,这三种关闭方式也被称作一致性关闭。

4.执行SHUTDOWN ABORT命令后,将立即中止数据库实例的运行来关闭数据库,所以它将:
	禁止新建连接;
	禁止已连接用户启动新的事务,当前已连接用户正在执行的SQL语句被立即中止,不回滚也不提交用户尚未提交的事务,也不执行检查点。

以这种方式关闭数据库就像系统停电一样,立即中止Oracle数据库的运行。因此,这种方式关闭的数据库处于不一致状态,下次启动时需要做实例恢复 。

oracle表空间:

每个Oracle数据库由一个或多个表空间组成,但每个表空间只能属于一个数据库。

oracle的表空间可分为以下三类:

  1. 永久表空间:存储数据字典和用户信息
  2. 临时表空间:存储会话的中间排序结果,临时表,索引等
  3. 还原表空间:存储专门用于回滚或还原的操作

创建表空间:

1. create database
2. create tablespace 表空间名

脱机表空间:

alter tablespace 表空间名 offline

联机表空间:

alter tablespace 表空间名 online

其余对表空间的操作:

alter tablespace 表空间名 raedonly  //只读
alter tablespace 表空间名 read write  //读写
alter tablespace 表空间名 rename to 新名字 //重命名
drop tablespacce 表空间名 //删除

用户管理:

创建用户:

create user 用户名
    identified {by 口令 | externally | globally}
    [password expire]
    [account {lock | unlock}]
    [temporary tablespace 表空间]
    [default tablespace 表空间]
    [quota {整数[ K | M ] |unlimited}] on 表空间]
    [profile 概要文件];

在这里插入图片描述

oracle数据库用户使用identified验证的三种方法

  1. 数据库验证
  2. 外部验证
  3. 全局验证

scott用户常用表结构:

dept表:

在这里插入图片描述

emp表:

在这里插入图片描述

sqlplus常见命令:

  1. sqlplus /nolog作用:不登录,只启动sqlplus,可以防止通过ps命令看到登录的用户名和密码
  2. startup作用:启动oracle实例,并可装载或打开数据库(打开数据库分配计算机的内存空间)
  3. accpect:在sqlplus中接受用户输入变量
  4. run(/):运行缓冲区的命令
  5. input(i):在sql缓冲区当前行后插入一行或多行
  6. change(c):修改sql缓冲区当前行的文本
c/1=1/2=2     
上行的作用为将缓冲区中的1=1改变成2=2
  1. append(a):在sql缓冲区的行尾追加文本
  2. list(l):列出缓冲区中的全部内容或指定内容
  3. save:将sql缓冲区中的内容保存到系统文件里(格式 save xxx.sql)
  4. get:将sql文件里的内容载入到缓冲区但不执行(get xxx.sql)
  5. linesize
set linesize 120  //设置一行字符个数为120,默认为80
  1. pagesize
set pagesize 0   //设置每页行数,缺省为24,为了避免分页可以设置为0
  1. ed:编辑sql缓冲区中的内容,默认调用操作系统文本编辑器

sqlplus输入ed如何调用vi编辑器?

  1. 编辑文件$ORACLE_HOME/sqlplus/admin/glogin.sql,添加DEFINE _EDITOR = vi,后重启
  2. 在环境变量里面设置 EDITOR=vi

静态数据字典与动态性能视图

数据字典是oracle数据库管理系统的核心

数据字典分为以下两种对象类型:

基表:大多数以加密形式存储,用户不应直接访问

用户访问视图:汇总数据字典基表内的信息,以可读的方式提供给用户使用

三组常用的数据字典视图:

  1. USER_:用户视图。只能检索当前用户所拥有的对象;_
  2. ALL:扩展用户视图,可检索用户所拥有以及其有权访问的对象信息;
  3. DBA_:系统管理员视图,整个数据库的全局视图,它包含所有用户的所有模式对象信息。

在这里插入图片描述

常用数据字典视图:

  1. DBA_EXTENTS
  2. DBA_OBJECTS
  3. DBA_ERRORS
  4. DBA_TABLES
  5. DBA_TYPES
  6. DBA_USERS

其他常用数据字典视图:

动态性能视图:

与动态性能视图相关的对象分为以下三种:

  1. 基表:名称前缀为X$,不存储在数据库中,而是构建在Oracle实例的内存结构内,所以又被称作虚拟表。普通用户不能直接访问X$表
  2. 视图:基于X$表创建的动态性能视图,它们的名称前缀是V_$,又被称作V$视图。只有sys用户才能访问该视图。动态性能视图的结构定义及其基表中的数据都不能由用户修改,因此动态性能视图又被称作固定表
  3. 同义词:Oracle为V$视图创建了public同义词,这些同义词的名称前缀为V$。数据库管理员和其他用户应该通过这些同义词访问V$视图,而不是直接访问V_$对象。

实例启动:startup nomount

常用动态性能视图:

  1. V$DATABASE
  2. V$PROCESS
  3. V$SGA
  4. V$LOG
  5. V$SESSION
  6. V$TABLESPACE

从动态性能视图v$fixed_table中可以查询到Oracle所有的动态性能视图以及X$基表的名称。

填充到动态性能视图的数据,在实例关闭时被清空。

静态数据字典与动态性能视图的比较

在这里插入图片描述

序列和同义词:

序列

序列定义:序列(SEQUENCE)是一个序列号生成器,它可以自动生成序列值,产生一组等间隔的数值。其主要作用是生成表的主键,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值。

序列产生的数字最大长度可达到38位十进制数。

序列不占用实际的存储空间,在数据字典中只存储序列的定义描述

创建语句:

CREATE SEQUENCE [schema.] sequence_name
  [INCREMENT BY {1 | n}]
  [START WITH n]
  [MAXVALUE n | NOMAXVALUE]
  [MINVALUE n | NOMINVALUE]
  [CYCLE | NOCYCLE]
  [CACHE  n | NOCACHE]
  [ORDER | NOORDER];

参数说明:

  1. sequence_name指出创建的序列名称;
  2. INCREMENT BY定义序列递增的步长,默认为1。如果n是负值,则代表序列值是按照步长递减;
  3. START WITH指定序列的起始值,默认为1 ;
  4. MAXVALUE指定序列的最大值。选项NOMAXVALUE是默认选项,代表没有最大值限制;
  5. MINVALUE指定序列的最小值。选项NOMINVALUE是默认选项,代表没有最小值限制;
  6. CYCLE和NOCYCLE指定该序列在达到最大值或最小值后是否循环。CYCLE代表循环,NOCYCLE代表不循环。如果循环,则当递增序列达到最大值时,循环到最小值;当递减序列达到最小值时,循环到最大值。如果不循环,达到限制值后,继续产生新值就会发生错误;
  7. CACHE和NOCACHE指出数据库是否在内存中预分配一定数量的序列值进行缓存。与分配序列值可以加快访问速度,提高性能。参数n的最小值是2,其默认值是20。对于循环序列,缓存的序列值数量一定要小于该序列循环的值数量,因此可以缓存的序列值个数最多为:CELL( MAXVALUE – MINVALUE)/ ABS(INCREMENT)
  8. ORDER和NOORDER指出是否确保按照请求顺序生成序列号,默认为NOORDER

在这里插入图片描述在这里插入图片描述

使用序列:

序列创建后,可以通过序列的两个属性——currval和nextval来引用序列的值,它们分别用来获取序列的下一个值和当前值。调用方式为:

序列名.nextval/currval

序列的使用情况:序列可以应用于查询的选择列表、INSERT语句的VALUES子句、UPDATE语句的SET子句,不能应用在WHERE子句或PL/SQL过程性语句中。

删除序列:drop consequence consequence_name

课后习题:创建一个序列books_seq,将该序列作为books表的主键,从1开始取值,最大值为10000,其他值均采用默认值。

Create sequence books_seq Start with 1 Maxvalue 10000 nocycle;

同义词:

定义:同义词可以使用户在访问其他用户对象时不用在对象前添加模式(Schema)前缀,从而简化语句的书写。它不占用任何实际的存储空间,只是在Oracle的数据字典中保存其定义描述.

创建:

语法:

1. CREATE [PUBLIC] SYNONYM 同义词名  FOR [模式.]对象名[@数据库链接];  //创建
2. drop [public] synonym 同义词名

eg:为books_pub用户的books表创建一个公有同义词,名称为pubbooks。

CREATE PUBLIC SYNONYM pubbooks FOR books_pub.books;

数据完整性约束:

1.主键约束(primary key)

概念:确保在一个表中没有重复主键值的数据行。作为主键的列或者列的组合,其值必须唯一且值不能为空,可以定义在列级,也可以定义在表级上

主键约束可以定义在create table语句中也可以定义在alter table语句中,格式如下

create table book(
	bookid varchar2(20) constraint b_pk primary key,
	...
)

alter table book add constraint b_pk primary key book(bookid)

2.唯一性约束

概念:唯一性约束确保表中值为非null的某列或某几列的组合的具有唯一性,可以定义在列级上,也可以定义在表级上

create table book(
	bookXXX number(2) constranit b_uq unique,
	xxx
)

alter table book add constraint b_uq unique(bookxxx)

3.检查约束

概念:检查约束用于限制列的取值范围,一个列可以定义多个检查约束,可以定义在列级上也可以定义在表级上

 create table test30(         
          id number primary key,         
          sex varchar2(2) check(sex ='男' or sex='女')  
   );    

   create table test31(         
         id number primary key,         
         sex varchar2(2)  
   );  

   alter table test31 add constraint chkk check (sex ='男' or sex='女');  
   alter table test31 add constraint chkk check (sex in('男','女'));

4.外键约束

  1. 用来定义子表中的列的取值只能是父表中参照列的值,或者为空。
  2. 父表中被参照的列必须有唯一性或主键约束。
  3. 可以定义在一列或列的组合上。
  4. 可以定义在列级或表级
借阅表:
bookid number(6) constraint o_fk references books(bookid)

alter table 借阅表 add constraint o_fk foreign key(bookid) references book(bookid)

5.非空约束

限制列的取值不能为null,一个表中可以定义多个非空约束,非空约束只能定义在列级

bookid number(4) not null

alter table books modify bookid constraint b_null not null

未完待续…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值