当前位置:  数据库>oracle
本页文章导读:
    ▪利用bat批处理,批量导入oracle的dmp格式的备份文件      // oracle的可视化操作,一般都是借用PL/SQL。现在要把oracle的dmp格式的备份文件同时导进去,也只用使用他的命令了于是建了一个bat批处理文件,内容如下:sqlplus sys/sys用户密码@库 as sysdba @e:\i.........
    ▪跟我一起学Oracle 11g【11】----Oracle 中的事务      前言好些天,没有更新这个系列了。最近工作出差,而且在几个城市走来走去,在而且是自己也在学习Spring.Net,所以时间比较少呢!但,不管怎么样,我都会把这个系列更新完成。5.1节过了.........
    ▪Oracle常用的异常类型      oracle实际开发中,经常会用到的异常:异常描述CURSOR_ALREADY_OPEN试图"OPEN"一个已经打开的游标DUP_VAL_ON_INDEX试图向有"UNIQUE"中插入重复的值INVALID_CURSOR试图对以关闭的游标进行操作INVALID_NUMBER在SQL.........

[1]利用bat批处理,批量导入oracle的dmp格式的备份文件
    来源:    发布时间: 2013-10-29
//

oracle的可视化操作,一般都是借用PL/SQL。

现在要把oracle的dmp格式的备份文件同时导进去,也只用使用他的命令了

于是建了一个bat批处理文件,内容如下:

sqlplus sys/sys用户密码@库 as sysdba @e:\import\d.sql

imp \"userid=db用户名/db密码 as sysdba\" full=y file=e:\import\ww_1.dmp

imp \"userid=db用户名/db密码 as sysdba\" full=y file=e:\import\ww_2.dmp

imp \"userid=db用户名/db密码 as sysdba\" full=y file=e:\import\ww_3.dmp

 

d.sql的内容如下:

drop table sys.vio_1;
drop table sys.vio_2;
drop table sys.vio_3;
quit;

 

 

批处理文件和d.sql及oracel备份文件放在e:\import文件夹下,直接运行bat批处理文件即可导入

BAIDU_CLB_SLOT_ID = "551284";
BAIDU_CLB_SLOT_ID = "551289";

本文链接


    
[2]跟我一起学Oracle 11g【11】----Oracle 中的事务
    来源:    发布时间: 2013-10-29
前言

好些天,没有更新这个系列了。最近工作出差,而且在几个城市走来走去,在而且是自己也在学习Spring.Net,所以时间比较少呢!但,不管怎么样,我都会把这个系列更新完成。

5.1节过了,祝大家节后快乐。

1。什么是数据库事务

数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。---【来自百度百科】

2。事务的特点
  • 原子性(atomicity)

  事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。

  • 一致性(consistency)

  事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。

  • 隔离性(isolation)

  由并发事务所作的修改必须与任何其它并发事务所作的修改隔离,也就是多个事务可以同时进行,互相不产生影响。

  • 持久性(durability)

  事务完成之后,它对于系统的影响是永久性的。该修改即使出现致命的系统故障也将一直保持。

3.事务保存点(Savepoint)

保存点提供了一种机制,用于回滚部分事务。

语法:

savepoint 事务名

 保存点有什么作用呢?作用非常的大呢。

比如,有一个数据库管理员,在早上的时候,设置了一个保存点a1,然后工作(对数据库进行增删改查),到了中午他又设置了一个保存点a2,到了下午他又继续工作(还是对数据库进行增删改查),然后到了晚上。突然之间,他执行了一个很愚蠢的操作,把数据库里的数据全部给删除了!!!!

那这个时候怎么办呢?好在他在早上和中午的时候设置了保存点,然后只要回到保存点就可以了。

【例】在我的scott用户下面。对emp表设置一个事务,然后删除一条数据,最后在回滚事务。

设置一个事务,如下图:

然后我们队数据进行插入一条数据,

insert into emp values(8888,'Lanny','CLEAK',7782,to_date('2012-10-10','yyyy-mm-dd'),1000,100,20);

现在scott用户下面的emp表已经有15条数据了。

5。回滚事务(rollback)

那如果我们现在撤销刚刚的操作怎么办呢?这个就需要回滚事务了。事务回滚是指将该事务已经完成的对数据库的更新操作撤销。

语法:

rollback to 事务名 --撤销单个事务

or

rollback   --如果后面不加事务名,则撤销所有存在的事务

【例】我们撤销刚新加入进去的Lanny用户。

6。事务的提交(commit)

事务的提交指的是把你刚刚操作的数据真正的写入到数据库中,这个时候 你就不能在运用rollback进行撤销你刚才的操作了。

语法:

commit

【例】先设置一个保存点,然后往emp里插入一条数据,接着提交事务。

①设置一个保存点

savepoint mySave2;

②插入数据

insert into emp values(9999,'Good','CLEAK',7782,to_date('2012-10-10','yyyy-mm-dd'),1000,100,20);

③提交事务

④测试回滚

OK,那这个时候,如果我在回滚到mySave2这个保存点可以吗?我们操作,得到如下错误:

为什么呢?因为数据库一旦commit了数据,那么就会撤销所有的保存点。所以,你会得到这么一个错误哦。

7。Oracle事务的一些属性7.1只读事务(read only)

只读事务,只运行执行查询操作,而不允许执行DML(删除、增加、修改)操作,使用只读事务,使得用户可以只取到某个时间点的数据。

假如有一个机票代售点,有一个管理员想在一个时间点进行统计总共卖出去的数量,这个时候可以使用只读事务。设置了只读事务之后,尽管有其它的对话产生,但是只读事务不会去去取最新的事务的变化,从而可以保证一个时间点只取到需要的数据。

语法:

set transaction read only

【例】设置system用户下的只读事务

刚开始我们用system 用户登录,然后设置只读事务,如下图:

我用select * from scott.emp;这个语句查看了scott用户下的emp表里的数据是14条。

ok,我现在在打开一个 PL/SQL developer,这一次我用scott这个用户登录进去。进去之后,我往scott用户的emp里插入一条数据,如下:

insert into emp values(8888,'Lanny','CLEAK',7782,to_date('2012-10-10','yyyy-mm-dd'),1000,100,20);

目前,scott用户下的emp表的数据是:

不意外的知道 数据有15条。

但是如果我们在回到system用户下面的数据是多少条呢?用select * from scott.emp; 这个语句进行查询,我们发现,我们依然得到的是14条数据。

上面的例子就是只读事务。在system用户下面,它设置了只读事务,所以它只获取到以前的值,而不会获取更新后的数值。

7.1读写属性 read write

可以将事务设置为可读、可写的状态,其实这也就是事务的默认状态。所以,改属性的设置,并没有多大的现实意义。可不不给与考虑。

语法很简单:

set transaction read write

不过,需要注意的是:一旦设定了set transcation read write命令,那么该命令之前就不能出现set transaction命令之外的其它命令了。

 

如果你像上面一样,你重新设定一遍 read write ,这样是不行滴。

7.3 serializable隔离级别

serializable隔离级别指的是串行化事务。串行化事务和只读(read only)事务实现相同的功能---隔离其它事务对数据库的影响。但是串行化事务允许在其中执行任何的DML操作,比如增、删、改、查。。。

我们现在还没有进行serializable的设置,ok,我们测试一下。

①我们现在新增一条数据进emp表中,并且 我还进行了commit 操作。

insert into emp values(8888,'Lanny','clerk',7782,to_date('2001-5-21','yyyy-mm-dd'),2000,100,10);

②ok,我们重新运行一个 PL/SQL Development(注意:打开2个命令窗口,没法测试)

现在,我们有2个 PL/SQL Development了。

③我们在新建的PL/SQL Development里进行查询,和我先前得到的结果是一样的,这并没让我们产生惊喜。

不出意外的得到了我们新插入的值。

好的,那现在我们进行个serializable操作,看看结果会怎么样。。

①serialization的命令如下

set transaction isolation level serializable;

②ok,我们现在在新建的PL/SQL Development 新增一条数据,如下:

请注意,我已经用commit,把事务给提交了。

我们查一下数据:

③我们在回到我们初次打开的窗口,进行查询,结果如下

我们没有得到我们刚插入的数据,这就是serializable的作用。

7.4 read  commit

这个事务是默认级别的事务,即会读取其他事务已经提交的事务。

啊安顿发


    
[3]Oracle常用的异常类型
    来源:    发布时间: 2013-10-29

oracle实际开发中,经常会用到的异常:

异常

描述

CURSOR_ALREADY_OPEN

试图"OPEN"一个已经打开的游标

DUP_VAL_ON_INDEX

试图向有"UNIQUE"中插入重复的值

INVALID_CURSOR

试图对以关闭的游标进行操作

INVALID_NUMBER

在SQL语句中将字符转换成数字失败

LOGIN_DENIED

使用无效用户登陆

NO_DATA_FOUND

没有找到数据时

NOT_LOGIN_ON

没有登陆Oracle就发出命令时

PROGRAM_ERROR

PL/SQL存在诸如某个函数没有"RETURN"语句等内部问题

STORAGE_ERROR

PL/SQL耗尽内存或内存严重不足

TIMEOUT_ON_RESOURCE

Oracle等待资源期间发生超时

TOO_MANY_ROWS

"SELECT INTO"返回多行时

VALUE_ERROR

当出现赋值错误

ZERO_DIVIDE

除数为零

本文链接


    
最新技术文章:
▪current online redo log缺失后的恢复
▪ORA-600 2662错误解决实例
▪ORA-00600 2662错误解决方法
▪Oracle Hidden Parameter:_allow_resetlogs_corruption
▪Oracle诊断事件列表
▪Oracle 隐含参数 _disable_logging 详解
▪ORA-00600 [2662]错误解决过程
▪Oracle里常见的执行计划
▪Oracle里另外一些典型的执行计划
▪Oracle服务器自动备份
▪Oracle固定SQL的执行计划(一)---SQL Profile
▪Oracle固定SQL的执行计划(二)---SPM
编程技术 iis7站长之家
▪Oracle快速克隆安装
▪Oracle单实例启动多个实例
▪Oracle的PLSQL别名中文出现乱码解决方法
▪ORA-00379: no free buffers available in buffer pool DEFAULT ...
▪RMAN-06023: no backup or copy of datafile 16 found to restor...
▪RMAN还原数据库报错问题解决案例
▪OEL6.8_X86平台部署Oracle 10gR2检测失败问题
▪Oracle 性能优化建议
▪Oracle SQL语句优化心得
▪Oracle慢SQL监控脚本实现
▪Oracle dblink 查询 tns:无法解析指定的连接标识...
▪Red Hat Enterprise Linux 6使用udev配置Oracle ASM总结...
▪Linux6.6及以上版本配置Oracle ASM共享储存-UDEV
▪Oracle 12C 开启数据库归档模式
▪Solairs系统中配置Oracle 12c 开机启动
▪重建DBMS_STATS解决ORA-31626 ORA-21633以及ORA-04063 ORA...
▪Oracle ASMM 与AMM之间相互切换
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3