仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 807|回复: 7
打印 上一主题 下一主题

[学习教程] MYSQL网站制作之Oracle 10G 中的"接纳站"

[复制链接]
兰色精灵 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:39:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
采用DBaaS解决方案,他们也可以使用同大企业一样的技术。在大型组织中,DBaaS可以提供部门级解决MySQL学习教程,而无需IT部门和采购部门的介入,提供更快和更容易的方法来实现小型解决方案。oracle
Oracle10G中的"接纳站"

byFenng
http://www.DBAnotes.net

在Oracle10G中,引进了一个接纳站(RecycleBin)的观点.

接纳站,从道理下去说就是一个数据字典表,安排用户Drop失落的数据库工具信息.用户举行Drop操纵的工具并没有被数据库删除,仍旧会占用空间.除非是因为用户手工举行Purge大概由于存储空间不敷而被数据库清失落.数据库有了如许的功效,可以削减良多不用要的贫苦.经常看到开辟职员误把表删除,快快当当找DBA来想举措的情形,信任,跟着10G的年夜局限使用,这类情况应当对照少见了.

DBA办理上的相干信息能够从USER_recyclebin(DBA_recyclebin)中猎取.从如今的Beta版原本看,手册上所说的经由过程SQL*Plus的showrecyclebin命令检察还不成用.

为了便于测试,我们创立了一个表空间Foo,巨细为1M,创立了一个用户Foo,默许的表空间为Foo.

----------------------------------------------------

SQL>CONNECTfoo/foo
已毗连。

SQL>SELECTtable_nameFROMuser_tables;

未选定行

SQL>DESCuser_recyclebin
称号是不是为空?范例
-----------------------------------------------------------------

......
......

user_recyclebin年夜多是自注释的,涵义对照简单了解.

SQL>SELECTobject_nameFROMuser_recyclebin;

未选定行

SQL>CREATETABLEfooASSELECT*FROMDUAL;

表已创立。

SQL>SELECTtable_nameFROMuser_tables;

TABLE_NAME
------------------------------
FOO

SQL>DROPTABLEfoo;

表已抛弃。

SQL>SELECTtable_nameFROMuser_tables;

TABLE_NAME
------------------------------
RB$$41888$TABLE$0

SQL>

SQL>SELECTobject_name,original_nameFROMuser_recyclebin;

OBJECT_NAMEORIGINAL_NAME
----------------------------------------
RB$$41888$TABLE$0FOO


SQL>DESCRB$$41888$TABLE$0
称号是不是为空?范例
--------------------------------------------------------------

DUMMYVARCHAR2(1)


当一个表被删除并挪动到"接纳站"中,它的名字要举行一些转换.如许的目标不言而喻是为了不同类工具称号的反复.(Windows上,经由了特别的处置,接纳站里的操纵体系文件能够重名.)

转换后的名字格局以下:

RB$$objn$object_type$version

个中的RB,代表RecycleBin.objn为表的目次工具号.object_type暗示工具范例.version暗示版本号.
由数据库指定。foo表被删除后,在数据库接纳站里酿成了RB$$41888$TABLE$0。从名字能够看出,这个工具的范例是Table,Version是0.

SQL>CREATETABLEfooASSELECT*FROMDUAL;

表已创立。

SQL>SELECTtable_nameFROMuser_tables;

TABLE_NAME
------------------------------
FOO
RB$$41888$TABLE$0

SQL>DROPTABLEfoo;

表已抛弃。

SQL>SELECTobject_name,original_nameFROMuser_recyclebin;

OBJECT_NAMEORIGINAL_NAME
----------------------------------------
RB$$41889$TABLE$0FOO
RB$$41888$TABLE$0FOO

SQL>

能看出来,固然源表名字不异,在接纳站里的工具名字是分歧的。

已放到接纳站里的表是不克不及用drop命令删除的:

SQL>droptableRB$$41888$TABLE$0;
droptableRB$$41888$TABLE$0
*
ERROR位于第1行:
ORA-38301:cannotperformDDL/DMLoverobjectsinRecycleBin

假如要清失落改工具,利用purge命令:

SQL>PURGEtableRB$$41888$TABLE$0;

Tablepurged.

SQL>SELECTobject_name,original_nameFROMuser_recyclebin;

OBJECT_NAMEORIGINAL_NAME
----------------------------------------
RB$$41889$TABLE$0FOO

工具已清失落.

恢复表,利用Undrop命令.

SQL>undroptableRB$$41889$TABLE$0;

Tableundropped.

SQL>SELECTobject_name,original_nameFROMuser_recyclebin;

未选定行

SQL>SELECTtable_nameFROMuser_tables;

TABLE_NAME
------------------------------
RB$$41889$TABLE$0

SQL>descfoo;
ERROR:
ORA-04043:工具foo不存在

恢复后的表的名字为RB$$41889$TABLE$0,假如指命名字,利用"as表名字"
如:undroptableRB$$41889$TABLE$0asFoo如许的语句.更加具体的语法,请查阅10G的SQL参考手册.


SQL>
SQL>descRB$$41889$TABLE$0;

称号是不是为空?范例
--------------------------------------------------------------

DUMMYVARCHAR2(1)

SQL>DROPTABLERB$$41889$TABLE$0;

表已抛弃。

SQL>SELECTtable_nameFROMuser_tables;

TABLE_NAME
------------------------------
RB$$41889$TABLE$1

SQL>

假如我们这个时分再删除RB$$41889$TABLE$0,可察看到接纳站里该表版本号的变更。

假如空间一向够用,接纳站里的工具会一向坚持(假如你不手工举行Purge的话)。假如空间不敷,接纳站里的工具会被清空。看我们上面这个例子:

让我们创立一个年夜一点的表:

SQL>selectobject_name fromuser_recyclebin;

OBJECT_NAME
------------------------------
RB$$41893$TABLE$0


SQL>CREATETABLEfoo_biggerASSELECT*FROMall_objectsWHEREROWNUM<7980;

表已创立。

SQL>SELECTtable_nameFROMuser_tables;

TABLE_NAME
------------------------------
FOO_BIGGER

SQL>SELECTobject_name,original_nameFROMuser_recyclebin;

未选定行

SQL>

哦,果然,接纳站里的内容已被删失落了。还要注重,在空间不敷的时分Drop表,也是不克不及放到接纳站里的。



参考文档:

Oracle10iDatabaseAdministrator’sGuideRelease1(10.1)-BETA
PartNo.B10739-01

Oracle10g的undrop功效一点理论byOvermars

原文出处:
<ahref="http://www.dbanotes.net/Oracle/Oracle-10G-RecycleBin.htm">http://www.dbanotes.net/Oracle/Oracle-10G-RecycleBin.htm</a>
只需每年花费2000到5000美元。无论你是自掏腰包来创建一个新兴公司,还是得到了风险投资商的赞助,使用MySQL都可以降低你所需要的人力成本。
不帅 该用户已被删除
沙发
发表于 2015-1-27 06:22:37 | 只看该作者
一个百万级别的基本信息表A,一个百万级别的详细记录表B,A中有个身份证id,B中也有身份id;先要找出A中在B的详细记录。
兰色精灵 该用户已被删除
板凳
 楼主| 发表于 2015-2-5 03:07:21 | 只看该作者
是否碎片会引发效率问题?这都是需要进一步探讨的东西。varbinary(max)代替image也让SQLServer的字段类型更加简洁统一。
柔情似水 该用户已被删除
地板
发表于 2015-2-11 03:08:37 | 只看该作者
SP4是一个累积性的ServicePack,包含自以前的ServicePack发布以来所有的修补程序(包括MS03-031安全公告)。
若天明 该用户已被删除
5#
发表于 2015-3-1 20:22:01 | 只看该作者
呵呵,这就是偶想说的
乐观 该用户已被删除
6#
发表于 2015-3-10 23:11:17 | 只看该作者
数据库物理框架没有变动undo和redo都放在数据库得transaction中,个人感觉是个败笔。如果说我们在设计数据库的时候考虑分多个数据库,可能能在一定程度上避免I/O效率问题。
蒙在股里 该用户已被删除
7#
发表于 2015-3-17 16:07:58 | 只看该作者
对于数据库来说,查询是数据库的灵魂,那么SQL查询效率究竟效率如何呢?下文将带对SQL查询的相关问题进行讨论,供您参考。
分手快乐 该用户已被删除
8#
发表于 2015-3-24 10:40:59 | 只看该作者
记得在最开始使用2k的时候就要用到这个功能,可惜2k没有,现在有了作解决方案的朋友会很高兴吧。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 20:06

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表