Oracle统计信息(表、索引)更新怎么 *** 作?

Oracle统计信息(表、索引)更新怎么 *** 作?,第1张

A. oracle 提供了收集数据库统计信息的系统包,例如统计scott用户信息只需要执行:

exec dbms_stats.gather_schema_stats(

ownname =>'SCOTT',

options =>'GATHER AUTO',

estimate_percent =>dbms_stats.auto_sample_size,

method_opt =>'for all columns size repeat',

degree =>15

)

dbms_stat.gather_schema_stats 的参数说请查相关资料,这里就不详述了。

B. 要定期执行用户统计信息很简单,只要在 oracle job 中调用这个过程就可以了,设置好初次调用时间和调用时间间隔即可。

以上的 *** 作都能在plsql中 *** 作。

 1、查看所有表空间及表空间大小:

select tablespace_name ,sum(bytes) / 1024 / 1024 as MB from dba_data_files group by tablespace_name

2、查看所有表空间对应的数据文件:

select tablespace_name,file_name from dba_data_files

3、修改数据文件大小:

alter database datafile 'H:\ORACLE\PRODUCT\10.1.0\ORADATA\ORACLE\USERS01.DBF' RESIZE 10240M

这个其实最好是做stream,这样可以保证同步更新。但是如果为了一张表做stream看起来又有些不那么值当。

dblink无法远程提交,我只能勉强提出一个方案供参考。

首先数据库AB间互相建立dblink;也就是两个dblink(A到B,B到A)

另外A数据库连接B数据库,所用的B数据库的用户是一个特殊的用户,除了这个dblink以外,其他的地方根本用不到的。

B到A的触发器则只需要读取权限就可以了。

在数据库A上建立触发器,after insert后触发,触发的内容是利用dblink登陆B数据库,登陆后随便查询个什么,都可以然后退出登陆。(直接退出也可以,主要是怕数据库记录不到登陆,登陆触发器有时似乎不那么好用,如果实在不好用可以在这个特殊用户 建立一张表,然后每次登陆都drop这张表,用drop触发器,这个没问题)

B数据库建立一个登陆触发器(或drop触发器),只要那个特殊用户登陆,那么就启动,就是查询A数据库的表a,然后更新表b,然后提交。如果是drop或create触发器,别忘了再重新create和drop,不然表会越来越多或者无表drop。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9873125.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存