Chinaunix首页 | 论坛 | 博客
  • 博客访问: 85370
  • 博文数量: 31
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 370
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-26 13:33
文章分类

全部博文(31)

文章存档

2009年(5)

2008年(26)

我的朋友

分类: Oracle

2008-08-15 13:39:40

SQL>get ‘d:\empsql.txt’;   从一个文件中读入sql语句,仅将命令加载到缓冲区

SQL>@ ‘d:\empsql.txt’;     相当于get命令,并且直接执行语句

 

SQL> save ‘d:\savesql.txt’    sql语句保存到一个文件

 

/ 表示执行SQL语句

@ 加载并执行SQL语句

run 表示执行SQL语句

 

Select job, sal,

      DECODE(job, ‘ANALYST’, sal*1.1, ‘CLERK’, sal*1.15,‘MANAGER’, sal*1.20, sal) REVISED_SALARY from emp;

 

Conn oracle/oracle@teacher;  使用用户名和密码为oracle 来连接主机字符串为teacher的数据库

 

select * from otheruser.emp;  访问其他用户的emp

 

grant select on student to oracle; student表的select权限赋予oracle用户

grant select,update,insert,delete on test to tom;  tom用户赋予相关权限

 

show user;   显示当前用户

set sqlprompt TOM>  将当前提示符修改为TOM>

set linesize 300

set pagesize 100

 

锁的概念: 当多用户操作同一个表的时候,为了避免对数据的损坏。

锁是数据库的一种机制,它用来管理对一个共享资源的并行访问

共享资源:不仅指数据库行,而且也指其他的资源(如表)

当多个用户同时访问数据库中的同一资源时,就会产生对同一资源的访问冲突。为了防止资源被破坏,数据库采取了解决访问冲突的机制,称之为锁

 

锁的类型:

表级锁-锁定某些表

 

行级锁-锁定表中某些行

        -行被排他锁定,只有被锁定的用户才可以操作(对其他用户的限制)

      -在某行的锁被释放之前,其他用户不能修改此行

      -使用commitrollback命令释放锁

 

 

获取行级锁

Oracle数据库中获取行级锁,有两种方式:

使用insertupdateselect 。。for update 语句自动获取行级锁

select 。。for update 子句在表的一行或多行上放置排他锁,用于防止其他用户更新该行,可以执行除更新之外的其他操作

      for update wait 子句

 

 

表级锁

-保护表的数据

-在多个用户同时访问数据时确保数据的完整性

-可以设置为三种模式:共享、共享更新和排他

l         共享锁:准许多个用户同时锁定某表,当A用户对表锁定时,它仅仅准许其他用户查询表中的行,但是其他用户都不能做插入,更新,删除等操作。

lock table 表名 in share mode;   //锁定某表, A用户提交了操作后,锁被解锁

 

l         共享更新锁:锁定要被更新的行;准许其他用户同时查询、插入、更新未被锁定的行;在select语句中使用“for update”子句,可以强制使用共享更新锁;准许多个用户同时锁定表的不同行。

lock table 表名 in share update mode;

 

l         排他锁:与其他两种锁相比,排他锁是限制性最强的表锁,同一时间只准许一个人上锁;仅准许其他用户查询数据;不准许执行插入、删除和更新操作;在同一时间仅准许一位用户在表上放置拍他锁

lock table 表名 in exclusive mode;

阅读(562) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~