Oracle讲稿Word格式文档下载.docx

上传人:b****6 文档编号:21573459 上传时间:2023-01-31 格式:DOCX 页数:27 大小:36.01KB
下载 相关 举报
Oracle讲稿Word格式文档下载.docx_第1页
第1页 / 共27页
Oracle讲稿Word格式文档下载.docx_第2页
第2页 / 共27页
Oracle讲稿Word格式文档下载.docx_第3页
第3页 / 共27页
Oracle讲稿Word格式文档下载.docx_第4页
第4页 / 共27页
Oracle讲稿Word格式文档下载.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

Oracle讲稿Word格式文档下载.docx

《Oracle讲稿Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Oracle讲稿Word格式文档下载.docx(27页珍藏版)》请在冰豆网上搜索。

Oracle讲稿Word格式文档下载.docx

从中得到必需的启动配置数据。

1.2、控制文件

控制文件是数据库实例启动之后需要经常访问的内部二进制文件。

Oracle一般有两个或者更多的控制文件,名称依次为control01.ctl、control02.ctl、…每个控制文件的内容完全相同,如果一个文件损坏,Oralce会自动使用另外一个控制文件。

如果控制文件全部损坏,Oracle将不能工作。

如果Oracle发现一个控制文件已经在Oracle系统之外被修改过,它会认为该控制文件已经损坏。

因此绝对不能手工对控制文件进行编辑。

1.3、重做日志文件

重做日志文件用于记录数据库中被改变的数据信息,以供将来可能的数据恢复操作时使用。

Oracle一般有两个或者更多的重做日志文件,名称依次为redo01.log、redo02.log、…同控制文件一样,重做日志文件也不能进行手工编辑。

1.4、数据文件

数据文件是Oracle中最主要的外存文件。

用于存放Oracle系统中绝大部分的数据信息。

Oracle中全部的用户、表、视图和索引等数据库实体都存储在数据文件上。

同数据文件密切相关的还有一个表空间的概念,表空间是一个逻辑上的外存空间,一个表空间可以由一个或多个数据文件组成。

而一个数据文件只能属于一个表空间。

有了表空间这一逻辑概念,在创建数据库实体时就不需要具体指定其物理存储位置(数据文件),只需要指定一个表空间就可以了。

事实上,Oracle也不允许用户在创建实体时指定具体的数据文件,只能指定表空间。

Oracle中的表空间主要有三类:

系统表空间、用户表空间和临时表空间。

系统表空间和临时表空间是Oracle安装之后自动创建好的。

其中系统表空间用来存放Oracle系统的数据字典,临时表空间用来存放日常工作时产生的临时数据。

在通常情况下,系统表空间名称为SYSTEM,由数据文件system01.dbf组成;

临时表空间名称为TEMP,由数据文件temp01.dbf组成。

用户表空间用于存放用户自己的数据,由用户负责创建。

名称可以在满足Oracle命名规则的前提下任意选取。

虽然系统表空间中也可以存放用户自己的数据,但建议用户数据最好全部存放在用户表空间上,以便与系统数据字典分开,减少冲突的可能性。

2、数据字典

数据字典是Oracle系统的重要组成部分。

它存放了Oracle数据库需要用到的绝大部分信息。

数据字典实质上是一些表和视图的集合,这些表和视图都存放在系统表空间SYSTEM上,用户只能以只读的方式访问,不能对其进行修改。

数据字典中主要包括了以下重要内容:

◆数据库中全部数据库实体(表、视图等)的相关信息

◆数据库当前空间使用情况

◆各类完整性约束的信息

◆数据库中用户、角色的相关信息

3、数据库实例

数据库实例是Oracle系统用来管理数据库各类处理的一组进程和内存结构的集合。

在更多的情况下,数据库实例也被叫做Oracle服务(OracleService)。

在Oracle服务没有被启动之前,用户是无法访问数据库的。

Oracle服务成功启动之后,在操作系统的后台就有一组进程在活动,同时在内存中也申请了一块特定结构的空间。

Oracle服务中最重要的后台支持进程有以下五个:

◆数据库复写器(DBWR)

DBWR负责把数据库缓冲区中发生改变的数据(脏数据)写回外存数据文件中。

是唯一一个把数据写入数据库的进程。

◆进程监控器(PMON)

PMON负责当用户会话异常结束并且用户自己没有清除会话时,执行清除工作。

失败的会话所占用的系统资源会被PMON清理并释放出来。

◆系统监控器(SMON)

SMON在Oracle服务启动时检查和修复所有的数据库文件,保证其正确和一致。

在Oracle服务正常工作时,SMON负责定时检查整个系统,找出并修复错误。

◆日志复写器(LGWR)

LGWR负责数据库文件中重做日志文件的管理,保证重做日志能够可靠高效的进行。

◆校验点(CKPT)

CKPT负责监测所有的数据库文件,保证数据库文件中保存的信息的一致性,确保数据库文件之间的同步。

常用的数据字典:

v$bgprocess查看全部的后台进程

select*fromv$bgprocesswherepaddr<

>

‘00’;

查看当前正在工作的后台进程

可以查看当前库是否异常比如如果pmon正在工作,说明存在异常的会话。

v$session查看当前全部的会话(库连接)

内存区:

SGA区(SystemGlobalArea系统全局区):

库实例启动时Oracle向操作系统申请的一块基本内存区域。

PGA区(ProgramGlobalArea进程全局区):

一个Oracle进程启动时Oracle为其分配的内存区域。

SGA区的组成:

1、共享池(SharedPool)

用于缓存最近执行过的SQL语句和PL/SQL代码段

用于缓存最近使用过的数据字典数据

由两部分组成

库缓存(LibraryCache)用于缓存语句和代码段

数据字典缓存(DataDictionaryCache)用于数据字典数据

两者的大小比例由Oracle自行管理,无法人工指定,共享池分配的合适可以加快语句执行时的速度,从而提高性能。

2、库高速缓存(DatabaseBufferCache)

缓存最近使用过的数据文件中的数据块。

库高速缓存分配的合适可以降低物理I/O的发生次数,提高数据存取的速度,从而提高性能。

3、重做日志缓存(RedoLogBuffer)

缓存库高速缓存中数据发生改变了的数据块,即脏数据。

主要用于事务回滚(Rollback)时。

分配一定的重做日志缓存可以加快事务回滚时的速度,但不需要很大,一般为CPU数目乘以128K,但最好不要低于512K。

4、大池(LargePool)

大池是一块机动内存区域,当库比较繁忙,其他内存区域不足时,可以从大池中划取内存块来使用。

大池不是SGA区的必要组成部分,但使用大池可以降低某块特定内存区域不足的出现概率,特别适合于库的使用情况不定,繁忙和空闲交替出现的场合。

5、Java池(JavaPool)

专为Java应用分配的内存区域,9i中默认值为24MB。

因为Open3000中没有使用Java应用,因此Java池使用系统默认值即可。

PGA区:

当一个会话服务进程或者一个Oracle后台进程启动时,Oracle为其分配的内存区域。

当该进程终止时,Oracle收回这部分内存区域。

一个进程的PGA区只能由该进程使用。

v$sql查看最近执行过的SQL语句

v$sgastat查看SGA区的当前状态

showparametersga

三、启动和关闭数据库

在UNIX环境下,启动和关闭数据库一般采用Oracle的Sql*plus工具。

在OPEN2000系统中,因为客户机一般不安装Oracle的客户端。

因此启动数据库的方式主要是客户机远程登录到服务器,在服务器上运行Sql*plus来启动数据库。

下面以一个实例来说明启动和关闭数据库的过程:

前提条件:

数据库名称为o2000e,数据库中存在一个用户test,密码为test000。

Test用户具有能够启动和关闭数据库的sysdba的权限,数据库处于关闭状态。

1、启动一个终端窗口,键入以下命令:

sqlplus/nolog

来启动Sql*plus。

此时会出现提示符SQL>

2、在SQL>

提示符下键入:

connecttest/test000@o2000eassysdba

连接o2000e数据库,连接成功之后,屏幕上显示Connected。

3、在SQL>

startup

启动o2000e数据库,启动数据库一般需要十几秒的时间,启动成功之后,屏幕上会显示o2000e数据库的一些空间分配信息,此时数据库就可以正常使用了。

一些说明:

第1步的/nolog参数表示只启动Sql*plus,不进行连接。

如果不加这个参数的话,就需要依次输入用户名,密码,数据库名和连接身份。

不如在第2步中用connect命令一次全部输入来得方便。

第2步的assysdba参数表示test用户的连接身份为数据库管理员,该参数必须要加,否则第3步的startup命令就会因为权限不足而无法启动数据库。

除了通过终端窗口启动数据库之外,利用Oracle的Sql*plus工具和DBAStudio工具也可以进行启动数据库的操作。

其中Sql*plus同终端窗口一样采用命令行方式。

步骤也相同。

而DBAStudio采用图形界面,操作比较简单直观,但速度较慢。

要关闭数据库,需要用到shutdown命令。

接着上面的例子,在SQL>

shutdownimmediate

关闭o2000e数据库,关闭数据库也需要十几秒的时间,关闭成功之后,屏幕上显示相关提示信息,此时数据库被正常关闭。

Shutdown命令具有四种参数

Normal:

等待所有已连接的会话session主动退出之后再关闭数据库。

Immediate:

等待所有已连接的会话执行完当前的SQL语句之后关闭数据库。

Transaction:

等待所有已连接会话执行完当前事务之后关闭数据库。

Abort:

不做任何等待,立刻关闭数据库。

其中Normal参数一般不用,因为需要等待其他用户主动退出,因此何时关闭数据库是无法预料的。

一般经常使用的是immediate和transaction参数。

对OPEN2000系统来说,因为没什么用户自定义的处理,因此使用immediate参数来关闭数据库就可以了。

需要特别提醒的是,轻易不要用abort参数来关闭数据库,使用abort参数时,因为数据库被立刻关闭,如果此时有用户正进行数据更新操作,数据库中的内容将无法预料。

只用当数据库已经崩溃,无法正常关闭时,才使用abort参数来强制关闭数据库,就像电脑上只用死机时才按reset键一样。

同样,利用Oracle的Sql*plus工具和oemappconsole工具也可以进行关闭数据库的操作。

最后总结一下启动和关闭数据库需要注意的3个地方。

1、连接数据库时必须加assysdba参数,否则无法启动数据库。

2、关闭数据库时使用immediate或transaction参数,切勿使用abort参数。

3、在关闭服务器之前,如果数据库还未关闭,一定要先关闭数据库,再关闭服务器。

否则可能导致数据库中数据无法预料。

四、SQL语言入门

1SQL的概念

结构化查询语言(StructureQueryLanguage)是目前主流数据库(Oracle,Sybase,SQLServer等)使用的一种命令式语言。

每种数据库支持的SQL语言都有各自的变化,这里介绍Oracle支持的SQL语言。

SQL语言的作用是

a、查询、添加、修改和删除数据库中的各类数据;

b、创建、修改和删除各类数据库对象;

(对象是Oracle中的一个术语,对象是数据库中能够存放数据的事物,比如表和视图就是两种最常见的对象,索引、过程、函数和触发器等也是对象)

c、进行各类访问数据库数据和系统的操作。

比如上面启动和关闭数据库的操作就属于这一类。

Connect、startup和shutdown实际上都是SQL命令。

Exitshowusershowparameter

SQL语言是外部程序或操作人员同Oracle数据库的唯一联系方法,虽然目前很多图形用户界面常常使用户无法看到SQL的命令,但实际上在界面底下,外部程序还是使用SQL语言同Oracle打交道的。

2SQL的类型

SQL语言主要分两大类:

DDL(数据定义语言)和DML(数据操纵语言)。

i.DDL语言

DDL语言用来创建、修改和删除各类数据库对象自身,最常见的DDL语言中的命令是Create(创建)、Alter(修改)和Drop(删除)命令,TRUCATE截去整表。

不可撤销

ii.DML语言

DML语言用来查询、添加、修改和删除数据库中各类对象中存放的数据,最常见的DML语言中的命令是Select(查询)、Insert(添加)、Update(修改)和Delete(删除)。

回滚rollback和提交commit

3SQL语言支持的常用数据类型和定义格式

每种数据库的SQL语言所支持的数据类型格式都不一样,这里只介绍Oracle中的数据类型和定义格式。

Oracle中的数据格式不区分大小写。

i.定长字符串

定义格式:

char(n)n为字符串长度n<

=2000

说明:

定长字符串的最大支持长度为2000,如果字符长度小于定义的长度,自动在末尾添加空格;

如果不指定长度,默认为1。

实例:

namechar(5)定义了一个最多能够存储5个字符的对象name。

如果要利用其存储四个字符的字符串”hawk”,那么name中实际存储的是”hawk“加一个空格。

仍然占用5个字符的存储空间。

ii.变长字符串

varchar2(n)n为字符串最大的长度n<

=4000

变长字符串的最大支持长度为4000,没有默认值,必须指定长度。

namevarchar2(5)定义了一个最多能够存储5个字符的对象name。

同定长字符串不同的是,利用name存储字符串”hawk”只会占用4个字符的存储空间。

定长串费空间,查询快变长串省空间,查询慢

iii.数字型数据

number(p,s)p-s为数据的整数部分最大长度,s为数据的小数部分最大长度,如果不指定p或s,则由Oracle根据要存储的数据自动确定。

0<

p<

=380<

=s<

=12p>

=s

Oracle统一使用关键字number来定义一切可能的数字型数据,这导致了number的使用方法很灵活。

anumber(7,2)a对象中可以存储的数字最多具有5(7–2=5)位整数位,2位小数位。

12345.67可以精确的存储在a中;

12345.678在a中被存为12345.68;

123456因为有6个整数位,无法存储在a中。

-99999.99+99999.99

补充:

因为number的使用方法过于灵活,容易出错,在实际使用时通常比照一些常用的数字型类型定义来确定p和s的值。

而不是随便指定。

下面是一些常用的数字类型同number类型的对照关系表

NUMBER(3)

Unsignedchar

1BYTE整数,-999-999

NUMBER(5)

Short短整型

2BYTES整数,-99999-99999

NUMBER(10)

int

4BYTES整数

NUMBER(22,6)

float

单精浮点数

NUMBER(38,12)

double

双精浮点数

我们在定义number型数据时,p和s的值按照上表来取,就不容易出错了。

iv.日期型数据

date

日期型数据的定义很简单,访问日期型数据则需要用到SQL语言的系统函数to_date。

birthdaydate定义了一个日期型的对象birthday。

如果要将”2003-8-1912:

00:

00”这个时间存储在birthday中,要用到to_date函数:

birthday=to_date(‘03-8-1914:

00’,‘yy-mm-ddhh24:

mi:

ss’)

Oracle中yyyy表示年,mm表示月,dd表示日,hh24表示小时,mi表示分钟,ss表示秒。

‘yyyy-mm-ddhh24:

ss’为格式匹配字符串,Oracle按照格式匹配字符串中的格式去得到‘2003-8-1912:

00’中存储的时间数据。

4SQL语言中常用的操作符

操作符中的英文不区分大小写。

i.算术操作符

加减乘除+-*/

ii.比较操作符

等于=不等于!

=或<

或^=小于<

大于>

小于等于<

=大于等于>

=

在A和B之间betweenAandB双闭区间不在A和B之间notbetweenAandB

iii.集合操作符

属于in不属于notin存在exists不存在notexists类似like

(说明:

这里like操作符支持两种通配符%和_,%*可匹配0到多个长度的字符串,_?

匹配单个字符。

比如:

”ha%”可以与”ha”、”haw”或”hawk”匹配,而”ha_”只能匹配”haw”。

iv.逻辑操作符

与AND或OR取反NOT是否为空IS[NOT]NULL

优先级:

算术>

比较>

集合>

逻辑可以用()来改变优先级顺序

空值同任何数字进行任何运算,结果均为false或0

5常用DDL命令的使用

DDL命令中的英文不区分大小写

i.建表语句

建表语句的作用是在数据库中新建一张关系表。

建表语句语法:

Createtable表名(

第一个域的定义语句,

[第二个域的定义语句,

……………………

第N个域的定义语句])

中括号[]中的内容为可选项,创建新表时,至少应包含一个域。

可以为该表显式指定表空间,也可以使用当前的默认表空间。

域定义语句语法:

域名数据类型[DEFAULT缺省值][[NOT]NULL][域上的约束]

约束是Oracle中的术语。

简单说来,在某些域上建立约束,就是在这些域上建立了一种存储数据时的限制规则。

比如,我们有一张职员信息表,上面有”职员ID”和”职员性别”两个表域。

显然,不能有两个相同的职员ID,职员性别也只能在”男女”中选一个。

为了能在职员信息表中反映出这两种限制,就要在职员ID和职员性别这两个表域上建立约束。

Oracle支持的约束有四类:

i、主键约束(PrimaryKey)

主键约束所在的域中存储的数据必须具有唯一的非空值。

在上面的例子中,因为每个职员必须有自己的ID,而且不能与其他人相同。

这样就可以在”职员ID”域上建立主键约束来反映这种限制规则。

一张表只能有一个主键约束。

ii、唯一约束(Unique)

唯一约束也要求所在域中存储的数据必须具有唯一性。

它同主键约束的区别是:

唯一约束不要求数据必须为非空值。

比如,在职员信息表中还有一个表域”职员电话”。

不一定要求每个职员都有电话,但有电话的职员之间的电话号码一定不能相同。

这样就可以在””职员电话”域上建立唯一约束来反映这种限制规则。

iii、范围约束(Check)

范围约束要求所在域中存储的数据必须在某一范围内。

比如,在正常情况下,”职员性别”域中的数据只能是”男女”中的一个,这样就可以在”职员性别”域中建立范围约束来反映这种限制规则。

iv、外键约束(ForeignKey)

外键约束用来反映两张表之间的限制规则。

比如我们另外有一张职员薪资表,上面也有一个”职员ID”域。

显然,在职员薪资表的”职员ID”域中存储的职员ID必须是在职员信息表中已经有的职员ID。

否则就说明有人在冒领工资了。

这样就可以在职员薪资表的”职员ID”域和职员信息表的”职员ID”域之间建立外键约束来反映这种限制规则。

可以在多个域上建立一个约束。

还是以上面的例子来说明,在职员信息表中还有一个”职员部门”域。

假如公司有这样的规定:

不同部门之间的职员,ID号可以重复。

只要同一部门的职员ID不同就可以了。

这时,就需要在”职员部门”和”职员ID”两个域上建立主键约束来反映这种限制规则。

下面是一个综合的实例:

CreatetableT(

PK_TESTnumber(10),

UNK_TEST1varchar2(10)notnull,

UNK_TEST2varchar2(10),

CK_TESTnumber(3)default100,

FOR_DELnumber(3),

ConstraintPK_TTTPRIMARYKEY(PK_TEST),

ConstraintUNK_TTTUNIQUE(UNK_TEST1,UNK_TEST2),

ConstraintCK_TTTCHECK(99<

=CK_TEST)

表T具有五个表域,一个主键约束PK_TTT,一个唯一约束UNK_TTT,一个范围约束CK_TTT。

表域UNK_TEST1为非空域,表域CK_TEST具有缺省值100。

ii.修改表语句

表的修改需要用到Alter命令。

1.增加新的表域

使用Altertable命令中的ADD关键字向表中添加一个新域

AltertableTADD(FK_TESTnumber(10)notnull);

上面的语句为表T添加了一个新的非空域FK_TEST。

2.修改域的属性

使用A

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 财会金融考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1