zoukankan      html  css  js  c++  java
  • oracle数据对比--用户,索引,分区,dblink,同义词,视图

    问题描述:需要对比用户数据一般在数据库迁移之后,需要对比一下两个库之间的差距,如果登上去一条命令的执行,去统计,就会比较麻烦,这里整理了一些脚本可用。通过创建dblink的方式快速查询,也可以整合到一个脚本中spool到一个文本中

    1.创建dblink

    1.1 旧库修改tnsname到新库,在新库上添加旧库的tns配置

    SQL> !tnsping fzcbdb9i
    Used TNSNAMES adapter to resolve the alias
    Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST =10.136.7.208)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = fzcbdb)))
    OK (0 msec)

    1.2  旧库创建有访问权限的用户

    create user comp identified by comp default tablespace USERS; 
    grant connect,resource,dba to comp;

    1.3 新库创建dblink到旧库

    create database link t_s_link connect to comp identified by comp using 'fzcbdb1';
    select count(*) from dba_tables@t_s_link;

    2.实例查询

    select instance_name,status from v$instance;
    
    select instance_name,status from v$instance@t_s_link;

    3.数据量大小对比

    dba_segments
    SQL> select sum(bytes)/1024/1024/1024 as size_g from dba_segments;
    
        SIZE_G
    ----------
    7420.62244
    
    
    SQL> select sum(bytes)/1024/1024/1024 as size_g from dba_segments@t_s_link;
    
        SIZE_G
    ----------
    8972.52301

    4.用户对比

    4.1创建用户对比

    select username from all_users order by created;
    select username from all_users@t_s_link order by created;

    4.2用户下对象总数

    SELECT OWNER, COUNT(*)
      FROM DBA_OBJECTS
     WHERE OWNER NOT IN ( 'SYS', 'OUTLN', 'SYSTEM', 'CTXSYS', 'DBSNMP',
           'LOGSTDBY_ADMINISTRATOR', 'ORDSYS', 'ORDPLUGINS', 'OEM_MONITOR',
           'WKSYS', 'WKPROXY', 'WK_TEST', 'WKUSER', 'MDSYS', 'LBACSYS', 'DMSYS',
           'WMSYS', 'EXFSYS', 'SYSMAN', 'MDDATA', 'SI_INFORMTN_SCHEMA', 'XDB', 'ODM')
     GROUP BY OWNER;
    
    SELECT OWNER, COUNT(*)
      FROM DBA_OBJECTS@t_s_link
     WHERE OWNER NOT IN ( 'SYS', 'OUTLN', 'SYSTEM', 'CTXSYS', 'DBSNMP',
           'LOGSTDBY_ADMINISTRATOR', 'ORDSYS', 'ORDPLUGINS', 'OEM_MONITOR',
           'WKSYS', 'WKPROXY', 'WK_TEST', 'WKUSER', 'MDSYS', 'LBACSYS', 'DMSYS',
           'WMSYS', 'EXFSYS', 'SYSMAN', 'MDDATA', 'SI_INFORMTN_SCHEMA', 'XDB', 'ODM')
     GROUP BY OWNER;

    4.4用户对象类型

    set pages 12222 lines 132
    select c.OWNER,c.object_type,c.cntlinux,d.cntaix,c.cntlinux-d.cntaix diff from 
    (select a.OWNER,a.object_type,count(*) cntlinux from dba_objects a where owner in ('DBSFWUSER','DVF','RIDP','FEX','CREDIT','ETL','TST','FDM','UPRR','JGDB','ACTIONUSER','DZDA','BKMONITOR','WKXTOAUSER','SENSORS','PUBLIC','OLAPSYS','SDM','ORACLE_OCM','AUDSYS','DVSYS','BP_QUERY','GSMADMIN_INTERN','AL','OJVMSYS','USE','GDM','APPQOSSYS','ORDDATA','BAK','SMARTBI','EXPDPUSER','REMOTE_SCHEDULE','R_AGENT')    group by a.OWNER,a.OBJECT_TYPE) c,(
    select b.OWNER,b.object_type,count(*) cntaix  from dba_objects b group by b.OWNER,b.OBJECT_TYPE) d where c.owner=d.owner(+) and c.object_type=d.object_type(+)  order by c.owner,c.object_type
    /
    
    set pages 1222 lines 132
    select c.OWNER,c.object_type,c.STATUS,c.cntlinux,d.cntaix,c.cntlinux-(decode(d.cntaix,null,0,cntaix)) diff from 
    (select a.OWNER,a.object_type,a.status,count(*) cntlinux from dba_objects a where owner ='ODSSMIS'  group by a.OWNER,a.OBJECT_TYPE,a.STATUS) c,(
    select b.OWNER,b.object_type,b.STATUS,count(*) cntaix  from dba_objects@t_s_link b group by b.OWNER,b.OBJECT_TYPE,b.STATUS) d where c.owner=d.owner(+) and c.object_type=d.object_type(+) and c.status=d.status(+) order by c.owner,c.object_type
    /

    4.5单一用户对象对比

    select c.OWNER,c.object_type, cntlinux,cntaix ,cntlinux-cntaix diff from (
    select a.OWNER,a.object_type,count(*) cntlinux from dba_objects a where a.owner ='FDM'  group by a.OWNER,a.OBJECT_TYPE) c
    ,(select b.OWNER,b.object_type,count(*) cntaix from dba_objects b where b.owner ='FDM'  group by b.OWNER,b.OBJECT_TYPE) d
    where c.owner=d.owner and c.object_type=d.object_type order by c.owner,c.object_type
    /
    
    select c.OWNER,c.object_type, cntlinux,cntaix ,cntlinux-cntaix diff from (
    select a.OWNER,a.object_type,count(*) cntlinux from dba_objects@t_s_link a where a.owner ='FDM'  group by a.OWNER,a.OBJECT_TYPE) c
    ,(select b.OWNER,b.object_type,count(*) cntaix from dba_objects b where b.owner ='FDM'  group by b.OWNER,b.OBJECT_TYPE) d
    where c.owner=d.owner and c.object_type=d.object_type order by c.owner,c.object_type
    /

    4.6单一用户表分区对比

    col object_type for a20
    col object_name for a25
    select object_name,object_type,CREATED,TIMESTAMP,TEMPORARY from dba_objects where owner ='JGDB' and object_type='TABLE PARTITION';
    
    col object_type for a20
    col object_name for a25
    select object_name,object_type,CREATED,TIMESTAMP,TEMPORARY from dba_objects@t_s_link where owner ='JGDB' and object_type='TABLE PARTITION';

    4.7单一用户表分区数量对比

    select count(0) from dba_objects where owner ='JGDB'  and object_type='TABLE PARTITION';
    
    select count(0) from dba_objects@t_s_link where owner ='JGDB'  and object_type='TABLE PARTITION';

    4.8表分区详细对比

    col object_name for a35
    select c.object_name, cntlinux,cntaix ,cntlinux-cntaix diff from
    (select count(0) cntaix,object_name from dba_objects where owner ='JGDB' and object_type='TABLE PARTITION' group by object_name) c,
    (select count(0) cntlinux,object_name from dba_objects where owner ='JGDB' and object_type='TABLE PARTITION' group by object_name) d
    where  c.object_name=d.object_name(+)   order by object_name;
    
    col object_name for a35
    select c.object_name, cntlinux,cntaix ,cntlinux-cntaix diff from
    (select count(0) cntaix,object_name from dba_objects@t_s_link where owner ='JGDB' and object_type='TABLE PARTITION' group by object_name) c,
    (select count(0) cntlinux,object_name from dba_objects where owner ='JGDB' and object_type='TABLE PARTITION' group by object_name) d
    where  c.object_name=d.object_name(+)   order by object_name;

    4.9无效对象

    select c.OWNER,'INVALID' ,linuxcnt ,aixcnt,linuxcnt-aixcnt diff from  (select o.OWNER, count(*) linuxcnt  from dba_objects o
    where o.status='INVALID' and o.OWNER  in ('DBSFWUSER','DVF','RIDP','FEX','CREDIT','ETL','TST','FDM','UPRR','JGDB','ACTIONUSER','DZDA','BKMONITOR','WKXTOAUSER','SENSORS','PUBLIC','OLAPSYS','SDM','ORACLE_OCM','AUDSYS','DVSYS','BP_QUERY','GSMADMIN_INTERN','AL','OJVMSYS','USE','GDM','APPQOSSYS','ORDDATA','BAK','SMARTBI','EXPDPUSER','REMOTE_SCHEDULE','R_AGENT')
    group by o.OWNER 
    order by o.OWNER ) c,
    (select o.OWNER, count(*) aixcnt  from dba_objects o
    where o.status='INVALID' and o.OWNER  in ('DBSFWUSER','DVF','RIDP','FEX','CREDIT','ETL','TST','FDM','UPRR','JGDB','ACTIONUSER','DZDA','BKMONITOR','WKXTOAUSER','SENSORS','PUBLIC','OLAPSYS','SDM','ORACLE_OCM','AUDSYS','DVSYS','BP_QUERY','GSMADMIN_INTERN','AL','OJVMSYS','USE','GDM','APPQOSSYS','ORDDATA','BAK','SMARTBI','EXPDPUSER','REMOTE_SCHEDULE','R_AGENT')
    group by o.OWNER 
    order by o.OWNER ) d
    where c.owner=d.owner(+)
    /
    
    
    select c.OWNER,'INVALID' ,linuxcnt ,aixcnt,linuxcnt-aixcnt diff from  (select o.OWNER, count(*) linuxcnt  from dba_objects o
    where o.status='INVALID' and o.OWNER  in ('PICCSMIS','ODSUSER','ODSSMIS','PICCSMISREAD','VSMIS','DBAMONITOR','R7','FMIS_SMIS','FMIS_WRITEBACK','SMIS2MP','ECIF_SMIS','SUGGEST_SMIS','SMISCRM','XXX')
    group by o.OWNER 
    order by o.OWNER ) c,
    (select o.OWNER, count(*) aixcnt  from dba_objects@t_s_link o
    where o.status='INVALID' and o.OWNER  in ('PICCSMIS','ODSUSER','ODSSMIS','PICCSMISREAD','VSMIS','DBAMONITOR','R7','FMIS_SMIS','FMIS_WRITEBACK','SMIS2MP','ECIF_SMIS','SUGGEST_SMIS','SMISCRM','XXX')
    group by o.OWNER 
    order by o.OWNER ) d
    where c.owner=d.owner(+)
    /

    4.10有效对象

    select c.OWNER,'VALID' ,linuxcnt ,aixcnt,linuxcnt-aixcnt diff from  (select o.OWNER, count(*) linuxcnt  from dba_objects o
    where o.status='VALID' and o.OWNER  in ('PICCSMIS','ODSUSER','ODSSMIS','PICCSMISREAD','VSMIS','DBAMONITOR','R7','FMIS_SMIS','FMIS_WRITEBACK','SMIS2MP','ECIF_SMIS','SUGGEST_SMIS','SMISCRM','XXX')
    group by o.OWNER 
    order by o.OWNER ) c,
    (select o.OWNER, count(*) aixcnt  from dba_objects o
    where o.status='VALID' and o.OWNER  in ('PICCSMIS','ODSUSER','ODSSMIS','PICCSMISREAD','VSMIS','DBAMONITOR','R7','FMIS_SMIS','FMIS_WRITEBACK','SMIS2MP','ECIF_SMIS','SUGGEST_SMIS','SMISCRM','XXX')
    group by o.OWNER 
    order by o.OWNER ) d
    where c.owner=d.owner
    /
    
    
    select c.OWNER,'VALID' ,linuxcnt ,aixcnt,linuxcnt-aixcnt diff from  (select o.OWNER, count(*) linuxcnt  from dba_objects o
    where o.status='VALID' and o.OWNER  in ('PICCSMIS','ODSUSER','ODSSMIS','PICCSMISREAD','VSMIS','DBAMONITOR','R7','FMIS_SMIS','FMIS_WRITEBACK','SMIS2MP','ECIF_SMIS','SUGGEST_SMIS','SMISCRM','XXX')
    group by o.OWNER 
    order by o.OWNER ) c,
    (select o.OWNER, count(*) aixcnt  from dba_objects@t_s_link o
    where o.status='VALID' and o.OWNER  in ('PICCSMIS','ODSUSER','ODSSMIS','PICCSMISREAD','VSMIS','DBAMONITOR','R7','FMIS_SMIS','FMIS_WRITEBACK','SMIS2MP','ECIF_SMIS','SUGGEST_SMIS','SMISCRM','XXX')
    group by o.OWNER 
    order by o.OWNER ) d
    where c.owner=d.owner
    /

    4.11diff view

    set pages 12222 lines 132
    col OBJECT_TYPE for a15
    col object_name for a33
    select * from 
    (select object_name,object_type from dba_objects b where b.owner ='ODSSMIS'  and object_type='VIEW'
    minus
    select object_name,object_type from dba_objects a where a.owner ='ODSSMIS' and object_type='VIEW') order by object_type,object_name
    /
    
    set pages 12222 lines 132
    col OBJECT_TYPE for a15
    col object_name for a33
    select * from 
    (select object_name,object_type from dba_objects@t_s_link b where b.owner ='ODSSMIS'  and object_type='VIEW'
    minus
    select object_name,object_type from dba_objects a where a.owner ='ODSSMIS' and object_type='VIEW') order by object_type,object_name
    /

    4.12用户索引

    select index_name,table_name,owner from dba_indexes where table_owner in ('DEVELOP','DBUSER','HDCQRY','FINGER','DBQUERY','MCTC');
    
    select index_name,table_name,owner from dba_indexes@t_s_link where table_owner in ('DEVELOP','DBUSER','HDCQRY','FINGER','DBQUERY','MCTC');

    4.13用户对象权限,被赋予public用户的表

    select * from dba_tab_privs where owner in ('DEVELOP','DBUSER','HDCQRY','FINGER','DBQUERY','MCTC') and grantee='PUBLIC';
    
    select * from dba_tab_privs@t_s_link where owner in ('DEVELOP','DBUSER','HDCQRY','FINGER','DBQUERY','MCTC') and grantee='PUBLIC';

    4.14用户权限

    col owner format a10
    col privilege format a10
    select * from dba_sys_privs where grantee in ('DEVELOP','DBUSER','HDCQRY','FINGER','DBQUERY','MCTC') order by grantee;
    select * from dba_tab_privs where grantee in ('DEVELOP','DBUSER','HDCQRY','FINGER','DBQUERY','MCTC') order by grantee;
    select * from dba_role_privs where grantee in ('DEVELOP','DBUSER','HDCQRY','FINGER','DBQUERY','MCTC') order by grantee;
    
    
    col owner format a10
    col privilege format a10
    select * from dba_sys_privs@t_s_link where grantee in ('DEVELOP','DBUSER','HDCQRY','FINGER','DBQUERY','MCTC') order by grantee;
    select * from dba_tab_privs@t_s_link where grantee in ('DEVELOP','DBUSER','HDCQRY','FINGER','DBQUERY','MCTC') order by grantee;
    select * from dba_role_privs@t_s_link where grantee in ('DEVELOP','DBUSER','HDCQRY','FINGER','DBQUERY','MCTC') order by grantee;

    4.15段类型统计

    select segment_type,count(*) from dba_segments where owner='DEVELOP' group by segment_type;
    select count(*) from dba_segments where owner='DEVELOP';
    select count(*) from dba_constraints where owner='DEVELOP';
    
    select segment_type,count(*) from dba_segments@t_s_link where owner='DEVELOP' group by segment_type;
    select count(*) from dba_segments@t_s_link where owner='DEVELOP';
    select count(*) from dba_constraints@t_s_link where owner='DEVELOP';

    4.16约束统计

    select constraint_type,count(*) from dba_constraints where owner='DEVELOP' group by CONSTRAINT_TYPE;
    select STATUS,COUNT(*) from dba_constraints where owner='DEVELOP' group by status;
    
    select constraint_type,count(*) from dba_constraints@t_s_link where owner='DEVELOP' group by CONSTRAINT_TYPE;
    select STATUS,COUNT(*) from dba_constraints@t_s_link where owner='DEVELOP' group by status;

    5.db_link

    col created format a10
    col db_link format a25
    select * from dba_db_links order by db_link;
    
    col created format a10
    col db_link format a25
    select * from dba_db_links@t_s_link order by db_link;

    6.public的同义词

    set linesize 1000
    col SYNONYM_NAME format a40
    col table_name format a40
    select *
      from dba_synonyms
     where owner = 'PUBLIC'
       and TABLE_OWNER in ('DEVELOP','DBUSER','HDCQRY','FINGER','DBQUERY','MCTC');
       
       
    set linesize 1000
    col SYNONYM_NAME format a40
    col table_name format a40
    select *
      from dba_synonyms@t_s_link
     where owner = 'PUBLIC'
       and TABLE_OWNER in ('DEVELOP','DBUSER','HDCQRY','FINGER','DBQUERY','MCTC');

    7.自动任务统计

    select job,LOG_USER,LAST_DATE,NEXT_DATE,INTERVAL,FAILURES,BROKEN,WHAT from dba_jobs;
    
    select job,LOG_USER,LAST_DATE,NEXT_DATE,INTERVAL,FAILURES,BROKEN,WHAT from dba_jobs@t_s_link;
  • 相关阅读:
    HDU 1069 Monkey and Banana
    HDU 1029 Ignatius and the Princess IV
    HDU 1024 Max Sum Plus Plus
    Gym100923H Por Costel and the Match
    Codeforces 682C Alyona and the Tree
    Codeforces 449B Jzzhu and Cities
    Codeforces (ccpc-wannafly camp day2) L. Por Costel and the Semipalindromes
    Codeforces 598D (ccpc-wannafly camp day1) Igor In the Museum
    Codeforces 1167c(ccpc wannafly camp day1) News Distribution 并查集模板
    快乐数问题
  • 原文地址:https://www.cnblogs.com/houzhiheng/p/14900095.html
Copyright © 2011-2022 走看看