楼主: biti_rainy

[精华] 关于数据库open的深入探究

[复制链接]
论坛徽章:
22
2010新春纪念徽章
日期:2010-03-01 11:08:33马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:08:092012新春纪念徽章
日期:2012-02-13 15:08:092012新春纪念徽章
日期:2012-02-13 15:08:092012新春纪念徽章
日期:2012-02-13 15:08:092012新春纪念徽章
日期:2012-02-13 15:08:09
31#
发表于 2005-2-28 22:28 | 只看该作者
最初由 rollingpig 发布
[B]我们是否可以通过在bootstrap$中加入自己的语句来达到开数据库自运行的目的? [/B]


这个比较困难, x$表的修改是在Oracle可执行程序和内存中进行修改的, 而且是只有Oracle的可执行程序可以修改啊

使用道具 举报

回复
论坛徽章:
5
ITPUB元老
日期:2005-03-15 09:15:43ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44凯迪拉克
日期:2013-12-27 09:30:49
32#
发表于 2005-3-7 11:07 | 只看该作者
厉害

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
33#
发表于 2005-3-17 15:12 | 只看该作者
找到源头了,强的。

使用道具 举报

回复
论坛徽章:
0
34#
发表于 2005-3-17 16:58 | 只看该作者
疑问:
看了BITI文章,数据库每次启动的时候先创建bootstrap$来建立字典表本身的结构,然后再根据bootstrap$去获取数据文件的信息,那是不是意味着数据库一旦关闭,这个bootstrap$就没有了。如果关闭之后依然存在,当启动时又创建bootstrap$,这之间是怎么解决的。

使用道具 举报

回复
论坛徽章:
117
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20版主7段
日期:2012-05-15 15:24:11ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:42ITPUB 11周年纪念徽章
日期:2012-10-09 18:03:32紫蛋头
日期:2013-03-04 17:00:07优秀写手
日期:2013-12-18 09:29:09
35#
发表于 2005-3-17 18:10 | 只看该作者
最初由 bulkaunt 发布
[B]疑问:
看了BITI文章,数据库每次启动的时候先创建bootstrap$来建立字典表本身的结构,然后再根据bootstrap$去获取数据文件的信息,那是不是意味着数据库一旦关闭,这个bootstrap$就没有了。如果关闭之后依然存在,当启动时又创建bootstrap$,这之间是怎么解决的。 [/B]


bootstrap$在数据库内部当然是存在的,就如同操作系统的引导区一样。
这里所谓的创建,只是说在内存中创建这个结构,然后从"引导区"中读入数据。

实际上,表又何尝存在过?那只不过是一些字段及属性的定义而已。

使用道具 举报

回复
论坛徽章:
22
2010新春纪念徽章
日期:2010-03-01 11:08:33马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:08:092012新春纪念徽章
日期:2012-02-13 15:08:092012新春纪念徽章
日期:2012-02-13 15:08:092012新春纪念徽章
日期:2012-02-13 15:08:092012新春纪念徽章
日期:2012-02-13 15:08:09
36#
发表于 2005-3-17 18:14 | 只看该作者
最初由 bulkaunt 发布
[B]疑问:
看了BITI文章,数据库每次启动的时候先创建bootstrap$来建立字典表本身的结构,然后再根据bootstrap$去获取数据文件的信息,那是不是意味着数据库一旦关闭,这个bootstrap$就没有了。如果关闭之后依然存在,当启动时又创建bootstrap$,这之间是怎么解决的。 [/B]


bootstrap$ 表的信息是使用硬编码写在Oracle的程序中的, 启动之后只在内存中存在的

使用道具 举报

回复
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
37#
 楼主| 发表于 2005-3-17 18:17 | 只看该作者
这个创建 bootstrap$ 是在内存中进行的,不是真实的 物理对象,在内存中创建的对象恰好对应了 物理磁盘上的对象,这是固定位置的。

使用道具 举报

回复
论坛徽章:
0
38#
发表于 2005-3-21 11:04 | 只看该作者
thank you

使用道具 举报

回复
论坛徽章:
0
39#
发表于 2005-3-21 11:04 | 只看该作者
thank you

使用道具 举报

回复
论坛徽章:
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
40#
发表于 2005-3-22 12:43 | 只看该作者
bootstrap$ 这个表是真实存在于数据库中,并有自己的存储的
select * from dba_extents
where segment_name = 'BOOTSTRAP$'

用sys 可以修改里面的内容
update/insert/delete都可以。

而且重起之后信息还在。

当然,有可能会使DB启动不了。


另外,所谓的创建BOOTSTRAP$表实际上是就是在内存中建立一个reference,可以通过reference访问到table在磁盘上的信息(当然,事实上是由server process 把block load到 db buffer cache里了)

使用道具 举报

回复

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

本版积分规则 发表回复

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