MySQL、Oracle与DB2数据库差异


第一章:SQL执行差异

  1.DB2数据库

  1.1用户创建

#用户名等1到8个字符
#DB2中用户必须是个操作系统用户(比如Windows和Linux用户)
    #等同于在系统中创建用户设置密码(这点不同于oracle等数据库)
        useradd -d /home/testuser -m testuser
        passwd testuser

  1.2赋权限

#查看数据库 dbdbname
    su - db2inst
    db2 list application
#连接数据库权限授予、撤销
    db2 connect to dbdbname user db2inst using db2inst
    db2 GRANT dbadm ON DATABASE TO USER testuser;
    db2 REVOKE connect,resource,dba ON DATABASE FROM testuser;

  1.3创建表空间

--删除、创建自动存储、注释表空间
    drop tablespace testuserdb;
    CREATE TABLESPACE testuserdb MANAGED BY AUTOMATIC STORAGE;
    COMMENT ONTABLESPACE testuserdb IS '表空间';

  1.4创建schema

--查询当前存在的Schema
    select * from syscat.schemata;

--在不同用户下创建与之相同的默认 schema
    DROP schema testuser RESTRICT;
    CREATE schema testuser authorization testuser;

--查询、修改当前Schema(DB2数据库中用户与Schema没有必然联系,设置给用户设置一个与之相同的默认Schema)
    select current schema from sysibm.sysdummy1;
    SET CURRENT SCHEMA = 'testuser';

   1.5创建索引

select * from sysibm.sysindexes where tbname = 'TESTTABLE';        --查看表索引
drop index ind_emp;        --删除索引
create index  ind_emp on testtable(NO);        --普通索引
create unique index  ind_emp on testtable(NAME,TYPE,NO);        --唯一索引
Create unique index ind_emp on u_emp(emp) cluster;        --聚集索引

  2.Oracle数据库

  2.1创建用户、赋权限、删除用户

  3.MySQL数据库

第二章:在使用与功能上的差异总结

编号

功能

MySQL

DB2

账号管理

数据库用户名+IP地址

操作系统用户

权限管理

可以批量grant与revoke

只能单独授权包括最小单元

日志管理

归档日志与事务日志没有关系

归档日志由事务日志产生

锁的管理

MVCC实现锁的并发控制

内存模型实现锁的并发控制

schema的管理

每个schema为一个独立的DB

同一个DB内可以有多个schema

表空间管理

无法条带化、可管理、维护性较弱

管理方便、功能强大

数据备份

开源在线的备份工具少,传统的备份只支持温备份

备份方式严谨、功能强大

事务行为

回滚到上一个保存点,不会回滚整个事务

整个事务进行回滚

数据恢复

支持在恢复时打开数据库,灵活

不支持在恢复或前滚时打开数据库

10

SQL支持

对复杂SQL支持较弱,在运行时可能会存在性能问题

支持各种复杂SQL,多种jion方式

11

Package支持

不支持

支持

12

语法差异

遵守SQL92标准,但细节上有差异、默认大小写敏感

遵守SQL92标准,大小写不敏感

13

容灾与高可用

可选择方案较多、灵活、可二次开发

只有HADR

14

可扩展性

可选择方案较多、灵活、可定制、可开发

只有PureScale

15

DDL功能

支持指定位置加列、在线DDL

不支持

  引用:http://blog.chinaunix.net/uid-31518880-id-5782957.html

第三章:数据库连接&报错等

  1.DB2数据库

  1.1报错:https://www.cnblogs.com/ZhaoHS/p/14212588.html

  1.2 驱动:com.ibm.db2.jcc.DB2Driver

  URL:jdbc:db2://9.1.17.47:50001/TRDADB

  2.MySQL数据库

  2.1mysql安装磁盘满了,服务停止不能启动

  启动mysql数据库
  systemctl start mysqld
  连接mysql数据库
  mysql -h9.1.15.72 -uroot -proot

  2.2驱动:com.mysql.cj.jdbc.Driver

  URL:jdbc:mysql://9.1.15.72:3306/afaconsole?characterEncoding=utf8

待持续完善......