当前位置:文档之家› oracle的TM锁、TX锁知识完全普及

oracle的TM锁、TX锁知识完全普及

oracle的TM锁、TX锁知识完全普及
oracle的TM锁、TX锁知识完全普及

oracle的TM锁、TX锁知识完全普及

锁概念基础

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

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

在数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即X锁)和共享锁(Share Locks,即S锁)。当数据对象被加上排它锁时,其他的事务不能对它读取和修改。加了共享锁的数据对象可以被其他事务读取,但不能修改。数据库利用这两种基本的锁类型来对数据库的事务进行并发控制。

Oracle数据库的锁类型

根据保护的对象不同,Oracle数据库锁可以分为以下几大类:DML锁(data locks,数据锁),用于保护数据的完整性;DDL锁(dictionary locks,字典锁),用于保护数据库对象的结构,如表、索引等的结构定义;内部锁和闩(internal locks and latches),保护数据库的内部结构。

DML锁的目的在于保证并发情况下的数据完整性,。在Oracle数据库中,DML

锁主要包括TM锁和TX锁,其中TM锁称为表级锁,TX锁称为事务锁或行级锁。

当Oracle 执行DML语句时,系统自动在所要操作的表上申请TM类型的锁。当TM锁获得后,系统再自动申请TX类型的锁,并将实际锁定的数据行的锁标志位进行置位。这样在事务加锁前检查TX锁相容性时就不用再逐行检查锁标志,而只需检查TM锁模式的相容性即可,大大提高了系统的效率。TM锁包括了SS、SX、S、X 等多种模式,在数据库中用0-6来表示。不同的SQL操作产生不同类型的TM锁。

在数据行上只有X锁(排他锁)。在 Oracle数据库中,当一个事务首次发起一个DML语句时就获得一个TX锁,该锁保持到事务被提交或回滚。当两个或多个会话在表的同一条记录上执行 DML语句时,第一个会话在该条记录上加锁,其他的会话处于等待状态。当第一个会话提交后,TX锁被释放,其他会话才可以加锁。

当Oracle数据库发生TX锁等待时,如果不及时处理常常会引起Oracle数据库挂起,或导致死锁的发生,产生ORA-60的错误。这些现象都会对实际应用产生

极大的危害,如长时间未响应,大量事务失败等。

悲观封锁和乐观封锁

一、悲观封锁

锁在用户修改之前就发挥作用:

Select ..for update(nowait)

Select * from tab1 for update

用户发出这条命令之后,oracle将会对返回集中的数据建立行级封锁,以防止其他用户的修改。

如果此时其他用户对上面返回结果集的数据进行dml或ddl操作都会返回一个错误信息或发生阻塞。

1:对返回结果集进行update或delete操作会发生阻塞。

2:对该表进行ddl操作将会报:Ora-00054:resource busy and acquire with nowait specified.

原因分析

此时Oracle已经对返回的结果集上加了排它的行级锁,所有其他对这些数据进行的修改或删除操作都必须等待这个锁的释放,产生的外在现象就是其他的操作将发生阻塞,这个这个操作commit或rollback.

同样这个查询的事务将会对该表加表级锁,不允许对该表的任何ddl操作,否则将会报出ora-00054错误::resource busy and acquire with nowait specified.

二、乐观封锁

乐观的认为数据在select出来到update进取并提交的这段时间数据不会被更改。这里面有一种潜在的危险就是由于被选出的结果集并没有被锁定,是存在一种可能被其他用户更改的可能。因此Oracle仍然建议是用悲观封锁,因为这样会更安全。

阻塞

定义:

当一个会话保持另一个会话正在请求的资源上的锁定时,就会发生阻塞。被阻塞的会话将一直挂起,直到持有锁的会话放弃锁定的资源为止。4个常见的dml语句会产生阻塞

INSERT

UPDATE

DELETE

SELECT…FOR UPDATE

INSERT

Insert发生阻塞的唯一情况就是用户拥有一个建有主键约束的表。当2个的会话同时试图向表中插入相同的数据时,其中的一个会话将被阻塞,直到另外一个

会话提交或会滚。一个会话提交时,另一个会话将收到主键重复的错误。回滚时,被阻塞的会话将继续执行。

UPDATE 和DELETE当执行Update和delete操作的数据行已经被另外的会话锁定时,将会发生阻塞,直到另一个会话提交或会滚。

Select …for update

当一个用户发出select..for update的错作准备对返回的结果集进行修改时,如果结果集已经被另一个会话锁定,就是发生阻塞。需要等另一个会话结束之后才可继续执行。可以通过发出select… for update nowait的语句来避免发生阻塞,如果资源已经被另一个会话锁定,则会返回以下错误:Ora-00054:resource busy and acquire with nowait specified.

死锁-deadlock

定义:当两个用户希望持有对方的资源时就会发生死锁.

即两个用户互相等待对方释放资源时,oracle认定为产生了死锁,在这种情况下,将以牺牲一个用户作为代价,另一个用户继续执行,牺牲的用户的事务将回滚.

例子:

1:用户1对A表进行Update,没有提交。

2:用户2对B表进行Update,没有提交。

此时双反不存在资源共享的问题。

3:如果用户2此时对A表作update,则会发生阻塞,需要等到用户一的事物结束。

4:如果此时用户1又对B表作update,则产生死锁。此时Oracle会选择其中一个用户进行会滚,使另一个用户继续执行操作。

起因:

Oracle的死锁问题实际上很少见,如果发生,基本上都是不正确的程序设计造成的,经过调整后,基本上都会避免死锁的发生。

DML锁分类表

1.关于V$lock表和相关视图的说明

2.其它相关视图说明

select * from v$lock;

select * from v$lock where block=1;

2.查询被锁的对象

select * from v$locked_object;

3.查询阻塞

查被阻塞的会话

select * from v$lock where lmode=0 and type in ('TM','TX');

查阻塞别的会话锁

select * from v$lock where lmode>0 and type in ('TM','TX');

4.查询数据库正在等待锁的进程

select * from v$session where lockwait is not null;

5.查询会话之间锁等待的关系

select a.sid holdsid,b.sid waitsid,a.type,a.id1,a.id2,a.ctime from v$lock a,v$lock b where a.id1=b.id1 and a.id2=b.id2 and a.block=1and b.block=0;

6.查询锁等待事件

select * from v$session_wait where event='enqueue';

Oracle数据库基本知识点

1、数据库基本语句 (1)表结构处理 创建一个表:cteate table 表名(列1 类型,列2 类型); 修改表的名字 alter table 旧表名 rename to 新表名 查看表结构 desc 表名(cmd) 添加一个字段 alter table 表名 add(列类型); 修改字段类型 alter table 表名 modify(列类型); 删除一个字段 alter table 表名 drop column列名; 删除表 drop table 表名 修改列名 alter table 表名 rename column 旧列名 to 新列名; (2)表数据处理 增加数据:insert into 表名 values(所有列的值); insert into 表名(列)values(对应的值); 更新语句:update 表 set 列=新的值,…[where 条件] 删除数据:delete from 表名 where 条件 删除所有数据,不会影响表结构,不会记录日志, 数据不能恢复--》删除很快: truncate table 表名 删除所有数据,包括表结构一并删除: drop table 表名 去除重复的显示:select distinct 列 from 表名 日期类型:to_date(字符串1,字符串2)字符串1是日期的字 符串,字符串2是格式 to_date('1990-1-1','yyyy-mm-dd')-->返回日期的 类型是1990-1-1 (3)查询语句 1)内连接 select a.*,b.* from a inner join b on a.id=b.parent_id

Oracle_Forms开发基础知识

1 相关软件的安装 1.1 Form Builder 安装路径:\\sie-file-svr\01_公司级共享资源\06_工具软件\06 开发工具\6i 在安装的过程中,可以一路默认值下去。 需要注意的时候,在安装时,会不停的自动打开很多文件夹和命令提示符的窗口,不要手工去关闭这些窗口,安装程序会自动关闭,知道提示你安装成功(这时可以手工关闭余留下来的没有被关闭的窗口)。 注册表修改 <1>、NLS_LANG HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE 搜索NLS_LANG,出现NLS_LANG=ZHS16GBK或者NLS_LANG=ZHS16CGB231280的地方请全部修改成 NLS_LANG=AMERICAN_AMERICA.UTF8 <2>、FORMS60_PATH变量 在后面加上TEMPLATE/APSTAND.FMB所在的路径(F:\WORK\FORM)和PLL文件所在的路径 (F:\WORK\PLL)。 1.2 Patch 安装路径:\\hi4-sv11\Oracle\Software\patch\p3095277_9204_WINNT\Disk1 安装这个Patch的原因(来自MetaLink): The information in this article applies to: Oracle Server - Enterprise Edition - Version: 9.2.0.1 to Oracle Provider for OLE DB - Version: 9.2.0.1 Microsoft Windows 2000 Microsoft Windows XP Microsoft Windows (32-bit) Symptoms Using the Oracle Provider for OLEDB 9.2.0.1.0 with web applications, the data retrieved and sent to the webpage is good for the first 100 rows. After the First 100 rows, th data is displayed as garbage or ????. The OLEDB registry default fetchsize has been changed from the default of 100.

oracle复习大纲(1)

chapter 7 1.Oracle数据库物理存储结构的组成及各个部分的功能、性质。 数据文件:用于存储数据库中的所有数据 控制文件:用于记录和描述数据库的物理存储结构信息 重做日志文件:用于记录外部程序(用户)对数据库的改变操作 归档文件:用于保存已经写满的重做日志文件 初始化参数文件:用于设置数据库启动时的参数初始化值 跟踪文件:用于记录用户进程、数据库后台进程等的运行情况 口令文件:用于保存具有SYSDBA,SYSOPER权限的用户名和SYS用户口令; 警告文件:用于记录数据库的重要活动以及发生的错误; 备份文件:用于存放数据库备份所产生的文件。 2.数据文件管理: (1)数据文件与表空间的关系 从物理角度看,数据库由数据文件构成,数据存储在数据文件中;从逻辑角度看,数据库是由表空间构成的,数据存储在表空间中。一个表空间包含多个数据文件,但一个数据文件只能属于一个表空间。 在oracle数据库中,数据文件是依附于表空间而存在。一个表空间可以包含多个数据文件,但一个数据文件只能从属于一个表空间。在逻辑上,数据库对象都存放在表空间中,实质上是存放在表空间所对应的数据文件中。 (2)数据文件的添加、数据文件大小的修改autoextend on 、resize(操作)、数据文件的移植 添加: 向表空间添加一个大小为xMB的数据文件: alter tablespace 表空间名add datafile ‘路径\*.dbf’ size xMB; 向表空间添加一个自动增长的数据文件: alter tablespace 表空间名add datafile ‘路径\*.dbf’ size xMB autoextend on next 1M maxsize 50MB; 向临时表空间添加一个大小为xMB的数据文件: alter tablespace 表空间名 add tempfile‘路径\*.dbf’ size xMB; 修改: ①修改大小 修改数据文件大小为yMB: Alter database datafile ‘路径\*.dbf’ resize yMB; 修改文件的自动增长方式: Alter database datafile ‘路径\*.dbf’ autoextend on next 1M maxsize unlimited;

大学数据库全面知识点资料整理

第1章绪论 1 .数据库管理系统是数据库系统的一个重要组成部分,它的功能包括数据定义功能、数据操纵功能、数据库的运行管理、数据库的建立和维护功能。 2 .数据库系统是指在计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员构成。 3 .数据库管理技术的发展是与计算机技术及其应用的发展联系在一起的,它经历了三个阶段:人工管理阶段,文件系统阶段和数据库系统阶段。 4 .数据库具有数据结构化、最小的冗余度、较高的数据独立性等特点。 5 .DBMS还必须提供数据的安全性保护、数据的完整性检查、并发控制、数据库恢复等数据控制功能。 6 .数据库管理系统的主要功能有哪些? (填空题) ①数据库定义功能;②数据存取功能;③数据库运行管理;④数据库的建立和维护功能。 7.三级模式之间的两层映象保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。 (问答题) 8 .试述概念模型的作用。 (填空题) 概念模型实际上是现实世界到机器世界的一个中间层次。概念模型用于信息世界的建模,是现实世界到信息世界的第一层抽象,是数据库设计人员进行数据库设计的有力工具,也是数据库设计人员和用户之间进行交流的语言。 9 .根据模型应用的不同目的,可以将这些模型划分为两类,它们分别属于两个不同的层次。第一类是概念模型,第二类是数据模型。 (问答题) 10 .定义并解释概念模型中以下术语:实体,实体型,实体集,属性,码,实体联系图(E-R 图) (填空题) 实体:客观存在并可以相互区分的事物叫实体。 实体型:具有相同属性的实体具有相同的特征和性质,用实体名及其属性名集合来抽象和刻画同类实体称为实体型。 实体集:同型实体的集合称为实体集。 属性:实体所具有的某一特性,一个实体可由若干个属性来刻画。 码:唯一标识实体的属性集称为码。 实体联系图:E-R图提供了表示实体型、属性和联系的方法: 实体型:用矩形表示,矩形框内写明实体名。 属性:用椭圆形表示,并用无向边将其与相应的实体连接起来。 联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1 : 1,1 : n或m : n)。 11 .数据模型的三要素是指数据结构,数据操作,完整性约束。实际数据库系统中所支持的主要数据模型是关系模型,层次模型,网状模型。 13 .数据模型中的数据结构是对数据系统的静态特征描述,包括数据结构和数据间联系的描述,数据操作是对数据库系统的动态特征描述,是一组定义在数据上的操作,包括操作的涵义、操作符、运算规则及其语言等。 (问答题) 14 .定义并解释以下术语:DDL、DML (填空题) DDL:数据定义语言。用来定义数据库模式、外模式、内模式的语言。 DML:数据操纵语言。用来对数据库中的数据进行查询、插入、删除和修改的语句。 15 .关系模型是目前最常用也是最重要的一种数据模型。采用该模型作为数据的组织方式的数据库系统称为关系数据库系统。 (问答题) 16 .关系的完整性约束条件包括三大类:实体完整性、参照完整性和用户定义的完整性。

Oracle数据库期末复习知识点整理

基础知识 表3.2 Oracle数据类型

表3.3 XSB的表结构

操作表 创建表 CREATE TABLE [schema.] table_name ( column_namedatatype [DEFAULT expression] [column_constraint][,…n] [,…n] ) [PCTFREE integer] [PCTUSED integer] [INITRANS integer] [MAXTRANS integer] [TABLESPACE tablespace_name] [STORGE storage_clause] [CLUSTER cluster_name(cluster_column,…n)] [ENABLE | DISABLE ] [AS subquery] 【例】使用CRETE TABLE命令为XSCJ数据库建立表XSB,表结构参照表3.3。 打开SQL*Plus工具,以system方案连接数据库,输入以下语句: CREATE TABLE XSB ( XH char(6) NOT NULL PRIMARY KEY, XM char(8) NOT NULL, XB char(2) DEFAULT '1' NOT NULL, CSSJ date NOT NULL, ZY char(12) NULL, ZXF number(2) NULL, BZ varchar2(200) NULL ); 修改表 ALTER TABLE [schema.] table_name [ ADD(column_namedatatype [DEFAULT expression][column_constraint],…n) ] /*增加新列*/ [ MODIFY([ datatype ] [ DEFAULT expression ] [column_constraint],…n) ] /*修改已有列的属性*/ [ STORAGE storage_clause ] *修改存储特征*/ [ DROP drop_clause ] /*删除列或约束条件*/ 【例】使用ALTER TABLE语句修改XSCJ数据库中的表。

Oracle数据库简答题-考试重点

1.简单描述Oracle数据库体系结构的组成及其关系? 答:Oracle数据库体系结构由物理存储结构、逻辑存储结构和实例组成。其中物理存储结构描述了操作系统层次数据的存储与管理,包括数据文件、日志文件、重做日志文件等组成。逻辑结构描述了数据库内部数据的组织与管理,由表空间、段、区、块组成。实例是数据库运行的软件结构,由内存结构和后台进程组成。数据库运行过程中,用户的操作在内存区中进行,最终通过后台进行转化为对数据库的操作。 2、说明Oracle数据库物理存储结构的组成? Oracle数据库物理结构包括数据文件、控制文件、重做日志文件、初始化参数文件、归档文件、口令文件等。在控制文件中记录了当前数据库所有的数据文件的名称与位置、重做日志文件的名称与位置,以及数据文件、重做日志文件的状态等。 3、说明Oracle数据库数据文件的作用? 数据文件中保存了数据库中的所有数据,包括数据字典以及用户数据。 4、说明Oracle数据库控制文件的作用? 控制文件保存数据库的物理结构信息,包括数据库名称、数据文件的名称与状态、重做日志文件的名称与状态等。在数据库启动时,数据库实例依赖初始化参数定位控制文件,然后根据控制文件的信息加载数据文件和重做日志文件,最后打开数据文件和重做日志文件。 5、说明Oracle数据库重做日志文件的作用? 重做日志文件是以重做记录的形式记录、保存用户对数据库所进行的修改操作,包括用户执行DDL、DML语句的操作。如果用户只对数据库进行查询操作,那么查询信息是不会记录到重做日志文件中的。 6、说明数据库逻辑存储结构的组成和相互关系。 Oracle9i数据库的逻辑存储结构分为数据块、区、段和表空间四种。其中,数据块是数据库中的最小I/O单元,由若干个连续的数据块组成的区是数据库中最小的存储分配单元,由若干个区形成的段是相同类型数据的存储分配区域,由若干个段形成的表空间是最大的逻辑存储单元,所有的表空间构成一个数据库。 7、说明数据库表空间的种类,以及不同类型表空间的作用。 数据库表空间分为系统表空间和非系统表空间两类,其中非系统表空间包括撤销表空间、临时表空间和用户表空间等。 SYSTEM表空间主要用于存储数据库的数据字典、PL/SQL程序的源代码和解释代码、数据库对象的定义。撤销表空间专门进行回退信息的自动管理。临时表空间是专门进行临时段管理的表空间。用户表空间用于分离不同应用的数据,而且能够减少读取数据文件时产生的I/O冲突。 8、说明数据库、表空间、数据文件以及数据库对象之间的关系。 一个数据库由一个或多个表空间构成,不同的表空间用于存放不同应用的数

Oracle复习

一.创建用户 在YGGL数据库中创建一个用户MANAGER,授予DBA角色和SYSDBA系统权限,它可以替代system系统用户。 CONNECT SYSTEM/123456 AS SYSDAB CREATE USER MANAGER PROFILE "DEFAULT" IDENTIFIED BY manager DEFAULT TABLESPACE "USERS" TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK; GRANT SYSDBA TO "MANAGER"; GRANT "COUNTNECT" TO "MANAGER"; GRANT "DBA" TO "MANAGER"; ALTER user MANGER GRANT CONNECT THROUGH SYSTEM; 二:创建角色 在YGGL数据库中创建一个角色ADMIN,授予DBA角色和SYSDBA系统权限。CREATE ROLE ADMIN IDENTIFILED BY "manager"; GRANT SYSDAB TO ADMIN ; GRANT SYSOPER TO ADMIN; GRANT "CONNECT" TO ADMIN; GRANT "DBA" TO "ADMIN"; 一.创建概要文件 在YGGL数据库中创建概要文件YGGL_PROFILE并分配给用户MANAGER。CREATE PROFILE "XSCJ _PROFILE"LIMIT COMPOSITE_LIMIT DEFAULT FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 20 PASSWORD_GRACE_TIME 60 PASSWORD_LIFE_TIME 30 PASSWORD_REUSE_MAX UNLIMITED PASSWORD_REUSE_TIME 120 PASSWORD_VERIFY_FUNCTION DEFAULT (1)使用命令方式分别向YGGL数据库个表中插入一行记录 INSERT INTO ZPEMPLOYEES V ALUES('011112','罗林 ',TO_DATE('26-06-1973','DD-MM-YYYY'),1,'解放路100 ',210002,4055663,5); INSERT INTO ZPDEPARTMENTS V ALUES('6','人力资源',NULL); INSERT INTO ZPSALARY V ALUES ('011112',1200.09,50) (2)修改表salry的记录值 UPDATE ZPSALARY SET InCome=2890 WHERE EmployeeID='011112'; (3)删除Salary中的一行记录 DELETE FROM ZPSALARY WHERE EmployeeID='01112'; 3.索引和完整性 (1).对YGGL数据库中的Employees表的DepartmentID列建立索引 CREATE INDEX PK_XS_BAK ON ZPEMPLOYEES(DepartmentID) TABLESPACE USERS PCTFREE 48 INITRANS 10 MAXTRANS 100 STORAGE (INITIAL 64K NEXT 64K MINEXTENTS 5 MAXEXTENTS 20

数据库 知识点 完整版

1.数据管理:对数据的收集、整理、组织、维护、存储、检索、传送、利用 2.数据处理:采集、存储、加工、传播 3.DB:计算机存储设备上,以一定方式,数据的集合 4.DB与文件系统的区别: 4.DBMS:建立、管理、维护数据库的软件系统,例:SQL SERVER 功能: 定义(语言、外模式、逻辑模式、内模式); 操纵(插入、查询、更新、删除), 控制(安全、完整、并发、恢复), 维护(备份、转储), 通信(远程作业通信接口) 5.硬件(DB)→操作系统(OS)→DBMS(系统软件)→应用软件→应用程序 6.DBAS:以计算机为平台,以操作系统、数据库管理系统、某种程序语言等为软件环境,以某一领域需求为背景,利用数据库技术建立起的可用的应用软件系统;三要素:数据,物理存储器,数据库管理系统软件。例:教学管理系统

现实世界——客观世界 概念化 信息世界——实体—联系模型(概念模型) 形式化 数据世界——数据模型(层次、网状、关系) 8.数据模型:用数据、数据间的联系表示现实世界。包括: 层次模型——树状 网状模型——有向图 关系模型——表示数据与数据联系的二维表格 9.关系模型: 关系——一个二维表格 元组——每一行数据 元组分量——元组在每一个属性上的取值 属性——每一列名 属性值——行列交汇处的元素的取值 关系模式——每个关系表的表头所描述的数据结构 候选键——唯一标识元组且不含多余属性的属性集 主键——只有一个侯选建时的侯选键;具有唯一性、非冗余性、有效性(不可为空)外键——属性集X的子集不是自己的主键,却是别人的主键,则称之为自己的外键主属性——包含于侯选键里的属性 非主属性——不包含于侯选键 10.数据库的三级结构体系:

关于数据库知识点的再学习和整理

个人声明:本文档所有代码并没有经过上机验证,仅供参考,另外,因为只是自己总结的关于最基本的知识点,所以难免遗漏,所以请参阅相关材料观看,最后,版权所有,翻版没事!哈哈~~~~ 1,关系模型的数据结构非常简单,它只含有单一的数据结构——关系,在用户看来就是一张二维表,关系数据库就是用二维表表示关系以及他们之间的联系。 2.关于数据库的操作主要就是增删改查,其中尤其以查最重要,下面正对这几种数据库操作做一些sql语句方面的简单整理,以用来加强印象: 由于今天使用了mysql数据库,所以呢,先将一些使用的必须基本命令总结一些: 首先是安装了mysql数据库之后,进入dos命令提示窗口, 接下来我们要进入我们的数据库,那么要先进入mysql的bin路径下, 然后输入mysql -u root -p,然后会提示输入密码,然后进入, 进入后的命令提示符是mysql> 在mysql新建表之间和使用oracle 10g还是不一样的,先新建数据库, Create database 数据库名字; 增 A.首先是新建表:create table table_name( [列级完整性约束条件] [,[列级完整性约束条件]] ...... [,<表级完整性约束条件>]); E.g creatable table students( id int(4) primary key, Name char(20) not null, Foreign key id references teachers(no)); B.接着是添加信息:insert into [[,]...] values(常量[,常量]...); E.g insert into students values(1,'tom'); 注意,如果不列出来表格的属性的话,就说明添加一条完整的信息。 如果列出来表格的属性的话,那么没有列出来的就做,空值处理。 C.添加约束条件(注意,下面的语法只在oracle 10g中验证过,仅供参考)。 关于创建表格约束的时候是使用add constraint还是modify语法,我进行了可行性的测试,现在结果如下: 《》关于创建外键,两种语法都可以,语法如下 1,alter table 表格名add constraint 外键名foreign key(列名)references 被参照的表名(列名); 2,alter table 表格名modify foreign key(列名)references 被参照的表名(列名); 注意:alter table 表格名modify 列名foreign key references 被参照的表名(列名);是不可以的。 《》关于创建主键,两种方法都可以,语法如下 1,alter table 表格名add constraint 外键名primary key(列名) enable; 2,alter table 表格名modify 列名primary key;

oracle 基础题

一、判断题。(10小题) 1、题目:【Oracle基础知识】oracle 是甲骨文公司开发出的数据库软件:() 答案:正确 2、题目:【Oracle基础知识】oracle 的安装分为两种安装方式:1.基本安装和高级 安装。() 答案:正确 知识点:oaclede 安装分为两种方式:a.基本安装b.高级安装。我们通常选择基本安装。 3、题目:【Oracle基础知识】oracle 中的服务进程是在一个oracle数据库实例 启动后当一个用户建立链接后创建的。 () 答案:错误 知识点:这个服务是oracle的实例服务,oracle启动首先要启动此服务,此服务必须开启。 4、题目:【Oracle基础知识】commit语句使你能够保持数据的一致性,可在永 久地更新数据前预览修改,将逻辑相关地所有操作组合起来。() 答案:正确 知识点:commit的作用。 5、题目:【Oracle基础知识】任何DML(数据操作语言,用于查询,生成, 修改,删除数据库的操作)操作都离不开事物控制命令。() 答案:错误 知识点:并不是所有的数据操作语言都需要事物控制命令。例如:查询就不需要。 6、题目:【Oracle基础知识】Informix数据库中的char 数据类型和oracle数据 库下V ARCHAR2的数据类型相对应。() 答案:正确 知识点:Informix和oracle的数据类型不同。 7、题目:【Oracle基础知识】表空间是oracle 最大的逻辑组成部分。Oracle数 据库由一个或多个表空间组成。一个表空间由一个或多个数据文件组成,但一个数据文件只能属于一个表空间。() 答案:正确 知识点:关于表空间的知识。 8、题目:【Oracle基础知识】表空间分为永久表空间和临时表空间两种类型。 () 答案:正确 知识点:oracle表空间的分类。

Oracle数据库技术课程学习大纲详细

《现代数据库技术》教学大纲 课程名称:《现代数据库技术》 课程编号:学时数:56 学分数:3.5 适应专业:计算机与信息学院所有专业 一、本课程的地位、任务和作用 现代数据库技术是计算机在数据处理应用领域中的主要内容和坚实基础;也是今后若干年内研究和应用的最活跃的分支之一。因此,信息管理、软件开发、计算机等专业的学生,特别是以应用为目标的学生都必须学习和具备数据库原理与应用的知识。本课程通过介绍Oracle数据库基本操作、体系结构与数据库基本管理使学生初步掌握大型数据库的基本原理,了解大型数据库的管理方法。了解大型数据库的管理方法,使学生熟练掌握Oracle数据库系统下的SQL语言运用及PL/SQL程序设计。 本课程是一门理论和实践相结合的课程,要求学生在完成本课程的学习以后,能够结合自己所熟悉的某一门高级语言和Oracle,开发出一个小型的数据库应用系统。 二、本课程的相关课程 本课程的先修课程为《计算机组成原理》,《离散数学》,《数据结构》,《计算机网络》及《数据库原理》等课程。 三、本课程的基本内容及要求 教学内容: 第一章数据库概述(2学时) 1、教学内容: 1.1数据库基础知识 1.2关系数据库系统 1.3 Oracle基础知识 (1)Oracle的发展历史 (2)Oracle的特点 第二章O racle体系结构(6学时) 1、教学内容: 2.1 Oracle 体系结构概述 2.2Oracle的存储结构 (1)物理存储结构 (2)逻辑存储结构 2.3Oracle的实例 (1)Oracle内存结构

(2)Oracle进程 2.4数据字典 2、教学重点:Oracle的物理结构、oracle实例、Oracle的逻辑结构 3、教学难点:数据库实例与进程 第三章O racle11g的安装(2学时) 1、教学内容: 3.1 Oracle 11g环境介绍 3.2Oracle 11g for Windows的安装 (1)安装Oracle 11g服务器 (2)Oracle 11g与Windows (3)安装Oracle 11g客户端 3.3 Oracle 11g 的卸载 2、教学重点:学会Oracle的安装 第四章O RACLE数据库管理工具及网络配置(2学时) 1、教学内容: 4.1 SQL*Plus命令 (1)设置SQL*Plus 运行环境 (2)常用SQL*Plus命令 (3)格式化查询结果 4.2 Oracle企业管理器 4.3 数据库配置助手 4.4 启动与关闭oracle实例 2、教学重点:学会使用SQL*Plus 第五章S QL语言基础(5学时) 1、教学内容: 5.1SQL简介 5.2SQL的基本语法 5.3数据查询语言 5.4数据操纵语言 5.5数据定义语言 5.6数据控制语言 5.7常用函数 5.8 事务处理 2、教学重点:数据查询语言、数据操纵语言、数据定义语言、数据控 制语言 3、教学难点:SQL的基本语法 第六章P L/SQL编程(8学时)(课本第6,7章) 1、教学内容: 6.1PL/SQL基础 (1)变量及声明 (2)数据类型 (3)表达式 (4)PL/SQL程序块结构 6.2PL/SQL控制结构

Oracle数据库必会知识点 v1.0

Oracle数据库必会知识点 一、概念部分 1、什么是实例(Instance) 包括数据库的内存结构和一组后台进程。实例是存在于内存里面的,数据库中的数据操作均由实例中的进程来完成。 2、Oracle数据库(Database)概念 数据库是由基于磁盘的数据文件、控制文件、日志文件、参数文件和归档日志文件等组成的物理文件集合。 3、Oracle数据块的概念 数据块是Oracle逻辑存储结构中的最小的逻辑单位,也是执行数据库输入输出操作的最小存储单位。Oracle数据存放在“Oracle数据块”中,而不是“操作系统块”中。通常Oracle数据块是操作系统块的整数倍,如果操作系统快的大小为2048 Bytes,并且Oracle数据块的大小为8192 Bytes,则表示Oracle数据块由4个操作系统块构成。Oracle数据块有一定的标准大小,其大小被写入到初始化参数DB_BlOCK_SIZE中。另外,Oracle支持在同一个数据库中使用多种大小的快,与标准块大小不同的块就是非标准块。注意该参数在创建数据库实例时设置,且后续不可被修改,默认8192Bytes。 4、Oracle表空间的概念 Oracle使用表空间将相关的逻辑结构(比如段、数据区等)组合在一起,表空间是数据库的最大逻辑划分区域,通常用来存放数据表、索引、回滚段等数据对象(即Segment),任何数据对象在创建时都必须被指定存储在某个表空间中。表空间(属逻辑存储结构)与数据文件(属物理存储结构)相对应,一个表空间由一个或多个数据文件组成,一个数据文件只属于一个表空间;Oracle数据的存储空间在逻辑上表现为表空间,而在物理上表现为数据文件。举个例子来说,表空间相当于操作系统中的文件夹,而数据文件就相当于文件夹中的文件。每个数据库至少有一个表空间(即SYSTEM表空间),表空间的大小等于所有从属于它的数据文件大小的总和。 5、Oracle数据文件的概念 数据文件是用于保存用户应用程序数据和Oracle系统内部数据的文件,这些文件在操作系统中就是普通的操作系统文件,Oracle在创建表空间的同时会创建数据文件。Oracle数据库在逻辑上由表空间组成,每个表空间可以包含一个或多个数据文件,一个数据文件只能隶属于一个表空间。 6、Oracle控制文件的概念 控制文件是一个二进制文件,它记录了数据库的物理结构,其中主要包含数据库名、数据文件与日志文件的名字和位置、数据库建立日期等信息。控制文件一般在Oracle系统安装时或创建数据库时自动创建,控制文件所存放的路径由服务器参数文件spfileorcl.ora的control_files参数值来指定。由于控制文件存放有数据文件、日志文件等的相关信息,因此,Oracle实例在启动时必须访问控制文件。如果控制文件正常,实例才能加载并打开数据库;但若控制文件中记录了错误的信息,或者实例无法找到一个可用的控制文件,则实例无法正

Oracle基础知识大全,

课程目标: 1. 了解数据库系统在项目开发中的地位 2. 了解目前主流数据库系统 3. 熟练掌握查询命令 4. 熟练掌握数据操作方式 5. 熟练使用数据库内置函数 6. 掌握pl/sql程序设计语法结构 7. 掌握视图 8. 掌握存储过程 9. 掌握用户自定义函数 10. 掌握触发器 了解: 1.数据库组件: 1.1 实施应用集群 1.2 Oracle OLAP 1.3 数据挖掘 1.4 应用程序接口 1.5 网络组件 1.6 SQL Plus 1.7 企业管理器OEM

2. 几个版本间的差异: 2.1 增加了服务器参数文件SPFILE 2.2 使用了OMF免去了手工管理数据库文件的繁琐 2.3 支持多种数据库块大小 2.4 会话可以自动调整PGA的大小 2.5 引入了列表分区 课程内容: 1. 操作数据之前的准备工作: 1.1. 要保证有一个数据库: 1.2. 要保证创建一个表空间 create tablespace hbjr datafile 'E:\dbs\hbjr.dbf' size 100M; 1.3. 要创建一个用户,用户默认的表空间就是你创建的表空间 create user hbjr identified by orcl default tablespace hbjr; //授权限: grant dba to hbjr; 1.4. 用户/密码登录:

2. 表名/列字段名起名规范: 2.1 使用常规字母和数字 2.2 长度不要超过30 2.3 表名/列名不能重复 2.4 不能使用oracle的保留字 3. 数据类型 3.1 char:定长,存储单位--字节(bite) 3.2 varchar2:变长,存储单位--字节 3.3 nchar:定长,存储单位--字符 3.4 nvarchar2:变长,存储单位--字符 3.5 date:日期类型,7个字节,存储着--世纪,年,月,日,时,分,秒 3.6 timestamp:日期类型,11个字节,存储着--世纪,年,月,日,时,分,秒,毫秒 3.7 number:数据类型(数值类型) 3.8 clob:大字段类型,适合存储纯文本信息(例如:*.txt 文件)

ORACLE数据库基础测试题oracle数据库复习题

ORACLE数据库基础测试题 提示:本题为ORACLE数据库基础测试题,适合初学者对基础知识进行测试,以便查漏补缺。 1、 DDL指得就是:()。 A、数据定义语言 B、数据操作语言 C、数据查询语言 D、数据控制语言 正确答案:A解析: 2、 下列创建表语句正确得就是:(). A、create table emp(id number(4),); B、createtable emp(id number(4)); C、alter table emp(id number(4)) ; D、alter tableemp(id number(4),) ;

正确答案:B解析: 3、 下列Oracle函数中能够返回两个字符串连接后得结果得就是:()。 A、initcap B、instr C、trim D、concat 正确答案:D解析: 4、 下列SQL语句得查询结果就是:()。selectround(45、925,0),trunc(45、925)fromdual; A、4545 B、4645 C、4546 D、46 46 正确答案:B解析:

5、 关于函数nvl(d1,d2)得用法说法正确得就是:()。 A、表示如果d1为null则d2必须为null B、表示如果d1为null则忽略d2 C、表示如果d1不为null则用d2替代 D、表示如果d1为null则用d2替代 正确答案:D解析: 6、 显示emp表得所有行,所有列,下列SQL语句正确得就是:()。 A、select*fromemp; B、select all、*from emp; C、selectallfromemp; D、select/* from emp; 正确答案:A解析: 7、 查询职员得姓名及其直接领导,如果没有直接领导得职员,则显示为“NoManager",下列SQL语句正确得就是:()。

Oracle知识点总结

Oracle知识点总结 根据阎赫老师讲义整理Zealjiang 1、Oracle数据库的安装和配置 ⑴Oracle Internet级数据库 SQLServer 中小企业级数据库 Access 桌面级数据库 ⑵Oracle的安装 注意:来源和目标的目录不允许有中文或空格 ⑶Oracle数据库启动时必需开启的后台服务 ①OracleOrahome90TNSListener 使第三方的软件或语言访问 ②OracleServiceETC Oracle的实例 CRUD 增删改查 注意:②中的ETC是你起的实例的名字 ⑷Oracle的开发工具 ①DOS界面的开发平台 -> 运行->sqlplus ②Oracle本身基于DOS的平台 ->运行-> sqlplusw ③Oracle Enterprise Manager Console ④PL/SQL Developer7.1.5 ⑸创建一个表的完整流程 ①创建一个数数库 例子:创建一个数据库 ETC , 物理文件放在F:\ ,初始化1m ,自增长开启 create tablespace etc

datafile 'f:\etc.dbf' size 1m autoextend on; 删除表空间 drop tablespace 数据库名称; ②为该数据库创建一个帐号和密码 语法: create user 用户名称 identified by 密码 default tablespace 数据库名称 注意:1、在Oracle中账号和数据库one2one绑定 2、Oracle的密码不允许为纯数字或空 3、需要在system账号完成动作 修改Oracle的账号密码 语法:alter user 用户 identified by 新密码 ③用grant 权限 to 用户为该帐户授权 语法: grant 权限名称 to 用户; 撤销权限 语法:revoke 权限名称 from 用户名; ④在该帐号下创建表

Oracle_RAC知识汇总

一、Oracle RAC原理 ORACLE RAC原理在一个应用环境当中,所有的服务器使用和管理同一个数据库,目的是为了分散每一台服务器的工作量,硬件上至少需要两台以上的服务器,而且还需要一个共享存储设备。同时还需要两类软件,一个是集群软件,另外一个就是Oracle数据库中的RAC组件。同时所有服务器上的OS都应该是同一类OS,根据负载均衡的配置策略,当一个客户端发送请求到某一台服务的listener后,这台服务器根据我们的负载均衡策略,会把请求发送给本机的RAC组件处理也可能会发送给另外一台服务器的RAC组件处理,处理完请求后,RAC会通过集群软件来访问我们的共享存储设备。 逻辑结构上看,每一个参加集群的节点有一个独立的instance,这些instance访问同一个数据库。节点之间通过集群软件的通讯层(communication layer)来进行通讯。同时为了减少IO的消耗,存在了一个全局缓存服务,因此每一个数据库的instance,都保留了一份相同的数据库cache。 二、RAC中的特点是: 每一个节点的instance都有自己的SGA 每一个节点的instance都有自己的background process 每一个节点的instance都有自己的redo logs 每一个节点的instance都有自己的undo表空间 所有节点都共享一份datafiles和controlfiles Oracle还提出了一个缓存融合的技术(Cache fusion) 目的有两个 1.保证缓存的一致性 2.减少共享磁盘IO的消耗 因此在RAC环境中多个节点保留了同一份的DB CACHE 缓存融合(Cache fusion)工作原理: -**************************************** 1.其中一个节点会从共享数据库中读取一个block到db cache中 2.这个节点会在所有的节点进行交叉db block copy 3.当任何一个节点缓存被修改的时候,就会在节点之间进行缓存修改 4.为了达到存储的一致最终修改的结果也会写到磁盘上 三、ClusterWare组件 ******************* 有四种Service Crsd - 集群资源服务 Cssd - 集群同步服务 Evmd - 事件管理服务 oprocd - 节点检测监控 有三类Resource VIP - 虚拟IP地址(Virtual IP) OCR - Oracle Cluster Registry(集群注册文件),记录每个节点的相关信息

Oracle数据库知识总结

AD1. 执行一个SQL脚本文件 SQL>start file_name SQL>@ file_name 我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。 4. 将显示的内容输出到指定文件 SQL> SPOOL file_name 在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。 5. 关闭spool输出 SQL> SPOOL OFF 只有关闭spool输出,才会在输出文件中看到输出的内容。 7. COL命令: 主要格式化列的显示形式。 1). 改变缺省的列标题 COLUMN column_name HEADING column_heading For example: Sql>select * from dept; DEPTNO DNAME LOC ---------- ---------------------------- --------- 10 ACCOUNTING NEW YORK sql>col LOC heading location sql>select * from dept; DEPTNO DNAME location --------- ---------------------------- ----------- 10 ACCOUNTING NEW YORK 2). 将列名ENAME改为新列名EMPLOYEE NAME并将新列名放在两行上: Sql>select * from emp Department name Salary ---------- ---------- ---------- 10 aaa 11 SQL> COLUMN ENAME HEADING ’Employee|Name’ Sql>select * from emp Employee Department name Salary ---------- ---------- ---------- 10 aaa 11 note: the col heading turn into two lines from one line. 3). 改变列的显示长度: FOR[MAT] format Sql>select empno,ename,job from emp; EMPNO ENAME JOB ---------- ---------- --------- 7369 SMITH CLERK

oracle xtts迁移防坑知识点

oracle xtts迁移防坑知识点 作者美创运维中心数据库服务团队 大家在做数据库迁移的时候难免会碰到这各种问题,我们不保证每一次的迁移都能顺利完成,只能尽量少踩坑,下面介绍几个oracle xtts迁移防坑知识点。 在讲防坑技巧之前首先罗列部分在做xtts迁移之前的前置条件,在做迁移之前一定要仔细检查条件是否都满足,因为任何一步没检查到位很可能会对你的迁移工作造成不必要的麻烦! 1.源端不能是windows 2.源库的版本必须大于10.2 3.源库的compatible参数不能大于目标端 4.源库和目标库字符集需要保持一致 5.目标端db_files参数必须大于源端 6.源库和生产必须处于归档模式 7.源库的rman配置中DEVICE TYPE DISK不能设置为COMPRESSED 8.要迁移的表空间数据文件必须都是online的或者不包括offline数据文件 9.排除系统表空间,避免冲突并检查业务表空间是否自包含 10.源库和目标库db block size必须一致 防坑点一 编辑xtt.properties文件,表空间书写格式问题,特别是数据库表空间数量非常多的时候,一定要注意,表空间名字都要书写在同一行,不得自行换行!也不可以有任何空格! 格式一: 格式二:

格式三: 你们认为哪种格式是正确的? 无论写成什么样子,他只认第一行的表空间名字,所以在编辑的时候一定要写成一行,也不要有任何空格。如果书写错了在做增量备份恢复的时候是不会报任何错误的,因为对于相关表空间来说,他确实增量成功了,但是在最后元数据导入的时候就会报数据文件不一致,所以最简单的方法是去检查xttsnewdatafiles.txt 里面的表空间数量是否与生产查询出来的一致。 防坑点二 xtts发明的目的就是为了加快迁移速度,这里很重要的一个点就是打开块跟踪。打开块跟踪可以大大缩短执行增量备份时间。alter database enable block change tracking using file'/rman/trace.log';但是迁移结束后记得要关闭块跟踪。alter database disable block change tracking; 防坑点三 生产是裸设备,如果rman copy时候,数据文件加了“.dbf”那么,在增量恢复的时候需要编辑xttnewdatafiles.txt,否则恢复的时候会提示找不到数据文件。文件系统忽略此步骤,解决方法如下:

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