DBMaker注意事項

DBMaker 為 OMFLOW Windows 版本可選擇之內建資料庫,以下總結可能出現的錯誤:

1. 版本更新時出現 Journal Full 錯誤訊息

查看error.log出現以下類似錯誤訊息:

  • [DBMaker] 日誌已滿:事務已被中斷 (11311) (SQLExecDirectW)

解決辦法:

OMFLOW Patch 在 migration 時若資料量過多造成此錯誤,需加大或新增 Journal File,以下為操作步驟:

修改dmconfig.ini

Windows版本路徑為 C:\Program Files\OMFLOW Server\DBMaker\dmconfig.ini

DB_JNFIL = OMFLOW1.JNL OMFLOW2.JNL OMFLOW3.JNL OMFLOW4.JNL OMFLOW5.JNL OMFLOW6.JNL OMFLOW7.JNL OMFLOW8.JNL
DB_JNLSZ = 8G
DB_SMODE = 2
DB_FORCS = 1

重啟DBMaker服務

此方法無法完全解決,當資料過於龐大時仍有機會造成此錯誤。

2. OMFLOW 進行介面操作時出現 out of DCCA memory 錯誤

查看error.log出現以下類似錯誤訊息:

  • [DBMaker] out of DCCA memory: initial DCCA setting is too small (1103) (SQLFetch)

解決辦法:

當 lock 太多會佔用 DCCA 導致記憶體不足,請在 dmconfig.ini 設定,設定後重新啟動 DBMaker 服務。

修改dmconfig.ini

Windows版本路徑為 C:\Program Files\OMFLOW Server\DBMaker\dmconfig.ini

DB_SCASZ = 1024M

重啟DBMaker服務

3. 上架流程出現 DBMaker 錯誤訊息

查看error.log出現以下類似錯誤訊息:

  • [DBMaker] total length of all columns exceeds maximum length : this table needs at least 8081 bytes, it should be less than the maximum length of a page 8064 bytes (6527) (SQLExecDirectW)')

  • [DBMaker] Invalid field name : FORMITM_127 (6523) (SQLPrepare)

解決方法

此錯誤為表單設計欄位超過DBMaker長度限制時未成功建置table,導致資料與實際table columns產生落差。

修改dmconfig.ini

DB_PGSIZ = 32

匯出原有資料庫並重新建立

詳細步驟請聯繫 https://www.dbmaker.com.tw/serForm.php

4. 出現「視圖已存在」錯誤訊息

查看error.log出現以下類似錯誤訊息:

  • [DBMaker] 該表或視圖已存在 : <TABLE_NAME> (6520) (SQLExecDirectW)

解決方法

當 migration 因任何因素失敗時,導致下次 migration 無法正確從上次結束的地方開始執行。

將出問題的 APP migration 歸零並重新執行

python manage.py migrate your_app zero
python manage.py makemigrations your_app
python manage.py migrate

5. 出現表單異常卡住之問題

查看error.log並未出現錯誤訊息

解決方法

請更新 OMFLOW 至 1.2.0 以上版本

6. 硬碟空間不足之問題

查看error.log出現以下類似錯誤訊息:

  • [DBMaker] no disk space or quota : /opt/dbmaker/database/fo/__0O619F.TMP (11211)

解決方法

由於tablespace不正常增長導致,需重啟 DBMaker 資料庫清空暫存檔案,並關閉tablespace動態新增改為手動新增,

//列出所有 tablespace
select TS_NAME from systablespace;
//查詢 table 所在的 tablespace
def table ;
//將 DEFTABLESPACE 修改為 regular ts
ALTER TABLESPACE DEFTABLESPACE SET AUTOEXTEND OFF;

EXTENDTS() stored procedure to extend tablespace
Description: provide stored procedure for user to extend or add file to tablespace based
on some condition.

Synatx: EXTENDTS(VARCHAR(128) TABLESPACE_NAME INPUT,
VARCHAR(100) THRESHOLD_PAGE INPUT,
VARCHAR(100) THRESHOLD_FRAME INPUT,
VARCHAR(256) FILE_PREFIX INPUT,
VARCHAR(256) FILE_PATH INPUT)
Check and extend tablespace by adding page or
file according to the threshold_page/frame. The syntax for threshold_page/frame is "nFree
nAdd nMax". EXTENDTS() will check and extend when the tablespace's free page/frame < nFree
and add nAdd page/frame. If user has specified the FILE_PREFIX, it will check whether
the data file's npage + nAdd > nMax and add a file as FILE_PATH/FILE_PREFIX_%d.DB/BB.
example: CALL EXTENDTS('TS1', '10280 20560 10G', '10280 20560 10G','TS1','/data/ts1');
or CALL EXTENDTS('TS1', '100M 200M 10G', '100M 200M 10G','TS1','/data/ts1');

For example: If user want to extend deftablespace when free space < 100M and add 200M,
can use the following task to define it.

User can create task as following example:
call task_create('task1','STORE_PROCEDURE', 'call EXTENDTS(''DEFTABLESPACE'', ''100M 200M 100G'',
''100M 200M 100G'', null, null)');

Or if user want to add file if exceed 10G, user must specify file_prefix
call task_create('task1','STORE_PROCEDURE', 'call EXTENDTS(''TS1'', ''100M 200M 10G'', ''100M
200M 10G'', ''TS1'', ''/data/ts1/'')');
If the file in TS1 exceed 10G (NOTE: limitation: the file size cannot be exactly 10G)
it will create logical file TS1_01.DB in the /data/ts1/TS1_01.DB

After create a task, user can create/enable it in the schedule daemon.

To run the stored procedure for every 30 minitues:
call schedule_create('sche1','task1','*/30 * * * *','2012-12-12 12:12:00','2028-12-12 12:12:00');

call schedule_enable('sche1');

Last updated