工作中常常要对两台不同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;
相关推荐
通过示例,我们看到创建了两个表格,一个在scott的Schema下,另一个在system的Schema下。当以system用户登录并尝试查询名为"test"的表格时,查询的是system.Schema下的表格。通过`ALTER SESSION SET CURRENT_SCHEMA ...
Oracle数据库中,用户(User)和模式(Schema)是两个紧密相关却又鲜明不同的概念。用户是指拥有数据库权限和资源的实体,而模式则是指一组数据库对象的集合,包括表、视图、索引、同义词等等。 首先,从官方文档中...
本文将针对“Oracle异库同表名的两个数据库中数据合并或数据表结构的修改”这一主题进行详细阐述,旨在帮助读者更好地理解和掌握相关的操作技巧。 #### 一、背景介绍 随着业务发展和技术迭代,企业往往需要对现有...
双数据源意味着应用程序可以同时访问两个不同的数据库,例如,一个用于存储核心业务数据,另一个用于日志或统计等辅助数据。这样设计的优点在于能够更好地分离关注点,提高系统的可维护性和性能。 要整合SpringBoot...
我现在想从我的存储过程中使用其他 schema 表来执行 SQL 语句。存储过程是一个 Schema,表是在另一个 Schema。 但 是 这 样 做 的 结 果 是 出 现 了 “ORA-01031: ...答:你的两个 Schema 是在同一个 Oracle 实
不过,Oracle的一个实例可以有多个Schema,而MySQL的一个数据库可以对应多个实例。这种设计让Oracle在大型企业环境中能更好地管理和优化资源。 在实际应用中,Schema的使用需要考虑到权限和安全性的因素。例如,...
例如,可以编写一个存储过程,遍历两个表的每一行数据,逐一比较字段值。 ```sql CREATE OR REPLACE PROCEDURE compare_data ( p_source_schema IN VARCHAR2, p_source_table IN VARCHAR2, p_target_schema IN ...
在数据库管理中,Catalog(目录)和Schema(模式)是两个非常重要的概念,它们构成了数据库组织和管理的基础。本文将深入探讨这两个概念,以及它们在实际应用中的作用。 首先,让我们来理解什么是Catalog。在数据库...
例如,MySQL的`VARCHAR2`对应Oracle的`VARCHAR2`,但MySQL的`TINYINT`在Oracle中可能是`NUMBER(3)`,`BLOB`和`CLOB`在两个系统中都有,但处理方式不同。 3. **对象权限和安全模型**: MySQL的权限管理相对简单,而...
例如,使用以下命令可以将 smc 和 useradmin 两个 schema 的数据导出到 dump 文件中: expdp smc_yanshi/123qwe@orcl217 schemas=smc_yanshi dumpfile=smc.dmp DIRECTORY=data logfile=smc.log expdp useradmin_...
这两个命令是Oracle Data Pump的一部分,用于将数据从一个数据库迁移到另一个数据库,或者备份和恢复数据。 1. **Oracle Data Pump**: Oracle Data Pump是一种高效的数据迁移工具,它比传统的Export和Import更快...
在数据同步过程中,如果需要保持两个数据库的主键一致,需要在插入Oracle时根据MySQL的最新主键值动态生成Oracle的序列号。 实现这个过程的具体步骤可能包括: 1. 查询MySQL的最新主键值,例如:`SELECT AUTO_...
Oracle Report Builder 包含了两个主要的组件:Report Builder 和 Reports Server。 - **Report Builder**: - 报表设计:使用 Report Builder 设计专业级别的生产质量报表。 - 多样化的报表样式:用户可以创建...
Oracle数据库中也有类似的技术——DBLINK,用于在两个Oracle数据库之间建立连接。 **创建DBLINK** 1. **已授权方式** - 如果用户已被授权,则可以使用以下命令: ```sql CREATE DATABASE LINK database_link_...
- Oracle XMLDB是一个内置的XML存储和管理组件,它将XML文档作为第一类对象进行存储,提供了对XML文档的全面管理功能,包括CRUD操作、版本控制和基于XPath或XQuery的查询。 3. **XQuery支持** - Oracle数据库支持...
配置Oracle Streams进行数据库间同步主要涉及以下几个步骤: #### 1. 配置环境 - 设置全局名称:`ALTER SYSTEM SET global_names = TRUE SCOPE = BOTH;` - 设置UNDO保留时间:`ALTER SYSTEM SET undo_retention = ...
- 对于两个不相邻版本间的转换,如从Oracle 6到Oracle 8,则应先将数据输入到中间版本(Oracle 7),再从中间数据库转入更高版本Oracle 8。 #### 二、Oracle的IMPDP/EXPDP特性 随着Oracle的发展,为了更好地支持...