|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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都可以降低你所需要的人力成本。 |
|