1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168
| #版本查询 方法1. db2level 方法2. 连接数据库后查询系统表 db2 connect to <数据库名> user <用户名> using <密码> db2 "SELECT VERSION FROM SYSIBM.SYSVERSIONS"
#查看数据库管理器配置 db2 get dbm cfg
#查看数据库配置 数据库配置参数影响特定数据库的行为。要查看某个数据库的配置,可以使用以下命令,先连接到目标数据库,再获取其配置: db2 connect to <数据库名> db2 get db cfg
#查看实例配置 虽然前面提到的数据库管理器配置已经涵盖了实例的部分重要配置,但有时候你可能还想查看更具体的实例相关配置。可以通过以下命令查看 db2set -all
# #修改单个配置参数 db2 update dbm cfg using <参数名> <新值>
示例:修改 SVCENAME 参数 SVCENAME 参数用于指定 DB2 实例监听的服务名。若要将其修改为 db2c_db2inst1,可执行以下命令: db2 update dbm cfg using SVCENAME db2c_db2inst1
#修改多个配置参数 db2 update dbm cfg using <参数名1> <新值1> <参数名2> <新值2> ... 示例:同时修改 SVCENAME 和 MAX_CONNECTIONS 参数 MAX_CONNECTIONS 参数用于指定允许的最大连接数。若要将 SVCENAME 修改为 db2c_db2inst1,同时将 MAX_CONNECTIONS 修改为 500,可执行以下命令: db2 update dbm cfg using SVCENAME db2c_db2inst1 MAX_CONNECTIONS 500
#使配置修改生效 在执行 update dbm cfg 命令之后,配置修改并不会立即生效。你需要停止并重新启动 DB2 实例,让新的配置生效,命令如下: db2stop db2start
#查看实例 db2ilist
#临时设置当前实例(需要重新启动 DB2 实例) db2set DB2INSTANCE=db2inst1 db2stop db2start
#连接实例 db2 attach to db2inst1
#断开实例连接 db2 detach db2 terminate
与 db2 terminate 的区别:db2 terminate 会终止当前用户与 DB2 实例的所有连接,包括与多个数据库的连接;而 db2 detach 主要用于断开与某个特定数据库的连接
#启动实例 db2start
#停止数据库实例 db2stop
#自启动 db2iauto -on db2inst1
#创建数据库 db2 create database <数据库名>
#删除数据库 db2 drop database <数据库名>
#连接到数据库 db2 connect to <数据库名> user <用户名> using <密码> db2 connect to testdb user db2inst1 using password123
#断开与数据库的连接 db2 connect reset
#创建表 db2 "create table <表名> (<列名1> <数据类型1>, <列名2> <数据类型2>, ...)" db2 "create table employees (id integer, name varchar(50), age integer)"
#备份数据库 db2 backup database <数据库名> to <备份路径> db2 backup database testdb to /backup
#恢复数据库 db2 restore database <数据库名> from <备份路径> taken at <备份时间戳> #从指定备份恢复 testdb 数据库: db2 restore database testdb from /backup taken at 20250401120000
#查看实例下的所有库 方法一: db2 list db directory 方法二: 通过系统表查询 连接到一个数据库,这里假设连接到 SAMPLE 数据库 db2 connect to SAMPLE 查询系统表获取数据库信息 db2 "SELECT * FROM SYSIBM.SYSDATABASES"
# #SYSIBM 这是 DB2 里最为基础且重要的保留模式,其中存储了大量与数据库系统相关的元数据,涵盖表、列、索引、视图等数据库对象的定义信息。很多系统表都存于这个模式下,例如: SYSIBM.SYSTABLES:该表记录了数据库中所有表的定义信息,像表名、模式名、创建时间等。 SYSIBM.SYSCOLUMNS:保存了数据库中所有列的详细信息,如列名、数据类型、长度等。
#SYSCAT SYSCAT 模式同样存储着系统目录信息,它是为了方便用户查询系统元数据而设计的。相较于 SYSIBM 模式,SYSCAT 模式下的表结构更为简洁,可读性更强。例如: SYSCAT.TABLES:与 SYSIBM.SYSTABLES 类似,不过其结构更便于用户使用。 SYSCAT.COLUMNS:和 SYSIBM.SYSCOLUMNS 作用相同,但更易于查询。
#SYSSTAT SYSSTAT 模式主要存储与数据库统计信息相关的系统表,这些统计信息对查询优化器在生成查询执行计划时起着关键作用。例如: SYSSTAT.TABLES:包含了表的统计信息,如行数、页数量等。 SYSSTAT.INDEXES:存储了索引的统计信息,像索引键的分布情况等。
#SYSTOOLS SYSTOOLS 模式中包含了一些系统工具和存储过程,这些工具和存储过程可用于数据库的管理和维护。例如,其中可能包含用于备份、恢复、监控等操作的存储过程。
#SYSPROC SYSPROC 模式存储着系统存储过程,这些存储过程提供了一系列用于数据库管理和操作的功能。例如,用于创建、修改、删除数据库对象的存储过程就存于这个模式下。
# DROP SCHEMA <schema_name> RESTRICT | CASCADE; RESTRICT:如果指定 RESTRICT,只有当该 Schema 中没有任何对象时,才能成功删除 Schema。如果 Schema 中存在对象,删除操作会失败,并返回错误信息。 CASCADE:如果指定 CASCADE,DB2 会先删除该 Schema 中的所有对象(表、视图、存储过程等),然后再删除 Schema 本身。
# 法1: db2 connect to <数据库名> user <用户名> using <密码> db2 "DESCRIBE TABLE EMPLOYEES"
法2: 查询系统表 SYSCAT.COLUMNS SELECT COLNAME, TYPENAME, LENGTH, SCALE, NULLS FROM SYSCAT.COLUMNS WHERE TABSCHEMA = '<模式名>' AND TABNAME = '<表名>';
# -- 创建一个名为employees的表 CREATE TABLE employees ( -- emp_id列是标识列,起始值为1,每次递增1 emp_id INTEGER GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), -- 员工姓名列,数据类型为VARCHAR,最大长度为50 emp_name VARCHAR(50), -- 部门ID列,数据类型为INTEGER dept_id INTEGER ); #获取插入的标识值 SELECT IDENTITY_VAL_LOCAL() FROM SYSIBM.SYSDUMMY1; 每个表只能有一个标识列。 标识列的数据类型必须是整数类型(如INTEGER、SMALLINT等)。 不能对标识列使用UPDATE语句修改其值。
DB2 体系结构中的最高一层是系统, 个系统表示 DB2的一个安装。在由很多机器组成的网络环境中,我们有时也称系统为数据库分区。一个系统可以包含多个DB2实例,每个实例能够管理一个或多个数据库。
#查看所有schema [db2inst1@oracle_host ~]$ db2 "select schemaname from syscat.schemata"
#查看所有表 [db2inst1@oracle_host ~]$ db2 "select tabschema,tabname from syscat.tables where tabschema='DB2INST1' and type='T'"
#查看端口 [db2inst1@oracle_host ~]$ db2 get dbm cfg|grep -i svcename TCP/IP Service name (SVCENAME) = SSL service name (SSL_SVCENAME) =
|