`
weiruan85
  • 浏览: 384139 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

not logged initially

    博客分类:
  • db2
阅读更多
   Any changes made to the table by an Insert, Delete, Update, Create Index, Drop Index, or Alter Table operation in the same unit of work in which the table is created are not logged.
   For other considerations when using this option, see the "Notes" section of this statement.
    All catalog changes and storage related information are logged,
as are all operations that are done on the table in subsequent units of work.





    Note: If non-logged activity occurs against a table that has the NOT LOGGED INITIALLY attribute activated, and if a statement fails (causing a rollback), or a ROLLBACK TO SAVEPOINT is executed,the entire unit of work is rolled back (SQL1476N).
    Furthermore, the table for which the NOT LOGGED INITIALLY attribute was activated is marked inaccessible after the rollback has occurred,and can only be dropped.
    Therefore, the opportunity for errors within the unit of work in which the NOT LOGGED INITIALLY attribute is activated should be minimized.




问题描述:
如何利用表的NOT LOGGED INITIALLY特性清空表中的数据

解答:
可以使用DELETE命令清空表中的数据,但是如果表中的数据量很大,删除数据会记录大量的日志。

如果不希望清空数据时记录大量的日志,可以考虑使用空文件IMPORT(或LOAD)加REPLACE参数来删除表中的数据。

此外,如果表在创建时指定了NOT LOGGED INITIALLY特性,可以考使用ALTER TABLE命令清空数据。

例如,由如下命令创建的表nolog:

db2 => create table nolog(id int, name char(40)) not logged initially
DB20000I  SQL 命令成功完成。

可以用下面的命令删除表中的所有数据:

db2 => alter  table nolog activate not logged initially with empty table
DB20000I  SQL 命令成功完成。

db2 => commit
DB20000I  SQL 命令成功完成。

db2 => select * from nolog

ID          NAME
----------- ----------------------------------------

0 条记录已选择。

注意,使用ALTER命令+ACTIVATE NOT LOGGED INITIALLY,在同一个交易中,如果回滚,这个表将处于不能存取的状态。

db2 => alter table nolog activate not logged initially with empty table
DB20000I  SQL 命令成功完成。  

db2 => rollback
DB20000I  SQL 命令成功完成。
 
db2 => select * from nolog

ID          NAME
----------- ----------------------------------------
SQL1477N  不能存取表 "DB2ADMIN.NOLOG"。  SQLSTATE=55019

分享到:
评论

相关推荐

    DB2删除大数据量表方法.pdf

    ALTER TABLE [name] ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE ``` 这种方法也避免了日志记录,但需要注意的是,如果数据库崩溃,未记录的更改可能会丢失,因此这种方法适合于对数据恢复要求不高的场景。 ...

    DB2 常用技术参考.doc

    清空表`det.cao_test`可以使用`alter table det.cao_test activate not logged initially with emptytable`,先以`not logged initially`方式创建表,再执行SQL存储过程中的`ALTER TABLE`命令。 6. **UNION与UNION...

    Oracle和DB2的转换[参照].pdf

    - DB2则使用`alter table`并配合`active not logged initially with empty table`选项:`alter table TableName active not logged initially with empty table;` 6. **ROWID** - Oracle的ROWID是数据库生成的...

    Oracle迁移到DB2 SQL语句差异

    ALTER TABLE TableName ACTIVE NOT LOGGED INITIALLY WITH EMPTY TABLE; ``` #### 关于ROWID **Oracle**: `ROWID`由数据库自动生成,可以在程序中获取。 **DB2**: DB2也支持`ROWID`的概念,但它不能被程序直接获取...

    ORACLE DB2开发中的对比

    在清空大表的操作上,ORACLE的`truncate table TableName`命令能快速删除所有记录,而DB2可以使用`alter table TableName activate not logged initially with empty table`,这种方法在保留表结构的同时清空数据。...

    oracle与db2对比

    - DB2:`ALTER TABLE TableName ACTIVE NOT LOGGED INITIALLY WITH EMPTY TABLE;` 6. ROWID: - Oracle 的 ROWID 是唯一的行标识符,可以在程序中获取。 - DB2 自 V8 起也提供了类似的功能。 7. 数字转换: - ...

    DB2数据库常用技术总结

    9. **删除表数据并释放表空间**:在存储过程中,可以使用`ALTER TABLE 表名 ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE;`清空表数据。 10. **执行过程语句**:调用存储过程的语法是`CALL 过程名(参数1,参数2...

    DB2性能安全

    NOT LOGGED INITIALLY PARTITION BY RANGE(AREA_ID) (STARTING MINVALUE, STARTING 12 ENDING 70 EVERY 1, ENDING MAXVALUE) ``` - **判断是否为分区表**:查询系统表`systables`的`tbspace`字段,如果为空则表示...

    db2 Load锁表 后解锁详解

    - 修改表配置为非日志模式:`db2 alter table configitem activate not logged initially with empty table`。 - 该步骤是为了确保后续Load操作不会受到日志记录的影响。 **3. 执行Load操作** - 使用`db2 load ...

    DB2常用命令

    **db2alter table TABLENAME activate not logged initially commit or rollback**:修改表的属性。例如,可以设置表为非日志模式(不记录事务),并指定提交或回滚行为。 #### 七、数据导入导出 **Export命令**:...

    oracle和db2的区别

    - 使用`ALTER TABLE TableName ACTIVE NOT LOGGED INITIALLY WITH EMPTY TABLE;` - 这个操作在DB2中也能高效地清空表。 #### 6. 关于ROWID - **Oracle**: - ROWID是Oracle数据库提供的一个特殊功能,用于唯一...

    db2常用语句

    - **激活非日志表**:`ALTER TABLE table_name activate NOT LOGGED initially WITH EMPTY TABLE;` - 通过这一语句,可以创建或修改一个表为非日志模式,适用于对事务日志要求不高的场景,但需注意其在恢复方面的...

    ORACLE与DB2的区别和转换

    **DB2**: `alter table TableName active not logged initially with empty table;` - **解析**: Oracle的`truncate`命令能够快速删除表中的所有数据,而不保留任何日志信息。而在DB2中,可以通过修改表属性的方式...

    DB2 学习笔记

    - `ALTER TABLE TABLE_NAME ACTIVE NOT LOGGED INITIALLY WITH EMPTY TABLE`:修改表的记录不被日志记录,且表为空。 - **查看表结构:** - `DESCRIBE TABLE TABLE_NAME` 或 `DESCRIBE SELECT * FROM SCHEMA....

    IBM DB2 日常维护汇总(四)

    ALTER TABLE TABLE_NAME ACTIVE NOT LOGGED INITIALLY; DELETE FROM TABLE_NAME; ALTER TABLE TABLE_NAME ACTIVE NOT LOGGED INITIALLY WITH EMPTY TABLE; ``` 47. 查看数据库的包:使用`SELECT * FROM syscat....

    IBM DB2 日常维护汇总(五)

    - `ALTER TABLE TABLE_NAME ACTIVE NOT LOGGED INITIALLY`关闭表的日志。 - `DROP SCHEMA.TABLE_NAME`删除表(注意这里可能是错误的语法,通常应使用`DROP TABLE`)。 14. **表重命名**:使用`RENAME TABLE OLD ...

Global site tag (gtag.js) - Google Analytics