Oracle数据库系统概述

时间:2024.3.31

本课程学习目的:在软件开发中应用Oracle

主要内容:安装和连接Oracle、使用Oracle创建数据库对象、使用SQL和PL/SQL

注:主流数据库系统有:Oracle(甲骨文)、SQLServer、DB2、Sybase Oracle分两大块,一块是开发,一块是管理

第1章 Oracle数据库系统概述

一、Oracle数据库简介

Oracle 是一种对象关系型数据库系统(ORDBMS),它基于客户机/服务器系统结构,并且具有跨平台移植、分布式数据处理和支持大事务量处理的特点。

二、Oracle 数据库系统体系结构

1、Oracle服务器= Oracle数据库+ Oracle实例(“发动机”的作用)

实例:是后台进程和内存结构的集合。实例启动时,自动分配系统全局区(SGA),并启动多个后台进程。数据库与实例之间的关系一般是1对1的关系。

进程:又叫任务,与程序的区别在于它是一个动态的概念,而程序是一个静态的实体,进程强调执行过程,可以动态地创建,完成任务后自动消亡。

Oracle 实例有几种不同类型的进程:

? 用户进程――是一个需要与Oracle服务器进行交互的程序。

当用户运行一个应用程序准备向数据库服务器发送请求时,即

创建了用户进程

? 服务器进程――用于处理连接到该实例的用户进程的请求。当

用户连接至 Oracle 数据库实例创建会话时,即产生服务器进

? 后台进程――是Oracle数据库为了保持最佳系统性能和协调

多个用户请求而设置的。 Oracle 实例启动时即创建一系列后

台进程

Oracle 实例内存结构:

? SGA(系统全局区):Oracle 实例启动时分配,存储数据

库信息,由多个数据库进程共享。主要包括数据缓冲区、共享

池、日志缓冲区。a.数据缓冲区用于存储从磁盘数据文件中读

入的数据,为所有用户共享。服务器进程将读入的数据保存在

数据缓冲区中,当后续的请求需要这些数据时可以在内存中找

到,不需要再从磁盘读取,提高了读取速度。数据缓冲区的大小对数据库的读取速度有直接的影响。b. 共享池是对SQL、PL/SQL程序进行语法分析、编译、执行的内存区域。共享池由库缓存和数据字典缓存组成。共享池的大小直接影响数据库的性能。 c.日志缓冲区记录数据库的所有修改信息,日志信息首先产生于日志缓冲区。 当日志缓冲区的日志数据达到一定数量时,由后台进程将日志数据写入日志文件中。相对来说,日志缓冲区对数据库的性能影响较小。

? PGA(程序全局区):用户进程连接到数据库并创建一个会

话时自动分配的,保存每个与Oracle 数据库连接的用户进程所需的信息,非共享区,只能单个进程使用,当一个用户会话结束,PGA释放。

注:什么是会话(Session)?会话是用户与 Oracle 服务器的单个连接,当用户与服务器建立连接时创建会话,当用户与服务器断开连接时关闭会话。

2、数据库的物理结构

数据文件(.DBF)、日志文件(.LOG)、控制文件(.CTL)、参数文件(.ORA)、归档文件(备份写满的日志文件)等构成。

数据库启动时,先通过参数文件寻找控制文件,然后通过控制文件管理和控制数据文件、日志文件。一个数据库包含1~N个数据文件、至少1个控制文件、至少需要两个重做日志文件。

3、数据库的逻辑结构

表空间(tablespace):数据库最大的逻辑单位,物理上由1~N个数据文件组成。(每个数据库中都有一个system表空间用来存放数据字典-数据库“信息中心”,保存数据库系统自身以及其中存储的所有数据库对象的信息)。一般地,开发某一个应用系统时,,要为其建一个表空间存放相应的数据。

段(segment):用于存储特定对象的所有数据,由一个或多个区组成。

区(extent):Oracle进行空间分配的逻辑单元,由相邻数据块组成。

块(data block):Oracle在数据文件上执行I/o操作的最小单位。 方案(SCHEMA,又叫模式):ORACLE通过“方案”来组织和管理数据库对象是用户所拥有对象的集合,与用户一一对应且同名,当创建一个用户时,自动创建一个同名的方案。访问其他用户的对象时,须经授权并在访问的对象名前加方案名。

三、Oracle10G的安装与配置

1、系统安装

软件下载(用迅雷下载,否则需要一个免费账号):

for Microsoft Windows (32-bit):

for Microsoft Windows (X64)

安装过程参见P29-36

2、网络配置

(1)、Oracle 网络配置内容:

服务器端---监听器的配置:全局数据库名、监听协议、主机名(或主机IP)、端口号。(安装Oracle时会自动配置一个名为LISTENER监听器)

客户端---网络服务名配置:全局数据库名、监听协议、主机名(或主机IP)、端口号必须与监听程序的配置保持完全一致!网络服务名则最好与实例名相同。

(2)、Oracle 网络配置方法

(1) 用Oracle工具:Net Configuration Assistant 或Net Manager

(2)直接修改配置文件:ORACLE_HOME\network\admin\listener.ora、tnsnames.ora

四、Oracle的常用工具

1、查询工具

? SQL*Plus:用于接受和执行SQL命令以及PL/SQL块。能够进

行以下操作:输入、编辑、存储、检索和运行SQL命令以及PL/SQL块;列出任意表的列定义;向用户提示信息,并接受用户输入等。 ? iSQL*Plus:可以执行能用SQL*Plus完成的所有任务,不同之外

在于它是基于Web的,可通过浏览器访问。如:http://localhost:5560/isqlplus

2、企业管理器(EM-Enterprise Manager)

EM是为管理用户提供的可视化管理工具,几乎包括了对数据库对象的所有管理。10g以上版本的企业管理器是基于Web,通过浏览器打开。如:http://localhost:1158/em

注:在安装系统结束前,有如何启动各种工具的提示,

五、数据字典

通常是在创建和安装数据库时被创建的,拥有者是SYS用户,由一系列的表和视组成,保存着关于数据库系统自身以及其中存储的所有数据库

对象的信息(存放在system表空间)。在Oracle数据库运行期间,系统从数据字典中读取信息,用来判断用户要求访问的对象是否存在,它的内容由系统自动维护,不需要DBA的参与。

例如:

1、查看数据文件信息

DESC V$DATAFILE;

SELECT name FROM V$DATAFILE;

2、查看日志文件信息

SELECT members FROM V$LOGFILE;

3、查看控制文件信息

SELECT name FROM V$CONTROLFILE;

六、基于ORACLE数据库应用的开发步骤

1、需求分析

2、创建应用系统数据库,为应用系统数据配置应用系统表空间和数据文件。

3、创建应用系统用户,并为不同级别的用户授与相应权限

4、创建数据库对象

5、编写存储过程、触发器等高级数据库对象

6、编写前台应用程序脚本


第二篇:Oracle常见题


Oracle常见题

1. oracle的特点?(选择记忆,理解)

? ORACLE7.X以来引入了共享SQL和多线索服务器体系结构。这减少了ORACLE的资源占用,并增强了ORACLE的能力,使之在低档软硬件平台上用较少的资源就可以支持更多的用户,而在高档平台上可以支持成百上千个用户。 ? 提供了基于角色(ROLE)分工的安全保密管理。在数据库管理功能、完整性检查、安全性、一致性方面都有良好的表现。

? 支持大量多媒体数据,如二进制图形、声音、动画以及多维数据结构等。 ? 提供了与第三代高级语言的接口软件PRO*系列,能在C,C++等主语言中嵌入SQL语句及过程化(PL/SQL)语句,对数据库中的数据进行操纵。加上它有许多优秀的前台开发工具如 POWER BUILD、SQL*FORMS、VISIA BASIC 等,可以快速开发生成基于客户端PC 平台的应用程序,并具有良好的移植性。

? 提供了新的分布式数据库能力。可通过网络较方便地读写远端数据库里的数据,并有对称复制的技术。支持各种分布式功能,特别是支持Internet应用。 ? 功能强大,层次清晰,安全机制好,跨平台,数据操作,系统管理,安全性,集群技术,分布式应用,商业智能

? 具有完整的数据管理功能。

? 作为一个应用开发环境,Oracle提供了一套界面友好、功能齐全的数据库开发工具。

? Oracle使用PL/SQL语言执行各种操作,具有可开放性、可移植性、可伸缩性等功能。

? 可用性强

? 可扩展性强

?

?

?

?

?

?

?

?

?

?

?

?

?

? 数据安全性强 稳定性强 无范式要求,可根据实际系统需求构造数据库。 采用标准的SQL结构化查询语言。 具有丰富的开发工具,覆盖开发周期的各阶段。 支持大型数据库,数据类型支持数字、字符、大至4GB的二进制数据,为数据库的面向存储提供数据支持。 具有第四代语言的开发工具(SQL*formS、SQL*REPORTS、SQL*MENU等)。 具有字符界面和图形界面,易于开发。 通过SQL*DBA控制用户权限,提供数据保护功能,监控数据库的 运行状态,调整数据缓冲区的大小。 分布优化查询功能。 具有数据透明、网络透明,支持异种网络、异构数据库系统。并行 处理采用动态数据分片技术。 支持客户机/服务器体系结构及混合的体系结构(集中式、分布式、 客户机/服务器)。 实现了两阶段提交、多线索查询手段。 支持多种系统平台(HPUX、SUNOS、OSF/1、VMS、 WINDOWS、WINDOWS/NT、

?

?

?

?

?

2.

3. OS/2)。 .数据安全保护措施:没有读锁,采取快照SNAP方式完全消除了分布读写冲突。自动检测死锁和冲突并解决。 数据安全级别为C2级(最高级)。 数据库内模支持多字节码制,支持多种语言文字编码。 具有面向制造系统的管理信息系统和财务系统应用系统。 在中国的销售份额占50%以上。 一个完整的数据库系统包括哪几个方面? 包括以下三个方面:数据库管理系统(DBMS)、数据库、数据库服务器 (database management system)是一种操纵和管理数据库的大型软件,是用于建立、使用和维护数据库,简称dbms。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过dbms访问数据库中的数据,数据库管理员也通过dbms进行数据库的维护工作。它提供多种功能,可使多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。它使用户能方便地定义和操纵数据,维护数据的安全性和完整性,以及进行多用户下的并发控制和恢复数据库。 Oracle体系结构图。

Oracle常见题

最左边是用户进程和服务器进程,中间是Oralce的实例,它是由内存结构(SGA系统全局区)和一些后台进程组成的。系统全局区主要包含了共享池、数据库高速缓冲区、重做日志缓冲区等。最下面的就是Oracle的数据库,包括了控制文件、重做日志文件、数据文件、初始化参数文件、密码文件、归档日志文件等,这些文件主要存放在硬盘上。

4. 简述PGA。

? PGA(Program global area):程序全局区,是一个私有的内存区。

? 生命周期:随着服务器进程的创建而被分配,随着服务器进程的终止而被回收。

? 在专用服务器进程的配置情况下,PGA包括以下结构:

1. 排序区(sort area):用于处理SQL语句所需的排序。

2. 游标状态区(cursor state):用于指示会话当前所使用的SQL语句的处理状

态。

3. 会话信息区(session information):包括了会话的用户权限和优化统计信息。

4. 堆栈区(stack space):包括了其他的会话变量。

5. 在共享服务器进程的配置情况下,PGA只包括堆栈区。

5. 简述SGA。

SGA(system global area):系统全局区。

库高速缓存:主要存放SQL语句的正文和编译后的代码以及执行计划。

数据字典高速缓存:主要存放表、列、用户等数据对象定义和权限的信息。

数据库高速缓冲区:主要存放从数据库中查询出来的数据。

重做日志缓冲区:主要用于数据的恢复,比如DML语句的回滚。

Oracle常见题

6. Oracle执行SQL查询语句的步骤

? 编译:在进行编译时,服务器进程会将SQL语句的正文放入共享池的库高速缓存中,

并完成以下处理。

a) 首先在共享池中搜索是否有相同的SQL语句,如果没有就进行后续的处理。 b) 检查该SQL语句的语法是否正确。

c) 通过查看数据字典来检查表和列的定义。

d) 对所操作的对象加编译锁,以便在编译语句期间这些对象的定义不能被修

改。

e) 检查所引用对象的用户权限。

f) 生成执行该SQL语句所需的优化的执行计划。

g) 将SQL语句和执行计划装入共享的SQL区。

? 执行:Oracle服务器进程开始执行SQL语句,因为它已经获得了执行SQL语句所需的

全部资源和信息

7. oracle数据库进程分为哪几种,分别是什么?它们中都包括哪些进程?

oracle数据库进程分为用户进程和服务器进程。

用户进程是在客户机内存上运行的程序,比如“企业管理器”和“SQL Plus”。用户进程向服务器进程提出操作请求。

服务器进程包括:

进程监控进程(PMON):当某个进程崩溃时,PMON负责清理它。

PMON进程将负责如下的清理工作:

? 回滚用户当前的事务。

? 释放用户所加的所有表一级和行一级的锁。

? 释放用户所有的其他资源等。

系统监督进程(SMON):数据库出现故障崩溃时,数据库系统重启时执行恢复性工

作。

数据库写进程(DBWR):将修改后的数据块内容写入数据库。

重做日志写进程(LGWR):将重做日志缓冲区中的内容写入日志文件。

检查点进程(CKPT):标识检查点,用于减少数据库恢复所需要的时间。

SMON、PMON、DBWR、LGWR和CKPT这五个后台进程中的任何一个未能启动,

则Oracle实例无法开启。

8. 通过本机访问他人的数据库,如何配置?

有两种方式:

第一种,通过企业管理器。右键“数据库”节点

Oracle常见题

选择

输入需要访问数据库服务器的IP地址 、端口号和SID(即数

据库服务器的数据库名称) “确定”。

第二种:通过数据库服务器暴露监听端口,然后客户端配置命名方法配置和本地Net服

务名配置。开始序 Oracle configuration and Migration Net Configuration Assistant 然后分别配置数据库服务器的监听程序配置,客户端的命

名方法配置和本地Net服务名配置。

9. Oracle数据库逻辑结构

10. oracle的默认表空间有哪些,它们的作用分别是?默认的大小?

oracle的默认表空间有以下几种:

CWMLITE(用于联机分析处理OLAP,20MB)

DRSYS(用于存放与工作区间设置有关的信息,20MB)

EXAMPLE(实例表空间,存放实例信息,150MB左右)

INDEX(索引表空间,存放数据库索引信息,25MB)

ODM(数据挖掘用户,20MB)

XDB(XML数据库,39MB左右)

SYSTEM(系统表空间,存放表空间名称,所包含数据文件等管理信息,400MB) TEMP(临时表空间,存储临时表,40MB)

TOOLS(工具表空间,存放数据库工具软件所需要的数据库对象,10MB)

UNDOTBS1(回滚表空间,存放数据库恢复信息,200MB)

USERS(用户表空间,存放用户私有信息,25MB)

新建一个表空间它的默认大小是5M。

11. oracle下有几种文件,每种文件的作用分别是什么,它们的存放路径?

oracle下有三种文件,分别是:

数据文件,用于存放所有的数据,以DBF为扩展名。

日志文件,记录了对数据库进行的所有操作,以LOG为扩展名。

控制文件,记录了数据库所有文件的控制信息,以CTL为扩展名。

存放路径:[数据库安装路径]\oradata文件夹下。

12. oracle下有几种日志文件,它们的作用分别是?

Oracle数据库有两种日志工作模式,它们分别是非归档(联机)日志,归档日志

数据库有联机重做日志,这个日志是记录对数据库所做的修改,比如插入,删除,更新数据等,对这些操作都会记录在联机重做日志里。一般数据库至少要有2个联机重做日志组。当一个联机重做日志组被写满的时候,就会发生日志切换,这时联机重做日志组2成为当前使用的日志,当联机重做日志组2写满的时候,又会发生日志切换,去写联机重做日志组1,就这样反复进行。

基本情况和上面是一致的,唯一不同在于,当发生日志切换的时候,被切换的日志会进行归档。比如,当前在使用联机重做日志1,当1写满的时候,发生日志切换,开始写联机重做日志2,这时联机重做日志1的内容会被拷贝到另外一个指定的目录下。这个目录叫做归档目录,拷贝的文件叫归档重做日志。

他们的区别在于一个归档,一个不归档。数据库使用归档方式运行时才可以进行灾难性恢复。

13. 如何在unix下安装oracle?

参照老师给的《Oracle9i在linux下的安装.docx》

14. sql语句分为几大类?

DML(data manipulation language):它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言

DDL(data definition language):DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用

DCL(Data Control Language)是数据库控制功能。是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权力执行DCL。

15. 管理用户sys、system和sysman的区别?

? sysman 一般是OMS时的管理员用户,如果不使用OMS的话,可以不用

? sys用户:所有oracle的数据字典的基表和视图都存放在sys用户中。这些基表和视图

对于oracle的运行是至关重要的,由数据库自己维护,任何用户都不能手动更改。sys用户拥有dba,sysdba,sysoper等角色或权限,是oracle权限最高的用户。

? system用户:用于存放次一级的内部数据,如oracle的一些特性或工具的管理信息。

system用户拥有普通dba角色权限。

16. Oracle数据库服务器启动和关闭的方式都有哪些,分别有什么特点?

启动方式共有6种,如下:

a) 正常启动(startup open):启动装载和打开数据库,用户可以进行正常访问。

b) 非装载启动(startup nomount):启动Oracle实例,并不装载和打开数据库,用户不能访

问。

c) 装载启动(startup mount):启动Oracle实例并装载数据库,但不打开数据库,不允许

用户访问。

d) 限制会话启动(startup restrict):只具备限制会话(Restricted Session)系统权限的用户

才能连接到数据库。

e) 只读启动(alter database open read only):只允许用户查询数据库,不可以对数据库进

行修改。

f) 强制启动(startup force):强制启动未能正常关闭或正常启动的数据库。

关闭方式共有四种,如下:

a) 正常关闭(shutdown normal):数据库正常关闭。不允许有新的连接,当所有连接断开

后关闭数据库。

b) 事务处理关闭(shutdown transactional):数据库事务处理关闭。不允许有新的连接,所

有连接上但是未作操作的连接都断开,正在操作的连接等完成操作后断开,所有连接断开后,关闭数据库。

c) 立即关闭(shutdown immediate):数据库立即关闭。将所有在执行的sql都回滚,回滚

完成后断开连接,关闭数据库。

d) 中止关闭(shutdown abort):数据库中止关闭。所有正在执行的sql都不回滚,直接关

闭数据库。

17. sysdba和sysoper主要区别

启动数据库

关闭数据库

改变数据库字符集

创建数据库

删除数据库

登录后用户变成 sysdba 能 能 能 能 能 sys sysoper 能 能 不能 不能 不能 public

18. Oracle数据库服务都有哪些?

1) OracleMTSRecoveryService,该服务允许数据库充当一个微软事务服务器、

COM/COM+对象和分布式环境下的事务的资源管理器。

2) OracleHOME_NAMEAgent:Oracle企业管理器代理服务,接收和响应来自

OEM控制台的任务和事件请求,只有使用OEM管理数据库时才需要。

3) OracleHOME_NAMEClientCache :名字缓存服务,服务缓存用于连接远程数

据库的Oracle Names 数据。

4) OracleHOME_NAMEHTTPServer:Oracle 提供的WEB服务器。

5) OracleHOME_NAMEPagingServer:通过一个使用调制解调器的数字传呼机

或者电子邮件发出警告。

6) OracleSNMPPeerEncapsulater:SNMP协议封装服务,用于SNMP协议转换。

7) OracleSNMPPeerMasterAgent:SNMP服务代理,用于支持SNMP的网管软

件对服务器的管理。

8) OracleHOME_NAMETNSListener:监听器服务,服务只有在数据库需要远程

访问时才需要,不用这个服务就可以访问本地数据库。

9) OracleServiceSID :数据库服务,这个服务会自动地启动和停止数据库。

19. 什么是Oracle的初始化参数 ?

初始化参数的内容包括:

? 实例名和与该实例相关的数据库名。

? 控制文件名字和位置。

? 系统全局区(SGA)的配置。

? 还原段(回滚段)的配置。

? 该实例所能同时启动的进程数。

? 标准数据库的大小。

? 是否允许DBA远程登录等。

Oracle9i共有两种不同类型的初始化参数文件:

? 静态参数文件(PFILE):文件名一般为initSID.ora。

? 动态服务器参数文件(SPFILE):文件名一般为spfileSID.ora。

初始化参数文件物理地址:$ORACLE_HOME\database目录下

20. 会话(Session) 在Oracle中,会话用于跟踪用户连接上Oracle数据库之后的各种信息。

会话属性

SID

计算机名

PGA内存

状态

程序

含义 会话标识符 操作系统计算机名 会话使用的PGA内存大小 会话处于活动还是非活动状态 当前正在运行的程序

21. 什么是事务?事务的特征是什么?如何处理事务?

事务是当前主流数据库系统普遍采用的并发控制机制。

事务是oracle9i中进行数据库操作的基本单位,在pl/sql程序中有三个事务处理命令 Commit命令 rollback命令 savepoint命令

为了保证数据完整性,数据库系统要求事务具有以下四个特征:原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability),简称为ACID特征。 处理事务的方法:

? 提交(commit):在事务整个过程确保无错的情况下使用。

? 回滚(rollback):在事务处理中途出现故障或错误时使用。

22. 什么是锁,锁机制有哪几种,分别说明?

数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。

加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作。

锁的机制分为两种:乐观锁和悲观锁

悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系统不会修改数据)。

相对悲观锁而言,乐观锁机制采取了更加宽松的加锁机制。

23. Oracle中的锁有几类?分别是什么?

Oracle中主要有三类锁,具体是:

1.DML锁:DML(select、insert、update和delete等)锁用于确保一次只有一个人能修改某一行,而且你正在处理一个表时,别人不能删除这个表。

? TX锁(事务锁):事务发起第一个修改时,会得到TX锁,而且会一直持有这个锁,

直至事务执行提交或回滚。

? TM锁:用于确保在修改表的内容时,表的结构不会改变。

2.DDL锁:在DDL(create、alter、drop等)操作中会自动为对象加DDL锁,从而保护这些对象不会被其他会话所修改。

3.内部锁和闩:用来协调对其共享数据结构、对象和文件的多用户访问。

24. Oracle数据方案对象有哪几种?作用分别是什么?

? 表是Oracle数据库中主要的数据存储容器。

? 索引:用于快速定位到查询的数据行。在Oracle中,索引基本分为以下几种:B*Tree

索引,反向索引,降序索引,位图索引,函数索引,interMedia全文索引等。

? B*Tree索引:最常见的索引结构,默认建立的索引就是这种类型的索引。B*Tree

索引在检索高基数数据列(高基数数据列是指该列有很多不同的值)时提供了最好的性能。

Oracle常见题

? 位图索引:主要用于决策支持系统或静态数据。位图索引最好用于低基数数据列(即

列的唯一值除以行数为一个很小的值,接 近零)。例如有一个“性别”列,列值有“男”,“女”2种,但一共有300万条记录,那么2/3000000约等于0, 这种情况下最适合用位图索引。

Oracle常见题

? 视图:数据。

使用视图的目的:确保数据表的安全性和隐蔽数据的复杂性。

视图不是表,只是一些select语句的集合。

? 同义词为任何表、索引、视图、过程等对象起别名。

? 序列:直接产生唯一的顺序序号的数据对象。

序列一般用于主键自增。

25. Oracle的数据类型有哪些?

数据类型 含义

char 定长的字符型数据,最大长度可达2KB

nchar 存储Unicode字符集的定长字符型数据,最大长度为2KB

Varchar2 可变长的字符型数据,最大长度可达4000个字符

Nvarchar2 存储Unicode字符集的变长字符型数据,最大长度为4KB

number 存储整型或浮点型数据

Date 存储日期数据

Long 存储最大长度为2GB的变长字符数据

Raw 存储非结构化数据的变长字符数据,最长为2KB

Long Raw 存储非结构化数据的变长字符数据,最长为2GB

Rowid 存储表中列的物理地址的二进制数据,占用固定的10个字节

Blob二进制大对象,最大长度为4GB

Clob 字符大对象,最大长度为4GB

Nclob 存储多达4GB的Unicode字符数据

Bfile 把非结构化的二进制数据存储在数据库以外的操作系统文件中

Urowid 存储表示任何类型列地址的二进制数据

float 存储浮点数

26. Oracle中有几种约束条件?分别描述。

约束条件就是Oracle数据库系统提供的对数据的完整性进行制约的机制。

Oracle常见题

27. 简述Oracle的安全机制。

Oracle的安全管理机制就是通过给用户授相应权限实现的。

? 用户:Oracle数据库的使用者。

? 权限分为系统权限和对象权限。

系统级权限:在整个数据库系统级控制数据库的存取和使用的权限。

对象级权限:在对象级控制数据库的存取和使用的权限。

? 角色:一组命名的相关权限,这组权限可以通过这个名字授予用户或其他的角色。

用户是Oracle数据库的使用者,角色是一组命名的相关权限,权限是操纵Oracle数据库的能力。大家想想,我能直接使用角色去操作数据库吗?我能直接直接使用权限去操作数据库吗?不行,必须通过用户去操作数据库。

但是,用户如果没有权限能操作数据库吗?不行,用户必须具备操作数据库的相应权限,权限包括系统权限和对象权限。我们可以将权限直接赋予用户,但是如果赋予量一大,或者有些用户的权限都是相同的,那么我们就可以创建角色,将这些相同的权限赋予角色,然后只需要将角色赋予相应的用户就可以了,不仅节省时间,还可以做到角色的共用及系统的安全。这就是三者之间的关系。

Oracle常见题

28. Oracle数据库备份和恢复的内容为?

1.初始化参数文件

2.控制文件

3.数据文件

4.联机重做日志文件

5.归档日志文件

29. Oracle如何进行逻辑备份和恢复。

? 用exp指令进行导出。

? 用imp指令进行导入。

Oracle常见题

30. Truncate与delete的区别?(重点:性能上的区别)

1、TRUNCATE在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令DELETE

将被撤销,而TRUNCATE则不会被撤销。

2、TRUNCATE是一个DDL语言,向其他所有的DDL语言一样,他将被隐式提交,不能对TRUNCATE使用ROLLBACK命令。

3、TRUNCATE将重新设置高水平线和所有的索引。在对整个表和索引进行完全浏览时,经过TRUNCATE操作后的表比DELETE操作后的表要快得多。

4、TRUNCATE不能触发任何DELETE触发器。

5、不能授予任何人清空他人的表的权限。

6、当表被清空后表和表的索引讲重新设置成初始大小,而delete则不能。

7、不能清空父表。 TRUNCATE TABLE (schema)table_name DROP(REUSE) STORAGE 在默认是 DROP STORAGE 当使用DROP STORAGE时将缩短表和表索引,将表收缩到最小范围,并重新设置NEXT参数。REUSE STORAGE不会缩短表或者调整NEXT参数在特殊情况下使用 REUSE ST

DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的的删除操作作为事务记录在日志中保存以便进行进行回滚操作。

TRUNCATE TABLE 则一次性地从表中删除所有的数据页并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。并且在删除的过程中不会激活与表有关的删除触发器。执行速度快。

31. 数据库设计的目标是什么?

(1)实现数据共享。

数据共享包含所有用户可同时存取数据库中的数据,也包括用户可以用各种方式通过接口使用数据库,并提供数据共享。

(2)减少数据的冗余度。

同文件系统相比,由于数据库实现了数据共享,从而避免了用户各自建立应用文件。减少了大量重复数据,减少了数据冗余,维护了数据的一致性。

(3)数据的独立性。

数据的独立性包括数据库中数据库的逻辑结构和应用程序相互独立,也包括数据物理结构的变化不影响数据的逻辑结构。

(4)数据实现集中控制。

文件管理方式中,数据处于一种分散的状态,不同的用户或同一用户在不同处理中其文件之间毫无关系。利用数据库可对数据进行集中控制和管理,并通过数据模型表示各种数据的组织以及数据间的联系。

(5)数据一致性和可维护性,以确保数据的安全性和可靠性。

主要包括:①安全性控制:以防止数据丢失、错误更新和越权使用;②完整性控制:保证数据的正确性、有效性和相容性;③并发控制:使在同一时间周期内,允许对数据实现多路存取,又能防止用户之间的不正常交互作用;④故障的发现和恢复:由数据库管理系统提供一套方法,可及时发现故障和修复故障,从而防止数据被破坏

32. 数据库设计的步骤?

(1)需求分析

(2)概念设计

(3)逻辑设计

(4)物理设计

(5)验证设计

(1)需求分析;调查和分析用户的业务活动和数据的使用情况,弄清所用数据的种类、范围、数量以及它们在业务活动中交流的情况,确定用户对数据库系统的使用要求和各种约束条件等,形成用户需求规约。

(2)概念设计;对用户要求描述的现实世界(可能是一个工厂、一个商场或者一个学校等),通过对其中住处的分类、聚集和概括,建立抽象的概念数据模型。这个概念模型应反映现实世界各部门的信息结构、信息流动情况、信息间的互相制约关系以及各部门对信息储存、查询和加工的要求等。所建立的模型应避开数据库在计算机上的具体实现细节,用一种抽象的形式表示出来。以扩充的实体—(E-R模型)联系模型方法为例,第一步先明确现实世界各部门所含的各种实体及其属性、实体间的联系以及对信息的制约条件等,从而给出各部门内所用信息的局部描述(在数据库中称为用户的局部视图)。第二步再将前面得到的多个用户的局部视图集成为一个全局视图,即用户要描述的现实世界的概念数据模型。

(3)逻辑设计;主要工作是将现实世界的概念数据模型设计成数据库的一种逻辑模式,即适应于某种特定数据库管理系统所支持的逻辑数据模式。与此同时,可能还需为各种数据处理应用领域产生相应的逻辑子模式。这一步设计的结果就是所谓“逻辑数据库”。

(4)物理设计;根据特定数据库管理系统所提供的多种存储结构和存取方法等依赖于具体计算机结构的各项物理设计措施,对具体的应用任务选定最合适的物理存储结构(包括文件类型、索引结构和数据的存放次序与位逻辑等)、存取方法和存取路径等。这一步设计的结果就是所谓“物理数据库”。

(5)验证设计;在上述设计的基础上,收集数据并具体建立一个数据库,运行一些典型的应用任务来验证数据库设计的正确性和合理性。一般,一个大型数据库的设计过程往往需要经过多次循环反复。当设计的某步发现问题时,可能就需要返回到前面去进行修改。因此,在做上述数据库设计时就应考虑到今后修改设计的可能性和方便性。

33. 简述数据库设计的三大范式,并举例说明。

第一范式(1NF):在关系模式R中的每一个具体关系r中,如果每个属性值都是不可再分的最小数据单位,则称R是第一范式的关系。

第二范式(2NF):要求实体的属性完全依赖于主关键字。所谓“完全依赖”是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。简而言之,第二范式就是非主属性非部分依赖于主关键字。

第三范式(3NF):要求一个数据库表中不包含已在其他表中包含的非主关键字信息。

如果关系模式R(U,F)中的所有非主属性对任何候选关键字都不存在传递信赖,则称关系R是属于第三范式的。

34. 什么是PL/SQL,PL/SQL的运行环境?PL/SQL的程序结构?

在甲骨文数据库管理方面,plsql是对结构化查询语言(SQL)的过程语言扩展。plsql的目的是联合数据库语言和过程语言。plsql的基本单位叫做一个区段,由三个部份组成:一个申明部份,一个可运行部份,和排除-构建部分。 因为plsql允许混合SQL申明和过程结构,因此可以在将申明发送到甲骨文系统去执行之前使用plsql区段和副程序来组合SQL申明,没有plsql,甲骨文需要就每次处理SQL申明,在网络环境中,这将影响交通流量,而且增加响应时间。plsql区段只被编译一次并且以可运行的形式储存,以降低响应时间。

PL/SQL能够驻留在两种环境中。

? Oracle 数据库服务器。

? Oracle 开发工具。

比如:SQL Plus,SQLPlus Worksheet,Oracle SQL Developer等。

PL/SQL块结构

PL/SQL是一种块结构的语言,组成PL/SQL程序的单元是逻辑块,一个PL/SQL 程序包含了一个或多个逻辑块,每个块都可以划分为三个部分。与其他语言相同,变量在使用之前必须声明,PL/SQL提供了独立的专门用于处理异常的部分,下面描述了PL/SQL块的不同部分:

声明部分(Declaration section)

声明部分包含了变量和常量的数据类型和初始值。这个部分是由关键字DECLARE开始,如果不需要声明变量或常量,那么可以忽略这一部分;需要说明的是游标的声明也在这一部分。

执行部分(Executable section)

执行部分是PL/SQL块中的指令部分,由关键字BEGIN开始,所有的可执行语句都放在这一部分,其他的PL/SQL块也可以放在这一部分。

异常处理部分(Exception section)

这一部分是可选的,在这一部分中处理异常或错误,对异常处理的详细讨论我们在后面进行。

PL/SQL块语法

[DECLARE]

---declaration statements

BEGIN

---executable statements

[EXCEPTION]

---exception statements

END

35. 什么是游标?

游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果

每个游标区都有一个名字

用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理

主语言是面向记录的,一组主变量一次只能存放一条记录

仅使用主变量并不能完全满足SQL语句向应用程序输出数据的要求

36. 什么是存储过程?它的语法?

sql语句执行的时候要先编译,然后执行。存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。

CREATE PROCEDURE [拥有者.]存储过程名[;程序编号]

[(参数#1,?参数#1024)]

[WITH

{RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION}

]

[FOR REPLICATION]

AS 程序行

其中存储过程名不能超过128个字。每个存储过程中最多设定1024个参数 (SQL Server 7.0以上版本),参数的使用方法如下:

@参数名 数据类型 [VARYING] [=内定值] [OUTPUT]

每个参数名前要有一个“@”符号,每一个存储过程的参数仅为该程序内部使用,参数的类型除了IMAGE外,其他SQL Server所支持的数据类型都可使用。

[=内定值]相当于我们在建立数据库时设定一个字段的默认值,这里是为这个参数设定默认值。[OUTPUT]是用来指定该参数是既有输入又有输出值的,也就是在调用了这个存储过程时,如果所指定的参数值是我们需要输入的参数,同时也需要在结果中输出的,则该项必须为OUTPUT,而如果只是做输出参数用,可以用CURSOR,同时在使用该参数时,必须指定VARYING和OUTPUT这两个语句。

例子:

CREATE PROCEDURE order_tot_amt @o_id int,@p_tot int output AS

SELECT @p_tot = sum(Unitprice*Quantity)

FROM orderdetails

WHERE ordered=@o_id

例子说明:

该例子是建立一个简单的存储过程order_tot_amt,这个存储过程根据用户输入的定单ID号码(@o_id),由定单明细表 (orderdetails)中计算该定单销售总额[单价(Unitprice)*数量(Quantity)],这一金额通过@p_tot这一参数输出给调用这一存储过程的程序。

37. Oracle中异常处理分为哪几部分?

在设计PL/SQL程序时,经常会发生这样或那样的错误,异常处理就是针对错误进行处理的程序段,Oracle 9i中的异常处理分为系统预定义异常处理和自定义异常处理两部分。 系统预定义异常处理

系统预定义异常处理是针对PL/SQL程序编译、执行过程中发生的问题进行处理的程序。 下列代码为正确代码,在【SQLPlus Worksheet】中能够顺利执行。

――――――――――――――――――――――――――――――――――――― set serveroutput on declare tempno integer:=90; begin tempno:=tempno+1; end; ―――――――――――――――――――――――――――――――――――――

【配套程序位置】:第9章 correctplsql.sql。

下列代码为错误代码,在【SQLPlus Worksheet】中的执行结果如图9.56所示。

Oracle常见题

【配套程序位置】:第9章 wrongplsql.sql。

由于代码有错误,因此将激活系统预定义的异常处理,并得出如下提示信息。

Oracle常见题

Oracle 9i提供了很多异常处理,读者可以尝试修改可以正常运行的程序,并执行修改后的程序,就可以发现调用了哪些异常处理,下面着重介绍如何自定义异常处理。 自定义异常处理

1. 定义异常处理

定义异常处理的语法如下:

declare

异常名 exception;

2. 触发异常处理

触发异常处理的语法如下:

raise 异常名;

3. 处理异常

触发异常处理后,可以定义异常处理部分,语法如下:

Exception

When 异常名1 then

异常处理语句段1;

When 异常名2 then

异常处理语句段2;

38. PLSQL复合数据类型有哪些?

在pl/sql 中复合数据类型的声明共有5种方式!下面分别阐述其特点:

一、%type属性

让变量与相应数据表中字段的类型一致。如:

在表xs中包含xh列,声明一个变量my_xh与xh列具有相同的数据类型。 my_xh xs.xh%type;

优点:

不必知道xh列的确切数据类型。

xh列的数据类型的改变,my_xh列的数据类型自动改变。

二、%rowtype属性(隐式申明记录)

声明一个记录类型的变量,与与对应表的行数据具有相同的名称和数据类型。例子如下: 声明一个记录名为cj_rec,与xs_kc表具有相同的名称和数据类型。

DECLARE cj_rec XS_KC%ROWTYPE;

三、记录类型(显示申明记录)

显式定义记录是在PL/SQL程序块中创建记录变量之前在声明部分定义。语法如下: TYPE record_type IS RECORD(

Field1 type1 [NOT NULL] [:= exp1 ],

Field2 type2 [NOT NULL] [:= exp2 ],

. . . . . .

Fieldn typen [NOT NULL] [:= expn ] ) ;

例子如下

TYPE xs_rec IS RECORD(

xh number(2) NOT NULL:=1,

xm char(8)

);

四、定义一维表类型

Type 要定义的类型的名字 is table of type index by binary_integer

例:定义名为tabletype1和tabletype2的两个一维数组,table1 和table2 分别是两种表类型变量。

Declare

type tabletype1 is table of varchar2(4) index by binary_integer;

type tabletype2 is table of scott.testtable.recordnumber%type index by binary_integer; table1 tabletype1;

table2 tabletype2;

begin

table1(1):='大学';

table1(2):='大专';

table2(1):=88;

table2(2):=55;

dbms_output.put_line(table1(1)||table2(1));

dbms_output.put_line(table1(2)||table2(2));

end;

五、定义多维表类型

Type 要定义的类型的名字 is table of %rowtype index by binary_integer 例

Declare

type tabletype1 is table of testtable%rowtype index by binary_integer; table1 tabletype1;

begin

select * into table1(1)

from scott.testtable

where recordnumber=60;

dbms_output.put_line(table1(1).recordnumber||table1(1).currentdate);

end;

39. Oracle性能优化点有哪些?

1.应用程序优化(主要是SQL优化)。

2.共享池区优化。

3.数据库缓冲区高速缓存优化。

4.重做日志缓冲区及杂项优化。

5.数据库优化。

6.并行查询优化。

7.争用优化。

8.I/O优化

9.操作系统优化。

40. 常用SQL优化技巧有哪些?

1.建议不用“*”来代替所有列名。

SELECT语句中可以用“*”来列出某个表的所有列名,但是这样的写法对Oracle系统来说会存在解析的动态问题。Oracle系统会通过查询数据字典来将“*”转换成表的所有列名,这自然会消耗系统时间。建议在写SELECT语句时,采用与访问表有关的实际列名。

2.在全表进行删除时,用TRUNCATE代替DELETE。

当用DELETE语句删除表中的数据行时,Oracle会使用撤销表空间来存放恢复的信息。在这期间,如果用户没有发出COMMIT语句,而是发出ROLLBACK语句,Oracle系统会将数据恢复到删除之前的状态。当用户使用TRUNCATE语句对表的数据进行删除时,系统不会将被删除的数据写到回滚段中,速度明显比DELETE快。所以当希望对全局进行删除时,采用TRUNCATE命令更加有效。

3.在确保完整性的情况下多用COMMIT语句。

COMMIT所释放的资源如下:

? 回滚段上用于恢复数据的信息,撤销表空间也只做短暂的保留。

? 被程序语句获得的锁。

? Redo log buffer中的空间。

? Oracle为管理上述资源的内部花费。

4.尽量减少表的查询次数。

5.EXISTS代替IN,NOT EXISTS代替NOT IN。

... where column in(select * from ... where ...);

... where exists (select 'X' from ...where ...);

通过使用EXISTS,Oracle系统会首先检查主查询,然后运行子查询直到它找到第一个匹配项,这就节省了时间。Oracle系统在执行IN子查询时, 首先执行子查询,并将获得的结果列表存放在在一个加了索引的临时表中。在执行子查询之前,系统先将主查询挂起,待子查询执行完毕,存放在临时表中以后再执 行主查询。这也就是使用EXISTS比使用IN通常查询速度快的原因。

6.驱动表的选择。

驱动表是指被最先访问的表。

示例:SELECT A.NAME,B.MANAGER FROM WORKER A,LOGGING B WHERE A.LOGGING=B.LOGGING; LOGGING表的logging列创建了索引。

WORKER表的LOGGING列没有索引。

7.WHERE子句的连接顺序。

Oracle采用自下而上的顺序解析WHERE子句。根据这个原理,表之间的连接必须写在其他WHERE条件之前。那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾,也就是在表进行连接操作以前,过滤掉得记录数越多越好。

8.绝对避免在order by子句中使用表达式。

仔细检查order by语句以找出非索引项或者表达式,它们会降低性能。

更多相关推荐:
Oracler数据库的三种登陆方式

Oracler的三种登陆方式要登陆Oracle先要打开的两个服务1用Oracle自带的SqlPlus登陆适用范围本机安装了Oracle数据库注意登陆界面的主机字符串是你要连接的数据库名2用IE浏览器登陆Orac...

图文教程:更改oracle数据库监听端口

1更改数据库监听端口安装oracle时默认的监听端口号为1521下面我们更改为946011查看当前监听的状态打开CMD窗口运行命令lsnrctlstatus12停止监听输入命令lsnrctlstop13修改Or...

oracle更改默认端口号

oracle更改默认端口号监听器加密限制ip访问来源互联网作者skate发布时间20xx0618标签oracle安全oracle数据库的安全包含两部分1一部分是os的安全2网络的安全2oracle软件本身的安全...

查看Oracle11g中OEM访问地址以及端口号

如何查看Oracle11g中OEM的访问地址已经端口号1查看u01apporaclesysmanconfigemdproperties文件获取OEM地址oracleCentOSconfigpwdu01appor...

oracle 数据库监听详细配置

一个listener监听两个端口的配置在一台服务器上有两个数据库分别ora10g和orcl环境为数据库ora10gsidora10g数据库orclsidorclA首先在oracle用户下做环境变量exportO...

Windows下修改Oracle默认的端口(图文并茂)

Windows下修改默认的端口作者寒昌强调一点由于oracle实例的动态注册只能在默认端口1521上运行端口修改后监听一定要记得修改为静态注册方式否则您永远也等不到LISTENER动态监听到您的oracle实例...

PLSQL连接oracle数据库配置

PLSQL连接oracle数据库配置方法一1点击NetConfigurationAssistant2在弹出的对话框中选择本地Net服务名配置点下一步3在服务名配置对话框中选择添加点下一步4在如下对话框中填写要访...

创建oracle数据库客户端连接实例

Oracle客户端连接实例用于创建通过本地命名解析的oracle网络数据库服务的连接描述符实例配置步骤如下1所有程序oracle配置和移植工具NetConfigurationAssistant2选择本地网络服务...

Oracle数据库远程连接设置

Oracle数据库远程连接设置来源zhanganan时间20xx816161928浏览次字体大中小我要投稿文章概述Oracle数据库的远程连接可以通过多种方式来实现本文我们主要介绍四种远程连接的方法和注意事项并...

如何配置Oracle数据库监听

近段时间很多网友提出监听配置相关问题客户终端Client无法连接服务器端Server本文现对监听配置作一简单介绍并提出一些客户终端无法连接服务器端的解决思路愿对广大网友与读者有一些帮助一监听器LISTENER监...

Oracle 数据库操作总结v20xx0329

Oracle数据库操作总结目录1登录操作22常用工具23SQLPlus常用命令24常用数据类型35SQL分类36数据操作DML461查询语句462插入语句663修改记录764删除记录765ROLLBACK回滚8...

Oracle数据库配置文件的经典解析

Oracle主要配置文件profile文件oratab文件数据库实例初始化文件initSIDora监听配置文件sqlnetora文件tnsnamesora文件12Oracle主要配置文件介绍121etcprof...

oracle数据库端口号(24篇)