当前位置:文档之家› Oracle讲稿

Oracle讲稿

Oracle讲稿
Oracle讲稿

Oracle基础知识讲义

一、绪论

结合Open2000系统的实际操作环境,本讲义主要讲解以下在OPEN2000系统中经常会用到的内容:

1、Oracle数据库结构简介

简要介绍Oracle数据库系统内部的结构原理及其相互关系。

2、启动和关闭数据库

介绍启动和关闭Oracle数据库的常用方式以及需要注意的事项。

3、SQL语言入门

概要介绍Oracle中的专用SQL语言Sql*plus的基本概念,数据类型、常用语句、常用对象。不准备介绍事务、触发器和Sql*plus中的编程语言PL/SQL。

4、Sql*plus编辑工具的使用

介绍Oracle中用于输入和运行SQL语句的操作环境——Sql*plus的使用。

5、Oracle的用户管理简介

简单介绍Oracle中用户和用户权限的基本概念,以及如何在Oracle中创建、修改和删除用户。

6、使用Oracle的导出实用程序

简单介绍利用O racle的导出实用程序exp进行数据备份的常用方法和注意事项。

7、使用Oracle的导入实用程序

简单介绍如何利用Oracle的导入实用程序imp对通过exp工具备份好的数据进行恢复。

二、Oracle数据库结构

Oracle数据库是个极其复杂的软件系统。为了给以后章节打好基础,本章简要介绍Oracle数据库系统结构。

从最大的层次上,Oracle数据库系统可以分成以下三部分:

a、数据库文件(Database Files)

b、数据字典(Data Dictionary)

c、数据库实例(Oracle Instance)

数据库文件是Oracle中需要用到的一系列外存文件的统称,这里外存可以是硬盘、阵列或磁带。

数据字典用于存放Oracle系统本身所需要用到的有关信息,比如目前数据库中注册了多少用户,创建了多少表,占用了多少空间等等。因为数据字典中保存的信息非常重要,因此用户只能以只读的方式访问数据字典,而不能对其进行修改。

数据库实例实际上就是我们通常所说的数据库管理系统(DBMS),它由一组进程和内存中的一些结构组成。用于完成数据库不同的处理需要。

1、数据库文件

数据库文件是个物理概念,对应于操作系统中实际存在的文件,主要包括初始化参数文件、数据文件、控制文件和重做日志文件等。

1.1、初始化参数文件

初始化参数文件——initsid.ora,用于存储Oracle系统中的绝大多数配置参数。它是一个文本文件,可以进行手工编辑修改。

顾名思义,初始化参数文件主要供数据库实例启动时访问。从中得到必需的启动配置数据。

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 * from v$bgprocess where paddr <> …00?; 查看当前正在工作的后台进程可以查看当前库是否异常比如如果pmon正在工作,说明存在异常的会话。

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

内存区:

SGA区(System Global Area 系统全局区):库实例启动时Oracle向操作系统申请的一块基本内存区域。

PGA区(Program Global Area 进程全局区):一个Oracle进程启动时Oracle 为其分配的内存区域。

SGA区的组成:

1、共享池(Shared Pool)

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

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

由两部分组成

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

数据字典缓存(Data Dictionary Cache)用于数据字典数据

两者的大小比例由Oracle自行管理,无法人工指定,共享池分配的合适

可以加快语句执行时的速度,从而提高性能。

2、库高速缓存(Database Buffer Cache)

缓存最近使用过的数据文件中的数据块。库高速缓存分配的合适可以降

低物理I/O的发生次数,提高数据存取的速度,从而提高性能。

3、重做日志缓存(Redo Log Buffer)

缓存库高速缓存中数据发生改变了的数据块,即脏数据。主要用于事务

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

4、大池(Large Pool)

大池是一块机动内存区域,当库比较繁忙,其他内存区域不足时,可以

从大池中划取内存块来使用。大池不是SGA区的必要组成部分,但使用

大池可以降低某块特定内存区域不足的出现概率,特别适合于库的使用

情况不定,繁忙和空闲交替出现的场合。

5、Java池(Java Pool)

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

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

PGA区:

当一个会话服务进程或者一个Oracle后台进程启动时,Oracle为其分配

的内存区域。当该进程终止时,Oracle收回这部分内存区域。一个进程的PGA 区只能由该进程使用。

常用的数据字典:

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

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

show parameter sga

三、启动和关闭数据库

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

在OPEN2000系统中,因为客户机一般不安装Oracle的客户端。因此启动数据库的方式主要是客户机远程登录到服务器,在服务器上运行Sql*plus来启动数据库。

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

前提条件:

数据库名称为o2000e,数据库中存在一个用户test,密码为test000。Test 用户具有能够启动和关闭数据库的sysdba的权限,数据库处于关闭状态。

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

sqlplus /nolog

来启动Sql*plus。此时会出现提示符SQL>

2、在SQL>提示符下键入:

connect test/test000@o2000e as sysdba

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

3、在SQL>提示符下键入:

startup

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

一些说明:

第1步的/nolog参数表示只启动Sql*plus,不进行连接。如果不加这个参数的话,就需要依次输入用户名,密码,数据库名和连接身份。不如在第2步中用connect 命令一次全部输入来得方便。

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

除了通过终端窗口启动数据库之外,利用Oracle的Sql*plus工具和DBA Studio工具也可以进行启动数据库的操作。其中Sql*plus同终端窗口一样采用命令行方式。步骤也相同。而DBA Studio采用图形界面,操作比较简单直观,但速度较慢。

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

接着上面的例子,在SQL>提示符下键入:

shutdown immediate

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

Shutdown命令具有四种参数

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

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

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

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

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

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

需要特别提醒的是,轻易不要用abort参数来关闭数据库,使用abort参数时,因为数据库被立刻关闭,如果此时有用户正进行数据更新操作,数据库中的内容将无法预料。只用当数据库已经崩溃,无法正常关闭时,才使用abort参数来强制关闭数据库,就像电脑上只用死机时才按reset键一样。

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

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

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

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

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

闭服务器。否则可能导致数据库中数据无法预料。

四、SQL语言入门

1SQL的概念

结构化查询语言(S tructure Q uery L anguage)是目前主流数据库(Oracle,Sybase,SQLServer等)使用的一种命令式语言。每种数据库支持的SQL 语言都有各自的变化,这里介绍Oracle支持的SQL语言。

SQL语言的作用是

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

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

(对象是Oracle中的一个术语,对象是数据库中能够存放数据

的事物,比如表和视图就是两种最常见的对象,索引、过程、函

数和触发器等也是对象)

c、进行各类访问数据库数据和系统的操作。比如上面启动和关闭数

据库的操作就属于这一类。Connect、startup和shutdown实际上

都是SQL命令。Exit show user show parameter 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。

实例:

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

如果要利用其存储四个字符的字符串”hawk”,那么name中实际存储

的是”hawk“加一个空格。仍然占用5个字符的存储空间。

ii.变长字符串

定义格式:varchar2(n) n为字符串最大的长度n <= 4000

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

长度。

实例:

name varchar2(5)定义了一个最多能够存储5个字符的对象name。同定长字符串不同的是,利用name存储字符串”hawk”只会

占用4个字符的存储空间。

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

iii.数字型数据

定义格式:number(p, s)p-s为数据的整数部分最大长度,s为数

据的小数部分最大长度,如果不指定p或s,则由Oracle根据要存储

的数据自动确定。0=s

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

实例:

a number(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型数据时,p和s的值按照上表来取,就不容易

出错了。

iv.日期型数据

定义格式:date

说明:日期型数据的定义很简单,访问日期型数据则需要用到SQL

语言的系统函数to_date。

实例:birthday date 定义了一个日期型的对象birthday。如果要

将”2003-8-19 12:00:00”这个时间存储在birthday中,要用到to_date

函数:

birthday = to_date(…03-8-19 14:00:00?, …yy-mm-dd hh24:mi:ss?)

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

…yyyy-mm-dd hh24:mi:ss?为格式匹配字符串,Oracle按照格式匹配字符串中的格式去得到…2003-8-19 12:00:00?中存储的时间数据。

4SQL语言中常用的操作符

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

i.算术操作符

加减乘除+ - * /

ii.比较操作符

等于=不等于!=或<>或^=小于<大于>小于等于<=大于等于>=

在A和B之间between A and B 双闭区间不在A和B之间not between

A and B

iii.集合操作符

属于in 不属于not in存在exists不存在not exists 类似like

(说明:这里like操作符支持两种通配符%和_,% * 可匹配0到多个长度的字符串,_ ?匹配单个字符。比如:”ha%”可以与”ha”、”haw”

或”hawk”匹配,而”ha_”只能匹配”haw”。)

iv.逻辑操作符

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

优先级: 算术>比较>集合>逻辑可以用( )来改变优先级顺序

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

5常用DDL命令的使用

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

i.建表语句

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

建表语句语法:

Create table 表名(

第一个域的定义语句,

[第二个域的定义语句,

……………………

第N个域的定义语句])

中括号[]中的内容为可选项,创建新表时,至少应包含一个域。可以为该表显式指定表空间,也可以使用当前的默认表空间。

域定义语句语法:

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

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

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

两个表域。显然,不能有两个相同的职员ID,职员性别也只能在”

男女”中选一个。为了能在职员信息表中反映出这两种限制,就要

在职员ID和职员性别这两个表域上建立约束。

Oracle支持的约束有四类:

i、主键约束(Primary Key)

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

上面的例子中,因为每个职员必须有自己的ID,而且不能

与其他人相同。这样就可以在”职员ID”域上建立主键约束

来反映这种限制规则。

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

ii、唯一约束(Unique)

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

主键约束的区别是:唯一约束不要求数据必须为非空值。比

如,在职员信息表中还有一个表域”职员电话”。不一定要求

每个职员都有电话,但有电话的职员之间的电话号码一定不

能相同。这样就可以在””职员电话”域上建立唯一约束来反

映这种限制规则。

iii、范围约束(Check)

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

如,在正常情况下,”职员性别”域中的数据只能是”男女”

中的一个,这样就可以在”职员性别”域中建立范围约束来反

映这种限制规则。

iv、外键约束(Foreign Key)

外键约束用来反映两张表之间的限制规则。比如我们另外有

一张职员薪资表,上面也有一个”职员ID”域。显然,在职

员薪资表的”职员ID”域中存储的职员ID必须是在职员信息

表中已经有的职员ID。否则就说明有人在冒领工资了。这

样就可以在职员薪资表的”职员ID”域和职员信息表的”职员

ID”域之间建立外键约束来反映这种限制规则。

可以在多个域上建立一个约束。还是以上面的例子来说明,在职员信息表中还有一个”职员部门”域。假如公司有这样的规定:不同部门之间的职员,ID号可以重复。只要同一部门的职员ID不同就可以了。这时,就需要在”职员部门”和”职员ID”两个域上建立主键约束来反映这种限制规则。

)

下面是一个综合的实例:

Create table T (

PK_TEST number(10) ,

UNK_TEST1 varchar2(10) not null,

UNK_TEST2 varchar2(10),

CK_TEST number(3) default 100,

FOR_DEL number(3),

Constraint PK_TTT PRIMARY KEY(PK_TEST),

Constraint UNK_TTT UNIQUE(UNK_TEST1,UNK_TEST2),

Constraint CK_TTT CHECK(99 <=CK_TEST)

)

表T具有五个表域,一个主键约束PK_TTT,一个唯一约束UNK_TTT,一个范围约束CK_TTT。表域UNK_TEST1为非空域,表域CK_TEST具有缺省值100。

ii.修改表语句

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

1.增加新的表域

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

Alter table T ADD(FK_TEST number(10) not null);

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

2.修改域的属性

使用Alter table命令中的MODIFY关键字向表中添加一个新域Alter table T MODIFY(UNK_TEST2 varchar2(20));

上面的语句将域UNK_TEST2的长度增加为20个字符。

3.删除一个域

使用Alter table命令中的DROP关键字从表中删除一个域

Alter table T DROP COLUMN FOR_DEL;

上面的语句将域FOR_DEL从表T中删除。

iii.删表语句

使用语句DROP TABLE来删除一个表。表删除之后无法恢复,因此DROP TABLE命令必须小心使用。

DROP table T;

上面的命令将删除表T以及T中的全部数据。

iv.与索引管理有关的语句

索引是Oracle数据库中一种特殊的对象,它的主要目的是加快数据的读取速度。在表中适当添加索引可以提高检索效率。

使用CREATE INDEX 语句建立索引。

Create unique index index_1 ON T (FK_TEST);

上面的语句在表T的FK_TEST域上建立了索引index_1。

使用ALTER INDEX命令改变索引名称

Alter index index_1 RENAME TO new_index_1;

上面的语句将索引index_1的名称改为new_index_1。

使用DROP INDEX命令删除索引

Drop index new_index_1;

上面的命令删除索引new_index_1。

v.与视图管理有关的语句

视图实际上是存储在数据库中的查询语句。用户可以像访问表那样来访问视图。

视图的主要作用是

1.可以阻止用户察看表中的全部数据,增加数据库的安全性。

2.可以封装一些复杂的查询语句,方便用户使用。

使用语句CREATE OR REPLACE VIEW来创建视图,REPLACE 参数表示如果视图已经存在,将覆盖其原有定义。

Create or replace view view_t

AS

Select PK_TEST, FK_TEST from T;

上面的语句创建了视图view_t,该视图只包含表t的PK_TEST和FK_TEST域,其他的域则被隐藏起来。

修改视图的语句也是CREATE OR REPLACE VIEW。

Create or replace view view_t

AS

Select PK_TEST, FK_TEST, CK_TEST from T;

上面的语句更新了视图view_t的定义,现在view_t中包含了表t的三个域了。

使用语句DROP VIEW 删除视图

Drop view view_t;

上面的命令删除了视图view_t。

6常用DML命令的使用

i.与查询数据有关的语句

Oracle使用SELECT语句从数据库查询数据。

Select语句的常用格式如下:

SELECT column_list

FROM table_list

WHERE conditions

ORDER BY column_list

Column_list 表示希望查看的表域,对于单张表,使用*号来表示该表的全部表域。Table_list 表示包含column_list的全部表。Conditions指定了一个条件,使得select语句只返回满足该条件的值。ORDER BY column_list 指定了将select 语句返回的结果按照column_list排序。

1.单张表的查询

下面语句

Select * from T;

返回表T中的全部数据,注意这里*表示察看表T的全部表域

上面的语句等价于

Select PK_TEST,UNK_TEST1,UNK_TEST2,FK_TEST,CK_TEST from T;

很明显使用*比较方便。

如果不想返回全部数据,可以通过WHERE子句和SELECT 的域列表限制条件。

下面语句

Select PK_TEST,FK_TEST from T where PK_TEST < 10;

只返回PK_TEST小于10的数据行的PK_TEST和FK_TEST表域。

可以使用ORDER BY来排序结果,使其更具有可读性Select * from T ORDER BY PK_TEST; 按照PK_TEST的升序排序结果Select * from T ORDER BY PK_TEST DESC;按照降序排序结果。

2.从多张表中查询数据

从多张表中查询数据需要用到连接操作。

假定有以下两张表:

表name_id

name id

marry 1

tom 2

mike 3

表id_score

id score

186

278

369

现在希望同时得到名称和分数,需要使用以下查询

Select name_https://www.doczj.com/doc/bc11608037.html,, id_score.score

From name_id, id_score

Where name_id.id = id_score.id;

上面的查询语句中,带波浪线的部分就是一个连接操作。它表示查询结果应该满足表name_id和表id_score的”id”域域值相等。上面

的语句在域名前加了表前缀(表名+ ‘.’ + 域名),这是为了区分两张

表中名称相同的域,比如name_id.id表示表name_id的域id,而id_score.id则表示表id_score的域id。

另外,上面的语句较长,不利于阅读,可以通过使用表别名的方法来减少语句的长度。上面的语句等价于:

Select https://www.doczj.com/doc/bc11608037.html,, b.score

From name_id a, id_score b

Where a.id = b.id;

这里分别为表name_id和id_score取了别名a和b。使用别名的唯一目的就是为了减少语句长度,方便阅读。

3.嵌套查询简介

嵌套查询指在一个大查询中嵌套一个小查询,大查询使用小查询的结果作为限制条件。嵌套查询是SQL语言中一块很复杂的部分,这里不打算详细介绍,只举一个实例来说明一下:

Select constraint_name, table_name from user_constraints

Where r_constraint_name IN

(

Select constraint_name from user_constraints

Where constraint_type='P' and

(table_name='MNG_NODE_INFO'

)

) and constraint_type = ‘R’;

上面的语句用来查询表name_id上被其他表所引用的全部外键和这些外键所在的表名。

上面的例子中,带波浪线的部分是一个小查询,它返回的结果为表sys_table_info和bay_info的全部主键。大查询中的WHERE子句引用小查询的结果,使用了集合操作符IN,表示大查询的SELECT 语句将返回所有表user_constraints的r_constraint_name域在小查询结果之内的数据行。

ii.在表中添加数据的语句

使用INSERT INTO命令为表中添加新数据。

Insert into T values(1,’hawk’,’limin’,102,1);

上面的语句在表T中添加了一行新数据。

INSERT INTO命令也可以使用子查询的结果作为返回值

看下面的例子:

Create table exp_test(col1 number(3));

Insert into exp_test values(1);

上面的语句创建了一张只有一个域的表exp_test,并在其中添加了一行数据: 1。

现在,使用以下命令:

Insert into exp_test

Select * from exp_test;

将发现,上面的命令每执行一次,exp_test中的数据行将以1,2,4,8,16,32,…..的速度增加。第一次执行时,Select * from exp_test返回一行数据,Insert into在exp_test插入一行,此时exp_test中有两行数据,第二次执行时,Select * from exp_test返回两行数据,Insert into 将在exp_test中插入两行,此时exp_test中有了四行数据,以此类推。

在OPEN2000系统中,可能会经常需要从一张表复制数据到另一张表。这里就稍微详细介绍一下表间数据复制的方法。

首先讲一下在两张结构完全相同的表之间如何复制数据,假设表T1和T2结构相同,现在想把T1的数据复制到T2中,可以通过如下SQL 语句实现:

Insert into T2 select * from T1;

如果表的结构不同,或者只想复制特定的表域,这时就必须显式的指明需要复制的表域。假设数据库中存在以下两张表:

OLD_FAC_INFO

NEW_FAC_INFO

现在想把表old_fac_info中fac_id表域的内容复制到new_fac_info中的new_id表域,把fac_name表域的内容复制到new_name表域,把vlty_id 表域的内容复制到vlle_id表域。需要以下SQL语句:

Insert into new_fac_info(new_id,new_name,vlle_id)

Select fac_id,fac_name,vlty_id from old_fac_info;

需要注意各表域的先后顺序不能颠倒。

iii.修改表中数据的语句

使用UPDATE 语句修改表中的数据。

下面的语句

Update T set FK_TEST=2 Where PK_TEST=1;

将表T中PK_TEST=1的数据行的FK_TEST域值修改为2。

注意where 子句的使用,如果不加WHERE子句,update语句将修改表中的全部数据行,这可能引起很大的麻烦。

iv.删除表中数据的语句

使用DELETE语句删除表中的数据。

下面的语句

Delete from T Where PK_TEST=1;

将表中PK_TEST=1的数据行删除。

这里WHERE子句的使用更须注意,如果不加的话,Delete from T 将删除表T的全部数据。

五、Sql*plus的使用

Sql*plus是一个允许输入和执行SQL语句和PL/SQL程序的交互式工具。

利用Sql*plus,用户可以生成简单的报表,启动和关闭数据库,进行数据库的导入和导出,查询数据库中的各类信息,创建表,视图,触发器等各类数据库对象。

1启动和关闭Sql*plus

实际上在上面的启动数据库中已经提到了如何在数据库关闭的情况下登录数据库。

在数据库已经启动的情况下利用Sql*plus登录数据库就更简单了,只需要启动一个终端窗口,然后键入以下命令:

sqlplus test/test000@o2000e

此时将出现提示符SQL>。用户test已经登录到数据库o2000e上,可以

对其操作了。

要关闭Sql*plus,只需要在SQL>提示符下键入exit 就可以退出Sql*plus环境,回到UNIX的终端窗口。

需要特别注意的是,此时test用户虽不再连接到数据库o2000e上,但数据库本身仍处于启动状态。此时如果要关闭服务器,一定要再次登

录到数据库,然后将其关闭,才能关闭服务器。

2Sql*plus的行编辑命令

Sql*plus的输入区本身是一个简单的文本编辑器,具有一些基本的行编辑命令:

L:列出当前缓冲区中的全部内容

L n:列出当前缓冲区中的第n行内容

L n m:列出当前缓冲区中的第n至m行内容

C/x/y:把当前行中第一次出现的字符x换成字符y

DEL:删除当前行

DEL n:删除第n行

DEL n m:删除第n至m行

I:在当前行下插入一个新行

A text:在当前行的末尾添加文本

/:执行缓冲区中的内容

如果用户输入的内容不多,使用上面的命令一般能够满足需要。否则可以利用Sql*plus的EDIT命令调用外部文本编辑器来进行编辑工作。在UNIX 下的默认编辑器一般为vi,Windows下是写字板。

下面以一个实例来说明EDIT命令的使用

在SQL>提示符下键入:

SQL>edit

屏幕显示Wrote file afiedt.buf,同时启动vi编辑器窗口,此时当前缓冲区的内容显示在vi中,如果用户不需要,可以将其删除。

然后用户就可以利用vi来编辑语句,编辑完成之后,保存并退出vi,此时用户编辑的内容被装入缓冲区中并显示在屏幕上。

最后,用户只需简单键入”/”即可执行编辑好的语句了。

利用外部编辑器要比使用行编辑命令方便,尤其适用于长语句的情况。

3输入和执行SQL语句

当Sql*plus遇到以下两种情况时,会认为用户输入的SQL语句已经结束,可以执行了。

i.在一行的结束处使用”;”

ii.在单独一行的开始使用”/”

需要注意的是,这两种方式不能一起使用,比如:

SQL> select * from a;

SQL> select * from a

2>/

是正确的格式,而

SQL> select * from a;/

则不正确。

对于上面利用外部编辑器的情况,因为使用的是第二种方式,所以编辑内容的最后不能加分号。

六、Oracle的用户管理简介

Oracle的用户管理直接关系到数据库的安全,本身是很复杂的,这里只是简单介绍一下一些相关的概念,以及与创建和管理用户有关的常用SQL 命令。

1创建新用户

创建用户的SQL命令是create user。在创建用户之前,首先要确定以下

几点:

i.决定用户的初始口令

ii.给新用户分配一个默认表空间

iii.给新用户分配一个临时表空间

iv.确定用户能够使用的默认表空间最大容量

之后就可以创建新用户了。

在数据库已经启动的情况下,在UNIX终端窗口下键入

sqlplus test/test000@o2000e

进入Sql*plus的命令行界面。在SQL>提示符下输入以下SQL命令:create user hawk identified by hawk

default tablespace open_data

temporary tablespace open_temp

quota 10M on open_data;

这条SQL语句创建了一个名为hawk的新用户,

关键字identified by指定了hawk用户的初始密码为hawk,

关键字default tablespace指定了默认表空间为open_data,

关键字temporary tablespace 指定了临时表空间为open_temp,

关键字quota指定了hawk用户在表空间open_data上的使用限额,关键字unlimited表示无限制。只要open_data上还有剩余空间,hawk用户就可以使用。

2改变用户设置

使用alter user 命令可以更改现有用户的密码,默认表空间,临时表空间,空间分配等用户配置。

命令

Alter user hawk identified by new_hawk;

将hawk用户的密码更改为new_hawk。

命令

Alter user hawk default tablespace system;

将hawk用户的默认表空间改为system。

命令

Alter user hawk temporary tablespace system;

将hawk用户的临时表空间改为system。

命令

Alter user hawk quota 50M on system;

将hawk用户在system表空间的配额改为50M。

3授予和撤销用户权限

给用户授予权限,使用grant命令。

下面是一些常用的权限列表:

create session

允许用户同数据库建立连接,是一个最基本的权限

create table

允许用户创建表

create view

允许用户创建视图

create procedure

允许用户创建过程、函数或程序包

create trigger

允许用户建立触发器

connect

相当于create session权限和一系列create权限的并集,是最常用到的权限。

对于我们上面建立的新用户hawk,现在连最基本的create session权限也没有,此时执行

connect hawk/hawk@o2000e

会显示当前用户权限不足,无法连接的错误信息。

因此,我们创建一个新用户之后,要首先执行以下命令:

Grant connect to hawk;

使其具有connect 权限,现在再执行命令

connect hawk/hawk@o2000e

就可以hawk用户的身份连接到数据库了。

Connect 权限也使得hawk用户可以创建表、视图、触发器、过程等一系列的数据库对象。

撤销用户已经分配的权限,使用revoke命令。用法同grant基本相同,只是将关键字to改为from。

命令Revoke connect from hawk;

将撤销hawk用户的connect权限,此时hawk用户无法连接到数据库。

4删除用户

删除已有的用户使用drop user 命令。如果要删除的用户“一无所有”,没有任何数据库对象,直接使用

Drop user 用户名;

就可将其删除。

如果待删除用户含有表或视图等数据库对象,此时需要加上关键字cascade将用户所属的全部对象和用户本身一起删除。

假定hawk用户具有两张表test1和test2,以下命令执行之后

Drop user hawk cascade;

会将表test1和test2以及hawk用户本身一起删除。

使用drop命令删除的数据无法恢复,因此一定要小心使用。

假如在open2000的数据库中不小心执行了以下语句:

Drop user test cascade;

那么后果将十分严重。

一些有用的SQL语句

1、查找全部没有主键的数据表

select table_name from user_tables //当前库中的全部表

minus //集合减严格匹配

select table_name from user_constraints where constraint_type = 'P'// 得到当前库中全部具有主键的表

2、从多条重复记录中只取出一条的实现方法

使用了Oracle的内部rowid来实现

desc hawk_hawk

col1 number(10)

col2 varchar2(10)

select * from hawk_hawk t1 where t1.rowid !=

(select max(rowid) from hawk_hawk t2

where t1.col1=t2.col1);

COL1 COL2

---------- --------------------

1 hawk

2 liangyi

如果想删除其余的重复记录,只剩一条,只需把开头的select * 换成delete

3、如何移动数据文件登录用户必须是sys 并且连接身份为sysdba

a.shutdown immediate关闭数据库

b.在os下拷贝数据文件到新的地点mv

c.Startup mount 启动到mount下

d.Alter database rename datafile '老文件加上全路径' to '新文件加上全路

径';

e.Alter database open; 打开数据库

重启一下库

Toad_for_Oracle10中文手册

Toad? for Oracle Quest虹天软件(北京)有限公司 二零零六年八月

目录 1.方案简介 (4) 2.TOAD? FOR ORACLE (5) 2.1. S CHEMA B ROSWER (6) 2.2. SQL E DITOR (6) 2.3. P ROCEDURE E DITOR (7) 2.4. SQL M ODELER (8) 2.5. F AST R EPORT (9) 2.6. S CRIPT MANAGER (10) 2.7. M ASTER/D ETAIL B ROWSER (10) 2.8. C ONNECTION C OLOR-C ODING (11) 3.TOAD? FOR ORACLE PROFESSIONAL (11) 3.1. PL/SQL D EBUGGER (12) 3.2. C ODE P ROFILING (12) 3.3. K NOWLEDGE X PERT? FOR PL/SQL (13) 3.4. T EAM C ODING (14) 3.5. C ODE X PERT (14) 4.TOAD? FOR ORACLE XPERT (15) 4.1. SQL S CANNER (15) 4.2. SQL I NSPECTOR (15) 4.3. SQL O PTIMIZER (16) 4.4. I NDEX E XPERT (19) 4.5. C ROSS I NDEX A NALYSIS (19) 4.6. O UTLINE M ANAGER (20) 4.7. P LAN C HANGE A NALYZER (20) 4.8. B EST P RACTICES (22) 5.TOAD? FOR ORACLE SUITE (22) 5.1. DBA M ODULE (22) 5.1.1.Database Monitor (22) 5.1.2.Database Probe (23) 5.1.3.Health Check (24) 5.1.4.Instance Manager (24) 5.1.5.Top Session Finder (25) 5.1.6.Oracle Parameters (26) 5.1.7.Session Browser (26) 5.2. K NOWLEDGE X PERT? FOR O RACLE A DMINISTRATION (27) 5.3. D ATA F ACTORY?D EVELOPER E DITION (27) 5.4. B ENCHMARK F ACTORY? FOR D ATABASES (27)

Oracle数据库的空间数据类型

Oracle数据库中空间数据类型随着GIS、CAD/CAM的广泛应用,对数据库系统提出了更高的要求,不仅要存储大量空间几何数据,且以事物的空间关系作为查询或处理的主要内容。Oracle数据库从9i开始对空间数据提供了较为完备的支持,增加了空间数据类型和相关的操作,以及提供了空间索引功能。 Oracle的空间数据库提供了一组关于如何存储,修改和查询空间数据集的SQL schema与函数。通过MDSYS schema规定了所支持的地理数据类型的存储、语法和语义,提供了R-tree空间数据索引机制,定义了关于空间的相交查询、联合查询和其他分析操作的操作符、函数和过程,并提供了处理点,边和面的拓扑数据模型及表现网络的点线的网络数据模型。 Oracle中各种关于空间数据库功能主要是通过Spatial组件来实现。从9i版本开始,Oracle Spatial空间数据库组件对存储和管理空间数据提供了较为完备的支持。其主要通过元数据表、空间数据字段(即SDO_GEOMETRY字段)和空间索引来管理空间数据,并在此基础上提供一系列空间查询和空间分析的函数,让用户进行更深层次的GIS应用开发。Oracle Spatial使用空间字段SDO_GEOMETRY存储空间数据,用元数据表来管理具有SDO_GEOMETRY字段的空间数据表,并采用R树索引和四叉树索引技术来提高空间查询和空间分析的速度。 1、元数据表说明。 Oracle Spatial的元数据表存储了有空间数据的数据表名称、空间字段名称、空间数据的坐标范围、坐标参考信息以及坐标维数说明等信息。用户必须通过元数据表才能知道ORACLE数据库中是否有Oracle Spatial的空间数据信息。一般可以通过元数据视图(USER_SDO_GEOM_METADATA)访问元数据表。元数据视图的基本定义为: ( TABLE_NAME V ARCHAR2(32), COLUMN_NAME V ARCHAR2(32), DIMINFO MDSYS.SDO_DIM_ARRAY, SRID NUMBER

Oracle BIEE官方文档学习笔记-创建RPD文件

Created By Benny_Zhou 仅为个人学习分享交流,请勿用作商业用途。 1.创建RPD 文件的物理层 物理层定义了BI 查询的数据来源。 建议通过导入数据库或者其他数据来源的元数据的方式产生物理层。 可以从已有的数据源中导入(部分)模型。 可以在物理层手工创建对象。 当你导入元数据后,很多数据源的属性会根据导入过程中收集的信息自动配置。导入之后,仍然可以定义物理数据源的其他属性,比如连接关系等。物理层可以存在包括数据库、平面文件(Flat File ),XML 文档等多个来源。 1.1 创建新的RPD 文件 打开BI 管理器-文件-新建-输入名称- 输入密码,点击下一步 1.2 导入元数据 选择连接类型为OCI 10g/11g ; 输入数据源名称orcl ,数据源名称与tnsnames.ora 中的Oracle 数据库实例名称一致; 输入用户名和密码,点击下一步; 接受默认元数据类型,点击下一步;(主键和外键是否需要导入?) 选择需要导入的表,下一步; Creating a Repository Using the Oracle BI 11gAdministration Tool/创 建RPD 文件 2014年7月8日 16:48

选择需要导入的表,下一步; 弹出连接池窗口,接受默认,下一步; 出现导入信息,导入完成后,展开查看表是否成功导入。 1.3 验证连接 选择工具-更新所有行;

更新完成后,鼠标悬停在表上,观察行信息中的更新时间; 展开表,右键查看数据; 1.4 创建别名 鼠标点在表上,右键选择新对象-别名;输入别名;输入描述。 1.5 创建键和连接 在物理层选择几个表,右键选择物理图表-仅限所选对象; 需要调整物理图表中的对象,可以再工具栏中使用放大、缩小、适合、全部隐藏、全部展开等等 点击工具栏中的新建连接,先点击F1 Revenue,然后点击D1 Time,物理外键窗口打开。 注意先点击哪个表是有关系的。连接产生了1:N的关系,将第一个表的主键列和第二个表的外键列连接。

oracle课后题答案

一、选择题 1. 若关系的某一属性组的值能唯一地标识一个元组,我们称之为(B)。 A、主码 B、候选码 C、外码 D、联系 2. 以下不属于数据库模式的三要素的是(C)。 A、数据结构 B、数据操作 C、数据控制 D、完整性约束 3. 以下对关系性质的描述中,哪个是错误的?(B) A、关系中每个属性值都是不可分解的 B、关系中允许出现相同的元组 C、定义关系模式时可随意指定属性的排列次序 D、关系中元组的排列次序可以任意交换 二、填空题 1.数据管理发展的三个阶段是人工管理、文件管理和数据库系统管理。 2.数据库系统的三级模式包括逻辑模式、用户模式、物理模式。 三、思考题 1. 数据库管理系统的主要功能有哪些? 1)数据定义功能。DBMS提供相应数据语言来定义(DDL)数据库结构,它们是刻画数据库框架,并被保存在数据字典中。 2)数据存取功能。DBMS提供数据操纵语言(DML),实现对数据库数据的基本存取操作:检索,插入,修改和删除。 3)数据库运行管理功能。DBMS提供数据控制功能,即是数据的安全性、完整性和并发控制等对数据库运行进行有效地控制和管理,以确保数据正确有效。 4)数据库的建立和维护功能。包括数据库初始数据的装入,数据库的转储、恢复、重组织,系统性能监视、分析等功能。 5)数据库的传输;DBMS提供处理数据的传输,实现用户程序与DBMS之间的通信,通常与操作系统协调完成。 2.思考关系规范化的过程。 答:对于存在数据冗余、插入异常、删除异常问题的关系模式,应采取将一个关系模式分解为多个关系模式的方法进行处理。一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式,这就是所谓的规范化过程。 3.思考数据库设计的步骤。 答:1需求分析、2概念设计阶段、3逻辑结构设计阶段、4数据库物理结构设计阶段、5数据库实施阶段、6数据库运行和维护阶段。

Oracle中无效数据库对象的处理方法

Oracle中无效数据库对象的处理方法 Oracle总是会尝试自动重编译无效的PL/SQL对象和视图,但是可能不会成功。虽然Oracle可能建议手动地进行编译,不过我们并非必须进行这个操作。通常无效对象的产生是由于数据库迁移,针对无效对象,我们可以采取重编译和索引重建。 1.1、标识无效的对象 为了标识数据库中的所有无效的对象,我们可以作为SYSTEM用户或其他有权限的用户做如下查询。 SQL> select owner, object_name, object_type from dba_objects where status = 'INVALID'; 1.2、修正无效的对象 编译对象 SQL> alter procedure ADD_NUMS compile; Procedure altered. 如果编译成功,就不存在问题,如果编译失败,就需要找出失败的原因。 SQL> show errors 如果希望确定编译错误的原因,通常需要首先使用DBA_DEPENDENCIES视图。 SQL> desc dba_dependencies; Name Null? Type ----------------------------------------- -------- --------------- OWNER NOT NULL VARCHAR2(30) NAME NOT NULL VARCHAR2(30) TYPE VARCHAR2(17) REFERENCED_OWNER VARCHAR2(30) REFERENCED_NAME VARCHAR2(64) REFERENCED_TYPE VARCHAR2(17) REFERENCED_LINK_NAME VARCHAR2(128) DEPENDENCY_TYPE VARCHAR2(4) 如果要重新编译成百上千的的无效对象,可以运行下面命令。 SQL> @?/rdbms/admin/utlrp --编译无效对象脚本utlrp.sql

Oracle数据库基础

Oracle 数据库基础 数据库是我们安装完产品后建立的,可以在同一台主机上存在8i,9i,10g,11g等多个数据库产品,一套产品可以建立多个数据库,每个数据库是独立的。每个数据库都有自己的全套相关文件,有各自的控制文件、数据文件、重做日志文件、参数文件、归档文件、口令文件等等。 其中控制文件、数据文件、重做日志文件、跟踪文件及警告日志(trace files,alert files)属于数据库文件; 参数文件(parameter file)口令文件(password file)是非数据库文件 我们的表存储在数据库中 数据库不能直接读取 我们通过实例(instance)来访问数据库 数据库实例 实例由内存和后台进程组成 实例是访问数据库的方法 初始化参数控制实例的行为 一个实例只能连接一个数据库

启动实例不需要数据库 产品安装好 有初始化参数文件 就可以启动实例 与是否存在数据库无关 实例内存分为SGA 和PGA SGA:是用于存储数据库信息的内存区,该信息为数据库进程所共享。它包含Oracle 服务器的数据和控制信息,它是在Oracle 服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写。 PGA:包含单个服务器进程或单个后台进程的数据和控制信息,与几个进程共享的SGA正相反,PGA 是只被一个进程使用的区域,PGA 在创建进程时分配,在终止进程时回收. 后台进程是实例和数据库的联系纽带 分为核心进程和非核心进程 当前后台进程的查看 SQL> select name,description from v$bgprocess where paddr<>'00'; NAME DESCRIPTION

Oracle数据库简介

oracle数据库是一种大型数据库系统,一般应用于商业,政府部门,它的功能很强大,能够处理大批量的数据,在网络方面也用的非常多。不过,一般的中小型企业都比较喜欢用SQL数据库系统,它的操作很简单,功能也非常齐全。只是比较oracle 数据库而言,在处理大量数据方面有些不如。 Oralce数据库的发展历程 Oralce数据库简介 Oracle简称甲骨文,是仅次于微软公司的世界第二大软件公司,该公司名称就叫Oracle。该公司成立于1979年,是加利福尼亚州的第一家在世界上推出以关系型数据管理系统(RDBMS)为中心的一家软件公司。 Oracle不仅在全球最先推出了RDBMS,并且事实上掌握着这个市场的大部分份额。现在,他们的RDBMS被广泛应用于各种操作环境:Windows NT、基于UNIX系统的小型机、IBM大型机以及一些专用硬件操作系统平台。 事实上,Oracle已经成为世界上最大的RDBMS供应商,并且是世界上最主要的信息处理软件供应商。由于Oracle公司的RDBMS都以Oracle为名,所以,在某种程度上Oracle己经成为了RDBMS的代名词。 Oracle数据库管理系统是一个以关系型和面向对象为中心管理数据的数据库管理软件系统,其在管理信息系统、企业数据处理、因特网及电子商务等领域有着非常广泛的应用。因其在数据安全性与数据完整性控制方面的优越性能,以及跨操作系统、跨硬件平台的数据互操作能力,使得越来越多的用户将Oracle作为其应用数据的处理系统。 Oracle数据库是基于“客户端/服务器”模式结构。客户端应用程序执行与用户进行交互的活动。其接收用户信息,并向“服务器端”发送请求。服务器系统负责管理数据信息和各种操作数据的活动。 Oracle数据库有如下几个强大的特性: 支持多用户、大事务量的事务处理 数据安全性和完整性的有效控制 支持分布式数据处理 可移植性很强 Oracle大体上分两大块,一块是应用开发,一块是系统管理。 开发主要是写存储过程、触发器什么的,还有就是用Oracle的Develop工具做form。有点类似于程序员,需要有较强的逻辑思维和创造能力。管理则需要对Oracle 数据库的原理有深刻的认识,有全局操纵的能力和紧密的思维,责任较大,因为一个小的失误就会丢失整个数据库,相对前者来说,后者更看重经验。 Oracle数据库服务器: Oracle数据库包括Oracle数据库服务器和客户端 Oracle Server是一个对象一关系数据库管理系统。它提供开放的、全面的、和集成的信息管理方法。每个Server由一个 Oracle DB和一个 Oracle Server实例组成。它具有场地自治性(Site Autonomy)和提供数据存储透明机制,以此可实现数据存储透明性。每个 Oracle数据库对应唯一的一个实例名SID,Oracle数据库服务器启动后,一般至少有以下几个用户:Internal,它不是一个真实的用户名,而是具有SYSDBA优

Oracle 文档

Oracle 文档 本页包含Oracle 数据库、融合中间件、Beehive 和应用产品/E-Business Suite 的最新文档链接。 搜索Oracle 文档 Sun 文档 按类别浏览: 数据库 Oracle Database 11g第 2 版Oracle Database 11g第 1 版Oracle Database Lite 10g第 3 版Oracle Database 10g第 2 版Oracle 网关10g 第 2 版 Oracle Database Lite 10g第 2 版Oracle Communications Data Model Oracle Content Database 10g第1 版 Oracle Database 10g第 1 版Oracle Multimedia (Oracle inter Media) Oracle Spatial Oracle Fail Safe Oracle TimesTen In-Memory Database Oracle Berkeley DB Oracle Berkeley DB Java 版Oracle Berkeley

10g第 1 版Oracle 网关10g 第 1 版 Oracle9i Database 第2版 Oracle9i Database 第1版 适用于 Oracle9i(第1版和第2 版)的Oracle 网关Berkeley DB XML Oracle 9i Lite Oracle Secure Backup Oracle Application Express Oracle Audit Vault Oracle 数据访问组件Oracle SQL Developer 中间件 Oracle | BEA 产品文档 10g第3版 (10.3) Oracle Product Data Quality Oracle GoldenGate Oracle Fusion Middleware 11g 第 1 版 (11.1.1) Oracle Identity Management 10g (10.1.4) Oracle JRockit R28.0Oracle Application Server 10g第 3 版(10.1.3.1) Oracle Application Server 10g第 3 版(10.1.3) Oracle Application Server 10g第 2 版(10.1.2.0.2) Oracle Application Server 10g 第 2 版 (10.1.2) Oracle

Oracle 笔试题目带答案

1.( )程序包用于读写操作系统文本文件。(选一项) A、Dbms_output B、Dbms_lob C、Dbms_random D、Utl_file 2.( )触发器允许触发操作的语句访问行的列值。(选一项) A、行级 B、语句级 C、模式 D、数据库级 3.( )是oracle在启动期间用来标识物理文件和数据文件的二进制文件。(选一项) A、控制文件 B、参数文件 C、数据文件 D、可执行文件 4.CREATE TABLE 语句用来创建(选一项) A、表 B、视图 C、用户 D、函数 5.imp命令的哪个参数用于确定是否要倒入整个导出文件。(选一项) A、constranints B、tables C、full D、file 6.ORACLE表达式NVL(phone,'0000-0000')的含义是(选一项) A、当phone为字符串0000-0000时显示空值 B、当phone为空值时显示0000-0000 C、判断phone和字符串0000-0000是否相等 D、将phone的全部内容替换为0000-0000 7.ORACLE交集运算符是(选一项) A、intersect B、union C、set D、minus 8.ORACLE使用哪个系统参数设置日期的格式(选一项) A、nls_language

B、nls_date C、nls_time_zone D、nls_date_format 9.Oracle数据库中,通过()访问能够以最快的方式访问表中的一行(选一项) A、主键 B、Rowid C、唯一索引 D、整表扫描 10.Oracle数据库中,下面()可以作为有效的列名。(选一项) A、Column B、123_NUM C、NUM_#123 D、#NUM123 11.Oracle数据库中,以下()命令可以删除整个表中的数据,并且无法回滚(选一项) A、drop B、delete C、truncate D、cascade 12.Oracle中, ( )函数将char或varchar数据类型转换为date数据类型。(选一项) A、date B、to_date C、todate D、ctodate 13.ORACLE中,执行语句:SELECT address1||','||address2||','||address2 "Address" FROM employ; 将会返回()列(选一项) A、0 B、1 C、2 D、3 14.Oralce数据库中,以下()函数可以针对任意数据类型进行操作。(选一项) A、TO_CHAR B、LOWER C、MAX D、CEIL 15.partition by list(msn_id)子句的含义是(选一项) A、按msn_id列进行范围分区 B、按msn_id列进行列表分区

ORACLE数据库管理系统介绍

ORACLE 数据库管理系统介绍 的特点: 可移植性 ORACLE采用C语言开发而成,故产品与硬件和操作系统具有很强的独立性。从大型机到微机上都可运行ORACLE的产品。可在UNIX、DOS、Windows等操作系统上运行。可兼容性由于采用了国际标准的数据查询语言SQL,与IBM的SQL/DS、DB2等均兼容。并提供读取其它数据库文件的间接方法。 可联结性对于不同通信协议,不同机型及不同操作系统组成的网络也可以运行ORAˉCLE数据库产品。 的总体结构 (1)ORACLE的文件结构一个ORACLE数据库系统包括以下5类文件:ORACLE RDBMS的代码文件。 数据文件一个数据库可有一个或多个数据文件,每个数据文件可以存有一个或多个表、视图、索引等信息。 日志文件须有两个或两个以上,用来记录所有数据库的变化,用于数据库的恢复。控制文件可以有备份,采用多个备份控制文件是为了防止控制文件的损坏。参数文件含有数据库例程起时所需的配置参数。 (2)ORACLE的内存结构一个ORACLE例程拥有一个系统全程区(SGA)和一组程序全程区(PGA)。 SGA(System Global Area)包括数据库缓冲区、日志缓冲区及

共享区域。 PGA(Program Global Area)是每一个Server进程有一个。一个Server进程起动时,就为其分配一个PGA区,以存放数据及控制信息。 (3)ORACLE的进程结构ORACLE包括三类进程: ①用户进程用来执行用户应用程序的。 ②服务进程处理与之相连的一组用户进程的请求。 ③后台进程 ORACLE为每一个数据库例程创建一组后台进程,它为所有的用户进程服务,其中包括: DBWR(Database Writer)进程,负责把已修改的数据块从数据库缓冲区写到数据库中。LGWR(Log Writer)进程,负责把日志从SGA中的缓冲区中写到日志文件中。 SMON(System Moniter)进程,该进程有规律地扫描SAG进程信息,注销失败的数据库例程,回收不再使用的内存空间。PMON(Process Moniter)进程,当一用户进程异常结束时,该进程负责恢复未完成的事务,注销失败的用户进程,释放用户进程占用的资源。 ARCH(ARCHIVER)进程。每当联机日志文件写满时,该进程将其拷贝到归档存储设备上。另外还包括分布式DB中事务恢复进程RECO 和对服务进程与用户进程进行匹配的Dnnn进程等。 的逻辑结构 构成ORACLE的数据库的逻辑结构包括: (1)表空间

Oracle 官方安装文档

rpm -q grep binutils-2.* \ elfutils-libelf-0.* \ glibc-2.* \ glibc-common-2.* \ libaio-0.* \ libgcc-4.* \ libstdc++-4.* \ make-3.* \ compat-libstdc++-33 \ elfutils-libelf-devel-0.* \ glibc-devel-2.* \ gcc-4.* \ gcc-c++-4.* \ libaio-devel-0.* \ libstdc++-devel-4.* \ unixODBC-2.* \ unixODBC-devel-2.* \ sysstat-7.* 2.如缺少相应的补丁包,可以到系统安装盘安装相关的补丁包 cd /media/Enterprise\ Linux\ dvd\ 20090127/Server/ rpm -Uvh grep binutils-2.* rpm -Uvh elfutils-libelf-0.* rpm -Uvh glibc-2.* rpm -Uvh glibc-common-2.* rpm -Uvh libaio-0.* rpm -Uvh libgcc-4.* rpm -Uvh libstdc++-4.* rpm -Uvh make-3.* rpm -Uvh compat-libstdc++-33 rpm -Uvh elfutils-libelf-devel-0.* rpm -Uvh glibc-devel-2.* rpm -Uvh gcc-4.* rpm -Uvh gcc-c++-4.* rpm -Uvh libaio-devel-0.* rpm -Uvh libstdc++-devel-4.* rpm -Uvh unixODBC-2.* rpm -Uvh unixODBC-devel-2.* rpm -Uvh sysstat-7.*

公司Oracle ERP操作手册-中文辅助版

ERP系统 用户操作手册 Account Payables模块 文档作者: 创建日期: 确认日期: 2005-10-11 控制编码: AAVID/TR100/AP 文档版本: 1.0 审批: 拷贝数_____

文档控制记录更改 审阅人 分发

目录 文档控制......................................................................................................................................... 错误!未定义书签。目录................................................................................................................................................. 错误!未定义书签。 编写说明......................................................................................................................................... 错误!未定义书签。 使用对象..................................................................................................................................... 错误!未定义书签。 参考文档..................................................................................................................................... 错误!未定义书签。 概述................................................................................................................................................. 错误!未定义书签。 业务操作流程内容..................................................................................................................... 错误!未定义书签。 第一章、创建银行......................................................................................................................... 错误!未定义书签。 操作说明..................................................................................................................................... 错误!未定义书签。 适用范围 ................................................................................................................................. 错误!未定义书签。 主要业务 ................................................................................................................................. 错误!未定义书签。 注意事项 ................................................................................................................................. 错误!未定义书签。 操作过程..................................................................................................................................... 错误!未定义书签。 一.整理内部银行资料 (3) 二.银行资料录入 (3) 三.银行财务信息录入 (5) 四.定义银行付款单据 (7) 五.整理外部银行资料 (8) 六.外部供应商银行资料录入 (8) 七.员工供应商银行资料录入 (10) 第二章、创建供货商..................................................................................................................... 错误!未定义书签。 操作说明..................................................................................................................................... 错误!未定义书签。 适用范围 ................................................................................................................................. 错误!未定义书签。 主要业务 ................................................................................................................................. 错误!未定义书签。 注意事项 ................................................................................................................................. 错误!未定义书签。 操作过程..................................................................................................................................... 错误!未定义书签。 一.整理外部供货商信息资料 (12) 二.供货商信息录入 (12) 三.供货商银行信息分配 (18) 四.整理员工信息资料 (18) 五.员工信息资料录入 (18) 六.员工供货商资料分配 (18) 七.员工供货商财务信息录入 (21) 八.员工供货商银行信息分配 (22) 第三章、预付款及付款................................................................................................................. 错误!未定义书签。 操作说明..................................................................................................................................... 错误!未定义书签。 适用范围 ................................................................................................................................. 错误!未定义书签。 主要业务 ................................................................................................................................. 错误!未定义书签。 注意事项 ................................................................................................................................. 错误!未定义书签。 操作过程..................................................................................................................................... 错误!未定义书签。

Oracle试题(含答案)

_C++_CSD/ESD1405 1. 把工资大于1000的first_name,salary 显示出来,按工资排序,工资相同按first_name降序的SQL语句是? A. select first_name,salary from s_emp order by salary,first_name B. select first_name,salary from s_emp order by salary,first_name asc C. select first_name,salary from s_emp order by salary desc,first_name D. select first_name,salary from s_emp order by salary,first_name desc 正确答案:D 2. 已知数据库中有员工表s_emp和部门表s_dept,具体字段如下: 员工表字段介绍: ID 员工编号 LAST_NAME 员工姓 FIRST_NAME 员工名 USERID 用户编号 START_DATE 入职日期 COMMENTS 员工备注信息 MANAGER_ID 员工的领导ID TITLE 员工的职位 DEPT_ID 部门的编号 SALARY 员工的月薪 COMMISSION_PCT 提成 部门表的字段介绍: ID 部门编号 NAME 部门名 REGION_ID 地区编号 注:以下所有数据库相关题目,均使用这两个表 把s_emp表中的每个人的全名和工资列出来的SQL语句是? A. select first_name|last_name ,salary from s_emp

Oracle数据库试题

请将下列试题的正确答案写在答题栏里。(每小题2分) 1.当Oracle服务器启动时,下列哪种文件不是必须的()。 A.数据文件 B.控制文件 C.日志文件 D.归档日志文件 2.在Oracle中,当用户要执行SELECT语句时,下列哪个进程从磁盘获得用户需要的数据()。 A.用户进程 B.服务器进程 C.日志写入进程(LGWR D.检查点进程(CKPT) 3.在Oracle中,一个用户拥有的所有数据库对象统称为()。 A.数据库 B.模式 C.表空间 D.实例 4.在Oracle中,有一个教师表teacher的结构如下: ID NUMBER(5) NAME V ARCHAR2(25) EMAIL VARCHAR2(50) 下面哪个语句显示没有Email地址的教师姓名()。 A.SELECT name FROM teacher WHERE email = NULL; B.SELECT name FROM teacher WHERE email <> NULL; C.SELECT name FROM teacher WHERE email IS NULL; D.SELECT name FROM teacher WHERE email IS NOT NULL; 5.在Oracle数据库的逻辑结构中有以下组件: A 表空间 B 数据块 C 区 D 段 这些组件从大到小依次是()。 A.A→B→C→D B.A→D→C→B C.A→C→B→D D.D→A→C→B 6.在Windows操作系统中,Oracle的()服务监听并接受来自客户端应用程序的连接请求。 A.OracleHOME_NAMETNSListener

oracle考试试题及答案

试题一 一、填空题(每小题4分,共20分) 1、数据库管理技术经历了人工管理、文件系统、数据库系统三个阶段 2、数据库三级数据结构是外模式、模式、内模式 3、Oracle数据库中,SGA由数据库缓冲区,重做日志缓冲区,共享池组成 4、在Oracle数据库中,完正性约束类型有Primay key约束。Foreign key约束,Unique约束,check约束,not need约束 5、PL/SQL中游标操作包括声明游标,打开游标,提取游标,关闭游标 二、正误判断题(每小题2分,共20分) 1、数据库中存储的基本对象是数据(T) 2、数据库系统的核心是DBMS(T) 3、关系操作的特点是集合操作(T) 4、关系代数中五种基本运算是并、差、选择、投影、连接(F) 5、Oracle进程就是服务器进程(F) 6、oraclet系统中SGA所有用户进程和服务器进程所共享(T) 7、oracle数据库系统中数据块的大小与操作系统有关(T) 8、oracle数据库系统中,启动数据库和第一步是启动一个数据库实例(T) 9、PL/SQL中游标的数据是可以改变的(F) 10、数据库概念模型主要用于数据库概念结构设计() 三、简答题(每小题7分,共35分) 1、何谓数据与程序的逻辑独立性和物理独立性? 2、试述关系代数中等值连接与自然连接的区别与联系? 3、何谓数据库,数据库设计一般分为哪些阶段? 4、简述Oracle逻辑数据库的组成?

5、试任举一例说明游标的使用方法? 五、设有雇员表emp(empno,ename,age,sal,tel,deptno), 其中:empno-----编号,name------姓名,age -------年齡,sal-----工资,tel-----电话 deptno-----部门号。 请按下列要求分别晨SQL*PLUS下编程。(每小题3分,共15分)?1、查询家有电话的职工信息。 ?2、查询工资在500至800元之间的雇员信息 ?3、按年龄递增顺序显示雇员编号、姓名、年龄、工资 ?4、求部门号为D_01的平均工资 ?5、查找部门号为D_01的40岁以上而工资在400元以下的雇员名单。 1、SQL>SELECT * FROM emp WHERE tel NOT NULL; 2、SQL>SELECT * FROM emp WHERE BETWEEN 500 AND 800; 3、SQL>SELECT empno,ename,age,sal FROM emp ORDER BY age ASC; 4、SQL>SELECT AVG(sal) FROM emp WHERE deptno='D_01'; 5、SQL>SELECT ename FROM emp WHERE deptno='D_01' AND age>40 AND Sal<400; ? 试题一答案 一、填空题 1、人工管理、文件系统、数据库系统 2、外模式、模式、内模式 3、数据库缓冲区,重做日志缓冲区,共享池 4、Primay key约束。Foreign key约束,Unique约束,check约束,not need 约束 5、声明游标,打开游标,提取游标,关闭游标 二、正误判断题 1、T 2、T 3、T 4、F 5、F 6、T 7、T 8、T 9、F 三、(略) 五、 1、SQL>SELECT * FROM emp WHERE tel NOT NULL; 2、SQL>SELECT * FROM emp WHERE BETWEEN 500 AND 800; 3、SQL>SELECT empno,ename,age,sal FROM emp ORDER BY age ASC; 4、SQL>SELECT AVG(sal) FROM emp WHERE deptno='D_01'; 5、SQL>SELECT ename FROM emp WHERE deptno='D_01' AND age>40 AND Sal<400; 试题二

oracle模拟试题答案汇总

备注:题号相同的题目或者增加的一些题目是11级网络的模拟试题 第 1 题,选择题(2分): ORACLE中,游标可以分为三类,下面不是Oracle游标的是( 1 )。 (1) 系统游标 (2) 显式游标 (3)隐式游标 (4) REF游标 第 2 题,选择题(2分):PL/SQL块中定义了一个带参数的游标:CURSOR emp_cursor(dnum NUMBER) IS SELECT sal,comm FROM emp WHERE deptno=dnum; 那么正确打开此游标的语句是(1) (1) OPEN emp_cursor(20); (2) OPEN emp_cursor FOR 20; (3) OPEN emp_cursor USING 20; (4) FOR rmp_rec IN emp_cursor[20] LOOP ... END LOOP; 第 3 题,选择题(2分): 有关ORACLE索引说法正确的是(A ) (1) 索引的数据和表的数据分开存储,但索引组织表除外 (2) 所有索引中的数据是顺序排序 (3) 分区表的索引必须统一存储 (4) 只能对分区表的索引进行分区 第 4 题,选择题(2分): 下列有关包的使用说法错误的是( A) (1) 必须先创建包头,然后创建包体 (2) 在不同的包内模块可以重名 (3) 包的私有过程不能被外部程序调用 (4) 包体中的全局过程和函数必须在包 第 5 题,选择题(2分): 以下定义的哪个变量是非法的?( A) (1) var_ab number default:=1; var_ab number default 1; (2) var_ab number not null :='0'; (3) var_ab number; (4) var_ab number:=3; 第 6 题,选择题(2分): PL/SQL块中不能直接使用的SQL命令是(A) (1) drop (2) insert (3) update

相关主题
文本预览
相关文档 最新文档