Oracle 11g 笔记(理论):

Oarcle 11g 学习笔记

第一章

一,Oracle 版本

企业版,标准版,标准版1,简化版。

Oracle 11g 的g代表网格计算

二,Oracle体系结构:

(一)信息管理的关键———数据库服务器

服务器功能:

1 在多用户网络环境中管理大量数据,保证许多用户同时访问相同的数据。

2 防止没有授权的访问。

3 提供有效的故障恢复解决方案。

Oracle的逻辑结构和数据结构是分离的,对物理结构的管理可以不影响对逻辑结构的访问。

(二)网格结构

 Oracle 数据库是第一个为企业网格计算而设计的数据库系统。网格计算是一种新的IT结构,方便开发企业信息系统,已网格形式设计和实现的系统可以提供更高质量的服务,更低的成本,更大的灵活性。

网格计算和其他计算方式的区别:

  1. 虚拟:相互独立的资源(如计算机,磁盘,应用程序组件,信息资源等)按照类型组织在一个池(pool)中,供用户使用。系统可以根据特定的需要自动准备资源,用户不需要了解整个过程。

     2 提供:用户通过虚拟层申请资源。 

网格计算模型将IT资源集合看做一个池,在集中资源管理和资源控制之间实现最佳平衡。

网格资源管理包括:

  1. 基础资源:构成数据存储和程序执行环境的软件(数据库,存储管理,系统管理,应用服务器和操作系统等)和硬件(磁盘,处理器,内存和网络等)。
  2. 应用程序:业务逻辑和处理流程的编码。
  3. 信息:用户需要的数据。
(三)Oracle 网格计算能力:
  1. 服务器虚拟:Oracle 实时应用集群(RAC)可以使一个数据库运行在网格的多个结点上,将多个计算机的处理资源集中使用。即跨计算机分配工作负载的能力。
  2. 存储虚拟:Oracle 自动存储管理(ASM)提供了数据库和储存之间的一个虚拟层,多个磁盘可以被看做一个单独的磁盘组,磁盘可以动态加载移除。
  3. 网格管理:网格计算将多服务器和磁盘集成,实现动态分布。将多系统集成管理为一个逻辑组的控制台(可以管理网格中独立结点,集中维护各组系统的配置和安全设置)。
三,数据库的逻辑结构

Oracle数据库的逻辑结构可分为:1.表空间     2.方案。(方案和表空间都可以包含表,索引,视图等逻辑对象)

物理结构:表空间由数据文件组成。

逻辑结构:表空间由段组成,段由区组成,区则由数据块组成。

(一)方案
  1. 方案:是一组数据库对象的集合,在创建数据库的同时会生成一个与用户同名的方案(方案归同名用户所有)。方案对象直接处理数据库的逻辑结构(表,视图等)。
  2. 表:数据库中最常用的储存单元,表中所有的数据都存储在数据段的区间中。
  3. 视图:虚拟的表,物理上不存在,即表和其他视图的数据按照一定条件集合(可理解为存储的select)显示于人机界面。
  4. 索引:与表关联的可选结构,提高数据读取效率。
  5. 簇:部分表共享公共的列。为提高效率把同时访问的表在物理上储存在一起,得到表的组合为簇。
(二)表空间(Tablespace)
  1. 表空间:数据库逻辑储存单元。每个数据库至少有一个系统表空间(创建表时,需要定义保存表空间)。
  2. 表空间类型:
示例表空间(Example Tablespace) 储存实例数据表,建库时若创建实例方案,则会创建示例表空间
大文件表空间(bigfile tablespace) 只能包含大文件,文件大小可达4G个数据块
系统表空间(SYSTEM Tablesspace) Oracledb必须有的部分,创库时自动创建,DB打开时即在线,存放数据字典表,表空间名称,表空间的数据文件等,另外存放PL/SQL中的部分程序单元(存储过程,自定义函数,包和触发器等)
辅助表空间 (SYSAUX Tablespace) SYSTEM Tablespace的辅助表空间,一般为存储数据的默认位置,创建或升级数据库时,SYSAUX Tablespace 表空间自动创建,使用可减少默认创建表空间的数量,一般不允许删除更名。
还原表空间(Undo Tablespace) 可包含多个,每个实例都指定一个(且只有一个)Undo Tablespace,撤销的数据在UNdo表空间使用UNDo区间(由Oracle自动创建维护)管理,即事务中对数据库的改变保存在UNDOTablespace中,回滚可恢复。
临时表空间(Tempporary Tablespase) 用于存储临时表,若系统表空间是本地的,则create database 时必须要创建一个默认临时表,若删除所有临时表,则SYSTEM表空间被当做临时表空间
用户表空间(User Tablespace) 存储用户的私有数据
本地管理表空间(Locally Managend Tablespace) 使用本地位图来管理的表空间,所有表空间都可以实现本地管理

3.在创建表空间时,系统默认创建小文件表空间(Smallfile Tablespace),SYSTEM和SYSAUX表空间只能是小文件表空间,可能同时包含Bigfile和Smallfile 表空间。

4.在线(Online)和离线(Offline)表空间:无论数据库是否打开,都可以设置离线/在线状态,在数据库打开后,SYSTEW一直在线(数据字典)。发生特定错误时,Oracle可以自动的将表空间切换到离线状态。

5.表空间一般在线,在备份,恢复和维护数据数据表时,DBA可以设置为表空间离线(离线状态,不允许任何SQL语句访问表空间数据)

6.表空间和方案的关系:

 a.同一方案中的对象可以存储在不同的表空间中。(方案对象的意思)点击打开链接

 b.表空间可以存储不同方案的对象。

7.数据库,表空间和数据文件的关系:

 a.每个表空间由数据文件(在物理上存储表空间中所有逻辑结构的数据)组成。

 b.表空间的存储容量=表空间中数据文件的大小之和。

 c.数据库的存储容量=数据库中表空间的存储容量之和。

8.临时表空间组(允许user使用多个表空间中的临时空间):

 a.临时表空间组至少包含一个表空间。

 b.共享临时表空间命名空间,所以不能与表空间同名。

 c.删除表空间组所有成员,该组自动解散。

 临时表空间的好处:可以在并行操作中有效利用多个临时表空间。

(三)段(Segment)

段:由一段区间组成,自动分配。

Oracle 11g 数据段类型:

数据段 不在簇中的表都有一个数据段,每个簇都有一个数据段(簇中每个表的数据都存储在簇的数据段中)。
索引段 每个索引都有一个索引段,存储所有的索引数据
临时段 执行SQL语句时,Oracle创建临时段 
回滚段 在手动重做管理模式中,DBA需要创建回滚段
(四)区间(Extent)

 1.是数据库存储空间中分配的一个逻辑单元,由一组相邻的数据块组成,是Oracle分配磁盘空间的最小单位。

(五)数据块(data block)

1.是Oracle管理数据库存储系统的最小数据存储单位。标准的数据块大小由初始参数DB_BLOCK_SIZE指定。

2.即是逻辑单位也是物理单位。

数据块格式:

公共的变头长:数据块的通用信息(块地址,段类型)
表目录:有行数据的表的信息

行目录:实际行数据的信息(行数据片的地址)

空闲空间:插入新行是需要的存储空间
行数据:表或索引数据(可以跨越数据块)

四.数据库的物理结构

物理结构由构成数据库的操作系统文件(提供物理存储)所决定,Oracle由三种文件组成,数据文件,日志文件,和控制文件

(一)控制文件(.CPL)

Oracle 数据库有一个控制文件,记录数据库的物理结构。包含数据库名,数据库数据文件和日志文件的名字,位置和数据库建立日期等信息(记录各种名字,物理结构)。用于标识数据库和日志文件,DB操作时必须打开,自动更改,Oracle DB服务器必须可写控制文件,没有控制文件,DB将无法装载,恢复也很困难。

(二)数据文件(.DBF)

(1).Oracle DB的数据文件包含全部数据库文件。逻辑数据物理的存储在数据文件中,特征:

  1. 一个数据文件仅与一个数据库联系。
  2. 容量过界时,自动扩展。
  3. 一个或多个数据文件组成表空间。

(2).数据库操作系统从数据文件中读取数据,存储在Oracle的内存缓存区。(新建或更新数据由数据库写入进程(DBWn)决定在适当的时间一次性写入到数据库文件中,(降低磁盘访问))。

(三)日志文件(.LOG)

(1)数据库有两个或多个日志文件组(收集数据库日志)日志的主要功能:记录对数据所做的全部修改。可以利用日志文件得到修改记录 。

 (2)日志文件主要是防止故障,Oracle可以镜像日志,在不同磁盘上维护两个或多个日志副本。

 五.数据库实例(例程)(Instance)

(一)实例(例程):用于和操作系统进行联系的标识,也就是说数据库和操作系统之间的交互使用的是数据库实例。Oracle实例=SGA(分配的内存区域,叫系统全局区)+Oracle进程(程序运行的集合,动态的)
(二)每个运行的OracleDB 都对应一个实例(例程),每个Oracle_Instance 都有一个STSTEM标识符SID,通常SID与DB名相同。服务器进程的命名也与SID相匹配。
 (三)Oracle实时应用集群(RAC)是一个多实例系统。
(四)Oracle数据库实例支持四种状态:打开(OPEN),关闭(CLOSE),已装载(MOUNT),和已启动(NOMOUNT)。

  • 打开(open):启动实例,装载并打开数据库,默认启动模式,允许任何有效的user连接到数据库。
  • 关闭(CLOSE):将Oracle实例从允许用户访问数据库的状态转化为休止状态,(先关闭进程,后释放空间)
  • 已装载(MOUNT):启动实例并装载数据库,不打开数据库,不允许USER访问,(一般用于更改数据库归档模式或执行恢复操作)。
  • 已启动(不装载)(NOMOUNT):启动实例,但不装载数据库,用与重新创建控制文件,,对控制文件进行恢复或者重新创建数据库。

六.内部存储结构

(一)Oracle使用内存存储的信息:

  1. 程序代码:
  2. 连接会话信息。(包括未激活的)
  3. 程序运行过程中的信息。
  4. oracle进程共享和通讯的信息。
  5. 缓存区的数据

 (二)Oracle的内存结构:系统全局区(SYSTEM Global Area,SGA)+程序全局区(Program Global Area ,PGA)

     1.SGA(系统全局区)(共享全局区(Shared Global Area)):一组共享内存结构,包含一个Oracle数据库例程及控制信息。

     2.SGA包含数据结构:

  • 数据库缓存区:SGA用来保存从数据文件中读取的数据块。
  • 重做日志缓存区:SGA中的循环缓存区,用于记录数据库发生改变信息。
  • 共享池:用于保护用户程序。
  • JAVA池:为JAVA命令提供语法分析。
  • 大型池 :数据库管理员配置的可选内存区域,分配大量内存。
  • 其他组件
  3.PGA(程序全局区=堆栈区+数据区):包含Oracle进程数据和控制信息的内存区域,PGA为Oracle进程的私有内存区域,不能共享。
(七)进程结构

1.进程(作业或任务):操作系统的一种机制,它可以执行一系列在操作结构,(有自己专用存储区)

2.user访问Oracle数据库例程的两个模块代码:

  • 应用程序或者Oracle工具:例如预编译程序。
  • Oracle服务器代码:用于解释和处理应用程序的SQL语句。

3.Oracle是多进程系统,系统中的进程可分为两大类:

  • 用户进程:运行应用程序或Oracle工具。
  • Oracle进程(服务器进程+后台进程):运行Oracle服务器代码。

4.服务器进程(处理连接到数据库例程的用户进程的请求)工作:

  1.分析运行应用程序中的SQL语句。

  2.若需要的数据不在SGA中,则把它从数据文件中读取到SGA的共享数据库缓存区中。

  3.返回应用程序需要的结果。

5. 后台进程

Oracle后台进程的名字及说明

DBWn 数据库写入进程,把缓存区中在内容写入到数据文件中
LGWR 日志写入教程,把重做日志缓存区中的内容写入重做日志文件中
GKPT 检查点进程。太多啦,就先不打了!!
SMON 系统监控进程
PMON 进程监控进程
ARCn 归档进程
RECO 恢复进程
Jnnn 作业队列进程
Dnnn 调读进程
LMS 锁管理服务器进程
QMNn 队列监控进程
Snnn 共享服务器进程
八.应用程序结构

1.客户/服务器结构

数据库应用程序和数据库被分为两个部分:

  • (前端)客户端:客户端运行数据库应用程序,访问数据库信息,通过人机界面交互。
  • (后端)服务器:运行Oracle软件,处理多种请求,共享访问Oracle数据库的数据。

一般情况客户端与服务器位于不同的计算机,Oracle数据库系统的服务器和客户端通过Oracle Net Services 进行通信。

2.多层结构

客户端————应用程序服务器(为客户端提供数据,类似于接口)————数据库服务器。

客户端提出一个请求,在数据库服务器上执行相应在操作。客户端可以是Web浏览器,也可以是用户进程。多层结构中,客户端通过一个或多个应用程序服务器与数据库服务器相连。

3.Oracle Net Services

Oracle Net Services 提供了企业级分布式连接方案,可以实现从客户端应用程序到Oracle数据库的网络会话。使用各种网络广泛的通信协议或者 应用程序接口(APi),为Oracle数据库提供分布式数据库和分布式进程管理。

分布式数据库:是指利用高速计算机网络将物理上分散的多个数据存储单元连接起来组成一个逻辑上统一的数据库。分布式数据库的基本思想是将原来集中式数据库中的数据分散存储到多个通过网络连接的数据存储节点上,以获取更大的存储容量和更高的并发访问量。近年来,随着数据量的高速增长,分布式数据库技术也得到了快速的发展,传统的关系型数据库开始从集中式模型向分布式架构发展,基于关系型的分布式数据库在保留了传统数据库的数据模型和基本特征下,从集中式存储走向分布式存储,从集中式计算走向分布式计算。

九。Oracle数据库用户概述:

1.Oracle数据库哟用户类型:

数据库管理员 安装升级,分配存储系统,创建DB存储结构,创建DB对象,修改DB结构,管理用户,安全,控制,监视,优化,备份,恢复,维护,联系。
安全官员 管理用户,控制,监视用户对数据库的访问,维护安全
网络管理员 管理网络产品 如 Oracle Net Sevyices
应用程序开发员 设计开发应用程序,估算数据库存储空间,提供数据管理员,调整,安全性检测。
应用程序管理员 对指定的应用程序进行管理
数据库用户 在权限范围内添加,修改和删除数据,生成统计报表

2.默认数据库管理员user

(一).数据库管理员的操作系统账户:数据库管理员必须能够执行操作系统命令。

(二).数据库管理员的用户名:在创建数据库时,有如下两个用户被自动创建

SYS:默认密码为(change_on_install)创建一个Oracle数据库时,默认创建SYs用户并授予DBA,数据字典中的基本表和视图都存放在SYS方案中。不被修改。

SYSTEM:默认密码(manager),与SYS一样,用于创建显示管理信息的表或视图。

(三)数据库管理员的权限:(SYSDBA+SYSOPER)系统权限。

SYSDBA权限;

  1. 启动和关闭数据库操作;
  2. 执行ALTER DATABASE语句修改数据库,打开,连接,备份和修改字符集等操作;
  3. 执行CREATE DATABASE语句创建数据库;
  4. 执行DROP DATABASE语句删除数据库;
  5. 执行CREATE SPEILE 语句;
  6. 执行ALTER DATABASE ARCHIVELOG 语句;
  7. 执行ALTER DATABASE RECOVER 语句;
  8. 拥有RESTRICTED SESSION 权限,此权限允许用户执行基本的操作任务,但不能查看用户数据。

SYSOPER权限可以执行的操作:

  1. 启动和关闭数据库操作:
  2. 执行CREATE SPEILE语句;
  3. 执行ALTER DATABASE 语句修改,打开,连接,备份等操作;
  4. 执行ALTER DATABASE ARCHIVELOG 语句;
  5. 执行ALTER DATABASE RECOVER 语句;
  6. 拥有RESTRICTED SESSION 权限,此权限允许用户执行基本的操作任务,但不能查看用户数据。


第二章,安装和卸载Oracle数据库

常用Oracle服务

Oracle ORCL VSS Writer Service

Oracle 卷映射拷贝写入服务,VSS能够让储存基础设备(如磁盘,阵列等)在多卷或单卷创建映射副本,

OracleDBConsoleorcl

Oracle数据库控制服务台,orcl是数据库服务器标识,在运行OEM时需要启动
OracleJobSchedulerORCl Oracle作业调度服务,Orcl是Oracle实例标识,默认设置为禁用
OracleOraDb11g_home1TNSListener 监听器服务,服务只有在数据库需要远程访问时才需要,服务默认设置为自动启动
OracleServiceORCL 数据库服务,这个服务会自动地启动和停止数据库。Orcl是实例标识,默认自动启动
Oracle llg常用环境变量
环境变量名 说明
NLS_LANG 使用的语言。SIMPLIFIED CHINESE简体中文,CHINA中文日期格式,ZHS16GBK表示编码
ORACLE_MASE 安装Oracle服务器的顶层目录(默认C:\app\administrator)
ORACLE_BUNDLE_NAME Oracle 11g的版本(默认:Enterprise)
ORACLE_HOME 安装Oracle11g软件的目录(默认:C:\app\adminisstrator\product\11.2.0\dbhome_1)
PATH Oracle可执行文件的目录(默认:C:\app\administrator\product\11.2.0\db_1\bin)

第三章Oracle数据库管理工具

一,Oracle Enterprise Manager

Oracle Enterprise Manager简称OEM,是Oracle的web的管理工具,可以通过Web浏览器连接到Oracle数据库服务器,对Oracle数据库进行查看,维护和管理。

启动Enterprise Manager II时,要检查Oracle数据库控制台服务OracleDBCConsoleorcl是否启动,orcl代表Oracle实例名,如果默认的Oracle实例不是Orcl,服务器会发生相应变化。

启动服务后,可以在Web浏览器中按下面的格式访问Enterprise Manager 11g:https://<Oracle数据库名称> :<端口号>/em

在进入OEM中,选择身份可以选择Normal,SYSOPER,SYSDBA。

在OEM中可以通过7个页面对Oracle数据库进行监测和管理,分别是:主目录,性能,可用性,服务性器,方案,数据移动,以及软件和支持。

二,SQL Plus

打开方式:可以从程序打开,也可以在命令行窗口执行sqlplus;用户名 AS 连接身份;

1,SQL Plus 是用户和服务器之间的一种接口,用户可以通用他使用SQL语句交互式地访问数据库,功能:

  • 输入SQL命令,对SQLPlus环境进行配置。
  • 输入,编辑,存储,读取和运行SQL命令及PL/SQL块。
  • 与终端用户进行交互(intearction)式操作。
  • 将查询结果输出到报表表格中,设置表格格式和计算公式,不可把表格存储起来。
  • 启动和关闭数据库
  • 连接到数据库
  • 定义变量
  • 捕捉pl/sql程序错误
  • 列出表的列定义
  • 执行数据库管理

2,查看所有Oracle数据库的名称和创建日期:SELECT NAME,CREATED FROM V$DATABASE(Oracle系统视图,用于显示数据库的基本信息);

3,SQL Plus窗口是一个行编辑器,需要输入命令指定SQL Plus进行相应操作

SQL Plus的命令列表
              命       令                                                                      描                                      述
@@ 运行脚本。此命令与@命令相似,但是他可以在调用脚本相同的目录下查找指定的脚本
/ 执行SQL命令或PL/SQL块
ACCEPT(接受) 读取输入的一行,并把它存储在指定的用户变量里
APPEND(附加,贴上) 向缓存区中的当前行尾部添加指定的文本
ARCHIVELOG(归档模式)     启动或停止对在线重做日志文件的自动归档,对指定重做日志文件进行手动归档,显示重做日志文件的信息
ATTRIBUTE(标志) 指定不同类型的列属性的特征,列出单个属性或所有属性的当前显示特征
BREAK(突破,打破) 指定在报告中的什么位置发生变化,以及发生变化的形式,也可以显示当前的BREAK定义
BTITLE(尾标题) 在每个报告页在底部设置一个标题,并对指定标题设置格式,也可以用来显示当前的BTITLE定义
CHANGE() 在缓存区的的当前列中进行文本替换
CLEAR() 删除或重置当前句子,或者设置特殊的选项,例如BREAK 或COLUMN
COLUMN() 设置指定列的显示特征,也可以列出单个列或所有列的当前显示。
COMPUTE() 计算或显示汇中行
CONNECT() 使用指定用户连接到数据库
COPY() 将查询结果复制到本地或远端的数据库表中
DEFINE() 定义用户变量,默认为CHAR类型,也可以用来显示单个变量或所有变量的值和变量类型
DEL() 删除一行或多行
DESCRIBE() 显示指定表,视图,过程,或函数的列定义
DISCONNECT() 向数据库提交挂起请求,记录当前用户,但并不退出SQL Plus环境
EDIT() 打开所在操作系统的文本编辑器,显示指定文件的内容,或当前缓存区的内容
EXECUTE() 执行一条PL/SQL语句
EXIT() 退出 SQL Plus,返回操作界面
GET() 把所有在操作系统的文件装载到缓存区中
HELP() 访问SQL Plus帮助系统
HOST() 在SQL Plus环境中执行所在操作系统的的命令
INPUT() 在当前行后添加一行或多行文本
LIST() 显示缓存区中的一行或多行
PASSWORD() 修改口令,但是并不在显示器上显示口令
PAUSE() 显示指定文本,等待用户按回车键
PRINT() 显示指定变量的当前值
PROMPT() 发送指定信息到用户屏幕
QUIT() 终止SQL Plus环境中执行所在操作系统的命令
RECOVER() 执行表空间,数据文件或整个数据库的介质恢复
REMARK() 在脚本中标记注释信息的开始
REPFOOTER() 替换或定义指定报告底部的页脚格式,也可以用来显示REPFOOTER的定义

REPHEADER()

替换或定义指定报告顶部的页眉格式,也可以用来显示REPHEADERR的定义
RUN() 显示并运行当前缓存区中的SQL命令或PL/SQL块
SAVE() 将当前缓存区的内容保存为脚本
SET()

设置系统变量,给变当前的SQL Plus环境

SHOW() 显示SQL Plus系统变量的值或当前的SQL Plus环境
SHUTDOWN() 关闭当前运行的Oracle例程
SPOOL() 将查询的结果保存到文件中,可以选择将比例程连接到一个数据库
START() 运行指定脚本中的SQL Plus语句,只能重SQL Plus工具中调运脚本
STARTUP() 启动一个Oracle例程,可以选择将此例程连接到一个数据库
STOER() 将当前的SQL Plus 环境的属性保存为脚本文件
TIMING() 定义时钟记录一段时间内的时间数据。可以显示当前的时钟名和时间数据,也可以显示当前活动时钟的数量
TYITLE() 替换或定义指定报告顶部的标题格式,也可以用来显示TTITLE的定义
UNDEFINE() 删除一个或多个用户变量,这些用户变量是通过DEFINE的定义
VARIABLE() 声明一个变量,可以在PL/SQL程序中使用
WHENEVER OSERROR() 如果操作系统命令产生错误,则退出SQL Plus
WHENEVERSQLERROR() 如果SQL命令或PL/SQL程序产生错误,则退出SQLPlus
@

运行指定脚本中的SQL Plus 语句。可以从本地文件系统或Web服务器调用脚本,


    4,视图:PRODUCT_COMPONENT_VERSION中包含三列
  • PRODUCT:表示Oracle组件的名称
  • VERSION:表示Oracle组件的版本。
  • STATUS:表示Oracle组件的安装状态。

5,查看视图PRODUCT_COMPONENT_VWRSION中Oracle数据库及其组件版本信息:COL  列名 FORMAT 大小;SELECT * FROM PRODUCT_COMPONENT_VWRSION;,

6,返回最后的SQL语句 LIST;

7,使用SAVE命令保存SQl语句得到方法:SAVE  c:\SELECT.SQL

三,网络配置工具

Oracle是网络环境下的数据系统,支持网络中数据库的访问,使用Net Manager 可以对网络环境进行配置和管理。

1,Oracle数据库服务和数据库实例标识

a.一个数据库可以与一个或多个数据库服务器相关联。在客户端看来,数据库服务名就代表它们要访问Oracle数据库,服务器可以在初始化参数SERVICE NAME 中去设置。

B.数据库服务器名:默认条件下,数据库服务器名等于全局数据库名(区分与其他数据库的唯一标识,由数据库名+域名组成)<数据库名>.<域名>例sales(数据库名).oracleserver.com(域名)

C.连接描述符:连接Oracle数据库服务,客户端必须通过连接描述符来提供数据库的位置和数据库服务的名称,

例(DESCRIPTION(描述)=

(ADDRESS(地址)((PROTOCOL(协议)=tcp)(HOST(主机名)=oracleserver)(PORT(端口号)=1521))

(CONNECT_DATA(连接)=(SERVICE_NAME(数据库服务名)=sales.oracleserver.com)

(INSTANCE_NAME=salesl)(如果连接指定的数据库实例,客户端可在连接时指定INSTANCE_NAME参数)

(SERVER=shared)))使用指定服务处理器类型的客户来说,可以指定所使用的服务处理器类型,(共享服务器,默认)专用服务器为(dedicated)

连接服务器的地址部分实际上是监听器的协议地址客户端连接

D.客户端连接数据库服务途径:客户端——联系——数据库服务器上的监听器进程——传输——数据库服务器。

E.监听器收到请求后,选择一个已注册的服务处理器执行操作1,直接将连接请求传递给调度器进程,2向客户端发送一个重新定向消息,3生成一个专用服务器进程,一但完成连接操作,就不需要监听器参与。

2.连接字符串的命名方法

A.用户通过连接字符串来初始化到Oracle服务器的联接请求:CONNECT  连接字符串(用户名,口令,连接标识符)

B.连接字符串:包括用户名,口令和连接标识符(连接标识符可以是连接描述符,也可以是代表连接描述符的名称)。定义连接字符串的方法称为命名方法。

C.最常用的连接标识符是网络服务台,例:CONNECT SCOTT/TIGER@连接描述符  ,CONNECT SCOTT/TIGER@sales(定义网络服务名,在连接过程中,Oracle会将网络服务器替换成它定义的连接描述符)

D.创建客户端会话的过程:

连接标识符初始化一个连接请求——通过命名方法将连接标识符解析成连接描述符——客户端根据连接描述符中的地址生成一个连接请求——监听器接受到连接请求,并将它转向指定的数据库服务器——数据库服务器接受请求。

E.Oracle支持下面四种命名方法:

(1)本地命名:在本地的名为tnsnameS.ora的配置文件中保存网络服务名和连接描述符。

(2)目录命名:将连接描述符存储在一个中央目录服务器,用于访问数据库服务。

(3)简单连接命名:允许客户端通过TCP/IP连接字符串连接Oracle数据库(上面)TCP/IP,连接字符串是由主机名,端口号和服务名组成(后两可选)例:CONNECT username/password@host[:port][/service_name],不需要配置,可直接使用。

(4)外部命名:将网络服务名以支持的非Oracle命名服务方式存储,支持3方服务包括网络信息服务(NIS),外部命名和分布式计算环境(DCE)单元目录服务(CDS)。

Oracle  Net栈通信体系结构

Oracle Net的主要功能是建立,维护客户端应用程序和Oracle数据库服务器之间的连接,客户端和数据库服务器是通过一系列网络协议组成的协议栈实现通信的常见的客户端与Oracle数据库服务器的连接方式有【客户端/服务器应用程序连接,Java应用程序连接和web客户端连接】。

1,客户端/服务器应用程序连接中的通信栈:

也就是通常说的C/S结构应用程序。当客户端与数据库服务器建立连接后通信结构基于OSI通信模式(计算机之间的通信以栈的方式进行,信息通过多层代码在节点之间传送,包含物理层,数据链路层,网络层,传输层,会话层,表示层和应用层),

1.1客户端/服务器应用程序连接中的组成部分:

  1. 客户端应用程序:客户端使用Oracle调用接口(OCI)与数据库服务器通信,OCI在客户端和数据库服务器都可以理解的SQL语言之间提供接口的组件。
  2. 表示层:表示层解决客户端和服务器不在同一操作系统上时字符集的问题,可以执行字符转换。
  3. Oracle基础层:负责创建和维护客户端应用程序和数据库服务器之间的连接,Oracle Net基础层通过TNS(透明网络底层)技术来实现。TNS支持P2P应用程序连接(P2P中,两个或多个计算机可以直接通信,不需要中间设备)
  4. Oracle协议支持层:位于基础层和网络协议层中间,负责将TNS功能映射到客户端和服务器连接中使用的标准网络协议上
  5. 网络协议:负责从客户端计算机向数据库服务器传输数据。
  6. RDBMS:RDBMS负责处理客户端请求,数据库服务器使用OPI(Oracle程序接口)为客户端发送的每条语句提供响应。如,客户端执行一条SELECT语句,而OPI返回查询结果。
2.Java应用程序连接中的通信栈
  1. Java应用程序可以通过OracleJDBC驱动访问Oracle数据库,分类如下:
  2. JDBC OCI驱动:在C/S Java应用程序中使用JDBC驱动。JDBC OCI驱动将JDBC 调用转换成对OCI的调用,后者会通过Oracle Net 发送到Oracle数据库服务器。
  3. JDBC瘦驱动:在JAva Applest中使用瘦驱动,可以通过Java套接字直接与数据库服务器建立联系
3.Web客户端连接中的通信栈

Oracle数据库支持多种表示层,可以被Web客户端使用访问数据库的内部属性。

4,本地网络配置文件

默认情况下,Oracle使用一组本地配置文件来保存网络服务信息。

Oracle本地网络配置文件
配置文件名 说明
cman.ora

位于Oracle连接管理器运行的计算机上,保存以下配置信息:

  • 监听器端点
  • 访问控制规则列表
  • 参数列表
listener.ora

位于数据库服务器上,为监听器提供配置信息,主要包括:

  • 用于接受连接请求的协议地址
  • 正在监听的数据库和非数据库服务
  • 监听器使用的控制参数
sqlnet.ora

位于客户端和数据库服务器计算机上,主要配置信息包括:

  • 用于添加不合格的服务名或者网络服务名的客户端域
  • 在解析名称时使用到的命名方法的顺序
  • 使用的日志和跟踪特性。
  • 连接的路由
  • 外部命名参数
  • Oracle 高级安全参数
  • 数据库访问控制参数
tusnames.ora 主要位于客户端,包含映射到连接描述符的网络服务名,此文件在本地命名方法中使用

通常配置文件(Oracle数据库使用一组本地配置文件来保存网络信息)保存在¥ORACLE_HOME\nerwork\admin目录下。Oracle Net可以在不同位置搜索配置文件,搜索顺序1,环境变量TNS_ADMIN指定的目录。2,$ORACLE_HOME\network\admin目录。

5,Oracle Net Manager

Oracle Net Manager是配置和管理Oracle网络环境的一种工具,配置和管理功能:

  1. 概要文件:确定客户端如何连接到Oracle网络的参数集合。

第四章,数据库管理,配置和维护

4.2配置数据库:

1,查看和设置内存(SGA+PGA)参数

1.使用CEM查看和设置SGA和PGA的参数。

2.使用V$SGAINFO视图查看SGA基本信息(包含字段NAME(SGA统计项目的名称),BYTES(统计项目的大小,以字节为单位),RESIZABLE(是否允许调整大小))。语句:SELECT * FROM v$SGAINFO; Granule Size 项目表示粒度的大小。

3.使用V$SGASTAT视图查看SGA的统计信息(包含字段POOL(SGA组件驻留的池),NAME(SGA组件名称),BYTES(内存大小,单位字节))。语句:SELECT * FROM v$SGASTAT;

4,配置自动还原管理

Oracle 可以维护用于取消对数据库所做的更改的信息,这种信息由事物操作的记录组成,称还原。Oracle使用还原操作来回退有效的事务处理,恢复中断的事务处理,提供读取一致性。以及从逻辑错误中进行恢复,自动还原管理是基于还原表空间(undo tablespaces)的。基于OEM进行设置。

5,初始化参数文件

(定义参数,静态限制参数,动态性能参数,控制或修改数据库和数据库实例操作的参数)当Oracle数据库实例启动时,系统需要从初始化参数文件中读取初始化参数,初始化参数决定了Oracle实例的特性。

Oracle 11g的初始化参数文件可以是只读的文本文件:文本参数文件(Text initalization)又称为被称为PFILE文件,易于查看和修改。也可以是可读写的二进制文件:服务器参数文件(Server Parametter File)SPFILE,T它始终存放在数据服务器上。

文本初始化参数文件(PFILE):默认的文本初始化参数文件名为:init当前数据库实例名.ora,默认路径为:Oracle数据库安装的产品目录\database。

常用的初始化参数:

1,全局数据库名称:用户自定义的本地数据库名称(由初始化参数DB_NAME定义)+数据库在网络结构中的位置信息(由DB_DOMAIN定义域信息):DB_NAME=orcl +  DB_DOMIN=mydomain.com==全局数据库名(orcl.mydomain.com).如果数据库实例启动时初始化参数DB_NAME与控制文件中的数据文件名不同,则无法启动。

2,定义闪回恢复区:闪回恢复区是Oracle数据库用来存储和管理与备份/恢复相关的文件的位置,它区分与数据库区(管理当前数据库文件的位置),闪回恢复区包含的初始化参数:DB_RECOVERY_FILE_DEST:定义闪回恢复区的位置,可以是目录,文件系统或自动存储管理磁盘组(ASM);DB_RECOVERY_FILE_DEST_SIZE:指定闪回恢复区的最大字节数,只有DB_RECOVERY-FILE_DEST有效时才能指定此参数。

3,指定控制文件:使用初始化参数CONTROL_FILES可以为数据库指定控制文件名。当执行CREATE DATABASE创建数据库时,将创建CONTROL_FILES中指定的控制文件列表。如果在初始化参数文件中没有CONTROL_FILES,则Oracle数据库使用默认的文件名来创建控制文件。

4,指定数据块的大小:使用初始化参数DB_BLOCK_SIZE 可以指定数据块的标准数据块大小,数据块大小可以在SYSTEM表空间和其他表空间中被默认设置 使用,一般设置为4kb或8kb

5,管理SGA:初始化参数SGA_MAX_SIZE可以指定SGA的最大内存数量,初始化参数SGA_TARGET用于指定SGA的实际大小。设置SGA_TARGET后,SGA的组件大小被自动设置。包括SHARED_POOL_SIZE(共享池)    ,LARGE_POOL_SIZE(大池),    JAVA_POOL_SIZE(java池), DB_CACHE_SIZE和STREAMS_POOL_SIZE(数据流池)等。

6,设置最大进程数量:使用初始化参数PROCESSES决定了操作系统中可以连接到oracle数据库的最大进程数量。

7,指定还原表空间(undo space)的管理方式:使用初始化参数UNDO_MANAGEMENT可以设置是否启动自动还原管理模式,在自动还原管理模式中。还原数据被保存在还原表空间中,默认值为:MANUAL...。如何指定为AUTO ,则UNDO TABLESPACE用于指定当前实例的还原表空间。

服务器参数文件SPFILE:

可以把SPFILE看做是在Oracle数据库服务器上维护的初始化参数的容器,它是服务器端的初始化参数文件,在一个数据库实例运行过程中,如果SPFILE的初始化参数被修改,则需要关闭数据库实例再启动后才能生效。

初始化参数管理:

使用SHOW PARAMETERS语句显示初始化参数。

使用V$PARAMETER 视图查看初始化参数信息。

使用ALTER SYSTEM语句设置初始换参数,ALTER SYSTEM SET 参数名=参数值     SCOPE=SPFTLE;

4.3维护数据库实例:

使用SHUTDOWN命令关闭数据库实例,

1,正常关闭数据库实例:SHUTDOWN NORMAL;

2,以事务方式关闭数据库实例:SHUTDOWN TRANSACTIONAL;

事务:包含一个或多个SQL语句的逻辑单元,事务中的SQL语句是一个完整的整体,它们要么全部提交(Commit),要么全部回滚(Rooiback)撤销。

3,立即关闭数据库:SHUTDOWN IMMEDIATE;终止关闭数据库:SHUTDOWN ABORT;

4,使用STARTUP命令启动数据库实例:以指定的初始化参数文件来启动实例,STARTUP PFILE=初始化参数文件,启动数据库实例,但不装载数据库:STARTUP;启动数据库实例,装载数据库:STARTUP MOUNT;强制启动数据库实例:STARTUP FORCE  ;以限制模式启动数据库实例:STARTUP RESTRICT .在数据库启动时开始介质恢复:STARTUP RECOVER;

5,使用ALTER DATABASE 命令来改变启动模式:使用ALTER DATABASE 命令可以改变数据库实例的启动模式。切换到MOUNT模式:ALTER DATABASE MOUNT ;切换到OPEN模式:ALTER DATABASD OPEN;以只读方式打开数据库实例:ALTER DATABASE OPEN READ ONLY;

第五章,数据库存储管理:

一,表空间管理:

查看表空间信息,创建表空间,设置和修改表空间的属性使用只读表空间,重命名和删除表空间

1,通过oracle Enterprise manager查看表空间信息,

2,通过Oracle视图查看表空间信息

与表空间有关的视图
V$TABLESPACE 控制文件中保存的所有表空间名称和属性
DBA_TABLESPACES 所有表空间的属性和在线状态信息
USER_TABLESPACES 所有用户可以访问表空间的描述信息
DBA_TABLESPACE_GROUPD 所有表空间组及其所属的表空间信息
DBA_SEGMENTS 所有表空间中的区间信息
USER_SEGMENTS 所有用户表空间中的区间信息
DBA_FREE_SPACE 所有表空间中的空闲区间信息

USER_FREE_SPACE

所有用户表空间的空闲区间信息
V$DATAFILE 所有数据文件信息
V$TEMPFILE 所有临时文件信息
DBA_DATA_FILES 显示所有属于表空间的数据文件信息
DBA_TEMP_FILES 显示所有属于临时表空间的临时文件信息
                   段             类          型
                              说                          明

 (1)使用V$TABLESPACE视图查看完整的表空间信息

视图V$TABLESPACE的字段属性
字段名 数据类型 说明
TS# NUMBER(数字类型) 表空间编号
NAME VARCHAR2(30)(变长字符串) 表空间名称
INCLUDED_IN_DATABASE_BACKUP VARCHAR2(3) 缩写INC,表明该表空间是否包含在完整的数据库备份中
BIGFILE VARCHAR2(3) 缩写BIG是否为大文件表空间
FLASHBACK_ON VARCHAR2(3) 缩写FLA表空间是否参见FLASHBACK DATABASE(数据回滚)操作
ENCRYPT_IN_BACKUP VARCHAR2(3) 缩写ENC,ON 表示表空间级别加密,OFF表示关闭,NULL表示为明确指定

(2)查看表空间的属性和在线状态

视图DBA_TABLESPACES的字段属性
字段名 数据类型 说明
TABLESPACE_NAME VARCHAR2(30) 表空间名称
BLOCK_SIZE NUMBER 表空间数据块大小
INITIAL_EXTENT NUMBER 默认初始区间大小
NEXT_EXTENT NUMBER 默认区间自动增长量
MIN_EXTENTS NUMBER 默认最小区间数量
MAX_EXTENTS NUMBER 默认最大区间数量
PCT_INCREASE NUMBER 默认的自动增加的区间大小的百分比
MIN_EXTLEN NUMBER 表空间中最小区间的大小
STATUS VARCHAR2(9) 表空间状态包括,ONLIEN,OFFLINE和READ,ONLY
CONTENTS VARCHAR2(9) 表空间的内容,包括UNDO,PERMANENT(永久)和TEMPORARY(临时)
LOGGING VARCHAR2(9) 默认登录属性,包括LOGGING和NOLOGGING
FORCE_LOGGING VARCHAR2(3) 表明表空间是否属于强制登录模式下
EXTENT_MANAGEMENT VARCHAR2(10) 表明表空间中的区间处于数据字典管理模式(DICTIONARY),还是本地管理模式
ALLOCATION_TYPE VARCAHR2(9) 表空间中区间的分配方式,包括SYSTEM,UNIFORM(统一)和USER
PLUGGED_IN VARCHAR2(2) 表明表空间是否接入
SEGMENT_SPACE_MANAGEMENT VARCHAR2(2) 表明表空间中空闲和已使用的区间是使用空闲列表(MALNUL)来管理。还是使用位图(AUTO)来管理。
DEF_TAB_COMPRESSION VARCHAR2(8) 表明是否启动默认的表压缩选项
RETENTION VARCHAR2(11) 指定撤销表空间中撤销保留时间,
BIGFILE VARCHAR2(3) 表明表空间是否为大文件表空间

(3)查看表空间组及其所属的表空间信息。

视图DBA_TABLESPACE_GROUPS的字段属性
字段名 数据类型 说明
GROUP_NAME VARCHAR2(30) 表空间组名称
TABLESPACE_NAME VARCHAR2(30) 表空间名称

表空间组(tablespace Group):可以包含一个或多个表空间,user可以通过表空间组使用多个表空间的临时空间,一个表空间组至少包含一个表空间,不限制包含的最大表空数量

(4)查看表空间中所包含的段的信息;DBA_SEGMENTS;

视图DBA_SEGMENTS的字段属性
字段名 数据类型 说明
OWNER VARCHAR2(30) 段所有者的用户名
SEGMENT_NAME VARCHAR2(30) 段的名称
PARTITON_NAME VARCHAR2(30) 对象分区名
SEGMENT_TYPE VARCHAR2(18) 段的类型:包括PARTITION,TABLEPARTITION,TABLE,CLUSTER,等
BYTES NUMBER 段的大小,单位为字节
TABLESPACE_NAME VARCHAR2(30) 包含段的表空间名称
BLOCKS NUMBER 段的大小,单位为数据块
EXTENTS NUMBER 分配给段的区间的数量
NEXT_EXTENT NUMBER 下一个要分配给段的区间的大小,单位为字节
MIN_EXTENTS NUMBER 段中允许包含的最小区间数量
MAX_EXTENTS NUMBER 段中允许包含的最大区间数量

(5)查看表空间中空闲区间的信息:DBA_FREE_SPACE视图;

视图DBA_FREE_SPACE 属性
字段名 数据类型 说明
TABLESPACE_NAME VARCHAR2(30) 表空间的名称
FILE_ID NUMBER 包含区间的文件的标识符
BLOCK_ID NUMBER 区间中起始数据块的编号
BYTES NUMBER 区间的大小,单位为字节
BLOCKS NUMBER 区间的大小,单位为数据块
RELATIVE_FNO  NUMBER 包含区间文件的相对文件号

1,统计所有表空间的总空间大小

系统视图DBA_DATA_FILES中包含数据文件所属的表空间和数据文件单位大小,按表空间分组,求所有数据文件的大小之和:
SELECT  tablespace_name  AS 表空间名,SUM(bytes) FROM DBA_DATA_FILES
GROUP BY tablespace_name;
2,统计所有表空间的空闲空间大小
将系统视图DBA_DATA_FILES和DBA_FREE_SPACE相结合,统计表空间的空闲空间大小:
SELECT a.tablespace_name,NVL(SUM(b.bytes),0) bytes FROM DBA_DATA_FILES a,DBA_FREE_SPACE b
WHERE a.tablespace_name=b.tablespace_name (+) and a.file_id=b.file_id (+)

GROUP BY a.tablespace_name;

NVL()函数:如果参数字段值为空,则显示0;

3,统计表空间使用情况的SELECT语句

SELECT c.tablespace_name "表空间"

ROUND(a.bytes/1024/1024,2) "表空间大小"

ROUND(a.bytes-b.bytes/1048576,2) "已使用的表空间"

ROUND(b.bytes/1048576,2) "剩余空间"

ROUND(b.bytes/a.bytes * 100,2)||'%' "剩余百分比"

FROM  (SELECT tablespace_name,SUM(bytes) bytes  FROM DBA_DATA_FILES GROUP BY tablespace_name )  a,

(SELECT a.tablespace_name,NVL(SUM(b.bytes),0) bytes FROM DBA_DATA_FILES a,DBA_FREE_SPACE b

WHERE  a.tablespace_name=b.tablespace_name(+) and a.tablespace_name=c.tablespace_name ORDER BY ROUND(b.bytes/1024/1024,2);


Oracle数据库导入表;

1,在磁盘下新建一个名为Oracle文件的文件夹,存放要导入的表文件到该文件夹,

2,创建表空间:

CREATE TABLESPACE 表空间名

[DATAFLIE  ''(定义表空间中包含的数据文件) SIZE 整数[k|m](指定数据文件大小)

 MININUM EXTENT 整数 [k|m]](指定表空间中包含区间的最小值)

BLOCKSIZE 整数[k](用于指定不标准的数据的大小)

LOGGING 子句(指定表空间上所有用户的日志属性)

FORCE LOGGING(指定表空间进入强制日志模式)

DEFAULT(是否压缩数据段) 存储子句(用于指定缺省的存储信息)

[online|offline](指定表空间的在线状态。online指定表空间在创建后立即生效,Offline指定无效)

[PERMANENT|TEMPORARY](参数指定表空间类型,永久表空间and临时表空间)

AUTOEXTEND ON NEXT 100M //指定为自动增量

 MAXSIZE 20480M //整数 [k|m]](指定最大扩展量)

区间管理子句:指定表空间如何管理区间,使用local选项指定本地管理表空间。使用autoallocate选项表示由表空间自动分派空间,用户不能指定区间大小。

段管理子句:指定表空间如何管理段,通常使用SEGMENT SPACE MANAGEMENT AUTO 子句指定自动管理段。


例:create tablespace libsys_datalogging
       datafile'E:\ORACLE文件\libsys_data.dbf'
       size 10240m

       autoextend on next 100m

       maxsize 20480m

       extent management local;

1,。本地管理表空间;本地管理表空间将表空间中所有得区间信息以位图的方式记录。所有的表空间都可以被本地管理。在CREATE TABLESPACE语句中使用EXTENT MANAGEMENT  LOCAL子句,可以创建本地管理表空间。

例:CREATE TABLESPACE Oracles01 //定义表空间名
      DATAFILE 'C:\ORACLE\Oracles01.dbf' SIZE 50M  //指定表空间的数据文件及大小

      EXTENT MANAGEMENT LOCAL AUTOALLOCATE;  //指定本地管理表空间。指定表空间由系统管理,表空间自动分配区间,最小区间64kb。与AUTOALLOCATE子句相对应的是UNIFORM子句,使用它可以指定最小区间的大小。

2.。大文件表空间,是由唯一的非常巨大的数据文件组成的,只能包含一个数据文件。

例:CREATE BIGFILE TABLESPACE 大文件表空间名

       DATAFILE 指定表空间的数据文件(绝对路径+文件名)SIZE 10g;

3,。创建临时表空间: 使用TAMPORARY关键字可以创建临时表空间,在创建临时表空间时,不允许使用AUTOALLOCATE关键词,因此表空间的区间大小必须使用UNIFORM子句手动指定。

CREATE TEMPORARY TABLESPACE  临时表空间名 (创建临时表空间指定临时表空间名)

TEMPFILE '文件路径\文件名'(指定临时文件的绝对路径和文件名)

SIZE  整数 [k|m]](指定数据文件大小) REUSE(指定临时文件可以重用)

AUTOEXTEND ON NEXT  整数 [k|m]](指定表空间为自动扩展及扩展单位量)

MAXSIZE  整数 [k|m]](指定最大扩展量)

EXTENT MANAGEMENT 管理方式 (指定表空间的管理方式,默认的是local)(在oracle数据库中:extent management 有两种方式 extent management local(本地管理); extent management dictionary(数据字典管理))UNIFORM SIZE 区间大小;(指定区间大小)

4,。定义表空间的段管理方式:表空间由段组成,在创建表空间时,可以指定段空间的管理方式,有自动和手动两种,在CREATE TABLESPACE语句中使用SEGMENT SPACE MANAGEMENT 子句定义段空间管理方式。

例:CREATE TABLESPACE 表空间名

DATAFILE 指定表空间的位置 SIZE 大小

ETENT MANAGEMENT LOCAL AUTOALLOCATE//指定表空间为本地管理表空间,表空间自动分派区间,

SEGMENT SPACE MANAGEMENT MANUAL /AUTO //指定表空间段的管理方式为手动/自动

5,。创建撤销表空间:维护信息由事务前的提交的操作记录组成,这些信息被称为撤销记录,可完成回滚操作(ROLLBACK),恢复数据库,使用闪回查询分析以前时间点的数据。使用闪回技术从逻辑破坏中恢复数据。

例:CREATE UNDO TABLESPACE  撤销表空间名

        DATAFILE  指定数据文件的位置 SIZE 大小 REUSE (重用)

3,设置和修改表空间属性

使用ALTER TABLESPACE 语句修改表空间的属性

(1)重命名表空间:使用RENAME TO 子句:ALTER TABLESPACE 原表空间名 RENAME  TO 新表空间名;

(2)向本地管理表空间添加数据:使用 ADD DATAEFILE 子句:ALTER TABLESPACE 表空间名 ADD DATAFILE 增加的数据文件 SIZE 数据文件大小;

(3)修改大文件表空间的属性:使用 RESIZE 子句:ALTER TABLESPACE 表空间名 RESIZE  表空间大小 ;

(4)向临时表空间中添加文件:使用ADD TEMPFILE 子句:ALTER  TABLESPACE 临时表空间名 ADD TEMPFILE '临时文件名' SIZE 临时文件初始大小。

(5)设置表空间的状态:表空间的状态可以分为脱机和联机两种,一般设置为脱机状态的情况。

  • 将数据库的一部分设置为不可访问,其他部分可以访问。
  • 执行脱机表空间备份。
  • 在升级或维护应用程序时,将应用程序及其使用的表临时设置为不可访问。
  • 重命名或者重新分配表空间。

SYSTEM,UNDO,TEMPORARY表空间不能被设置为脱机状态。

使用 ALTER TABLESPACE 表空间名 OFFLINE/ONLINE 语句设置脱机/联机状态。

(6)设置只读表空间:为保护表空间不被修改,可以将其设置为只读表空间,为了避免对数据库中大量静态数据进行备份和恢复操作,保护历史数据不被修改。 在操作的表空间必须是处于联机状态。

使用 ALTER TABLESPACE 表空间名 WRITE/READ WRITE语句设置表空间为只读/可读写状态。

4,删除表空间;

   删除表空间可同时删除表空间内容(表空间中的段)和数据文件。

    删除表空间:DROP TABLESPACE 表空间名;

    删除表空间同时删除其段:DROP TABLESPACE 表空间名 INCLUDING  CONTENTS;

    删除表空间同时删除其段和数据文件:DROP TABLESPACE 表空间名 INCLUDING CONTENTS AND DATAFILE;

二,回滚段管理:

回滚段是Oracle非常重要的逻辑存储结构,用于临时储存数据库的还原信息,

1,查看回滚段信息

使用视图DBA_SEGMENTS可以查看当前数据库中的所有段的信息,回滚段的类型(SEGMENT_TYPE)值为ROLLBACK.

COL 回滚段名 FOR A20

SELECT SEGMENT_NAME 回滚段名,TABLESPACE_NAME 所在表空间, BYTES 大小    //定义别名

FROM DBA_SEGMENTS WHERE SEGMENT_TYPE='ROLLBACK';

查看回滚段的基本信息,使用视图V$ROLLNAME和视图V$ROLLSTAT查看回工段的使用状态,

视图V$ROLLNAME主要字段属性
USE NUMBER 回滚段编号
NAME VARCHAR() 回滚段名称
视图V$ROLLSTAT主要字段属性
USN NUMBER 回滚段编号
EXTENTS NUMBER 回滚段中包含的区间的数量
RSSIZE NUMBER 回滚段的大小,单位为字节

WRITES

NUMBER 向回滚段中写入的字节数
XACTS NUMBER 活动事务的数量
STATUS NUMBER 回滚段的状态,ONLINE,OFFLINE,PENDING和FULL
CUREXT NUMBER 当前区间数量
CURBLK NUMBER 当前数据块区数量

2,使用连接查询查看当前回滚段的工作情况

COL NAME FPR A12

SELECT S.USN,N.NAME,S.EXTENTS,S.RSSIZE,S.STATUS

FROM V$ROLLSTAT S,V$ROLLNAME N WHERE S.USN=N.USN:

3,查看和设置回滚段的管理模式(默认为auto):使用初始化参数UNDO_MANAGEMENT可以设置管理回滚段的方式,利用 SHOW PARAMETER  UNDO_MANAGEMNT;可以查看参数的值,

修改参数的值:ALTER SYSTEM SET UNDO_MANAGEMENT=MANUAL           SCOPE=SPFILE;(表示初始化参数的修改应用与SPFILE)

4,创建回滚段:用户可以为不同的表空间创建专用的回滚段,必须将回滚段的管理模式设置为MANUAL;

CREATE [PUBLIC(公用)] ROLLBACK SEGMENT 回滚段名称 

TABLESPACE 所属表空间名

STORAGE (INITAL(初始大小) 5M NEXT(增量) 2M MAXEXTENTS(最大区间) UNLIMITED(不限制数量);存储选项

通常情况下,建议由Oracle自动对回滚段进行管理

5,修改回滚段属性:需要将初始化参数UNDO_MANAGEMENT设置为MANUAL(手动)。

1.修改回滚段在线状态:联机(ONLINE)+脱机(OFFLINE):ALTER ROLLBACK SEGMENT 回滚段名称 回滚段状态;

查看回滚段状态:SELECT NAME,STATUS FROM V$ROLLNAME,V$ROLLSTAT 

                           WHERE V$ROLLSTAT.USN=V$ROLLNAME.USN;

2.手动收缩回滚段:ALTER ROLLBACK SEMMENT  回滚段名  SHRINK  TO 回滚段的初始大小;

3.删除回滚段:删除回滚段前要设置为脱机状态。:ALTER ROLLBACK SEGMENT 回滚段名 OFFLINE;

                                                                             DROP ROLLBACK SEGMENT 回滚段名;

用户与模式(方案)的概念:Oracle通过模式来组织和管理数据库对象(表,视图,索引),用户是用来连接数据库对象。而模式用是用创建管理对象的。模式跟用户在oracle 是一对一的关系。

模式(方案):是一系列逻辑数据结构或对象的集合,模式是数据库对象的集合。模式对象是数据库数据的逻辑结构。(把数据库对象用模式分开成不同的逻辑结构)一个模式只能够被一个数据库用户所唯一拥有,模式名与用户名相同。且用户的所有模式对象都保存在自己的模式中。模式对象主要包括表,索引,触发器,PL/SQL包,视图,java类,其它用户要使用模式对象,则需要在对象名前加上他所属的模式名。非模式对象主要包括表空间,用户,和角色。                          

Oracle用户是用连接数据库和访问数据库对象的。(用户是用来连接数据库访问数据库)。默认情况下,用户所创建的数据库对象都保存在自己的模式中。

6.2用户管理:

select * from dba_users; 查看数据库里面所有用户,前提是你是有dba权限的帐号,如sys,system

select * from all_users; 查看你能管理的所有用户!

select * from user_users; 查看当前用户信息 !

1.创建用户:

CREATE USER  用户名 IDENTIFIED BY 密码

DEFAULT TABLESPACE  指定表空间名

TEMPORARY TABLESPACE  临时表空间名

(如果不设置默认表空间和临时表空间,则使用SYSTEM作为默认表空间,使用TEMP做为临时表空间)

创建用户后,系统将同时创建一个同名的方案,用户对同名方案下的数据库对象有管理的权限。

2,修改用户:

修改密码:ALTER USER 用户名 IDENTIFIED BY 新密码;

使用PASSWORD EXPIRE 关键词设置密码过期:ALTER USER USERMAN PASSWORD EXPIRE;(下次登录必须修改密码)

使用ACCOUNT LOCK关键词锁定用户:ALTER USER 用户名 ACCOUNT LOCK;(无法登录到数据库)

使用ACCUNT UNLOCK关键词解锁用户:ALTER USER 用户名 ACCOUNT UNLOCK;

3,为用户分配表空间配额:DBA可以为用户分配表空间的配额,即该用户在指定的表空间中可以占用的空间大小,防止用户无限度的占用资源:ALTER USER 用户名 QUOTA 表空间配额大小 ON 表空间;为用户在表空间中分配多少的配额。

4.删除用户:DROP USER 用户名;

5,授予用户权限:

授予系统权限:使用GRANT授予系统权限:GRANT 系统权限 TO 用户名或角色名;

授予对象权限:使用GRANT授予数据对象权限:GRANT 数据对象权限 ON 数据对象 TO 用户名或角色名;

赋权: grant dba,connect ,resource to libsys;

grant <object/system privilege> to <role name>;

关闭sqlplus。打开运行界面cmd,切换到根目录输入imp  用户/密码 file=表路径+文件名 ignore=y full=y;

6,撤销用户的角色权限:REVOKE 权限 FROM  用户名或角色;

三,数据库文件管理

SCN(System Change Number):Oracle的重要机制,可以用来记录和标识执行数据操作的先后顺序,一个 只能增大的大整数,SCN保存在Oracle数据库文件中,创建控制文件时,可以指定记录SCN的规则,

 
 

SCN的工作原理:当用户修改Oracle数据库的数据时,开始事务在SGA的数据库缓存区中查找修改的数据,如果没有,在数据文件中找到并加载到数据库缓存区修改,,用户提交数据时(修改数据块后),LGWR(日志写入进程)进程会将数据库缓存区中的数据和新生成的SCN写入到重做日志文件中(将此时的数据称为脏数据),为了减少I/O操作(设备与cpu连接的接口电路的操作),Oracle不会立即将脏数据写入到数据文件中。当发生检查点事件时,CKPT(检查点进程)进程会触发DBMn(数据库写入进程)进程将把SGA中的所有改变的数据库缓存区写入到数据文件中,即更新数据库中的所有数据文件和控制文件,标记最新的检查点,下一次更新从最新的检查点开始。

在执行SHUTDOWN NORMAL(正常方式关闭数据库)和SHUTDOWN IMMEDIATE(立即方式关闭数据库)语句时,会触发Checkpoint, 在发生Checkpoint事件时,Oracle数据库会将SCN写入到4个地方,将SCN更新为最新的值。

1.系统检查点SCN(System Checkpiont SCN ):当一个Checkpoint完成时,Oracle会将系统检查点SCN保存到控制文件中,可以通过系统视图V$DATABASE中查看系统检查点的值(CHECKPOINT_CHANGE#);

2.数据文件检查点SCN(Datafile Checkpoint SCN):当checkpoint完成时,Oracle会将每个数据文件检查点SCN保存到控制文件中,SELECT NAME,CHECKPOINT_CHANGE# FROM V$DATAFILE;

3.启动SCN(Start SCN):Oracle把每个数据文件的检查点SCN存储在每个数据文件的头文件中,称为启动SCN。实例启动时Oracle会检查每个数据文件的启动SCN与控制文件的检查点SCN是否一致,如果不一致,则重做日志文件会找到丢失的SCN,重新写入到数据文件中进行恢复。SELECT NAME,CHECKPOINT_CHANGE# FROM V$DATAFILE_HEADER;

4,.结束SCN(Stop SCN):每个数据文件的结束SCN都保存在控制文件中。正常情况下,所有处于联机读写模式下的数据文件的结束都为NULL。SELECT NAME, LAST_CHANGE# FROM V$DATAFILE;

Oracle正常启动时并运行时,控制文件检查点SCN,数据文件检查点SCN和每个数据文件的启动SCN都是相同的,控制文件中每个数据文件的结束都是为空的。系统会根据时间戳(TIMESTAMP)自动生成最新的SCN,可以从dual表中查看:SELECT DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER FROM dual(伪表);

控制文件管理:控制文件是一个小的二进制文件。用来记录数据库的物理结构。包含:数据库名称,相关数据文件和重做日志文件的名称和位置。数据库创建的时间戳。当前的日志序列号,检查点信息。Oracle数据库必须可写控制文件。

查看控制文件信息:V$CONTROLFILE ,V$CONTROLFILE_RECORD_SECTION,V$PARAMETER;

创建控制文件:恢复控制文件:删除控制文件。

数据文件管理:在OEM中可以查看数据文件信息,

利用视图V$DATAFILE可以查看数据文件信息

V$DATAFILE常用属性
FILE# 文字标识符
CREATION_TIME 创建数据文件的时间戳
TS# 所属表空间编号
STATUS 文件的状态 OFFLINE(),ONLINE(),SYSTEM(),RECOVER(),SYSOFF(表空间脱机文件)
ENABLED 表示SQL语句如何访问,DISABLED(不允许SQL访问),READ ONLY(不允许更新访问),READ WRITE(允许完全访问),UNKNOWN(文件破坏)
BYTES 数据文件大小,单位为字节,若0,不可访问
BLOCKS 数据文件的大小,单位为数据块,若0 ,不可访问
BLOCK_SIZE 数据文件中数据块的大小
NAME 数据文件名称

数据文件是与表空间一起创建的。可以使用ALTER TABLESPACE 语句修改表空间时使用 ADD DATAFILE 添加数据文件,ALTER TABLESPACE 表空间名 ADD DATAFILE  逻辑文件名 SIZE 大小; 修改数据文件大小:使用ALTER DATABASE DATAFILE 数据文件名 RESIZE 大小;。修改数据文件的在线状态:ALTER  DATABASE DATAFILE  数据文件名  ONLINE/OFFLINE;删除数据文件:ALTER DATABASE DATAFILE 逻辑文件名 OFFLINE DROP;

重做日志管理:

重做日志用于保存数据库的所有变化信息,Oracle数据库的每个实例 都有一个相关的重做日志,由重做日志文件由重做记录组成,而每个重做记录由一组变化元素组成,变化元素中记录了数据库中每个单独的数据块的变化情况。可以使用重做记录来恢复数据库的变化。保护回滚数据。当恢复数据时数据库从重做记录中读取变化元素,然后将变化应用到相关的数据块中。

 数据库中至少包含两个重做日志,一个始终保持可写状态,记录数据变化,另一个用于归档操作(当数据库 处于ARCHIVELLOG(归档)模式时)

Oracle记录重做日志,LGWR日志写入进程负责记录重做日志,在在线重做日志文件中顺序循环写入,当最后一个被填充满了,则LGWR会将变化数据写入到 第一个重做日志文件中。为防止重做日志文件被破坏,oracle提供一种多元重做日志 ,系统在不同的位置上自动维护重做日志的两个或更多副本。多元性通过创建重做日志组实现的,组包括重做日志文件和它的多元副本。每个重做日志组由数字定义

LGWR不会同时写入不同组的日志文件,如果写入,则将写入成员标记为INVALID.

MAXLOGFILES:在CREATE DATABASE 语句中使用MAXLOGFILES参数可以指定每个数据库重做数据文件组的最大数量。

MAXLOGMEMBERS:在CREATE DATABASE 语句中使用MAXLOGMEMBERS参数可以指定每个日志文件组中包含的日志文件的最大数量。

查看重做日志信息:

查询视图V$LOG显示控制文件中重做日志组的信息,查询视图V$LOGFILE,显示重做日志的成员文件。

创建重做日志组和成员。使用ALTER DATABASE 语句中 ADD LOGFILE 子句创建重做日志组。:ALTER DATABASE ADD LOGFILE           [ GROUP  数字] ('LOG1.rdo','LOG2.rdo') SIZE 5000K;创建重做日志[组]文件;使用ALTER DATABASE ADD LOGFILE MEMBER 'log.rdo' TO GROUP 10;创建重做日志成员,将重做日志文件添加到10的重做日志组中。

当从数据库中删除重做日志文件时,操作系统文件不会被删除,数据库的控制文件不会被跟新,从数据库结构中删除重做日志文件。删除重做日志成员后,确认删除成功。然后可以手动删除相关重做日志文件。

归档日志管理:

归档重做日志:Oracle将被填充满的重做日志文件保存到一个或多个离线位置,称为归档重做日志(ARCHIVE),简称归档日志,将重做日志转换为归档重做日志称为归档。只能在APCHIVELOG(归档模式)模式下数据库进行。

归档日志文件:归档日志文件是重做日志文件文件组的备份,由重做项目和唯一的日志序列号组成,当数据库处于归档模式时,,写入日志进程(LGWR)不能对未归档的重做日志组进行重写和改写操作。如果设置了自动归档模式。则后台进程ARCN将自动地执行归档操作 。可以使用归档日志文件达到恢复数据库,更新备用数据库,使用LOGminer获取数据库历史信息的目的。

查看数据库实例的归档模式:SELECT NAME,LOG_MODE FROM V$DATABASE;

查看归档日志信息:ARCHIVE LOG LIST;

查看归档日志的名称,序列号和状态:SELECT NAME,SEQUENCE#,STATUS FROM V$ARCHIVED_LOG;

第六章,数据库安全管理

Oracle认证方法:通过认证,Oracle提供的身份认知的方法有,操作系统身份认证,网络身份认证,Oracle数据库身份认证和数据库管理员认证等。

数据库管理员认证(操作系统认证+密码文件认证):

操作系统认证方式:

忘记DBA口令的解决办法:

1,在操作系统页面以SYSDBA身份登录到SQL Plus。sqlplus“/as sysdba”.

2,在SQL plus中执行 ALTER USER SYS IDENTIFIED BY 口令;COMMIT 修改口令。

3,CONN SYS/ AS SYSDBA ;连接到数据库。

6.3角色管理;

角色:对用户的类管理的一种分类管理办法,不同角色的用户可以分为不同的角色。Oracle系统提供预定义的系统角色。

常用Oracle预定义角色
CONNECT 授予最终用户的基本权限,主要包括ALTER SESSION(修改会话),CREATE CLUSTER(建立聚簇),CREATE DATABASE LINK(建立数据库链接),CREATE SEQUENCE(建立序列),CREATE SESSION(建立会话),CREATE STNONYM(建立同义词),CREATE TRIGGER(),CREATE TYPE()等权限。
RESOURCE 授予开发人员的基本角色,主要包括CREATE CLUSTER(),CREATE PROCEDURE(),CREATE SEQUENCE(创建序列),CREATE TABLE(创建表),CREATE TRIGGER(创建触发器),CREATE TYPE(创建类型)等权限

DBA

拥有所有系统级管理权限
IMP(EXP)_FULL_DATABASE 导入,导出数据库所需要的角色,主要包括BACKUP ANY TABLE(备份表),EXECUTE ANY PROCEDURE(执行过程),SELECT ANY TABLE(查询表) 等权限。
DELETE_CATALOG_ROLE

删除sys.and$记录的权限,sys.and$表中记录着审计后的记录,

SELECT_CATALOG_ROLE 具有从数据字典查询的权限
EXECUTY_CATALOG_ROLE 具有从数据字典中执行部分的过程和函数的权限

视图DBA_ROLES可以查询角色的信息:

视图DBA_ROLES的字段属性
ROLE 角色名
PASSWORD_REQUIRED 表示角色名是否需要使用口令来启动

创建角色:通常只需要使用系统预设的角色即可,也可以手动创建。语法:CREATE ROLE 角色名 IDENTIFIED BY 验证口令;

指定用户的角色:GRANT 角色名  TO  用户名;

撤销用户角色:REVOKE 角色名 FROM 用户名;

修改(取消)角色的验证方式:ALTER ROLE   NOT IDENTIFIED;

删除角色:DROP ROLE  角色名。

第七章,数据库对象管理

配置管理数据库对象的用户:

对用户进行授权:GRANY CONNECT,RESOURCE TO 用户名;(CONNECT与RESOURCE是最基本的角色)

                           GRANY SELECT ANY DICTIONARY TO 用户名;(SELECT ANY DICTIONARY 系统权限允许用户读取任意一个数据字典)

                           execute MGMT_USER.MAKE_EM_USER('USERMAN');(配置指定用户可以登录OEM)

表管理

数据类型:

字符型数据类型
数据类型 最大长度 说明
CHAR(size) 200Byte 固定字符串长度,size表示存储的字符数量

NCHAR(size)

2000Byte 固定长度的NLS国家语言支持字符串,size表示存储字符串的数量。
NVARCHAR2(size) 4000Byte 可变长度的NLS字符串,size表示存储的字符数量
VARCHAR(size) 4000Byte 可变长度字符串
LONG 2GB 可变长度字符串,不建议使用
RAW 2000Byte 可变长度二进制字符串
LONGRAW 2GB 可变长度二进制字符串,不建议使用
数值型数据类型
数据类型 说明
NUMBER(p,s) 包含小数位的数值类型。p表示精度,s表示小数点后的位数。例如number(10,2)小数位两位,总共10位。
NUMERIC(p,s) 同上
FLOAT 浮点数类型。属于近似数据类型,他并不存储为精确值,存储最近似值
DEC(P,S) 与number(p,s)相同
DECIMAL(p,s) 与number(p,s)相同
INTEGER 整数类型
INT 同上
SMALLINT 短整形
REAL 实数类型,与float一样
DROUBLE 双精度类型

日期时间类型:DATE 日期类型。

大对象型(LOB):BFILE,BLOB,CLOB,NCLOB.

Rowid型:ROWID,UROWID(size).

创建表:CREATE TABLE [方案名.]表名(列名  数据类型  约束,列名  数据类型  约束……);

修改表:

添加列:ALTER TABLE 表名 ADD (列名  数据类型  约束);。

修改列名:ALTER TABLE 表名 RENAME COLUMN  原表名 TO 新表名;

 删除列:ALTER TABLE 表名 DROP COLUMN 列名;

设置列不可用:ALTER TABLE 表名 SET UNUSED 列名;

删除不可用列:ALTER TABLE 表名 DROP UNUSED COLUMNS;

删除表:DROP TABLE 表名;

插入数据:INSTER INTO  表名 [(列名,列名,列名……)] VALUES(值,值,值……) ;

修改数据:UPDATE  表名 SET 列名=值,列名=值,列名=值,……WHERE 更新条件表达式。

删除数据:DELETE 表名 WHERE 删除条件表达式;

表特性
1.TABLESPACE子句
当创建表时,Oracle会自动从指定的表空间中为新建的表创建一个数据段,以便为表提供存储数据的空间。用户在创建表时为表指定所处的表空间,需要在CREATE TABLE语句中用TABLESPACE子句。TABLESPACE 表空间名;为表指定表空间时,用户必须在相应的表空间中拥有足够的配额,或拥有UNLIMITED  TABLESPACE系统权限。②在Oracle中创建用户时,可以规定用户的默认表空间,TABLESPACE是可选的。③如果用户在创建用户账户时未指定其默认的表空间,并且也未使用TABLESPACE子句,则创建的表将存储在SYSTEM表空间中。将用户放在SYSTEM表空间会导致一系列问题:<1>数据库混乱。<2>空间争用。

2.STORAGE子句
当用户在Oracle中创建对象模式(如表)时,Oracle允许用户规定该对象如何使用磁盘上的存储空间,需要使用对象的存储参数来完成如果仅为表指定了表空间,而没有设置存储参数,它将自动采用所属表空间的默认存储参数设置。(但并不一定对表空间中的每个表都适合)。当表所需的存储参数与表空间的默认存储参数不同时,需要在创建表时显示指定存储参数以替换表空间的默认存储设置。

对存储参数的设置可以通过CREATE TABLE语句中的STORAGE子句来实现,在该子句中可以设置以下5个存储参数。

(1)INITIAL:指定为表中的数据分配的第一个盘区大小(KB或MB)。默认为5个Oracle数据块的大小。当为已知数量的数据建立表时,可以将INITIAL设置为一个可以容纳所有数据的容量,这样可以将表中所有数据存储在一个盘区中,以免产生碎片。

(2)NEXT:指定为存储表中的数据分配的第二个盘区大小(KB或MB)默认值为5个Oracle块大小,当表的第一个盘区被填满后,NEXT参数将控制Oracle为随后的盘区分配空间大小。

3)PCTINCREASE:从第二个盘区之后,每个盘区相对于上一个盘区的增长百分比,每次分配盘区的时候,下一个盘区的大小都要根据
PCTINCREASE比例增长,通常情况下,建议将PCTINCREASE设置为0.
(4)MINEXTENTS:指定允许为表中的数据所分配的最小盘区数目。
(5)MAXEXTENTS:指定允许为表中的数据所分配的最大盘区数目,默认值为UNLIMITED。

CREATE TABLE   Employee
( EMP_ID   NUMBER(5),name    VARCHAR2(10),Job  VARCHAR2(10),Age   NUMBER(3),DEP_ID    NUMBER(5)
) TABLESPACE USERS
  STORAGE
( INITIAL  64K
   NEXT  50K

 MINEXTENTS  1

MAXEXTENTS    unlimited

PCTINCREASE   10

);

3.设置数据块子句
对于一般不带LOB类型数据的表来说,一个数据块可存放表的多个记录行。用户可以设置的数据块空间管理参数主要有两类:

(1)PCTFREE和PCTUSED:这两个参数用于控制数据块中空闲空间的使用方法,其中PCTFREE用于控制数据块的更新预留的空间,而PCTUSED用于控制数据块在删除时释放空间的门槛。 ① PCTFREE参数为数据块中行的更新预留了空闲空间的最小百分比,默认值为10.② PCTFREE值越小,则为现行行更新所预留的空间越少,但其设置的太高,则会浪费磁盘空间,若设置的太低,会导致产生迁移记录。设置PCTFREE为20 ,说明在该表的数据段内每个数据块的20%被作为可利用的空闲空间,用于更新已在数据块内存在的数据行,其余80%用于插入新的数据行。③ PCTUSED参数设置了数据块是否空闲的界限,当数据块的使用空间低于PCTUSED的值时此数据块标志为空闲,仅用于插入新的记录。如果数据块的使用空间已经达到了由PCTFREE所确定的上限,该数据块被标示为不可用,无法插入新记录。④为表设置PCTFREE与PCTUSED参数时, 
PCTFREE与PCTUSED两个参数的值的和必须等于或小于100,一般来说,它们的和与100相差越大,对应于大多数情况来说,能够获得越高的存储效率。⑤当在实际的应用中UPDATE操作较多时,且更新操作会增加记录的大小时,可将PCTFREE值设置得大一点,而将PCTUSED值设置的比较小;当在实际的应用中使用INSERT和DELETE操作较多时,且UPDATE操作不会增加记录的大小时,可将PCTFREE参数设置的比较小,PCTUSED参数值设置得比较大。指定PCTUSED为40,则当数据块的使用空间大于或等于40%时,该数据块标示为不可用,无法插入新记录。

(2)INITRANS和MAXTRANS:这两个参数用于控制能够并发访问数据块的事务数量,同时也会影响到数据块头部的空间使用情况。在创建表时,Oracle会在表中每个数据块头部分配可以存储INITRANS个事务条目的空间(永久的)只能用于存储事务条目,当数据块的头部空间已经存储了INITRANS个事务条目后,若还有其它事务要访问这个数据块,Oracle将在数据块的空闲空间中为事务分配空间(动态的),当事务结束后,会被回收以存储其它数据。

4.重做日志子句

当使用CREATE TABLE语句创建表时,如果使用了NOLOGGING子句,则对该表的操作不会保存到日志中,这种表称为非日志记录表。而在创建表时,默认情况下使用LOGGING子句,则对表的所有操作都记录到重做日志中。【注】当使用NOLOGGING子句时,可以节省重做日志文件的存储空间,并减少创建表时所需要的时间,但如果没有在重做日志文件中记录对表的操作,可能会无法用数据库恢复操作来恢复丢失的表。

5.CACHE和NOCACHE

当oracle执行全表搜索时,读入缓存的数据块会存储在最近最少使用列表(LRU)的最近最少使用的一端,若进行查询操作,且必须向缓存中读取数据的时候,就会将这些数据块换出缓存。在创建表时,若使用了CACHE子句,则如果对其进行全表搜索时,会将读入的数据块放置到LUR中最近最常使用的一端。(不会立即换出,提高查询效率)。默认情况下使用NOCACHE子句。

数据完整性(约束)

查看所有表约束:利用视图USER_CONSTRAINTS和USER_CONS_COLUMNS.

例:SELECT   TABLE_NAME,CONSTRAINT_NAME,COLUMN_NAME FROM USER_CONS_COLUMNS;

设置默认属性:DEFAULT('默认值')在为字段设置默认值时,可以使用常数也可以使用表达式。

表约束:是Oracle提供的一种强制实现数据库完整性的机制。

列级约束:可以直接在列定义后面添加约束,列名  数据类型 CONSTRAINT 约束名  约束类型;

表级约束:也可以在末尾使用:CONSTRAINT 关键字定义约束,并指定约束的名称。CONSTRAINT 约束名 约束类型(列名); 非空约束不适用。

在Oracle系统中,可通过CONSTRAINT关键字为约束命名,若用户没有为约束指定名称,Oracle将自动为约束建立默认的名称。在定义约束时,可以通过指定ENABLE或DISABLE关键字将约束的初始状态设置为激活或禁用状态,Oracle默认约束为激活状态。
还可以使用对于创建好的表使用:ALTER TABLE 表名 ADD CONSTRAINT 约束名 约束类型(列名)。非空约束不适用。

PRIMARY KEY(主键约束):主键是表中的一列或一组列,它的值可以唯一标识一个元组(一行)。列级定义(单字段)+表级定义(多字段)。

列级定义:字段+类型+CONSTRAINT 约束名 PRIMANRY KEY ;表级定义:    CONSTRAINT 约束名 PRIMANRY KEY(字段1,字段2……);

删除表的PRIMARY KEY约束,用带有DROP CONSTRAINT的ALTER TABLE语句完成。:ALTER TABLE 表名 DROP  CONSTRAINT 约束名;

NOT NULL(非空约束):指定的列值不允许为空。ALTER 

UNIQUE KEY(唯一约束):保证除外键以外其他列数据的唯一性,一防止在列中输入重复的值。被定义为UNOQUE的字段,Oracle会自动为其建立一个唯一索引。如果在一个字段上仅定义了UNIQUE约束,而没有定义NOT NULL约束,则该字段可以包含多个NULL值。

CHECK(检查约束):  指定表中一列或多列可以接受的数据值或格式,CHECK约束是通过检查输入到表中的数据值来维护域的完整性,即检查输入的每一个数据,只有符合条件的数据才允许输入到表中。
CHECK约束的特点:
(1)在CHECK约束的表达式中,必须引用表中一个或多个字段,并且表达式的运算结果必须是一个布尔值。
(2)CHECK约束既可以在列级定义,也可以在表级定义。
(3)对于同一个字段,可以定义多个CHECK约束,而且对于同一个字段,可以定义CHECK约束和NOT NULL约束。

例:CREATE TABLE TTB1(

          USRTID   NUMBER    PRIMARY KEY,

          USERNAME  VARCHAR(40),

          USERPWD    VARCHAR(40),

         CONSTRAINT 约束名 CHECK(LENGTH(USERPED)>=6));

LENGTH()是Oracle的函数,求字符长度,使用ALTER TABLE TTB1 ADD CONSTRAINT 约束名                                                                                               CHECK(LENGTH(USERPWD)>=3 );也可以创建检查约束。  

FOREIGN KEY(约束):用于建立和加强两个表数据之间

连接的一列或多列,通过将表中的主键添加到另一个表中。创建两个表的连接。该主键就为另一个表的外键。

ALTER TABLE USER1

ADD CONSTRAINT 约束名 FOREIGN KEY (外键列名) REFERENCES 主表名(主表主键列名))

FOREIGN KEY特点:
(1)被定义了FOREIGN KEY约束的字段的取值只能为相关表中引用字段的值或NULL值。
(2)可以为一个字段定义FOREIGN KEY约束,也可以为多个字段的组合定义FOREIGN KEY约束。
(3)定义了FOREIGN KEY约束的外键字段和被引用的主键字段可以存在于同一个表中,这种情况称为“自引用”。

(4)对于同一个字段可以同时定义FOREIGN KEY约束和NOT NULL约束。

在Oracle系统中,约束具有如下两种状态:
(1)激活状态(ENABLE):在激活状态下对表进行操作时,如果操作与约束规则冲突,则操作被取消。
(2)禁用状态(DISABLE):在禁用状态下对表进行操作时,即使操作与约束规则冲突,操作也会得到执行。

一般情况下,为保证数据库在数据的完整性,表中的约束应当始终处于激活状态。默认情况下,约束的初始状态为激活状态。如果在定义约束时使用关键字DISABLE(加在约束类型后面),则约束的初始状态变为禁用状态。例:ALTER TABLE employee DISABLE UNIQUE(phone);//将phone的唯一索引变为禁用状态

ALTER TABLE employee DISABLE CONSTRINT PK_ID ;//将约束名为pk_id的约束禁用。

禁用UNIQUE约束和PRIMARY KEY约束时,Oracle默认为删除约束对应的唯一索引,而在重新激活约束时,Oracle将会自动建立唯一索引。

数据查询:SELECT  FROM 来源  WHERE  查询条件   GROUP BY  分组条件 HAVING 分组过滤 ORDER BY排序条件

定义显示标题:AS.

7.4视图


   索引:

数据库索引:对表的一列或多列进行排序的结构,索引提供指针以指向存储在表中指定列的数据值,然后根据指定的排序次序排练这些指针,数据库通过搜索索引找到特定的值,然后跟随指针到达包含该值的行。

Oracle支持以下几种索引:

  • B-树索引:是Oracle中最常用的默认的索引结构。B-树索引基于二叉树的,由分支块(导航,包含索引列范围和另一索引块的地址)和叶块(包含每个被索引列的值和行所对应的rowid)组成。
  • B-树簇索引:是专门为簇定义的索引。
  • 哈希簇索引;专门为哈希簇定义的索引。
  • 全局和本地索引:是区分索引的两种类型。
  • 反向索引:是B-树索引的一个分支。
  • 位图索引:主要用于静态数据。


rowid: oracle数据库的表中的每一行数据都有一个唯一的标识符,或者称为rowid,在oracle内部通常就是使用它来访问数据的。rowid需要 10个字节的存储空间,并用18个字符来显示。该值表明了该行在oracle数据库中的物理具体位置。可以在一个查询中使用rowid来表明查询结果中包含该值。 




猜你喜欢

转载自blog.csdn.net/sanhewuyang/article/details/79517961