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
分享到:
相关推荐
ALTER TABLE [name] ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE ``` 这种方法也避免了日志记录,但需要注意的是,如果数据库崩溃,未记录的更改可能会丢失,因此这种方法适合于对数据恢复要求不高的场景。 ...
清空表`det.cao_test`可以使用`alter table det.cao_test activate not logged initially with emptytable`,先以`not logged initially`方式创建表,再执行SQL存储过程中的`ALTER TABLE`命令。 6. **UNION与UNION...
- DB2则使用`alter table`并配合`active not logged initially with empty table`选项:`alter table TableName active not logged initially with empty table;` 6. **ROWID** - Oracle的ROWID是数据库生成的...
ALTER TABLE TableName ACTIVE NOT LOGGED INITIALLY WITH EMPTY TABLE; ``` #### 关于ROWID **Oracle**: `ROWID`由数据库自动生成,可以在程序中获取。 **DB2**: DB2也支持`ROWID`的概念,但它不能被程序直接获取...
在清空大表的操作上,ORACLE的`truncate table TableName`命令能快速删除所有记录,而DB2可以使用`alter table TableName activate not logged initially with empty table`,这种方法在保留表结构的同时清空数据。...
- DB2:`ALTER TABLE TableName ACTIVE NOT LOGGED INITIALLY WITH EMPTY TABLE;` 6. ROWID: - Oracle 的 ROWID 是唯一的行标识符,可以在程序中获取。 - DB2 自 V8 起也提供了类似的功能。 7. 数字转换: - ...
9. **删除表数据并释放表空间**:在存储过程中,可以使用`ALTER TABLE 表名 ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE;`清空表数据。 10. **执行过程语句**:调用存储过程的语法是`CALL 过程名(参数1,参数2...
NOT LOGGED INITIALLY PARTITION BY RANGE(AREA_ID) (STARTING MINVALUE, STARTING 12 ENDING 70 EVERY 1, ENDING MAXVALUE) ``` - **判断是否为分区表**:查询系统表`systables`的`tbspace`字段,如果为空则表示...
- 修改表配置为非日志模式:`db2 alter table configitem activate not logged initially with empty table`。 - 该步骤是为了确保后续Load操作不会受到日志记录的影响。 **3. 执行Load操作** - 使用`db2 load ...
**db2alter table TABLENAME activate not logged initially commit or rollback**:修改表的属性。例如,可以设置表为非日志模式(不记录事务),并指定提交或回滚行为。 #### 七、数据导入导出 **Export命令**:...
- 使用`ALTER TABLE TableName ACTIVE NOT LOGGED INITIALLY WITH EMPTY TABLE;` - 这个操作在DB2中也能高效地清空表。 #### 6. 关于ROWID - **Oracle**: - ROWID是Oracle数据库提供的一个特殊功能,用于唯一...
- **激活非日志表**:`ALTER TABLE table_name activate NOT LOGGED initially WITH EMPTY TABLE;` - 通过这一语句,可以创建或修改一个表为非日志模式,适用于对事务日志要求不高的场景,但需注意其在恢复方面的...
**DB2**: `alter table TableName active not logged initially with empty table;` - **解析**: Oracle的`truncate`命令能够快速删除表中的所有数据,而不保留任何日志信息。而在DB2中,可以通过修改表属性的方式...
- `ALTER TABLE TABLE_NAME ACTIVE NOT LOGGED INITIALLY WITH EMPTY TABLE`:修改表的记录不被日志记录,且表为空。 - **查看表结构:** - `DESCRIBE TABLE TABLE_NAME` 或 `DESCRIBE SELECT * FROM SCHEMA....
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....
- `ALTER TABLE TABLE_NAME ACTIVE NOT LOGGED INITIALLY`关闭表的日志。 - `DROP SCHEMA.TABLE_NAME`删除表(注意这里可能是错误的语法,通常应使用`DROP TABLE`)。 14. **表重命名**:使用`RENAME TABLE OLD ...