查看数据库某个schema下哪张表占的空间大

为了查询schema下某个表占用的空间问题,以便处理分析问题,直接复制粘贴(改schema)即可

select TABLE_NAME, concat(truncate(data_length/1024/1024,2),' MB') as data_size,
concat(truncate(index_length/1024/1024,2),' MB') as index_size
from information_schema.tables where TABLE_SCHEMA = 'name'
group by TABLE_NAME
order by data_length desc;

在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、付费专栏及课程。

余额充值