国内最大的酷站演示中心!
在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, ...)
待續...