在DB2中如何實現Oracle的相關功能(三) 作者﹕CCBZZP 在現實的應用中大家可能經常會遇到在DB2中如何實現Oracle的某些功能﹐ 在此我簡單地總結一下﹐實現某一功能可能會有很多種方法﹐在此就沒有全部列出﹐ 歡迎大家繼續﹐以便和大家共享﹐共同探討﹐共同近步﹗(以下主要以Oracle 8I,9I和DB2 7.X為例)。 1.如何查有多少個數据庫實例的Oracle和DB2的寫法 Oracle 可以這樣實現﹕ SQL>SELECT * FROM V$INSTANCE; DB2 可以這樣實現﹕ 在命令窗口執行 db2ilist 2.如何查詢數据庫有多少表的Oracle和DB2的寫法 Oracle 可以這樣實現﹕ SQL>select * from all_tables; DB2 可以這樣實現﹕ 在命令中心執行 select * from syscat.tables; 3.如何知道表鎖的情況的Oracle和DB2的寫法 Oracle 可以這樣實現﹕ SQL>SELECT S.SID SESSION_ID, S.USERNAME, DECODE(LMODE, 0, 'None', 1, 'Null', 2, 'Row-S (SS)', 3, 'Row-X (SX)', 4, 'Share', 5, 'S/Row-X (SSX)', 6, 'Exclusive', TO_CHAR(LMODE)) MODE_HELD, DECODE(REQUEST, 0, 'None', 1, 'Null', 2, 'Row-S (SS)', 3, 'Row-X (SX)', 4, 'Share', 5, 'S/Row-X (SSX)', 6, 'Exclusive', TO_CHAR(REQUEST)) MODE_REQUESTED, O.OWNER||'.'||O.OBJECT_NAME||' ('||O.OBJECT_TYPE||')', S.TYPE LOCK_TYPE, L.ID1 LOCK_ID1, L.ID2 LOCK_ID2 FROM V$LOCK L, SYS.DBA_OBJECTS O, V$SESSION S WHERE L.SID = S.SID AND L.ID1 = O.OBJECT_ID DB2 可以這樣實現﹕ 在你执行你的存储过程之前,执行命令打开锁的监视开光 db2 update monisor switches using lock on ; 然后执行你的存储过程,在执行存储过程期间的时候使用命令 db2 get snapshot for locks on yourdatdabasename ; 就可以看见了你锁情况了 4.如何對鎖住的表進行解鎖的Oracle和DB2的寫法 Oracle 可以這樣實現﹕ SQL>alter system kill session 'sid,service#'; DB2 可以這樣實現﹕ db2 force application all ; db2 terminate ; 5.測試SQL語句執行所用的時間的Oracle和DB2的寫法 Oracle 可以這樣實現﹕ SQL>set timing on ; SQL>select * from tablename; DB2 可以這樣實現﹕ db2batch -d 库名 -f 含有SQL语句的文件名 ; 6. 如何配置Sequence的Oracle和DB2的寫法 Oracle 可以這樣實現﹕ 建sequence seq_custid create sequence seq_custid start 1 incrememt by 1; 建表时: create table cust { cust_id smallint not null, ...} insert 时: insert into table cust values( seq_cust.nextval, ...) DB2 可以這樣實現﹕ identity字段属性 用法: create table时 cust_id smallint not null generated always as indentity (start with 1 increment by 1) insert 时: insert into table cust (cust_id, ... ) values ( default, ...)
待續...
|