Db2

使用 db2inst1 執行 db2 命令行的授權錯誤

  • January 2, 2021

我需要在 Docker 上的 DB2 Express Edition 中啟用 COLUMNAR 設置。為此,我需要在實例或數據庫級別設置 INTRA_PARALLEL ON。

我使用實例所有者連接到該db2命令db2inst1,但我收到一條錯誤消息,指出使用者是 root。如何解決這個問題?

db2 => connect to bank0002 user db2inst1 using xxxxx

  Database Connection Information

Database server        = DB2/LINUXX8664 11.5.4.0
SQL authorization ID   = DB2INST1
Local database alias   = BANK0002

db2 => UPDATE DBM CFG  USING INTRA_PARALLEL ON
SQL5001N  "ROOT" does not have the authority to change the database manager 
configuration file.

update dbm cfg 由您的使用者在 sh 中執行,而不是您連接的使用者。您可以作為特定使用者附加到實例:

db2 attach to instance db2inst1 user db2inst1 

或者:

db2 attach to instance db2inst1 user db2inst1 using <password>

進而:

db2 update dbm cfg using INTRA_PARALLEL YES

可以在ATTACH找到文件

除此之外,我發現直接從 sh 執行 db2(就像我在上面所做的那樣)比單獨啟動 db2 clp 要容易得多。您可以使用 sh 作為宿主語言,例如在結果集上執行循環:

#> db2 connect to mydb
#> for t in $(db2 -x "select ..."); do
      echo "The table is ${t}"
  done  

當然只是一個愚蠢的例子,但它是從 sh 腳本執行 db2 的強大機制

引用自:https://dba.stackexchange.com/questions/282456