Db2
使用 db2inst1 執行 db2 命令行的授權錯誤
我需要在 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 的強大機制