正如 cnZach 所写,您必须根据获得的信息生成查询。您可以通过查询目录来做到这一点,然后创建一组语句。
按照您所说的,禁用特定表中的日志记录的语句是
alter table table-name not logged initially;
但是您必须从数据库中检索所有表或一组表。这可以通过查询目录来完成
db2 "select substr(tabschame) || '.' || substr(tabname) \
from syscat.table where type = 'T' and tabschema not like 'SYS%'"
一旦根据您的要求修改了先前的查询(检索您需要的表),然后您修改查询以生成所有这些表的 alter 语句
db2 "select 'alter table ' || substr(tabschame) || '.' \
|| substr(tabname) || ' not logger initially' \
from syscat.table where type = 'T' and tabschema not like 'SYS%'"
如果需要,您可以直接执行 db2 输出,或者只是将其发送到一个文件,稍后通过“db2 -tvf filename.sql”执行。另一个选项有一个缺点,因为输出大小有问题;如果大于限制,无法执行(| db2 +p -tv)
db2 "select 'alter table ' || substr(tabschame) || '.' \
|| substr(tabname) || ' not logger initially' \
from syscat.table where type = 'T' and tabschema not like 'SYS%'" | db2 +p -tv