2
3a:在已有重复列上创建唯一约束
4alter table BOOK_POOL
5add constraint unique_POOL_RELEASE unique
6(DOCTORID, WORKID, VISITSDATE, VISITS_ID, RECORDSSTATEID)
7enable novalidate;
8
9注释:job1(代表job唯一标识)
102)job管理
11--查看job
12select * from dba_jobs order by job;
13
14--创建job
15begin
16 dbms_job.submit(:job1, 'statspack.snap;', trunc(sysdate+1/24,'HH'), 'trunc(SYSDATE+1/24,''HH'')', TRUE, :instno);
17end;
18
19--删除job,job1代表:job任务的唯一标示号
20begin
21dbms_job.remove(job1);
22end;
23
24--停止job
25dbms_job.broken(job1,true);
本文链接:http://www.cnblogs.com/java-chen/p/3210020.html,转载请注明。
目录
12.1 什么是事务处理... 1
12.2 事务处理控制语句... 1
12.2.1 COMMIT处理... 2
12.2.2 ROLL BACK处理... 2
12.2.3 SAVEPOINT和ROLL BACK TO SAVEPOINT. 3
12.2.4 SET TRANSACTION.. 3
试验:冻结视图... 4
12.2.5 SET CONSTRAINTS. 5
12.3 事务处理的ACID属性... 7
12.3.1 原子性... 7
12.3.2 一致性... 7
试验:事务处理级别的一致性... 8
12.3.3 隔离性... 11
12.3.4 持久性... 11
12.4 并发控制... 11
12.4.1 锁定... 12
试验:引发死锁... 12
12.4.2 多版本和读取一致性... 15
考虑一个进一步的示例。... 16
12.5 小结... 17
开发者能够命名他们的PL/SQL程序块,为它们确定参数,将它们存储在数据库中,并且从任何数据库客户或者实用工具中引用或者运行它们,例如 SQL*Plus、Pro*C,甚至是JDBC。
这此听PL/SQL程序称为存储过程和函数。它们的集合称为程序包。在本章中,我们将要解释使用过程、函数和程序包的三大优势、这三种相似结构之间的区别。
Oracle 9i产品帮助文档:
http://docs.oracle.com/cd/B10501_01/index.htm
可根据自己需要进行查询,包含了众多的文档。
Sample Schemas的目录:
http://docs.oracle.com/cd/B10501_01/server.920/a96539/toc.htm
Sample Schemas的文档(示例模式的表及介绍):
http://docs.oracle.com/cd/B10501_01/server.920/a96539.pdf
在讨论这2个特性的时候,我们将要在本章中学习如下内容:
●Oracle中的事务处理是什么
●怎样控制Oracle中的事务控制
●Oracle怎样在数据库中实现并发控制,让多个用户同时访问和修改相同的数据表
12.1 什么是事务处理
用于有效记录某机构感兴趣的业务活动(称为事务)的数据处理(例如销售、供货的定购或货币传输)。通常,联机事务处理 (OLTP) 系统执行大量的相对较小的事务。
12.2 事务处理控制语句
Oracle中的一个重要概念就是没有“开始事务处理”的语句。用户不能显式开始一个事务处理。事务处理会隐式地开始于第一条修改数据的语句,或者一些要求事务处理的场合。使用COMMIT或者ROLL BACK语句将会显式终止事务处理。
如上所述,事务处理具有原子性,也就是说,或者所有语句都成功执行,或者所有语句都不能成功执行。我们会在这里介绍其中一些成员:
●COMMIT
●ROLL BACK
●SAVEPOINT
●ROLL BACK TO<SAVEPOINT>
●SET TRANSACTION
●SET CONSTRAINT(S)
12.2.1 COMMIT处理
作为开发者,用户应该使用COMMIT或者ROLL BACK显式终止用户的事务处理,否则用户正在使用的工具/环境就将为用户选取其中一种方式。
无论事务处理的规模如何,提交都是非常快速的操作。用户可能会认为事务处理越大(换句话说,影响的数据越多),提交所耗费时间越长。事实并非如此,进化论事务处理规模如何,提交的响应时间通常都很“平缓”。这是因为提交实际上没有太多的工作去做,但是它所做的工作却至关重要。
如果能够理解这点,那么就可以避免许多开发者所采用的工作方式,去限制他们的事务处理规模,每隔若干行就进行提交,而不是当逻辑单元的工作已经执行完毕之后才进行提交。他们这样做是因为他们错误地认为他们正在降低系统资源的负载;而事实上,他们正在增加负载。如果提交一行需要耗费X个时间单元,那么提交1000行也会消耗相同的X个时间单元,而采用1000次提交1行的方式完成这项工作就需要额外运行1000*X个时间单元。如果只在必要的时候进行一次提交(当事务处理完成的时候),那么用户就不仅可以提高性能,而且可以减少对共享资源(日志文件,保护SGA内共享数据结构的锁定)的争用。
那么,为什么无论事务处理的规模如何,提交的响应时间都相当平缓呢?这是因为在数据库中进行提交之前,我们已经完成了所有实际工作,我们已经修改了数据库中的数据,完成了99.9%的工作。
当提交的时候,我们还要执行三个任务:
●为我们的事务处理生成 SCN(系统改变编号)。这是Oracle的内部时钟,可以称为数据库时间。SCN不是传统意义上的时钟,因为它不是随着时间失衡而递进。相反,它是在事务处理提交的时候递进,由Oracle在内部使用,以对事务处理排序。
●将所有剩余的已经缓冲的重做日志表项写入磁盘,并且将SCN记录到在重做日志文件中。这要由LGWR执行。
●释放我们的会话(以及所有正在等等我们所占有锁定的用户)所占有的所有锁定。
LGWR不会一直缓冲完成的所有工作,而是会随着操作的进行,在后台不断清理重做日志缓冲的内容,这非常类似于在PC机上运行的磁盘缓冲软件。它可以避免在清理所有的用户重做日志时,提交操作出现长时间等待现象。LGWR会在以下情况执行清理工作:
●每隔3秒
●当SGA中的日志缓冲超过了1/3的空间,或者包含了1MB或者更多的已缓冲数据
●进行任何事务处理提交
所以,即使我们长时间运行事务处理,也会有部分它所产生的已缓冲重做日志在提交之前写入了磁盘。
12.2.2 ROLL BACK处理
当我们进行回滚的时候,我们还有一些任务需要执行:
●撤销所有已经执行的改变。这要通过读取我们生成的UNDO数据,有效地反转我们的操作来完成。如果我们插入了一行,那么回滚就要删除它。如果我们更新了一行,回滚就要将其更新到原来的样子。如果我们删除了一行,就要重新插入它。
●释放我们的会话(以及正在等等我们已经锁定的行的用户)占用的所有锁定。
12.2.3 SAVEPOINT和ROLL BACK TO SAVEPOINT
SAVEPOINT可以让用户在事务处理中建立标记点。用户可以在单独的事务处理中拥有多个保存点。当使用ROLL BACK TO <SAVEPOINT NAME>的时候,它就可以让用户有选择地回滚更大的事务处理中的一组语句。
保存点是委有用的事务处理特性,它们可以让用户将单独的大规模事务处理分割成一系列较小的部分。拟执行的所有语句仍然是较大的事务处理的组成部分,用户可以将特定的语句组织到一起,将它们作为单独的语句进行回滚。
为了做到这一点,用户需要在开始函数的时候使用如下的SQL语句:
这里的function_name是用户的函数名称。如果用户在处理期间遇到错误,用户就只需使用:
12.2.4 SET TRANSACTION
这个语句可以使您设置事务处理的各种属性,例如它的隔离层(参考以下的隔离层次列表),它是只读还是可以进行读写,以及是否要使用特定的回滚段。
SET TRANSACTION语句必须是事务处理中使用的第一个语句。这就是说,必须在任何INSERT、UPDATE或者DELETE语句,以及任何其它可以开始事务处理的语句之前使用它。SET TRANSACTION的作用域只是当前的事务处理。
SET TRANSACTION语句可以让用户:
●规定事务处理隔离层次。
●规定为用户事务处理所使用的特定回滚段。
●命名用户事务处理。
我们将要在这里使用的重要SET TRANSACTION语句包括:
●SET TRANSACTION READ ONLY
●SET TRANSACTION READ WRITE
●SET TRANSACTION ISOLACTION LEVEL SERIALIZABLE
●SET TRANSACTION ISOLACTION LEVEL READ COMMITTED
注意:
SET TRANSACTION语句事实上都是互斥的。例如,如果您选择了READ ONLY,那么就不能为它
1、下载Oracle 11g R2 for Windows的版本
下载地址:http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
其中包括两个压缩包:win64_11gR2_database_1of2.zip,win64_11gR2_database_2of2.zip
2、安装
将两个压缩包解压到同一个目录下,即“database”,然后单击解压目录下的“setup.exe”文件:
3、配置安全更新
在出现的“配置安全更新”窗口中,取消“我希望通过My Oracle Support接受安全更新”,单击“下一步”:
4、安全选项
在“安装选项”窗口中,选择“创建和配置数据库”,单击“下一步”:
5、系统类
在“系统类”窗口中,选择“桌面类”,单击“下一步”:
6、典型安装
在“典型安装”窗口中,选择Oracle的基目录,选择“企业版”和“默认值”并输入统一的密码为:Oracle11g,单击“下一步”:
7、先决条件检查
在“先决条件检查”窗口中,单击“下一步”:
8、概要
在“概要”窗口中,单击“完成”,即可进行安装:
9、安装产品
出现的安装过程如下:
数据库创建完成后,会出现如下“Database Configuration Assistant”界面:
选择“口令管理”,查看并修改以下用户:
- (1)普通用户:SCOTT(密码:tiger)
- (2)普通管理员:SYSTEM(密码:manager)
- (3)超级管理员:SYS(密码:change_on_install)
修改完成后,单击“确定”。
10、完成
在“完成”窗口中,单击&l