iT邦幫忙

1

Oracle 序列越來越大,想重新開始

  • 分享至 

  • xImage

目前爬文,作法有:

  • 直接修改序列,從1開始每次加1
  • 刪除序列重建,編譯觸發器
  • 修改序列增長為負的,在手動查詢一次,接著改回1
  • 重建同名序列

都感覺毛毛的阿,這些都要停機的吧
請問正式環境做法如何做呢?
跟上面的優缺點

看更多先前的討論...收起先前的討論...
yesongow iT邦大師 1 級 ‧ 2018-03-25 21:40:41 檢舉
花錢請顧問!他們會給你解答。
ccchiou iT邦新手 5 級 ‧ 2018-03-26 16:12:20 檢舉
1.Alter sequence沒辦法指定currval
2.drop掉再重建則可能讓部份有參考到該sequence的DB object(package/trigger/...)fail掉
3.沒試過
4.同名序列建不起來啦~
應該讓使用該db的人暫時登出,然後
Alter sequence seq名 maxvalue seq名.curval cycle;
Select seq名.nextval from dual;
Alter sequence seq名 maxvalue 原來的maxvalue;
C# SMI iT邦新手 5 級 ‧ 2018-03-26 16:13:38 檢舉
謝謝ccchiou,學習了
原來可以這樣做
將序列的最大值設為目前的數字,並設置cycle
這時把序列加一,序列就會超過最大值而從一開始
接著再把序列最大值還原成原來的
就達到序列重置的目的,學習了+1 XD
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

5
暐翰
iT邦大師 1 級 ‧ 2018-03-26 14:07:20
最佳解答

不想停機,又想讓sequence重頭開始
可以運行
ALTER SEQUENCE SEQUENCE的名稱 CYCLE;

就可以在達到上限時重頭開始

否則超過sequence上限會報出ora-08004錯誤

我要發表回答

立即登入回答