SYBASE 資料庫遷移到AS 400 db2的FAQ(五) (轉)
以下是我最後的一篇文章。
:namespace prefix = o ns = "urn:schemas--com::office" />
答:除去quiesce狀態:
1. 連線到
2. 用 list tablespaces 判斷哪個tablespace處於quiesce狀態和和取得()ID
3. 判斷物件ID對應的表
用 2 " tabname from syscat.tables where tablid=物件ID" 得到表名
b)用 list history 判斷是那個表
4. 用 db2 quiesce tablespaces for table 表名 reset 去除quiesce狀態
.在DB2 UDB中如何建立定義臨時表?
答:可使用 DECLARE GLOBAL TEMPORARY TABLE 語句來定義臨時表。此語句需在應用中使用。只有在應用程式與資料庫斷開連線之前,使用者定義臨時表才是持續的。
此表的說明並不出現在目錄中,使其對於其他應用程式而言不是持續的,也不能與其他應用程式共享此表。
當使用此表的應用程式終止或與資料庫斷開連線時,此表中的資料被刪除, 此表被隱式卸下。
下面是定義臨時表的一個示例:
DECLARE GLOBAL TEMPORARY TABLE gbl_temp
LIKE empltabl
ON COMMIT DELETE ROWS
NOT LOGGED
IN usr_tbsp
此語句建立一個名為 gbl_temp 的使用者臨時表。定義此使用者臨時表 所使用的列的名稱和說明與 empltabl 的列的名稱和說明完全相同。隱式定義只包括列名、資料型別、可為空特性和列預設值屬性。未定義所有其他列屬性,包括唯一、外部關鍵字約束、和。 COMMIT 操作時, 若未對該表開啟 WITH HOLD 遊標,則該表中的所有資料都被刪除。不記錄 對使用者臨時表所作的更改。使用者臨時表被放在指定的使用者臨時表空間中。此表空間必須存在,否則此表的宣告將失敗。
答:在執行IMPORT命令時, 如果使用迴圈日誌, 有時會出現日誌滿錯誤,
這時可用COMMITCOUNT引數來解決.
因為日誌空間滿往往是因為所有的日誌均處於活動狀態導致的.
而COMMIT執行後, 會釋放所佔據的資源, 其中包括日誌 .
這樣, 被當前事務使用的日誌在COMMIT命令執行後, 即變成非活動狀態了
答:以連線為例, 若連線失敗,您可以檢查下列專案:
A) 在上: 1) db2comm 登錄檔值包括值 tcpip。
輸入 db2set DB2COMM 命令, 以檢查 db2comm 登錄檔值的設定。有關詳情,請參考管理指南。
2) 正確地了 services 。
3) 在資料庫管理程式檔案中正確地更新了服務名 (svcename) 引數。
4) 服務已啟動。輸入 start db2ntsecserver 命令(僅對於 NT 伺服器)。
5) 正確地建立並編目了資料庫。
6) 資料庫管理程式已停止並再次啟動(在伺服器上輸入 db2stop 和 db2start 命令)。
* 如果在啟動一個的連線管理程式時出現問題,則會出現警告資訊,並將錯誤資訊記錄在 db2diag.log 檔案中。
B) 在客戶機上: 1) 正確地更新了 services 和 hosts 檔案(若使用過的話)。
2) 使用正確的主機名 (hostname) 或 地址 (ip_address)編目了此節點。
3) 埠號必須匹配,或服務名必須對映為伺服器上所用的埠號。
4) 在資料庫目錄中指定的節點名 (node_name) 指向節點目錄中的正確專案。
5) 資料庫已正確編目, 它使用在伺服器上建立該資料庫時編目的伺服器的資料庫別名(database_alias),作為客戶機上的資料庫名 (database_name)。
驗證這些專案後,若連線仍失敗,則參考 DB2 Troubleshooting Gu
答:以空檔案為資料檔案匯入(IMPORT)並替換(REPLACE)目標表和刪除(DELETE)表操作的對比
當用DELETE TABLE命令刪除整個表中資料時,該操作會逐條刪除表中記錄,並記入活動的交易日誌。當表中資料量很大時,如果活動的交易日誌不夠大,就會遇到交易日誌已滿的錯誤,並回滾日誌。即使活動的交易日誌足夠大,刪除資料量很大的表的操作也會佔用很多時間。用以空檔案為資料檔案匯入(IMPORT)並替換(REPLACE)表的辦法可以解決這個問題。例如
IMPORT FROM /dev/null OF DEL REPLACE INTO 目標表名
這樣交易日誌只會記錄下該條命令,並立即釋放所佔的空間,而不會像刪除命令一樣逐條掃描記錄,這就類似於DROP掉該表再建立一個完全相同只是沒有資料的表一樣。對於屬於DMS表空間的表來說,刪除命令逐條掃描記錄,所佔的記錄空間仍標記為該表所用,而不立即釋放空間,需要用REORG命令才可以釋放剩餘空間。用 LIST TABLESPACE SHOW DETAIL 可以對比兩條命令執行後表空間中的剩餘空間的大小。
用LOAD命令加REPLACE引數可以達到類似IMPORT命令加REPLACE的效果,但是由於LOAD本身不記日誌,所以對於可恢復的資料庫,LOAD完成後建議馬上做一下聯機的,相比之下,IMPORT命令加REPLACE操作上比較簡單一些。
46. 怎麼樣獲取表結構以及索引的資訊
答:您可以使用"describe" 命令:
(1) 顯示關於SELECT語句的 DA 資訊;
(2) 顯示錶或檢視的列資訊;
(3) 顯示錶或檢視的索引資訊;
舉例:1) 下面的例子用於描述 SELECT 語句:
db2 "describe select * from staff"
SQLDA Information
sqldaid : SQLDA sqldabc: 896 sqln: 20 sqld: 7
Column Information
sqltype sqllen sqlname.data sqlname.length
--------------- ------ -------------- ---------------
500 SMALLINT 2 ID 2
449 VARCHAR 9 NAME 4
501 SMALLINT 2 DEPT 4
2) 下面的例子用於描述表結構:
db2 describe table user1.department
Table: USER1.DEPARTMENT
Column
name Type
schema Type
name Length Scale Nulls
--------- ------- ----------- -------- ------ ------
AREA SYSIBM SMALLINT 2 0 No
DEPT SYSIBM CHARACTER 3 0 No
DEPTNAME SYSIBM CHARACTER 20 0 YES
3) 下面的例子用於描述索引結構:
db2 describe indexes for table user1.department
Table: USER1.DEPARTMENT
Index
schema Index
name Unique
rule Number of
columns
------------ ---------- ------------ ----------------
USER1 IDX1 U 2
平臺上啟動DB2控制中心(Control Center)
答:再Unix平臺上啟動DB2控制中心需要一下幾個步驟,以AIX為例:
1. DB2時選擇安裝DB2控制中心(Control Center);
2. 以賬號登入,輸入xhost +命令(每次重新啟動Unix後需輸入該條命令以啟動控制中心);
3. 以DB2例項管理員賬號登入,輸入以下命令
a. db2jstrt
b. db2cc
這樣,就啟動了DB2控制中心(Control Center)。
#xhost +
#su - db2inst1
$db2jstrt
$db2cc
db2cc使用的是118
export _HOME=/usr/jdk118
export PATH=/usr/jdk118/bin:$PATH
答:首先,從控制中心(Control Center)中知道本地系統所在的原節點名。
然後退出控制中心,在命令列中輸入以下命令:
1. db2set db2system=新系統名
2. db2 tenate
3. db2 uncatalog node 原節點名
4. db2 terminate
重起控制中心,可以看到,本地系統名已更改。
DECLARE UNDO HANDLER FOR SQLEXCEPTION
SET errmsg = 'ERROR, ROLLBACK WAS ISSUED';
SIGNAL 和 RESIGNAL的用法?
答:舉例
CREATE PROCEDURE xhzq_db.G10()
LANGUAGE SQL
BEGIN
DECLARE c1 CONDITION FOR SQLSTATE '38001';
DECLARE CONTINUE HANDLER FOR C1
INSERT INTO XHZQ_DB.ZZ_RESULT(proc,res) VALUES ('exec of G10','EXIT handler fired');
INSERT INTO XHZQ_DB.ZZ_result(proc,res) VALUES ('exec of G10','START of Proc');
SIGNAL SQLSTATE '38001';
INSERT INTO XHZQ_DB.ZZ_result(proc,res) VALUES ('exec of G10','END of Proc');
END;
如果後,select * from XHZQ_DB.ZZ_result ;
結果如下:
proc res
exec of G10 START of Proc
exec of G10 EXIT handler fired
exec of G10 END of Proc
舉例
CREATE PROCEDURE G11()
LANGUAGE SQL
BEGIN
DECLARE c1 CONDITION FOR SQLSTATE '38001';
INSERT INTO result(proc,res) VALUES ('exec of G11','START of Proc');
SIGNAL SQLSTATE '38001'; /*the handler will be fired by this statement*/
INSERT INTO result(proc,res) VALUES ('exec of G11','END of Proc');
END;
如果呼叫後,select * from result ;
結果如下:
proc res
exec of G11 START of Proc
.關於00DB2中中文的問題
答:AS400下db2儲存中文作了特殊處理。
格式為 0e 開頭+ 中文字串 + 0f結尾,如果有中文和英文字串混合的字串,其中每個中文字串都加0e和0f
例如: 中國 儲存後 0e中國0f
AV中國製造KK湖南 儲存後: AV0e中國製造0fKK0e湖南0f
注意:除了a-z,A-Z以外的字元全部按中文字串同樣處理。
.SQLCODE的捆綁宣告語句
答:
DECLARE SQLCODE INTEGER DEFAULT 0;
DECLARE SQLSTATE CHAR(5) DEFAULT ’00000’;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET retcode=SQLCODE;
DECLARE CONTINUE HANDLER FOR SQLWARNING SET retcode=SQLCODE;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET retcode=SQLCODE;
到此我已經完成了我的內容,希望感興趣的朋友!可以和我聯絡交流!
qq:50839655
to::dekkerdillon@.com">msn:dekkerdillon@hotmail.com
:zhangtao@xhzq.com,dekker99@163.com">email:zhangtao@xhzq.com,dekker99@163.com
htmp://
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-962563/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SYBASE 資料庫遷移到AS 400 db2的FAQ(四) (轉)資料庫DB2
- SYBASE 資料庫遷移到AS 400 db2的FAQ(三) (轉)資料庫DB2
- SYBASE 資料庫遷移到AS 400 db2的FAQ(一) (轉)資料庫DB2
- SYBASE 遷移到DB2DB2
- 將OPEN BRAVO資料庫從oracle 遷移到DB2資料庫OracleDB2
- 將SAP 後臺資料庫從DB2 遷移到ORACLE資料庫DB2Oracle
- 資料庫遷移到ASM資料庫ASM
- 將OPEN BRAVO後臺資料庫從ORACLE遷移到DB2資料庫OracleDB2
- 將pentaho資料庫遷移到oracle資料庫資料庫Oracle
- AIX 資料庫遷移到z/linuxAI資料庫Linux
- 你的資料庫真的需要遷移到雲嗎?資料庫
- 單例項資料庫expdp遷移到RAC庫單例資料庫
- 線上過期資料遷移到離線資料庫資料庫
- 資料泵實現資料遷移到異地庫
- 從關聯式資料庫遷移到NoSQL雲資料庫資料庫SQL
- Sybase資料庫簡介 (轉載)資料庫
- EAS附件表由資料庫遷移到FTP資料庫FTP
- 從關聯式資料庫遷移到CouchDB資料庫
- 將資料庫遷移到ASM的實驗記錄資料庫ASM
- 把正式庫的最新資料全部遷移到測試庫上
- 使用資料庫冷備份方式進行資料庫遷移,資料庫檔案遷移到不同的目錄資料庫
- 達夢遷移工具之MySQL資料庫遷移到達夢MySql資料庫
- 資料庫從檔案系統遷移到ASM資料庫ASM
- 使用rman將資料庫遷移到ASM例項資料庫ASM
- 應用程式的資料庫從Sql Server遷移到Oracle資料庫SQLServerOracle
- Sybase資料庫安全資料庫
- DB2中的限制之五資料庫管理器的限制 (轉)DB2資料庫
- rman將linux平臺資料庫遷移到window平臺資料庫Linux資料庫
- 將資料庫從ASM遷移到檔案系統資料庫ASM
- 將資料庫從檔案系統遷移到ASM資料庫ASM
- 使用rman copy將資料庫遷移到ASM例項資料庫ASM
- 將ORACLE資料庫資料檔案遷移到其他目錄(ZT)Oracle資料庫
- 微軟雲端資料庫SQL Azure遷移到本地SQL Server的方法微軟資料庫SQLServer
- Oracle資料庫遷移到國產資料庫核心難點解析 | 聯盟釋出Oracle資料庫
- 用VC訪問Sybase資料庫(用Sybase提供的ct-library介面) (轉)資料庫
- db2匯出資料庫定義及遷移資料DB2資料庫
- jive的資料庫sybase7資料庫
- 把64位的unix系統資料庫遷移到32位的windows系統資料庫中資料庫Windows