• 网络学院
  • IT资讯
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
Oracle数据操作和控制语言详解
  站点:
  • 首 页
  • 最新软件
  • 文章教程
  • 国内软件
  • 国外软件
  • 绿色软件
  • 源码下载
  • 字体下载
Oracle数据操作和控制语言详解
软件发布 Oracle数据操作和控制语言详解
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件 绿软下载
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回文章教程首页 >> 文章首页 >> 认证考试 >> Oracle认证 >> Oracle指导 >> Oracle数据操作和控制语言详解

Oracle数据操作和控制语言详解

添加时间: 2008-4-24 20:31:51  作者: Oracle指导  阅读次数:17   来源: http://www.d9soft.com

       

插入数据
 
  INSERT语句常常用于向表中插入行,行中可以有特殊数据字段,或者可以用子查询从已存在的数据中建立新行。
 
  列目录是可选的,缺省的列的目录是所有的列名,包括comlumn_id,comlumn_id可以在数据字典视图ALL_TAB_COLUMNS,USER_TAB_COLUMNS,或者DBA_TAB_COLUMNS中找到。
 
  插入行的数据的数量和数据类型必须和列的数量和数据类型相匹配。不符合列定义的数据类型将对插入值实行隐式数据转换。NULL字符串将一个NULL值插入适当的列中。关键字NULL常常用于表示将某列定义为NULL值。
 
  下面的两个例子是等价的。
 
  死锁
 
  当两个事务都被锁定,并且互相都在等待另一个被解锁,这种情况称为死锁。
 
  当出现死锁时,ORACLE将检测死锁条件,并返回一个异常。
事务控制
 
  事务控制包括协调对相同数据的多个同步的访问。当一个用户改变了另一个用户正在使用的数据时,oracle使用事务控制谁可以操作数据。
 
  事务
 
  事务表示工作的一个基本单元,是一系列作为一个单元被成功或不成功操作的SQL语句。在SQL和PL/SQL中有很多语句让程序员控制事务。程序员可以:
 
   1、显式开始一个事物,选择语句级一致性或事务级一致性
 
   2、设置撤销回滚点,并回滚到回滚点
 
   3、完成事务永远改变数据或者放弃修改。
  
  事务控制语句
 
语句 用途 
Commit  完成事务,数据修改成功并对其他用户开放 
Rollback  撤销事务,撤销所有操作 
rollback to savepoint  撤销在设置的回滚点以后的操作 
set transaction 响应事务或语句的一致性;特别对于事务使用回滚段 


  例:
 
BEGIN
UPDATE checking
SET balance=balance-5000
WHERE account='Kieesha';
 
INSERT INTO checking_log(action_date,action,amount)
VALUES (SYSDATE,'Transfer to brokerage',-5000);
 
UPDATE brokerage
SET cash_balance=cash_balance+5000
WHERE account='Kiesha';
 
INSERT INTO brokerage_log(action_date,action,amount)
VALUES (SYSDATE,'Tracfer from checking',5000)
 
COMMIT
 
EXCEPTION
WHEN OTHERS
ROLLBACK
 
END 
 
  Savepoint 和 部分回滚(Partial Rollback)
 
  在SQL和PL/SQL中Savepoint是在一事务范围内的中间标志。经常用于将一个长的事务划分为小的部分。保留点Savepoint可标志长事务中的任何点,允许可回滚该点之后的操作。在应用程序中经常使用Savepoint;例如一过程包含几个函数,在每个函数前可建立一个保留点,如果函数失败,很容易返回到每一个函数开始的情况。在回滚到一个Savepoint之后,该Savepoint之后所获得的数据封锁被释放。为了实现部分回滚可以用带TO Savepoint子句的ROLLBACK语句将事务回滚到指定的位置。
 
  例
 
BEGIN 
 
INSERT INTO ATM_LOG(who,when,what,where)
VALUES ('Kiesha',SYSDATE,'Withdrawal of $100','ATM54')
SAVEPOINT ATM_LOGGED;
 
UPDATE checking
SET balance=balance-100
RETURN balance INTO new_balance;


IF new_balance<0
THEN
ROLLBACK TO ATM_LOGGED;
COMMIT
RAISE insufficient_funda;
END IF
 
END 
  
 
  关键字SAVEPOINT是可选的,所以下面两个语句是等价的:
 
ROLLBACK TO ATM_LOGGED;
ROLLBACK TO SAVEPOINT ATM_LOGGED; 
 
  一致性和事务
 
  一致性是事物控制的关键慨念。掌握了oracle 的一致性模型,能使您更好的,更恰当的使用事务控制。oracle通过一致性保证数据只有在事务全部完成后才能被用户看见和使用。这项技术对多用户数据库有巨大的作用。
 
  oracle常常使用语句级(state-level)一致性,保证数据在语句的生命期之间是可见的但不能被改变。事务由多个语句组成,当使用事务时,事物级(transaction-level)一致性在整个事务生命期中保证数据对所有语句都是可见的。
 
  oracle通过SCN(syatem change number)实施一致性。一个SCN是一个面向时间的数据库内部键。SCN只会增加不会减少,SCN表示了时间上的一个点,每个数据块都有一个SCN,通过比较这个点实施操作。
 
  事务级一致性
 
  SET TRANSACTION 的一个作用是确保事务级一致或语句级一致中有一个实施。ORACLE使用这些术语:
 
   ISOLATION LEVEL READ COMMIT 表示语句级一致
 
   ISOLATION LEVEL SERIALIZABLE 表示事务级一致。
 
  例:
 
SET TRANSACTION ISOLATION LEVEL READ COMMIT;
 
SET TRANSACTION ISOLATION LEVEL READ COMMIT 

  下面的语句也能确保事务级一致:
 
SET TRANSCATION READ ONLY 
 
  任何企图在只读(READ ONLY)事务中修改数据的操作都会抛出一个异常。但是,READ ONLY事务只能在下列语句中使用:
 
SELECT(没有FOR UPDATE子句)
LOCK TABLE
SET ROLE
ALTER SYSTEM
ALTER ALARM 
 
  即使没有改变任何数据,READ ONLY事务依然必须使用一个COMMIT或ROLLBACK以结束整个事务。
 
  SET TRANSCTION的另外一个应用是在回滚时直接使用回滚段(ROLLBACK SEGMENT)。回滚段是ORACLE的一个特殊的数据对象,回滚段的头部包含正在使用该回滚段事务的信息。当用户回滚事务(ROLLBACK)时,ORACLE将会利用回滚段中的数据前影像来将修改的数据恢复到原来的值。oracle用round-robin给事务随机分配回滚段。一个大的事务可以分配任何回滚段,这也许会导致回滚段的大小变得很大。因此要避免让大的事务随机分配回滚段。
 
  事务以SET TRANSACTION开始,象下面这样:
 
SET TRANSACTION USE ROLLBACK SEGMENT rb_large; 
 
  rb_large是一个大的回滚段的名称,现在就给一个大的事务分配了一个大的回滚段,其他的小的回滚段将不由动态空间 管理 ,这样就更有效率。
 
  下面我们看一个例子.我们有一个回滚段表空间大小是2G,在高峰时期需要10个回滚段以满足用户的需要,这些高峰在线用户只有小的事务。一周我们连续运行了4个大的事务,这些事务需要删除和加载数据,每一个撤销需要1G,回滚段的大小如下:
 
rb_large(initial 100M minextenta 2)
 
rb1 (initial 1M next minextents 5) 
rb2 (initial 1M next minextents 5)
rb3 (initial 1M next minextents 5)
rb4 (initial 1M next minextents 5)
rb5 (initial 1M next minextents 5)
rb6 (initial 1M next minextents 5)
rb7 (initial 1M next minextents 5)
rb8 (initial 1M next minextents 5)
rb9 (initial 1M next minextents 5)
rb10 (initial 1M next minextents 5)  
 
  所有的都非常恰当的安排在2G的表空间中,如果我们缺省的round-robin给事务分配回滚段,4个大事务将有4个独立的回滚段,每个回滚段的大小将是1G,如果这样我们的2G表空间就不够,而数据库管理员就不得不在夜晚2点起来工作,每个事务都由以下面的语句开始:

Oracle数据操作和控制语言详解(1) 第 [1] [2] [3]  下一页

 

上下文章:

 

上一篇文章: schema的常用脚本:getaview.sql 下一篇文章: EMC存储技术上使用ASM的最佳实践白皮书

相关文章:

  • 艾瑞数据显示:暴风影音市场优势明显
  • 详解VLAN+路由器典型配置实例教程
  • 在ORACLE的存储过程中如何做简单的动态查询
  • Oracle下调数据库许可价格以适应多芯CPU
  • Oracle全球客户支持副总裁汤姆·舒尔滋演讲

相关软件:

  • 三维数据成像3D Surfer 2.0
  • Access数据库密码破解器 V2.65
  • dbguide 数据库管理专家 V1.3.0.0
  • 方塘音控(系统音量及录音源控制) 1.0a
  • 网际数据库浏览器 3.0.52
  • 数据计算软件DCS 2.0

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

Oracle认证分类导航

  • Oracle动态
  • Oracle指导
  • Oracle题库

本类经典文章推荐

  • Oracle中关于逻辑备份与恢复
  • Oracle开发人员JAVA存储过程
  • 为数据库的表自动生成行号
  • Oracle中的OOP概念
  • 用java从oracle取数
  • 冷备份移植到另一台Solaris机器上
  • 如何将excel数据导入oracle中
  • Oracle10.2g安装记录
  • 数据库监控工具ForOraclev1.2
  • oracle双机群集系统

Oracle指导阅读排行

  • Oracle系统表查询
  • 实例:Oracle导出EXCEL文件
  • Oracle常用的OCI函数上
  • Oracle企业管理器(OEM 2.1)使用...
  • Tomcat+SQLServer连接池配置
  • 如何将excel数据导入oracle中
  • 如何取出某一用户的密码 再原样改...
  • 实例:Oracle导出EXCEL文件
  • 案例学习Oracle错误:ORA-00604
  • 案例学习Oracle错误:ORA-00060

Oracle认证阅读总排行

  • Oracle系统表查询
  • 实例:Oracle导出EXCEL文件
  • Oracle常用的OCI函数上
  • 在ORACLE的存储过程中如何做简单的...
  • Oracle企业管理器(OEM 2.1)使用...
  • Tomcat+SQLServer连接池配置
  • 如何将excel数据导入oracle中
  • AIX下自动启动Oracle数据库与监听...
  • 如何取出某一用户的密码 再原样改...
  • 实例:Oracle导出EXCEL文件

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有