欢迎来到天天文库
浏览记录
ID:34757371
大小:56.46 KB
页数:4页
时间:2019-03-10
《如何彻底删除表空间》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、如何彻底删除表空间ora-02429:无法删除用于强制唯一/主键的索引sql>droptablespaceksdmincludingcontentscascadeconstraintsora-00604:递归sql层1出现错误。ora-02429:无法删除用于强制唯一/主键的索引。sql>selectsegment_name,partition_name,tablespace_namefrom dba_extents wheretablespace_name=upper('KSDM')显示出2个表的主键的表空间是:KSDM --以下是生成删除主键约束的脚本sql
2、>select'altertable'
3、
4、owner
5、
6、'.'
7、
8、table_name
9、
10、'dropconstraint'
11、
12、constraint_name
13、
14、';'fromdba_constraintswhereconstraint_typein('U','P') and(index_owner,index_name)in (selectowner,segment_name fromdba_segments wheretablespace_name='KSDM');显示结果如下:altertableTEST.SYS_CODEdro
15、pconstraintPK_CODEID;altertableTEST.KS_WPYP_PWPLGXdropconstraintPK_KS_WPYP_PWPLGX; 执行以上2条显示的结果sql>altertableTEST.SYS_CODEdropconstraintPK_CODEID;表已经更改sql>altertableTEST.KS_WPYP_PWPLGXdropconstraintPK_KS_WPYP_PWPLGX;表已经更改sql>droptablespaceKSDM表空间已经丢弃。DROPTABLESPACEtablespace_nameINCLUDINGCO
16、NTENTSANDDATAFILES;在该用户下写一个存储过程(要保证该用户并不是以dba身份登录的,不然会把系统表都删掉哦)createorreplaceprocedurepro_droptableiscursorcurisselecttable_namefromuser_tables;drop_sqlvarchar2(1000);beginfortbnameincurloopbegindrop_sql:='droptable'
17、
18、tbname.table_name;executeimmediatedrop_sql;end;endloop;endpro_droptable
19、;然后执行就OK啦执行语句:callpro_droptable()删除ORACLE下的用户conn/assysdbadeletefromuser$wherename='dzysc';commit;altersystemflushshared_pool;删除ORACLE下的用户dropuserdzysc cascade;Oracle回收站空间清空oracle10g,在pl/sql中选中删除后会出现类似:BIN$nJ5JuP9cQmqPaArFei384g==$0的表。1.查看回收站select*fromuser_recyclebin;2.清空回收站purgerecycleb
20、in;3.清空回收站中的某个表--如下方式删除会提示:SQL命令未正确结束。purgetableBIN$/UpBuh+LQ9yZGN95BFsk5Q==$0--正确写法如下:purgetable"BIN$/UpBuh+LQ9yZGN95BFsk5Q==$0";--如下方式删除会提示:SQL命令未正确结束。droptableBIN$/UpBuh+LQ9yZGN95BFsk5Q==$0--而如下这样写,则会提示:无法对回收站中的对象执行DDL/DML。droptable"BIN$0iJ7/rWFQrSGdZexvGv3qQ==$0"4.恢复回收站FLASHBACKTABLE"B
21、IN$0iJ7/rWFQrSGdZexvGv3qQ==$0"TOBEFOREDROP这是10g的新特性在10g中,如果启用flashdrop功能,在drop表时,数据库不会直接删除,而是将其放在回收站中,当空间出现短缺时,才会逐渐回收这部分空间。bin$表示表放在了回收站,你想要的话还可以找回来删除的话一个方法是直接删deletetanlebin$.....;另一种方法就是使用purgetabletable_name;droptable时,不产生他们,修改你的drop语句写成:DROPTABLETABLE_NAME
此文档下载收益归作者所有