精灵巫婆 发表于 2015-1-16 22:22:20

MYSQL教程之Oracle 10G 中的接纳站

MySQL在业界的流行所带来的另一个好处是,人们总可以很轻松地发现本行业的MySQL学习教程。厂商都希望他们的开发工具和应用程序框架可以与MySQL数据库兼容。在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
通过支付一定费用,客户可以得到优先的24/7支持,访问内容丰富的在线知识库和联系一个专门的技术负责经理。

透明 发表于 2015-1-19 09:36:44

你觉得我的非分区索引无法对起子分区,你可以提醒我一下呀!没有任何的提醒,直接就变成了非分区表。不知道这算不算一个bug。大家也可以试试。

精灵巫婆 发表于 2015-1-27 12:58:15

原来公司用过MYSQL自己也只是建个表写个SQL

仓酷云 发表于 2015-2-5 10:39:22

groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。

只想知道 发表于 2015-2-11 09:46:56

是要和操作系统进行Socket通讯的场景。否则建议慎重!

第二个灵魂 发表于 2015-3-2 10:37:22

另一个是把SQL语句写到服务器端,就是所谓的SP(存储过程);

活着的死人 发表于 2015-3-17 19:51:26

作了些试验,发现使用CLR的存储过程或函数在达到一定的阀值的时候,系统性能会呈指数级下滑!这是非常危险的!只使用几个可能没有问题,当一旦大规模使用会造成严重的系统性能问题!

若相依 发表于 2015-3-24 23:31:44

发几份SQL课件,以飨阅者
页: [1]
查看完整版本: MYSQL教程之Oracle 10G 中的接纳站