查看當(dāng)前會話的session ID 有如下三種方法:
為祁連等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及祁連網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站設(shè)計、成都做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、祁連網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
1. v$mystat視圖
SQL select sid from v$mystat where rownum=1;
SID
----------
1152
2. 使用userenv(‘sid’) 直接獲取
這種方法只能在oracle 10g以后可以使用。
SQL select userenv('sid') from dual;
USERENV('SID')
--------------
1152
3. 結(jié)合 userenv('sessionid') 與 v$session 視圖
userenv('sessionid') 返回的是session audit id.其對應(yīng)v$session 的audsid字段。
在session 連接到數(shù)據(jù)庫的時候,會從SYS.AUDSES$序列中獲取一個audid 分配給session。
SQL select sid from v$session where audsid=userenv('sessionid');
SID
----------
773
1152
--這里返回了2個值,直接查看userenv('sessionid') 值:
SQL select userenv('sessionid') from dual;
USERENV('SESSIONID')
--------------------
4294967295
對于internal用戶(’/as sysoper’ 和 ‘/as sysdba’)和后臺進(jìn)程,其對應(yīng)的AUDID 為0.
在Oracle 10g中,如果AUDID的值為0,表明是internal 用戶,如果AUDID 值是4294967295,那么就表明是用SYS 用戶直接連接的。
這里返回三個結(jié)果是把所有SYS 用戶的session都返回了,所以這種方法有時的準(zhǔn)確性并不高。
一、主鍵id自增
oracle 中不能設(shè)置自動增加,這個和其他數(shù)據(jù)庫不一樣,但是有 序列,這個是Oracle自己特有的東西,
1、首先創(chuàng)建序列:create sequence seq;
語法:
CREATE SEQUENCE 序列名
[INCREMENT BY n] --每次加幾
[START WITH n] --序列從幾開始
[{MAXVALUE/ MINVALUE n|NOMAXVALUE}] --小值、大值限制
比CREATE SEQUENCE seq start with 1 increment by 1; --建立了額從1開始每次加1序列
訪問序列時用 序列名稱.nextval語法
這就創(chuàng)建好了,然后 seq.nextval 就會返回一個值,不會重復(fù)的值,
insert into tablename values(seq.nextval,'test');
insert into tablename values(seq.nextval,'test');
insert into tablename values(seq.nextval,'test');
這樣前3個id 分別是 1,2,3
1、對于提交(最后一次操作commit了)的話可以查詢那個提交段
SELECT 列名1,列名2……
FROM 表名 VERSIONS BETWEEN TIMESTAMP MINVALUE AND MAXVALUE where
VERSIONS_STARTTIME IS NOT null ORDER BY VERSIONS_STARTTIME DESC;
查出來的第一條就是最后改變的數(shù)據(jù)
2、如果表里面有序列或固定的排序字段可按倒排序后取第一條
where rownum2 order by 排序字段 desc
3、還有另外一種辦法就是利用ORACLE偽列rowid
select * from tbl t1 where t1.rowid=(select max(rowid) from tbl t2)
4、在redo log中找到對應(yīng)相關(guān)的表的插入語句,但是這樣找到的是sql語句,而不是數(shù)據(jù)。查redo log得使用log miner工具
如果是plsql代碼塊,使用returning into 結(jié)果集,獲取id;
如果是單獨sql語句,若id是序列可用序列名.currval獲取id值,但是出現(xiàn)并發(fā)情況可能獲取有誤;若非序列,需根據(jù)業(yè)務(wù)情況編寫sql獲取。
以上。