楼主: anypager

急!如果delete操作没有执行完,就重启数据库,会怎样

[复制链接]
论坛徽章:
226
BLOG每日发帖之星
日期:2010-02-11 01:01:06紫蛋头
日期:2013-01-12 23:45:222013年新春福章
日期:2013-02-25 14:51:24问答徽章
日期:2013-10-17 18:06:40优秀写手
日期:2013-12-18 09:29:10马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:14
11#
发表于 2005-2-16 11:43 | 只看该作者
最初由 wyq21973 发布
[B]

我猜是下次查询或者DML涉及到该表或者该块。

不知dump处理的时候算不算。

抛开这些不说,假如果真如此,如果相关的对象一直没有被处理到,那么相关事务占用的回滚段不是一直不能释放。 [/B]


我怀疑dump也属于访问的一种。
你可以选择一个不大的数据文件,用UltraEdit直接打开数据文件,检查数据状态,然后对数据select,再查看数据状态。

使用道具 举报

回复
论坛徽章:
226
BLOG每日发帖之星
日期:2010-02-11 01:01:06紫蛋头
日期:2013-01-12 23:45:222013年新春福章
日期:2013-02-25 14:51:24问答徽章
日期:2013-10-17 18:06:40优秀写手
日期:2013-12-18 09:29:10马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:14
12#
发表于 2005-2-16 11:44 | 只看该作者
最初由 rollingpig 发布
[B]就我所看到的而言
问题出在delete之后,你以为没有commit,事实因为做了alter操作,那时已经commit

再shutdown abort自然模拟不出来。 [/B]


alter system语句和alter session语句比较特殊,它们不是ddl,不会提交的。

使用道具 举报

回复
论坛徽章:
226
BLOG每日发帖之星
日期:2010-02-11 01:01:06紫蛋头
日期:2013-01-12 23:45:222013年新春福章
日期:2013-02-25 14:51:24问答徽章
日期:2013-10-17 18:06:40优秀写手
日期:2013-12-18 09:29:10马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:14
13#
发表于 2005-2-16 11:46 | 只看该作者
最初由 wyq21973 发布
[B]谢谢版主。
明白了,不检索也会回滚,由SMON执行,检索到了则会优先回滚,由SERVER PROCESS执行(?)。
可能是我钻牛角尖。

如何设置跟踪看STARTUP做了那些事呢? [/B]


biti在深入讨论区有篇文章,探讨Oracle启动时做了什么,你可以去找找看。

使用道具 举报

回复
论坛徽章:
10
授权会员
日期:2005-10-30 17:05:332010年世界杯参赛球队:科特迪瓦
日期:2010-04-15 12:20:472010年世界杯参赛球队:智利
日期:2010-04-13 17:15:21生肖徽章2007版:蛇
日期:2009-09-24 13:54:11生肖徽章2007版:龙
日期:2009-09-22 13:56:012009日食纪念
日期:2009-07-22 09:30:00生肖徽章2007版:龙
日期:2009-02-10 13:45:15生肖徽章2007版:狗
日期:2009-02-03 13:53:34会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB十周年纪念徽章
日期:2011-11-01 16:20:28
14#
发表于 2005-2-16 11:50 | 只看该作者
最初由 rollingpig 发布
[B]就我所看到的而言
问题出在delete之后,你以为没有commit,事实因为后面做了alter操作,已经commit,再shutdown abort自然模拟不出来。

你试试看不要做alter操作看看。 [/B]


这个ALTER SYSTEM DUMP语句不会产生COMMIT,如下面这样试一下就知道了:

wyq@ORCL>drop table t;

Table dropped.

wyq@ORCL>create table t as select rownum id from all_objects where rownum < 3;

Table created.

wyq@ORCL>select * from t;

        ID
----------
         1
         2

wyq@ORCL>delete from t where rownum = 1;

1 row deleted.

wyq@ORCL>select dbms_rowid.rowid_relative_fno(rowid) file_id,dbms_rowid.rowid_block_number(rowid) bl
ock_number from t;

   FILE_ID BLOCK_NUMBER
---------- ------------
         3        30979

wyq@ORCL>alter system dump datafile 3 block 30979;

System altered.

wyq@ORCL>rollback;

Rollback complete.

wyq@ORCL>select * from t;

        ID
----------
         1
         2

wyq@ORCL>

使用道具 举报

回复
论坛徽章:
42
ITPUB北京香山2007年会纪念徽章
日期:2007-01-24 14:35:022011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:56管理团队成员
日期:2011-05-07 01:45:08ITPUB十周年纪念徽章
日期:2011-11-01 16:20:282012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:23
15#
发表于 2005-2-16 12:01 | 只看该作者
最初由 yangtingkun 发布
[B]

alter system语句和alter session语句比较特殊,它们不是ddl,不会提交的。 [/B]


当然会提交了!

使用道具 举报

回复
论坛徽章:
10
授权会员
日期:2005-10-30 17:05:332010年世界杯参赛球队:科特迪瓦
日期:2010-04-15 12:20:472010年世界杯参赛球队:智利
日期:2010-04-13 17:15:21生肖徽章2007版:蛇
日期:2009-09-24 13:54:11生肖徽章2007版:龙
日期:2009-09-22 13:56:012009日食纪念
日期:2009-07-22 09:30:00生肖徽章2007版:龙
日期:2009-02-10 13:45:15生肖徽章2007版:狗
日期:2009-02-03 13:53:34会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB十周年纪念徽章
日期:2011-11-01 16:20:28
16#
发表于 2005-2-16 12:03 | 只看该作者
最初由 yangtingkun 发布
[B]

biti在深入讨论区有篇文章,探讨Oracle启动时做了什么,你可以去找找看。 [/B]


谢谢!
我找到了,正在看。
http://www.itpub.net/showthread. ... 099&pagenumber=

使用道具 举报

回复
论坛徽章:
226
BLOG每日发帖之星
日期:2010-02-11 01:01:06紫蛋头
日期:2013-01-12 23:45:222013年新春福章
日期:2013-02-25 14:51:24问答徽章
日期:2013-10-17 18:06:40优秀写手
日期:2013-12-18 09:29:10马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:14
17#
发表于 2005-2-16 12:17 | 只看该作者
最初由 d.c.b.a 发布
[B]

当然会提交了! [/B]


做个测试不就清楚了

[PHP]
SQL> desc t
名称                                                  是否为空? 类型
----------------------------------------------------- -------- ----------------------
ID                                                    NOT NULL NUMBER
NAME                                                           VARCHAR2(30)

SQL> select * from t;

未选定行

SQL> insert into t values (1, 'name');

已创建 1 行。

SQL> select * from t;

        ID NAME
---------- ------------------------------
         1 name

SQL> alter session set optimizer_mode = first_rows;

会话已更改。

SQL> rollback;

回退已完成。

SQL> select * from t;

未选定行

SQL> insert into t values (1, 'name');

已创建 1 行。

SQL> select * from t;

        ID NAME
---------- ------------------------------
         1 name

SQL> alter system set optimizer_mode = choose scope = spfile;

系统已更改。

SQL> rollback;

回退已完成。

SQL> select * from t;

未选定行

SQL>
[/PHP]

使用道具 举报

回复
论坛徽章:
6
ITPUB元老
日期:2005-02-28 12:57:00授权会员
日期:2005-11-04 13:13:52会员2006贡献徽章
日期:2006-04-17 13:46:34在线时间
日期:2006-12-24 04:01:01会员2007贡献徽章
日期:2007-09-26 18:42:10ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41
18#
发表于 2005-2-16 17:13 | 只看该作者
未删除成功.

使用道具 举报

回复
论坛徽章:
8
授权会员
日期:2005-10-30 17:05:33ITPUB元老
日期:2007-10-04 13:18:29ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41ITPUB社区12周年站庆徽章
日期:2013-10-08 17:44:42一汽
日期:2013-11-01 11:06:26
19#
发表于 2005-2-16 17:53 | 只看该作者

一般情况下,重新delete就可以了。

如果设置了commit选项,就比较麻烦了。
反正你是delete,重新做一下了。

使用道具 举报

回复
论坛徽章:
131
2006年度最佳技术回答
日期:2007-01-24 12:58:48福特
日期:2013-10-24 13:57:422014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:142013年新春福章
日期:2013-02-25 14:51:24
20#
发表于 2005-2-16 18:02 | 只看该作者
的确不提交


最初由 yangtingkun 发布
[B]

做个测试不就清楚了

[PHP]
SQL> desc t
名称                                                  是否为空? 类型
----------------------------------------------------- -------- ----------------------
ID                                                    NOT NULL NUMBER
NAME                                                           VARCHAR2(30)

SQL> select * from t;

未选定行

SQL> insert into t values (1, 'name');

已创建 1 行。

SQL> select * from t;

        ID NAME
---------- ------------------------------
         1 name

SQL> alter session set optimizer_mode = first_rows;

会话已更改。

SQL> rollback;

回退已完成。

SQL> select * from t;

未选定行

SQL> insert into t values (1, 'name');

已创建 1 行。

SQL> select * from t;

        ID NAME
---------- ------------------------------
         1 name

SQL> alter system set optimizer_mode = choose scope = spfile;

系统已更改。

SQL> rollback;

回退已完成。

SQL> select * from t;

未选定行

SQL>
[/PHP] [/B]

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表