`
jak47
  • 浏览: 74220 次
  • 性别: Icon_minigender_1
  • 来自: 火星
社区版块
存档分类
最新评论

oracle里对两个schema进行比较

阅读更多

工作中常常要对两台不同DB服务器的schema进行比较。比如测试机器和本番机器。

比较内容有各个表的字段的长度,属性,还有index等。

采取的办法是执行下面三个sql文,把DB情报生成出文件,然后对文件进行diff处理。

 

1. 抽出各个表的字段情报。

set echo off;
set linesize 30000;
set pagesize 32767;
set trimspool on;
set autocommit off;
set exitcommit off;
set null NULL;
COLUMN DATA_TYPE FORMAT A20;

spool columns.txt;

SELECT TABLE_NAME,
  COLUMN_NAME,
  DATA_TYPE,
  DATA_LENGTH,
  CHAR_LENGTH,
  DATA_PRECISION,
  DATA_SCALE,
  NULLABLE,
  COLUMN_ID
FROM USER_TAB_COLUMNS
ORDER BY TABLE_NAME,
  COLUMN_ID;

spool off;

 

2. 抽出index相关情报。

set echo off;
set linesize 30000;
set pagesize 32767;
set trimspool on;
set autocommit off;
set exitcommit off;
set null NULL;

spool indexes.txt;

SELECT TABLE_NAME,
  INDEX_NAME,
  INDEX_TYPE,
  UNIQUENESS FROM USER_INDEXES
ORDER BY TABLE_NAME,
  INDEX_NAME;

spool off;

 

3. 抽出index各个字段的情报。

set echo off;
set linesize 30000;
set pagesize 32767;
set trimspool on;
set autocommit off;
set exitcommit off;
set null NULL;
COLUMN COLUMN_NAME FORMAT A40;

spool index_columns.txt;

SELECT TABLE_NAME,
  INDEX_NAME,
  TRIM(COLUMN_NAME) COLUMN_NAME,
  COLUMN_POSITION,
  DESCEND
FROM User_Ind_Columns
WHERE TABLE_NAME NOT LIKE 'BIN%'
ORDER BY TABLE_NAME,
  INDEX_NAME,
  COLUMN_POSITION;

spool off;

 

分享到:
评论

相关推荐

    oracle中schema指的是什么意思

    通过示例,我们看到创建了两个表格,一个在scott的Schema下,另一个在system的Schema下。当以system用户登录并尝试查询名为"test"的表格时,查询的是system.Schema下的表格。通过`ALTER SESSION SET CURRENT_SCHEMA ...

    oracle数据库体系结构之一【user和schema】

    Oracle数据库中,用户(User)和模式(Schema)是两个紧密相关却又鲜明不同的概念。用户是指拥有数据库权限和资源的实体,而模式则是指一组数据库对象的集合,包括表、视图、索引、同义词等等。 首先,从官方文档中...

    oracle异库同表名的两个数据库中数据合并或数据表结构的修改

    本文将针对“Oracle异库同表名的两个数据库中数据合并或数据表结构的修改”这一主题进行详细阐述,旨在帮助读者更好地理解和掌握相关的操作技巧。 #### 一、背景介绍 随着业务发展和技术迭代,企业往往需要对现有...

    SpringBoot整合Oracle数据库使用双数据源

    双数据源意味着应用程序可以同时访问两个不同的数据库,例如,一个用于存储核心业务数据,另一个用于日志或统计等辅助数据。这样设计的优点在于能够更好地分离关注点,提高系统的可维护性和性能。 要整合SpringBoot...

    Oracle权限不足问题集锦

    我现在想从我的存储过程中使用其他 schema 表来执行 SQL 语句。存储过程是一个 Schema,表是在另一个 Schema。 但 是 这 样 做 的 结 果 是 出 现 了 “ORA-01031: ...答:你的两个 Schema 是在同一个 Oracle 实

    解析Oracle数据库中的对象集合schema

    不过,Oracle的一个实例可以有多个Schema,而MySQL的一个数据库可以对应多个实例。这种设计让Oracle在大型企业环境中能更好地管理和优化资源。 在实际应用中,Schema的使用需要考虑到权限和安全性的因素。例如,...

    Oracle中比对2张表之间数据是否一致的几种方法

    例如,可以编写一个存储过程,遍历两个表的每一行数据,逐一比较字段值。 ```sql CREATE OR REPLACE PROCEDURE compare_data ( p_source_schema IN VARCHAR2, p_source_table IN VARCHAR2, p_target_schema IN ...

    数据库的catalog与schema

    在数据库管理中,Catalog(目录)和Schema(模式)是两个非常重要的概念,它们构成了数据库组织和管理的基础。本文将深入探讨这两个概念,以及它们在实际应用中的作用。 首先,让我们来理解什么是Catalog。在数据库...

    Mysql转oracle工具

    例如,MySQL的`VARCHAR2`对应Oracle的`VARCHAR2`,但MySQL的`TINYINT`在Oracle中可能是`NUMBER(3)`,`BLOB`和`CLOB`在两个系统中都有,但处理方式不同。 3. **对象权限和安全模型**: MySQL的权限管理相对简单,而...

    oracle10g-oracle11g的数据库迁移

    例如,使用以下命令可以将 smc 和 useradmin 两个 schema 的数据导出到 dump 文件中: expdp smc_yanshi/123qwe@orcl217 schemas=smc_yanshi dumpfile=smc.dmp DIRECTORY=data logfile=smc.log expdp useradmin_...

    linux oracle imp exp 执行命令安装

    这两个命令是Oracle Data Pump的一部分,用于将数据从一个数据库迁移到另一个数据库,或者备份和恢复数据。 1. **Oracle Data Pump**: Oracle Data Pump是一种高效的数据迁移工具,它比传统的Export和Import更快...

    mysql-oracle数据同步

    在数据同步过程中,如果需要保持两个数据库的主键一致,需要在插入Oracle时根据MySQL的最新主键值动态生成Oracle的序列号。 实现这个过程的具体步骤可能包括: 1. 查询MySQL的最新主键值,例如:`SELECT AUTO_...

    DB2和 Oracle的并发控制(锁)比较

    锁升级可以通过调整`locklist`和`maxlocks`两个配置参数来控制。 #### 三、Oracle的并发控制 Oracle数据库也提供了类似的并发控制机制,包括行级锁和表级锁。但是Oracle的实现方式有所不同: - **Oracle的锁机制*...

    Oracle Report Builder 基础教程

    Oracle Report Builder 包含了两个主要的组件:Report Builder 和 Reports Server。 - **Report Builder**: - 报表设计:使用 Report Builder 设计专业级别的生产质量报表。 - 多样化的报表样式:用户可以创建...

    两个不同数据库中的表之间的操作(包含sql server /oracle)

    Oracle数据库中也有类似的技术——DBLINK,用于在两个Oracle数据库之间建立连接。 **创建DBLINK** 1. **已授权方式** - 如果用户已被授权,则可以使用以下命令: ```sql CREATE DATABASE LINK database_link_...

    Oracle XML开发手册

    - Oracle XMLDB是一个内置的XML存储和管理组件,它将XML文档作为第一类对象进行存储,提供了对XML文档的全面管理功能,包括CRUD操作、版本控制和基于XPath或XQuery的查询。 3. **XQuery支持** - Oracle数据库支持...

    通过Oracle的流复制实现数据库之间的同步

    配置Oracle Streams进行数据库间同步主要涉及以下几个步骤: #### 1. 配置环境 - 设置全局名称:`ALTER SYSTEM SET global_names = TRUE SCOPE = BOTH;` - 设置UNDO保留时间:`ALTER SYSTEM SET undo_retention = ...

    Oracle11g和oracle10g之间数据的导入导出.

    - 对于两个不相邻版本间的转换,如从Oracle 6到Oracle 8,则应先将数据输入到中间版本(Oracle 7),再从中间数据库转入更高版本Oracle 8。 #### 二、Oracle的IMPDP/EXPDP特性 随着Oracle的发展,为了更好地支持...

Global site tag (gtag.js) - Google Analytics