oracle分区表彻底删除的办法

oracle分区表彻底删除的办法
当对一个不再使用的分区表进行drop后,查询user_tab_partitions视图发现出现如下不规则的分区表表名:
SQL> select distinct table_name from user_tab_partitions;
BIN$l+Pv5l1jCMXgQKjAyQFA0A==$0
这样很容易导致自己写的"自动增加表的分区"的存过发生错误,因此为了避免再修改存过,只能把这些不规则的表名删除才行.现提供如下方法彻底删除这些不规则的表名.
其实当我们执行drop table tablename的时候,不是直接把表删除掉,而是放在了回收站里,可以通过查询user_recyclebin查看被删除的表信息.这样,回收站里的表信息就可以被恢复或彻底清除。

通过查询回收站user_recyclebin获取被删除的表信息,如果想恢复被drop掉的表,可以使用如下语句进行恢复
flashback table <user_recyclebin.object_name or user_recyclebin.original_name> to before drop; 上面的语句是将回收站里的表恢复为原表名称
flashback table <user_recyclebin.object_name or user_recyclebin.original_name> to before drop rename to <new_table_name>;
将回收站里的表恢复为指定的新表名称,表中数据不会丢失。

若要彻底删除表,则使用语句:drop table <table_name> purge;这样drop后的表就不被放入回收站
如果是清除回收站中指定的表,可以使用语句purge table <table_name>;
如果是清除当前用户回收站所有的表,可以使用语句purge recyclebin;
如果是清除所有用户的回收站:purge dba_recyclebin;
到此,按上面的方法清除回收站的数据后,再查询user_tab_partitions视图,发现不规则表名已经没有了
SQL> select distinct table_name from user_tab_partitions;
no rows selected
在此顺便再提一下truncate操作后不释放空间的解决办法
Truncate不支持回滚,并且不能truncate一个带有外键的表,如果要删除首先要取消外键,然后再删除。

truncate table 后,有可能表空间仍没有释放,可以使用如下语句:
alter table 表名称deallocate UNUSED KEEP 0;
注意如果不加KEEP 0的话,表空间是不会释放的。

例如:
alter table tablenamedeallocate UNUSED KEEP 0;
或者:
TRUNCATE TABLE tablename DROP STORAGE才能释放表空间。

例如:truncate table tablename DROP STORAGE;
查看各表空间空置率:
select a.tablespace_name,a.free_space,b.total_space,
a.free_space/
b.total_spacefree_ratio
from
(select tablespace_name,sum(bytes)/1024/1024free_space from dba_free_spa
ce groupby tablespace_name) a,
(select tablespace_name,sum(bytes)/1024/1024total_space from dba_data_fi les groupby tablespace_name) b
where a.tablespace_name=b.tablespace_name
orderby free_ratio desc
查看表占用空间的大小:
select segment_name,sum(bytes)/1024/1024from User_Extents groupby segment _name;
查看带分区的表:
select distinct table_name from user_tab_partitions
查看分区表空间大小:
select segment_name, sum(bytes) / 1024 / 1024
from User_Extents
where segment_name in (selectdistinct table_name from user_tab_partitions) groupby segment_name;
查看某个表的分区:
select t.partition_name
from user_tab_partitions t
where t.table_name = 'ODW_SDP_DPAMT_NP'
orderby t.partition_name
批量删除分区表:
declare
v_date date;
v_part_name varchar(50);
begin
v_date :=date'2015-01-30';
while v_date>=date'2013-06-03'LOOP
v_part_name :='P' || to_char(v_date,'yyyymmdd');
dbms_output.put_line(v_part_name);
executeimmediate'ALTER TABLE ODW_SDP_DPAMT_NP DROP PARTITION ' ||
v_part_name;
v_date :=v_date -1;
ENDLOOP;
END;
删除一个分区:altertable ODW_LOAN_AR_SMY droppartition P2*******
删除一个分区的数据:altertable ODW_LOAN_AR_SMY truncatepartition P2******* 释放表空间
alter table 表名称deallocate UNUSED KEEP 0
释放磁盘空间:
select a.file#,,a.bytes/1024/1024 CurrentMB, ceil(HWM * a.block_size)/1024/1024 ResizeTo, (a.bytes - HWM * a.block_size)/1024/1024 ReleaseMB, 'alter database datafile'''||||''' resize '|| ceil(HWM * a.block_size/1024/1024) || 'M;' ResizeCMD from v$datafile a, (select
file_id,max(block_id+blocks-1) HWM from dba_extents group by file_id) b where a.file# = b.file_id(+) and (a.bytes - HWM *block_size)>0 order by 5
1、select distinct table_name from user_tab_partitions
2、清除回收站中指定的表purge table <table_name>;
3、清除当前用户回收站所有的表purge recyclebin
4、清除所有用户的回收站purge dba_recyclebin
5、select distinct table_name from user_tab_partitions;
6、alter table 表名称deallocate UNUSED KEEP 0
7、truncate table tablename DROP STORAGE。

合集下载

Windows下ORACLE10g完全卸载的方法分析

Windows下ORACLE10g完全卸载的方法分析

Windows下ORACLE10g完全卸载的⽅法分析Windows下ORACLE完全卸载:使⽤OUI可以卸载数据库,但卸载后注册表和⽂件系统内仍会有部分残留。

这些残留不仅占⽤磁盘空间,⽽且影响ORACLE的重新安装及系统性能。

在WINDOWS下卸载ORACLE 10g的步骤:1 删除聚集同步服务CSS(Cluster Synchronization Services)。

如果数据库配置了⾃动存储管理ASM,应该先删除CSS服务,因为ORACLE不会⾃动删除这个服务。

在DOS命令下使⽤localconfig delete命令可删除该服务。

C:\Documents and Settings\Administrator>localconfig delete Step 1: stopping local CSS stack Step 2: deleting OCR repository failed to open the OCR subkey, err(1060) failed to cleanup local OCR repository successfully deleted local CSS setup可能因为我的数据库没有配置ASM,因此执⾏的时候出现如上所⽰的错误提⽰。

2 逐个停⽌所有与ORACLE相关的服务。

ORACLE服务是以Ora开头的,例如:这个在WINDOWS的服务对话框;⼤家都⽐较熟悉,就不说了。

3 使⽤OUI(Oracle Universal Installer)卸载Oracle软件。

“开始”->“程序”->“Oracle-OraDb110g_home1|Oracle installation product|Universal installer.卸载ORACLE的时间⽐较长,⽽且⽐较耗费资源,因此卸载前最好关闭其他所有的程序窗⼝。

出现如下窗⼝。

oracle数据库完全卸载步骤

oracle数据库完全卸载步骤

oracle数据库完全卸载步骤1.关闭oracle所有的服务。

可以在windows的服务管理器中关闭;2.打开注册表:regedit 打开路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\删除该路径下的所有以oracle开始的服务名称,这个键是标识在windows下注册的各种服务!3.打开注册表,找到路径: HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE删除该oracle⽬录,该⽬录下注册着Oracle的软件安装信息。

4.删除注册的oracle事件⽇志,打开注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application删除注册表的以oracle开头的所有项⽬。

5.删除环境变量path中关于oracle的内容。

⿏标右键右单击“我的电脑属性⾼级环境变量PATH 变量。

删除Oracle在该值中的内容。

注意:path中记录着⼀堆操作的⽬录,在windows中各个⽬录之间使⽤分号(; )隔开的,删除时注意。

建议:删除PATH环境变量中关于Oracle的值时,将该值全部拷贝到⽂本器中,找到对应的Oracle的值,删除后,再拷贝修改的串,粘贴到PATH环境变量中,这样相对⽽⾔⽐较安全。

6.重新启动操作系统。

以上1~5个步骤操作完毕后,重新启动操作系统。

7.重启操作系统后各种Oracle相关的进程都不会加载了。

这时删除Oracle_Home下的所有数据。

(Oracle_Home指Oracle程序的安装⽬录)8.删除C:\Program Files下oracle⽬录。

(该⽬录视Oracle安装所在路径⽽定,⼀般情况下就是这个路径)9.删除开始菜单下oracle项完成以上步骤就是完全卸载了oracle数据库。

oracle中删除多表数据的方法

oracle中删除多表数据的方法

oracle中删除多表数据的方法### Oracle中删除多表数据的方法在Oracle数据库管理中,删除多表数据是一项常见的操作。

它涉及到单个或多个表的数据删除,可能基于特定条件或关联关系。

以下将详细介绍几种在Oracle中删除多表数据的方法。

#### 方法一:使用`DELETE`语句删除单个表中的数据若只需从一个表中删除数据,但基于与其他表的关联条件,可使用以下方法:```sqlDELETE FROM table1WHERE column1 IN (SELECT column1 FROM table2 WHERE condition);```在此示例中,从`table1`中删除所有与`table2`中满足特定条件(`condition`)的记录。

#### 方法二:使用`DELETE JOIN`语句删除多个表中的数据如果需要同时删除多个表中的相关数据,可以使用`JOIN`子句:```sqlDELETE FROM table1USING table2, table3WHERE table1.column1 = table2.column1AND table1.column2 = table3.column2AND table2.condition = "value";```此语句将删除`table1`中与`table2`和`table3`中匹配的行。

#### 方法三:级联删除在设置了级联约束的情况下,当删除父表中的记录时,子表中的相关记录也会自动被删除。

```sqlALTER TABLE table2ADD CONSTRAINT fk_table1FOREIGN KEY (column1)REFERENCES table1(column1)ON DELETE CASCADE;```之后,删除`table1`中的记录将会自动删除`table2`中依赖的记录。

#### 方法四:使用`DELETE`和子查询当你需要删除基于复杂查询条件的数据时,可以使用子查询:```sqlDELETE FROM table1WHERE column1 NOT IN (SELECT column1 FROM table2 WHERE column2 > value);```此操作将删除`table1`中那些在`table2`中没有对应记录或不符合给定条件的行。

Oracle中快速删除所有表数据

Oracle中快速删除所有表数据

Oracle中快速删除所有表数据⼀、禁⽌所有的外键约束在pl/sql developer下执⾏如下语句:SELECT 'ALTER TABLE ' || table_name || ' disable CONSTRAINT ' || constraint_name || ';' FROM user_constraints where CONSTRAINT_TYPE = 'R';把查询出来的结果拷出来在pl/sql developer时执⾏。

若没有pl/sql developer,可以在sqlplus⾥操作,⽅法如下:1. 打开sqlplus,并⽤相应的⽤户连接。

2. 把pagesize设⼤点,如set pagesize 200003. ⽤spool把相应的结果导到⽂件时,如SQL> spool /home/oracle/constraint.sqlSQL> SELECT 'ALTER TABLE ' || table_name || ' disable CONSTRAINT ' || constraint_name || ';' FROM user_constraints where CONSTRAINT_TYPE = 'R';SQL> spool off4. 已经⽣成了包含相应语句的脚本,不过脚本⽂件⾥的最前和最后⾯有多余的语句,⽤⽂本编辑器打开,并删除没⽤的语句即可5. 重新⽤相应的⽤户登录sqlplus,执⾏如下命令SQL> @/home/oracle/constraint.sql⼆、⽤delete或truncate删除所有表的内容SELECT 'DELETE FROM '|| table_name || ';' FROM USER_TABLESORDER BY TABLE_NAME;或SELECT 'TRUNCATE TABLE '|| table_name || ';' FROM USER_TABLESORDER BY TABLE_NAME;⽤第⼀步类似的⽅法操作。

完全删除Oracle数据库的方法数据库 电脑资料

完全删除Oracle数据库的方法数据库 电脑资料

完全删除Oracle数据库的方法数据库电脑资料很多朋友只用了 oracle 的删除,但很多情况下,他会发现重新安装时,点了下一步安装界面就消失了,往往无奈下只好重装系统,其实只是你数据库没删干净,删干净就不会出现这种情况了,很多朋友只用了oracle的删除,但很多情况下,他会发现重新安装时,点了下一步安装界面就消失了,往往无奈下只好重装系统,其实只是你数据库没删干净,删干净就不会出现这种情况了。

实现方法:1、开始->设置->控制面板->管理工具->服务停止所有Oracle服务。

2、开始->程序->Oracle - OraHome81->Oracle Installation Products->Universal Installer卸装所有Oracle产品,但Universal Installer本身不能被删除5、运行regedit,选择HKEY_LOCAL_MACHINESOFTWAREORACLE,按del键删除这个入口。

6、运行regedit,选择HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices,滚动这个列表,删除所有Oracle入口。

7、运行refedit,HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlogAp plication,删除所有Oracle入口,8、开始->设置->控制面板->系统->高级->环境变量删除环境变量CLASSPATH和PATH中有关Oracle的设定9、从桌面上、STARTUP(启动)组、程序菜单中,删除所有有关Oracle 的组和图标10、删除Program FilesOracle目录11、重新启动计算机,重起后才能完全删除Oracle所在目录12、删除与Oracle有关的文件,选择Oracle所在的缺省目录C:Oracle,删除这个入口目录及所有子目录,并从Windows2000目录(一般为C:WINNT)下删除以下文件ORACLE.INI、oradim73.INI、oradim80.INI、oraodbc.ini等等。

oracle 删除分区的语句

oracle 删除分区的语句

oracle 删除分区的语句
在Oracle数据库中,分区是用于在表中分隔数据的一种方法。

有时候,我们需要删除一个已经存在的分区。

以下是 Oracle 删除分区的语句:
1. 删除单个分区:
ALTER TABLE table_name DROP PARTITION partition_name;
2. 删除多个分区:
ALTER TABLE table_name DROP PARTITION partition_name1, partition_name2, partition_name3;
3. 删除表中所有分区:
ALTER TABLE table_name TRUNCATE PARTITION;
4. 删除表中所有分区及分区定义:
ALTER TABLE table_name DROP PARTITION ALL;
需要注意的是,删除分区会永久删除其中的数据,因此在删除分区之前应该备份数据或确认不再需要这些数据。

另外,如果分区中存在索引或触发器,需要在删除分区之前先删除这些索引或触发器。

- 1 -。

oracle批量删除表数据的4种方式

oracle批量删除表数据的4种⽅式1.情景展⽰ 情景⼀: 删除PRIMARY_INDEX_TEST表中,MINDEX_ID字段为空的数据 情景⼆: 删除VIRTUAL_CARD_TEST表中的脏数据2.解决⽅案 情景⼀的解决⽅案:DELETE FROM PRIMARY_INDEX_TEST WHERE MINDEX_ID IS NULL 情景⼆的解决⽅案: 最简单的⽅法,见⽂末 2019/10/17 2018/12/10 ⽅案1:使⽤快速游标法(删除⼀次提交⼀次);1--快速游标法2BEGIN3FOR TEMP_CURSOR IN (SELECT ID4FROM VIRTUAL_CARD35WHERE INSTR(NAME, '*') >06UNION7SELECT ID8FROM VIRTUAL_CARD39WHERE INSTR(NAME, '#') >010UNION11SELECT ID12FROM VIRTUAL_CARD313WHERE INSTR(NAME, '/') >014UNION15SELECT ID16FROM VIRTUAL_CARD317WHERE INSTR(NAME, '+') >018UNION19SELECT ID20FROM VIRTUAL_CARD321WHERE INSTR(NAME, '!') >022UNION23SELECT ID24FROM VIRTUAL_CARD325WHERE INSTR(NAME, '.') >0) LOOP26/* LOOP循环的是TEMP_CURSOR(逐条读取TEMP_CURSOR) */27DELETE FROM VIRTUAL_CARD3 WHERE VIRTUAL_CARD3.ID = TEMP_CURSOR.ID;28COMMIT; --提交29END LOOP;30END; 执⾏时间: ⽅案2:更多游标使⽤⽅法,见⽂末推荐; ⽅案3:使⽤存储过程按id进⾏逐条删除。

oracle清空表的语句

oracle清空表的语句摘要:1.Oracle 清空表的语句概述2.Oracle 清空表的语句示例3.使用Oracle 清空表的注意事项正文:一、Oracle 清空表的语句概述Oracle 数据库是一种广泛应用的关系型数据库管理系统,其表是数据的基本存储结构。

有时,为了维护数据库的完整性和提高数据库性能,需要清空表中的数据。

Oracle 提供了清空表的语句,可以帮助用户快速实现该操作。

二、Oracle 清空表的语句示例1.使用DELETE 语句清空表DELETE 语句是Oracle 中清空表的主要方式,通过删除表中的所有数据来实现清空表的目的。

以下是使用DELETE 语句清空表的示例:```sqlDELETE FROM table_name;```其中,`table_name`是用户需要清空数据的表名。

2.使用TRUNCATE 语句清空表TRUNCATE 语句是另一种清空表的方法,与DELETE 语句不同,TRUNCATE 语句会直接删除表中的所有数据,而不会产生删除记录。

以下是使用TRUNCATE 语句清空表的示例:```sqlTRUNCATE TABLE table_name;```其中,`table_name`是用户需要清空数据的表名。

三、使用Oracle 清空表的注意事项1.使用DELETE 语句时,需要注意以下几点:- 删除数据时,表空间不会被回收,因此需要配合适当的表空间管理操作以释放空间。

- 删除数据会产生回滚段,需要及时清理以避免Oracle 实例崩溃。

- 在删除数据前,建议对数据进行备份,以防止误删数据导致数据丢失。

2.使用TRUNCATE 语句时,需要注意以下几点:- TRUNCATE 语句不可恢复,使用前需要确保数据备份。

- TRUNCATE 语句执行速度快于DELETE 语句,因为它不会产生删除记录。

- TRUNCATE 语句无法应用于分区表和簇表。

总之,Oracle 提供了多种清空表的方法,用户可以根据实际需求选择合适的方法进行操作。

如何彻底卸载oracle

如何彻底卸载Oracle?1、开始->设置->控制面板->管理工具->服务,停止所有Oracle服务。

2、开始->程序->Oracle - OraHome81->Oracle Installation Products->Universal Installer,卸装所有Oracle产品,但Universal Installer本身不能被删除5、运行regedit,选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,按del 键删除这个入口。

6、运行regedit,选择HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,滚动这个列表,删除所有Oracle入口。

7、运行refedit,找到主键:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Applic ation,删除所有Oracle入口。

8、开始->设置->控制面板->系统->高级->环境变量,删除环境变量CLASSPATH和PATH中有关Oracle的设定9、从桌面上、STARTUP(启动)组、程序菜单中,删除所有有关Oracle的组和图标10、删除\Program Files\Oracle目录11、重新启动计算机,重起后才能完全删除Oracle所在目录12、删除与Oracle有关的文件,选择Oracle所在的缺省目录C:\Oracle,删除这个入口目录及所有子目录,并从Windows 2000目录(一般为C:\WINNT)下删除以下文件ORACLE.INI、oradim73.INI、oradim80.INI、oraodbc.ini等等。

13、WIN.INI文件中若有[ORACLE]的标记段,删除该段14、如有必要,删除所有Oracle相关的ODBC的DSN15、到事件查看器中,删除Oracle相关的日志说明:如果有个别DLL文件无法删除的情况,则不用理会,重新启动,就可以删除掉了。

Oracle10g完全卸载

oracle10g完全卸载及删除垃圾表
卸载步骤:
1、Windows + R 打开“运行”窗口输入命令“services.msc”
2、停止与oracle相关的四个服务(如果事先将四个服务设为手的而且没有启动的话,此步
可以忽略)。

3、删除安装的Oracle组件
位置:开始→程序→ Oracle - OraDb10g_home1 → Oracle Installation Products → Universal Installer
4、Windows + R输入命令“regedit”
5、选择HKEY_LOCAL_MACHINE\SOFTWARE,删除与Oracle相关的项值。

6、删除安装的Oracle服务。

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet003\Services
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
7,如果你按装是用的默认的目录在C盘下有一个以ORACLE命名的文件夹,删除它!
8、重新启动计算机,重起后才能完全删除Oracle所在目录
9、删除与Oracle有关的文件,选择Oracle所在的缺省目录C:\Oracle,删除这个入口目录及所有子目录,
并从Windows 2000目录(一般为C:\WINNT)下删除以下文件
ORACLE.INI、oradim80.INI
10、WIN.INI文件中若有[ORACLE]的标记段,删除该段。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档