042 第八章:管理数据和并发处理

SQL
INSERT
  一次建立一行。
INSERT   INTO   employees  VALUES
( 9999 , 'Bob' , 'Builder' , 'bob@abc.net' , NULL ,SYSDATE,
'IT_PROG' , NULL , NULL , 100 , 90 );
·  插入另外一个表中的多行。(SELECT 语句中选择的各个值与要插入的表中的各个列相关联。列值按 INSERT 和 SELECT 语句中指定的顺序进行匹配
insert   into   dept_80 ( select   *   from   employees  
where   department_id  =   80 ); 
UPDATE
  使用 UPDATE 命令可更改表的零行或多行
update   employees 
set   salary  = salary  * 1.1
where   employee_id = 101 ;
DELETE   
  使用 DELETE 命令可从表中删除零行或多行。
delete   from   employees
where   employee_id = 101 ;
MERGE
  使用 MERGE命令可在一个命令中执行 UPDATE和 INSERT。可将一个源中的数据合并到另外一个源
1   MERGE  INTO   jobs j
2    USING ( SELECT   *   FROM   jobs_acquisition) a
3     ON (j.job_id = a.job_id)
4     WHEN   MATCHED  THEN   UPDATE   SET   j.job_title = a.job_title
5     WHEN   NOT   MATCHED  THEN   INSERT
6       (j.job_id,j.job_title,j.min_salary,j.max_salary)
7      VALUES (a.job_id,a.job_title,a.min_salary,a.max_salary)
  
COMMIT 提交更改,
ROLLBACK 回滚操做,撤销更改
PL/SQL (涉及到 SQL开发,若是仅考试能够浅层掌握
概览 PL/SQLoracle中的过程化编程语言,为oracle数据库和应用程序提供了一种公共额编程环境,适用于全部的操做系统或者硬件平台。他的主要特征以下:
  1 对 SQL 的过程扩展
  2 平台和产品间的可移植性
  3 更高级别的安全性和数据完整性保护
  4 支持面向对象的编程
管理 PL/SQL 对象(em中  “Administration(管理)--->program(程序))
PL/SQL  数据库对象有多种类型:
程序包:程序包是由逻辑关系上相关的一些过程和函数组成的集合,程序包的这一部分又称为说明,用于描述应用程序的借口;他声明了可供使用的类型、变量、常量、异常错误、游标和子程序;
程序包体:程序包体完整的定义了游标和子程序,所以试试了说明,程序包体包含了实施明细和专用申明,这些内容不现实给调用方。
类型主体:类型主体是由与用户定义的数据类型相关联的一些方法(过程和函数)组成的集合;
过程:过程是用于执行特定操做的 PL/SQL块;
  函数:函数是使用RETURN PL/SQL 命令返回单个值的 PL/SQL 块。它是具备返回值的过程
  过程 (用于执行特定操做,使用参数列表传入和传出值。但是使用CALLSQL)或EXECUTE调用(SQL*PLUS))
  触发器:触发器是当数据库中发生特定事件时执行的 PL/SQL块,这些时间能够基于表,若是表中插入行时,能够但是数据库时间,如在用户登陆数据库时。
  程序包(程序包是由函数和过程组成的集合。每一个程序包由程序包体和程序包说明组成)
  内置程序包(管理和维护实用程序,扩展功能)
  DBMS_STATS:用于收集、查看和修改优化程序统计信息
  DBMS_OUTPUT:经过 PL/SQL 生成输出
  DBMS_SESSION:经过PL/SQL 访问 ALTER SESSION 和 SET ROLE语句
  DBMS_RANDOM:生成随机数字
  DBMS_UTILITY:获取时间、CPU 时间和版本信息;计算散列值,以及执行许多其它功能
  DBMS_SCHEDULER:调度可从 PL/SQL 调用的函数和过程
  DBMS_CRYPTO:对数据库数据进行加密和解密
  UTL_FILE:经过 PL/SQL 读写操做系统文件
  触发器(触发器是存储在数据库中的 PL/SQL 代码对象,它们会在某些事件发生时自动运行或触发。)
 
  触发器触发事件:
  DMLinsertupdate/delete)、DDL(create,drop,alter,grant,revoke,rename)和数据库事件(logon,logoff,startup,shutdown,servererror,suspend)
 
PL/SQL的结构以下:
DECLARATIVE 
 ----声明部分:在此声明PL/SQL中使用到的变量、类型、及游标,以及局部变量中的存储过程和函数
BEGIN
 ----执行部分:过程及SQL语句,及程序的主要部分
EXCPTION
 ----执行异常部分:错误处理
END;
其中,执行部分不能省略;
 
锁定 
概览
           使用锁定可防止多个会话同时更改同一数据。
           锁定是在指定语句的最低可能级别自动获取的。
           锁定不会升级。
锁定机制
           执行插入、更新和删除时使用行级锁定
           查询不须要任何锁定
           自动队列管理
  在事务处理(使用 COMMIT 或 ROLLBACK 操做)结束以前一直保留锁定
数据并发处理
           默认状况下,锁定机制采用细粒度行级锁定模式。不一样的事务处理可在同一个表内更新不一样的行,彼此不相互干扰。
       
  锁定模式
           ROW SHARE:容许并发访问锁定的表,但禁止会话锁定整个表进行独占访问。
           ROW EXCLUSIVE:与 ROW SHARE 相同,可是还禁止以 SHARE模式锁定。更新、插入或删除数据时会自动获取ROW EXCLUSIVE 锁定。
           SHARE:容许并发查询,但禁止更新锁定的表。须要有(而且会自动请求)SHARE锁定才能建立表的索引。
           SHARE ROW EXCLUSIVE:用于查询整个表,容许其余人查询表中的行,但禁止其余人在 SHARE 模式下锁定表或更新行。
           EXCLUSIVE:容许查询锁定表,但禁止对锁定表执行任何其它活动。须要有EXCLUSIVE 锁定才能删除表。
 
  手动锁定  LOCK TABLE employees IN EXCLUSIVE MODE;
DM L 锁定
           针对正在更新的一行或多行的 EXCLUSIVE 行锁定
           针对包含这些行的表的 ROW EXCLUSIVE 表级锁定
       排队机制
          1 等待锁定的会话
          2 请求的锁定模式
          3 请求锁定的会话的顺序
锁定冲突
     锁定冲突的可能缘由
          1 未提交更改
          2 长时间运行事务处理
          3 没必要要的高锁定级别
        4 检测锁定冲突
  “Performance(性能)页选择“Blocking Sessions(阻塞会话)
解决锁定冲突
          1 提交或回退持有锁定的会话
          2 终止持有锁定的会话
  em    kill session
  sql
  SQL> select sid, serial#, username
  from v$session where sid in
  (select blocking_session from v$session)
  ------------------------------------------------------
  alter system kill session '144,8982' immediate;
相关文章
相关标签/搜索