db2 简单DDL操作

http://pic.dhe.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic=/com.ibm.db2.luw.admin.partition.doc/doc/c0007201.html

以上链接是IBM-DB2-API文档

********************************************************************************

create table aa(
aa decimal(18),

bb varchar(18)
);

所有DDL操作完成后一定要记得reorg table aa;(重组表结构)

 

--新增字段

alter table 表名 add column 字段 类型;

例:alter table aa add column cc varchar(20);

 

--更改字段名称

例:将aa改成cc

1.添加新字段cc,然后将aa的值赋给cc

2.删除aa并reorg table

 

--修改字段类型

alter table 表名 alter 字段 set data type 类型;

例:alter table aa alter bb set data type varchar(40);

 

--修改字段长度(只能改大,不能改小)

alter table 表名 alter 字段 set data type 类型;

例:alter table aa alter bb set data type varchar(40);

 

--给字段加not null约束

alter table 表名 alter 字段 set not null;

例:alter table aa alter bb set not null;

 

--删除字段上的not null约束

alter table 表名 alter column 字段 drop not null;

例:alter table aa alter column bb drop not null;

 

--删除字段

alter table 表名 drop column 字段;

例:alter table aa drop column bb;

 

--复制表结构及数据

create table cb_ba_CURRENCY like BASE_CURRENCY;
insert into cb_ba_CURRENCY select * from BASE_CURRENCY;

 

--添加唯一约束

ALTER TABLE EMPLOYEE ADD CONSTRAINT NEWID UNIQUE(EMPNO,HIREDATE)

 

--删除唯一约束

ALTER TABLE <table-name> DROP UNIQUE <constraint-name>

 

--添加主键约束

ALTER TABLE <name> ADD CONSTRAINT <column_name> PRIMARY KEY <column_name>

 

--删除主键约束

ALTER TABLE <table-name> DROP PRIMARY KEY

 

--通过toad查看创建表sql

select dbms_metadata.get_ddl('TABLE','TABLENAME') from dual;

 tools-->database explorer

<think>嗯,用户这次想了解的是如何在DB2中查询历史操作记录的方法。这个问题确实很有价值,毕竟系统审计和安全排查时经常需要追踪历史操作。不过我需要仔细想想具体实现方式。首先回顾一下DB2常见的日志机制。DB2自带的诊断日志(diag.log)会记录错误信息,但不太适合做操作追踪。更合适的应该是事务日志,但直接查询事务日志并不容易。让我看看系统自带的审计功能。DB2有个audit组件,但默认是关闭的,需要DBA配置审计策略后才能使用。开启后确实能详细记录操作记录,只是需要额外的管理维护成本。又想到系统目录表sysibm.sysdummy1这种视图也不包含操作记录。不过sysibmadm.adm_history视图可能会存储部分运维操作信息,这个可以试试看。用户上次查询的是表结构相关命令,这次转向审计功能说明ta可能在进行安全加固。考虑到企业环境,应该推荐更完整的审计方案。虽然配置稍复杂,但能记录完整的操作者、时间、对象等信息,价值更大。要不要同时提醒权限问题呢?普通用户可能没有查看审计日志的权限,这点很重要。还有时间范围限制也要说明,避免用户误以为能查到所有历史记录。最后准备两个层级的方案:简单查询adm_history作为快捷方案,完整审计作为企业级解决方案。SQL示例要包含关键字段,比如auth_id和action_time这些实用信息。对了,还要特别注意加个警告说明——如果没预先配置审计策略,这些查询都是无效的。用户可能不了解这个前提,容易产生误解。</think> 在 DB2 中查询历史操作记录主要依赖于其内置的审计功能(`AUDIT`)或管理视图`ADMHISTORY`(需事先配置审计策略),以及事务日志(仅记录变更但格式复杂)。常用方法如下: ### 方法 1:使用 `sysibmadm.admhistory` 视图(需配置审计) 此视图记录了配置审计策略后的 **数据库管理操作**(如 DDL、连接、权限变更等),默认可能未启用。 ```sql -- 查询所有历史操作记录 SELECT * FROM sysibmadm.admhistory; ``` #### 常用字段说明 ```sql SELECT event_timestamp, -- 操作发生时间(精确到微秒) auth_id, -- 执行操作的用户 action, -- 操作名称(如 CONNECT, CREATE, DROP, GRANT) object_schema, -- 操作对象所属Schema object_name, -- 操作对象名称 sql_stmt_text -- 执行的SQL语句(长度有限) FROM sysibmadm.admhistory WHERE event_timestamp > CURRENT TIMESTAMP - 7 DAYS -- 查询最近7天的操作 ORDER BY event_timestamp DESC; ``` ### 方法 2:配置DB2审计功能(详细记录) **需管理员预先配置审计策略**: 1. **开启审计**: ```bash db2audit configure datapath '<审计日志目录>' -- 设置审计日志存储路径 db2audit start -- 启动审计 ``` 2. **配置审计策略**: ```sql -- 示例:审计所有用户对表的所有操作 CREATE AUDIT POLICY MyAuditPolicy CATEGORIES EXECUTE STATUS BOTH CATEGORIES OBJMAINT STATUS BOTH; ``` 3. **将策略绑定到数据库**: ```sql AUDIT DATABASE USING POLICY MyAuditPolicy; ``` 4. **查询审计日志**: ```sql SELECT event_timestamp, auth_id, action, object_schema, object_name, event_correlator, sql_text FROM TABLE(SYSPROC.AUDIT_LIST('', -2)) AS T; -- 查看审计日志 ``` ### 方法 3:事务日志(仅技术专家分析) DB2的**事务日志(Transaction Log)** 记录了所有数据变更操作(INSERT/UPDATE/DELETE),但日志是二进制格式,需专用工具解析: ```bash db2dart <DB_NAME> /LHWM ``` > ⚠️ 此操作需高级权限且可能影响性能,生产环境慎用。 ### 📌 关键要点 1. **审计需预配置**:默认未启用审计,需按 *方法2* 配置后才可查询完整历史记录。 2. **权限限制**:查看`admhistory`需`ACCESSCTRL`权限;审计日志需`SECADM`权限。 3. **时效性**:审计日志默认有保留周期,需定期归档。 4. **应用层日志**:对于业务操作记录,建议在应用程序中记录操作日志(如写入日志表)实现更精细的控制 [^1][^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值