DB2数据库删除表空间
- 格式:docx
- 大小:13.64 KB
- 文档页数:1
适用情况:ECC6.0DB2 版本从V9.5升级到V10.1一、从表DBTABLOG中删除数据,只保留1年数据。
(时间自己定)SE38 运行程序RSTBPDEL,后台运行程序。
二、打入DB6CONV程序参考note1513862,下载附件中的文件解压,把解压文件放到如下目录:cp R000016.FW1 /usr/sap/trans/datacp K000016.FW1 /usr/sap/trans/cofiles运行STMS传输即可。
三、运行程序DB6CONV重组表DBTABLOG。
SE38 执行程序DB6CONV,参考note 362325保存即可,选择合适的时间启动后台任务运行。
四、降低高水位高水位降低后表空间大小没有减少。
五、缩小PRD#PROTD表空间1、创建表空间PRD#PROTD1。
CREATE LARGE TABLESPACE "PRD#PROTD1" IN DATABASE PARTITION GROUP SAPNODEGRP_PRD PAGESIZE 16384 MANAGED BY AUTOMATIC STORAGEUSING STOGROUP "IBMSTOGROUP"AUTORESIZE YESINITIALSIZE 32 MMAXSIZE NONEEXTENTSIZE 2PREFETCHSIZE AUTOMATICBUFFERPOOL "IBMDEFAULTBP"DATA TAG NONEOVERHEAD 7.500000TRANSFERRATE 0.060000NO FILE SYSTEM CACHINGDROPPED TABLE RECOVERY OFF;2、把表空间PRD#PROTD的数据转移到表空间PRD#PROTD1。
运行会报错,如下:SQL0551N "SAPPRD" does not have the required authorization or privilege to perform operation "CREATE TABLE" on object缺少权限,给用户SAPPRD dbadm权限。
常用db2命令大全db2 -tvf my.sqldb2level 显示db2的版本号显示SQL出错信息db2 "? sql6031"db2mtrk管理DAS产生:root运行-dascrt -u dasuser1删除:root运行-dasdrop启动:dasusr1运行-db2admin start停止:dasusr1运行-db2admin stopdb2_killipcleandb2start dbpartitionnum 9 restartAIX启动控制中心:db2ccDB2用户管理:db2 use os to manage users.You can use following steps to add a db2 user:1,add a user on os.2,grant rights to user.GRANT CREATETAB,CONNECT ON DATABASE TO USER FUJIE;grant select, update, delete on table employee to user john with grant option一,实例产生db2icrt -a AuthType(SERVER,CLIENT,SERVER_ENCRYPT) -p PORT_NAME表空间PREFETCHSIZE的设置,EXTENTSIZE的关系,缓冲池的监控,页清除程序的多少。
临时表空间页面大小与其他表空间页面大小的设置,临时表空间与缓冲池的设置。
example:db2icrt db2 -s ese -p d:\db2 -u Administrator注意:在UNIX 上产生实例时需要产生一个和实例名称相同的用户名,和fencedid 用户。
如:db2icrt -s ese -u db2fenc2 db2inst2 将在db2inst2用户中产生实例db2inst2.缺省创建32位实例,创建64位实例:db2icrt -s ese -w 64 -u db2fenc2 db2inst2删除db2idrop instance-name启动db2start停止db2stop force连接db2 attach to testdb2db2 detach列出实例db2ilist设置当前实例set db2instance=得到当前实例db2 get instance设置实例自动重启动UNIXdb2iauto -ondb2iauto -off获取实例的配置参数db2 get dbm cfg修改配置参数例如:db2 update dbm cfg using authentication server_encryptdb2stop and db2start二,声明注册表和环境变量db2set 注意:设置完成后需要退出用户,再注册进入才能生效。
【数据库】:关于DB2数据库错误提⽰说明SQLSTATE 消息本节列⽰ SQLSTATE 及其含义。
SQLSTATE 是按类代码进⾏分组的;对于⼦代码,请参阅相应的表。
表 2. SQLSTATE 类代码类代码含义要获得⼦代码,参阅...00 完全成功完成表 301 警告表 402 ⽆数据表 507 动态 SQL 错误表 608 连接异常表 709 触发操作异常表 80A 功能部件不受⽀持表 90D ⽬标类型规范⽆效表 100F ⽆效标记表 110K RESIGNAL 语句⽆效表 1220 找不到 CASE 语句的条件表 1321 基数违例表 1422 数据异常表 1523 约束违例表 1624 ⽆效游标状态表 1725 ⽆效事务状态表 1826 ⽆效 SQL 语句标识表 1928 ⽆效权限规范表 212D ⽆效事务终⽌表 222E ⽆效连接名表 2334 ⽆效游标名表 2436 游标灵敏度异常表 2538 外部函数异常表 2639 外部函数调⽤异常表 273B SAVEPOINT ⽆效表 2840 事务回滚表 2942 语法错误或存取规则违例表 3044 WITH CHECK OPTION 违例表 3146 Java DDL 表 3251 ⽆效应⽤程序状态表 3353 ⽆效操作数或不⼀致的规范表 3454 超出 SQL 限制,或超出产品限制表 3555 对象不处于先决条件状态表 3656 其它 SQL 或产品错误表 3757 资源不可⽤或操作员⼲预表 3858 系统错误表 39类代码 00 完全成功完成表 3. 类代码 00:完全成功完成SQLSTATE 值含义00000 操作执⾏成功,并且未产⽣任何类型的警告或异常情况。
类代码 01 警告表 4. 类代码 01:警告SQLSTATE 值含义01002 发⽣ DISCONNECT 错误。
01003 从列函数的⾃变量消去 NULL 值。
01004 字符串值在指定给具有较短长度的另⼀字符串数据类型时被截断。
DB2数据库 SQL常用命令一、连接数据库1. 从命令行连接数据库- 语法: db2 connect to <database_name> user <username> using <password>- 示例: db2 connect to sample user db2inst1 using passw0rd2. 从命令行断开数据库连接- 语法: db2 connect reset- 示例: db2 connect reset3. 显示当前连接的数据库- 语法: db2 list database directory- 示例: db2 list database directory二、管理数据库对象4. 创建数据库- 语法: db2 create database <database_name>- 示例: db2 create database sample5. 删除数据库- 语法: db2 drop database <database_name>- 示例: db2 drop database sample6. 创建表- 语法: db2 create table <table_name> (<column1_name> <data_type>, <column2_name> <data_type>, ...)- 示例: db2 create table employee (id int, name varchar(50), age int)7. 删除表- 语法: db2 drop table <table_name>- 示例: db2 drop table employee8. 插入数据- 语法: db2 insert into <table_name> values (<value1>,<value2>, ...)- 示例: db2 insert into employee values (1, 'John', 25)9. 删除数据- 语法: db2 delete from <table_name> where <condition> - 示例: db2 delete from employee where id = 110. 更新数据- 语法: db2 update <table_name> set <column_name> =<new_value> where <condition>- 示例: db2 update employee set age = 30 where id = 111. 查询数据- 语法: db2 select <column1_name>, <column2_name>, ... from <table_name> where <condition>- 示例: db2 select * from employee三、管理数据库事务12. 启动事务- 语法: db2 autmit off- 示例: db2 autmit off13. 提交事务- 语法: db2mit- 示例: db2mit14. 回滚事务- 语法: db2 rollback- 示例: db2 rollback四、管理数据库权限15. 创建用户- 语法: db2 create user <username> password <password> - 示例: db2 create user testuser password testpass16. 授权- 语法: db2 grant <privilege> on <object> to <user>- 示例: db2 grant select, insert, update on employee to testuser17. 撤销授权- 语法: db2 revoke <privilege> on <object> from <user> - 示例: db2 revoke select, insert, update on employee from testuser五、管理数据库性能18. 优化SQL查询- 语法: db2expln -d <database_name> -t <sql_statement> - 示例: db2expln -d sample -t "select * from employee"19. 查看数据库锁- 语法: db2 list applications show det本人l- 示例: db2 list applications show det本人l20. 查看数据库表空间使用情况- 语法: db2pd -d <database_name> -tablespaces- 示例: db2pd -d sample -tablespaces六、其他常用命令21. 导出数据- 语法: db2 export to <file_name> of del select * from<table_name>- 示例: db2 export to employee.csv of del select * from employee22. 导入数据- 语法: db2 import from <file_name> of del insert into<table_name>- 示例: db2 import from employee.csv of del insert into employee23. 查看数据库配置参数- 语法: db2 get db cfg for <database_name>- 示例: db2 get db cfg for sample结语以上就是DB2数据库SQL常用命令的介绍,通过掌握这些命令,可以更方便地管理和使用DB2数据库。
3.2 表空间设计3.2.1 创建表空间表空间建立数据库系统使用的物理存储设备与用来存储数据的逻辑对象或表之间的关系。
对于非自动存储器表空间,在创建表空间时,必须知道将引用的容器的设备名或文件名。
另外,必须知道与要分配给表空间的每个设备名或文件名及分配空间大小。
对于自动存储器表空间,数据库管理器将根据与数据库关联的存储路径将容器指定给表空间。
在一个数据库内创建表空间,会将容器分配到表空间,并在数据库系统目录表中记录它的定义和属性,然后就可以在此表空间内创建表。
当创建数据库时,会创建3个初始表空间。
这3个初始表空间的页大小基于使用CREATE DATABASE命令时建立或接受的默认值。
此默认值还表示所有将来CREATE BUFFERPOOL和CREATE TABLESPACE语句的默认页大小。
如果在创建数据库时不指定页大小,那么默认大小是4KB。
如果在创建表空间时不指定页大小,那么默认页大小是创建数据库时设置的页大小。
创建表空间可以通过控制中心或命令行创建。
一、使用控制中心创建表空间使用控制中心创建表空间二、使用命令行创建表空间1.创建用户表空间创建SMS表空间:CREATE TABLESPACE <NAME> MANAGED BY SYSTEM USING (‘<path>’)创建DMS表空间:CREATE TABLESPACE <NAME> MANAGED BY DATABASE USING(DEVICE |FILE’<path>’<size>) 创建自动存储器表空间CREATE TABLESPACE <NAME>或CREATE TABLESPACE <NAME> MANAGED BY AUTOMATIC STORAGE例:1.在Windows上,使用3个不同的驱动器上的目录,创建SMS表空间CREATE TABLESPACE TS1 MANAGED BY SYSTEMUSING (‘d:\nxz_tbsp’,’e:\nxz_tbsp’,’f:\nxz_tbsp)2.使用各自有5000页的两个文件容器创建了一个DMS表空间:CREATE TABLESPACE TS2 MANAGED BY DATABASEUSING (FILE’d:\db2data\acc_tbsp’ 5000,FILE’e:\db2data\acc_tbsp’ 5000)在创建DMS表空间时,表空间文件容器不需要重建,DB2自动来创建,但裸设备容器无法自动创建,需要root用户参与。
Db2 命令练习1 复制表insert into dr_ryqx_em select * from dr_ryqx_em;2 列出所有正在访问roeee数据库的应用程序db2 list applications for db roeee;3 强制终止应用访问db2db2 force application all4 得到当前实例的配置db2 get dbm cfg5 得到表结构信息db2 ‘describe select * from table’6 挂载远程数据库到本地db2 catalog tcpip node 节点名remote 数据库服务器IP server 端口db2 catalog db 远程数据库名as 编目后的名称at node 编目过的节点7 取消挂载的数据库db2 uncatalog database emdbdb2 uncatalog node emnode8 显示数据库,或节点的目录信息db2 list db directorydb2 list node directory9 备份数据库Db2 list history backup all for sample ,可以看到多了这个备份的纪录。
backup db sample to d:\;backup db sample online to d:\;backup db sample online incremental to d:\;10 恢复数据库restore db <dbname> [from <path>] taken at 时间戳11 更新db2的配置db2 update dbm cfg using <parameter> <value>例如:db2 update dbm cfg using INTRA_PARALLEL YES12 更新特定数据库配置db2 update db cfg for <dbname> using <parameter> <value>13 显示所有的用户表或者是系统表Db2 list tables for user/system14 新方法创建表create table zjt_tables as(select * from tables) definition only;CREATE TABLE "ADMINISTRATOR"."chuan"("id" CHARACTER(10) NOT NULL,"name" CHARACTER(30),) IN "USERSPACE2";15 创建视图create view V_zjt_tables as select tabschema,tabname from zjt_tables;16 显示当前数据库db2 list active databases17 修改表结构alter table chuan alter column empno set data type varchar(30); alter table chuan add chuantype varchar(20);alter table chuan drop chuantype;18 使用db2帮助信息的命令db2 ? attach19 连接实例attach to sample user db2inst3 using db2inst3;20 断开数据库connect reset21 断开数据库,并清空后台连接缓存terminate22 创建模式create schema db2admin authorization administratorComment on schema db2admin is 'Default Schema'23 创建缓冲池(立即生效使用IMMEDIATE ,推迟生效使用DEFERRED ,下同)create bufferpool DATA_BP immediate size 25600 pagesize 4 K24 修改缓冲池大小alter bufferpool DATA_BP immediate size 2560025删除缓冲池drop bufferpool DATA_BP26 创建用户常规表空间CREATE TABLESPACE USERSPACE2PAGESIZE 32KMANAGED BY SYSTEMUSING ('d:\aa')EXTENTSIZE 64PREFETCHSIZE 32BUFFERPOOL RODE;27 创建系统表空间(用于临时表等)CREATE system TEMPORARY TABLESPACE tmptableSPACE4PAGESIZE 32KMANAGED BY SYSTEMUSING ('d:\bb')EXTENTSIZE 64PREFETCHSIZE 32BUFFERPOOL RODE;28 修改表空间大小,扩充容器alter tablespace DATA_TBresize ( FILE 'D:\DB2\Container\TestDB\UserData\UserData' 30000 )29 删除表空间(警告!请谨慎执行该命令。
在创建数据库时遇到数据库别名已存在的问题时,可以通过以下方法解决:
首先用db2 list database directory命令看在系统数据库目录(System Database Directory)中有没有该数据库。
如果有,应该在确定该数据库是没有用的数据库之后用db2 drop database 数据库名将其删除。
如果没有,再用db2 list database directory on location 看在本地数据库目录(Local Database Directory)中有没有该数据库,location指定数据库的位置(如Windows下的C: ,Unix下/home/db2inst1)。
如果有,先用db2 catalog database 数据库名on location将数据库编目到节点上,再对其进行删除处理。
解决过程:
1、db2 list database directory 查看系统数据库目录,看不到要找的数据库,表示该数据库不在系统数据库目录中
2、db2 list database directory on D:(在系统数据库目录找不到的情况下执行该指令,这里是盘符d),然后发现有sample和source的别名。
说明在本地数据库目录中。
3、db2 catalog database 数据库名on d: 将数据库编目到节点上
4. drop database 数据库名删除数据库。