oralce查看某张表占用空间大小

本文介绍了Oracle数据库中的几个实用技巧,包括如何查询用户下表使用大小的排名、如何彻底删除表并绕过回收站、以及如何查看重要的监控和日志文件等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、查询某用户下表使用大小的前10名

select * from (select a.segment_name,(bytes/(1024*1024)) sizez ,a.segment_type from dba_segments a where owner='risk' order by bytes desc ) where rownum <=10;


2、当使用drop table tablename 时,并没有完全删除,在数据库的回收站(recyclebin)中会保留一份。

查看:select * from recyclebin where type='TABLE' order by droptime desc;


使用purge关键字,从回收站中彻底删除 :

purge talbe "name";  或者在删除表的时候使用:drop table tablename purge;


3、监控文件:v$controlfile;


4、日志文件(redo):v$logfile;


  redo和undo:

redo->记录所有操作,用于恢复(redo records all the database transaction used for recovery)
undo->记录所有的前印象,用于回滚(undo is used to store uncommited 
data infor used for rollback)





Oracle数据库中,查看的修改记录可以通过种方式实现,具体取决于你的需求和数据库的配置。以下是几种常见的方法: ### 1. 使用审计(Auditing)功能 Oracle提供了审计功能,可以记录对的修改操作(如INSERT、UPDATE、DELETE)。首先,你需要启用审计功能。 ```sql -- 启用对的审计 AUDIT INSERT, UPDATE, DELETE ON your_table_name BY ACCESS; -- 查看审计记录 SELECT * FROM DBA_AUDIT_TRAIL WHERE OBJ_NAME = 'YOUR_TABLE_NAME'; ``` ### 2. 使用触发器(Triggers) 你可以在上创建触发器,当被修改时,将修改记录插入到另一个日志中。 ```sql -- 创建日志 CREATE TABLE table_modification_log ( id NUMBER GENERATED BY DEFAULT AS IDENTITY, operation VARCHAR2(10), modified_by VARCHAR2(100), modified_on DATE, old_values VARCHAR2(4000), new_values VARCHAR2(4000) ); -- 创建触发器 CREATE OR REPLACE TRIGGER trg_table_modification AFTER INSERT OR UPDATE OR DELETE ON your_table_name FOR EACH ROW BEGIN IF INSERTING THEN INSERT INTO table_modification_log (operation, modified_by, modified_on, new_values) VALUES ('INSERT', USER, SYSDATE, :NEW.column_name); ELSIF UPDATING THEN INSERT INTO table_modification_log (operation, modified_by, modified_on, old_values, new_values) VALUES ('UPDATE', USER, SYSDATE, :OLD.column_name, :NEW.column_name); ELSIF DELETING THEN INSERT INTO table_modification_log (operation, modified_by, modified_on, old_values) VALUES ('DELETE', USER, SYSDATE, :OLD.column_name); END IF; END; ``` ### 3. 查询Flashback数据 如果数据库启用了Flashback功能,并且有足够的权限和存储空间,可以查询过去的数据。 ```sql -- 查询过去某个时间点的数据 SELECT * FROM your_table_name AS OF TIMESTAMP TO_TIMESTAMP('2023-01-01 10:00:00', 'YYYY-MM-DD HH24:MI:SS'); -- 查询某个时间段内的数据变化 SELECT * FROM your_table_name VERSIONS BETWEEN TIMESTAMP TO_TIMESTAMP('2023-01-01 10:00:00', 'YYYY-MM-DD HH24:MI:SS') AND SYSDATE; ``` ### 4. 查询日志文件 如果数据库启用了归档日志,可以从归档日志中提取修改记录。这需要使用Oracle的LogMiner工具。 ```sql -- 使用LogMiner查看修改记录 EXECUTE DBMS_LOGMNR.START_LOGMNR(OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG); SELECT * FROM V$LOGMNR_CONTENTS WHERE SEG_OWNER = 'YOUR_SCHEMA' AND SEG_NAME = 'YOUR_TABLE_NAME'; EXECUTE DBMS_LOGMNR.END_LOGMNR; ``` 通过以上方法,你可以根据具体需求选择合适的方式查看Oracle数据库中某的修改记录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值