在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, ...)
待續...