在DBA_SEQUENCES,USER_SEQUENCES,ALL_SEQUENCES中有。具體列你可以
創(chuàng)新互聯(lián)專注于文圣網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供文圣營(yíng)銷型網(wǎng)站建設(shè),文圣網(wǎng)站制作、文圣網(wǎng)頁(yè)設(shè)計(jì)、文圣網(wǎng)站官網(wǎng)定制、小程序定制開發(fā)服務(wù),打造文圣網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供文圣網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
DESC DBA_SEQUENCES;查看
比如:
SQL select SEQUENCE_OWNER,SEQUENCE_NAME from dba_sequences where sequence_owner='DBSNMP';
SEQUENCE_OWNER SEQUENCE_NAME
------------------------------ ------------------------------
DBSNMP MGMT_RESPONSE_CAPTURE_ID
DBSNMP MGMT_RESPONSE_SNAPSHOT_ID
SQL select count(*) from dba_sequences where sequence_owner='DBSNMP';
COUNT(*)
----------
2
執(zhí)行如下sql:
select * from user_sequences;
如果需要查看某個(gè)特定的序列,如下:
select * from user_sequences ?where ?sequence_name like '%T_SELL_BRAND%';
select * from user_sequences ?where ?sequence_name='SEQ_T_SELL_BRAND';
注意:序列名區(qū)分大小寫。
根據(jù)具體問題類型,進(jìn)行步驟拆解/原因原理分析/內(nèi)容拓展等。
具體步驟如下:/導(dǎo)致這種情況的原因主要是……
你的問題很籠統(tǒng),你是想知道序列的當(dāng)前值嗎?select 序列.nextval from dual就可以了,這個(gè)查出來的就是當(dāng)前序列下一個(gè)可以使用的值,序列每讀一次都會(huì)加1的,比如這次的序列.nextval是18,你下次使用的時(shí)候就是19了
查詢當(dāng)前用戶的
1select * from user_sequences
查詢所有的
1select * from all_sequences
其中sequence_name就是序列的名字
) 建立序列命令
CREATE SEQUENCE [user ]sequence_name
[increment by n]
[start with n]
[maxvalue n | nomaxvalue]
[minvalue n | nominvalue];
INCREMENT BY 指定序列號(hào)之間的間隔 該值可為正的或負(fù)的整數(shù) 但不可為 序列為升序 忽略該子句時(shí) 缺省值為
START WITH 指定生成的第一個(gè)序列號(hào) 在升序時(shí) 序列可從比最小值大的值開始 缺省值為序列的最小值 對(duì)于降序 序列可由比最大值小的值開始 缺省值為序列的最大值
MAXVALUE 指定序列可生成的最大值
NOMAXVALUE 為升序指定最大值為 為降序指定最大值為
MINVALUE 指定序列的最小值
NOMINVALUE 為升序指定最小值為 為降序指定最小值為
) 更改序列命令
ALTERSEQUENCE [user ]sequence_name
[INCREMENT BY n]
[MAXVALUE n| NOMAXVALUE ]
[MINVALUE n | NOMINVALUE]
修改序列可以
? 修改未來序列值的增量
? 設(shè)置或撤消最小值或最大值
? 改變緩沖序列的數(shù)目
? 指定序列號(hào)是否是有序
) 刪除序列命令
DROP SEQUENCE [user ]sequence_name
從數(shù)據(jù)庫(kù)中刪除一序列
創(chuàng)建一個(gè)序列號(hào)的語(yǔ)句
CREATE SEQUENCE EXAM_NO_SEQ
START WITH
MAXVALUE
MINVALUE
CYCLE
CACHE
NOORDER;
PB中取序列號(hào)的用法
string? v_exam_no
//獲取申請(qǐng)序號(hào)
SELECT exam_no_seq nextval INTO :v_exam_no FROM dual
using ghis_database;
if ghis_database SQLCODE then
messagebox( 取檢查序號(hào)出錯(cuò) )
return
end if
其他版本
oracle中沒有自增類型的字段的 所以通常情況下需要定義一個(gè)sequence來作為自動(dòng)增長(zhǎng)類型字段的數(shù)據(jù)
于是記錄了一些關(guān)于oracle sequence的資料 已備查用!
Oracle中的序列(sequence)
: 如何定義一個(gè)序列
僅向前的數(shù)字變量(和SQL中的自動(dòng)編號(hào)有點(diǎn)像 identity( ) )
格式:
create sequence 序列名稱
start with 起始數(shù)
increment by 增長(zhǎng)量
[maxvalue 值]
[minvalue 值]
[cycle 當(dāng)?shù)竭_(dá)最大值的時(shí)候 將繼續(xù)從頭開始]
[Nocycle 一直累加 不循環(huán)]
[Cache ]
注意
第一次NEXTVAL返回的是初始值;隨后的NEXTVAL會(huì)自動(dòng)增加你定義的INCREMENT BY值 然后返回增加后的值 CURRVAL 總是返回當(dāng)前SEQUENCE的值 但是在第一次NEXTVAL初始化之后才能使用CURRVAL 否則會(huì)出錯(cuò) 一次NEXTVAL會(huì)增加一次SEQUENCE的值
如果指定CACHE值 ORACLE就可以預(yù)先在內(nèi)存里面放置一些sequence 這樣存取的快些 cache里面的取完后 oracle自動(dòng)再取一組到cache 使用cache或許會(huì)跳號(hào) 比如數(shù)據(jù)庫(kù)突然不正常down掉(shutdown abort) cache中的sequence就會(huì)丟失 所以可以在create sequence的時(shí)候用nocache防止這種情況
example:
create sequence mySeq
start with
increment by
maxvalue
minvalue
cycle
:怎么去取序列數(shù)據(jù):
currval curenvalue
nextVal NextVlaue
example:
select mySeq nextVal from dual
注意一點(diǎn):currval只有當(dāng)nextVal執(zhí)行一次以后才可以用
在創(chuàng)建表的時(shí)候 可以使用序列
具體例子:
create table 公司基本信息表
(
ComPID int
CompName varchar ( )
)
insert into 公司基本信息表 values(mySeq nextVal AA )
:如何修改序列
修改前提是sequence 的owner 或者有ALTER ANY SEQUENCE 權(quán)限才能改動(dòng)sequence 可以alter除start至以外的所有sequence參數(shù) 如果想要改變start值 必須 drop sequence 再 re create
Alter sequence 的例子
ALTER SEQUENCE emp_sequence
INCREMENT BY
MAXvalue
CYCLE 到 后從頭開始
NOCACHE
影響Sequence的初始化參數(shù)
SEQUENCE_CACHE_ENTRIES =設(shè)置能同時(shí)被cache的sequence數(shù)目
也可以這樣
alter sequence mySeq maxvalue
注意 不能改start with 其他隨便改(設(shè)置minvalue值的時(shí)候不能大于當(dāng)前值)
:如何查看刪除某個(gè)表空間所有序列
查看
select * from user_sequences
如何刪除:
drop sequence 序列名稱
sequence屬于什么對(duì)象
sequence不屬于某個(gè)表 也不屬于某個(gè)字段 sequence僅僅屬于某個(gè)用戶
lishixinzhi/Article/program/Oracle/201311/17518
這幾天做性能優(yōu)化 網(wǎng)上找了些資料
有時(shí)候需要導(dǎo)出某用戶下的所有table view sequence trigger等信息 下面的SQL可以將這些信息select出來
select * from user_tables;
select * from user_views;
select * from user_sequences;
select * from user_triggers;
想查找表的數(shù)據(jù)條數(shù)
試試這個(gè)
select t table_name t num_rows from user_tables t
如果沒有值 那就創(chuàng)建個(gè)函數(shù)
代碼
create or replace function count_rows(table_name in varchar
owner in varchar default null)
return number
authid current_user
IS
num_rows number;
stmt varchar ( );
begin
if owner is null then
stmt := select count(*) from ||table_name|| ;
else
stmt := select count(*) from ||owner|| ||table_name|| ;
end if;
execute immediate stmt into num_rows;
return num_rows;
end
再執(zhí)行查詢
lishixinzhi/Article/program/Oracle/201311/18185