• ベストアンサー

oracle8iでのシーケンス作成

こんにちは。教えてください。 oracleのシーケンスなんですが、シーケンスを作成するときに cycleでmax値を超えると値が元に戻るっていうのがあると思うのですが、 それと同様に、たとえば2001年から2002年に変わったタイミングで シーケンスの値を1に戻す、という設定方法はあるのでしょうか。 よろしくご教授ください。

  • sunnys
  • お礼率95% (176/185)

質問者が選んだベストアンサー

  • ベストアンサー
  • yuji
  • ベストアンサー率37% (64/169)
回答No.1

UNIX,Linuxの場合ならシェルを組んで その中でSQL*Plusを呼び出して、 シーケンスの値を1にするようなSQLを実行すればいいでしょう。 (シェルの中で環境変数を設定することを忘れずに) そのシェルをcronから2002/01/01 00:00:00に呼び出すことで実装できます。 Windows系もcronに似たようなコマンドがあるでしょう。 ATコマンド?

sunnys
質問者

お礼

回答ありがとうございます。 今回NTサーバなのですが、NTのスケジューラは使わない方向でとの話なので、DBMS_JOBにてSQLPLUSかPL/SQLを呼び出すような形にしようかと思っています。 ただDBMS_JOBもPL/SQLもほとんど使ったことが無いのでそれで実現できるかどうかはまだ調べなければいけないのですが。。。 もし他の方法などありましたらまた教えてください。 ありがとうございました。

関連するQ&A

  • oracleのシーケンスについて

    こんにちは。oracleのシーケンスについて教えてください。 次のようなシーケンスを作成します。 CREATE SEQUENCE SQC_TEST INCREMENT BY 1 START WITH 1 MAXVALUE 999999 MINVALUE 1 CASHE 20 CYCLE / この時、キャッシュ分の20という値は、いつどこでクリア?されるのか知りたいのです。 一番最初はシーケンスをクリエイトした時にキャッシュが20確保されると思うのですが、次にキャッシュが確保されるタイミングっていつなんでしょう? 最初の20を使い果たした時?それともシーケンスを作成してあるインスタンスをリブートした時?? というのは、設定したシーケンスが、実際発番していないのに一日ごとに20ずつカウントされていってるので原因をつきとめたいのです。 とりあえずはNOCACHEに設定してありますが、原因がわかれば、と思い質問させていただきました。 何かアドバイスいただけたらと思います。宜しくお願いいたします。

  • オラクルのシーケンスについて

    オラクルの連番(シーケンス)の振り方について一つお聞きしたい事がございます。 Insert時にシーケンスを使い、0から100まで順に連番を振りたいの ですが、100に到達する前に、あるタイミングで現在値を0に戻して 再び1から連番を振りたいんです。 ちなみにあるタイミングを、下記に簡単に例として書きます。 (1)ファイルから1レコードずつデータを読み込む。  (1)初回は何もチェックせずInsertをし、先頭から4バイトまでの値を変数に格納  (2)2レコード目以降は、先頭から4バイトまでの値を前回の値(変数)と比較   True(値が同じ)  ⇒順番に連番を振る   False(値が違う)  ⇒新たに0から連番を振る。              変わった値を変数に格納する。 (2)Insertをする。 私の知っている知識で行けば、シーケンスは1テーブルで一つのシーケンス しか使用できなかったはずですが・・・なにぶん知識がないので、もしか したら出来たのかな?と思ったので質問しました。 上に書いた事が可能であるかどうか教えてください。 よろしくお願いします。

  • SQLServerでOracleシーケンスのような機構を実現するには

    いつもお世話になります。 SQLServerで自動採番される仕組みで何かいい方法がないかどうか悩んでいます。 主キーとなる項目に自動採番された値を、アプリケーションでセットした上で、DBに追加する仕組みを考えています。 OracleではSequenceのnextvalなどを使用すれば、番号を自動採番したものを取得することが可能ですが、 SQLServerでこのような仕組みを実現するために何か良い方法はありませんでしょうか? (追加先のDBはSQLServerではなく、自動採番等の機能も無いため、追加する前にアプリケーションでセットする必要がある。) 今までOracleしか使用したことが無く、SQLServerは初めてなので、ご教授頂きたく投稿しました。 よろしくお願いします。 SQLServerは2005を使用しています。

  • サイクルシークエンス法について

    DNA考古学の論文を読んでいるとサイクルシークエンス法という言葉がでてきました。このサイクルシークエンス法とは一体どのようなものなのでしょうか?もしくはシークエンスするとは一体どういう動作なのでしょうか?よろしくご教授願います。

  • Oracle 10gで順序sequenceの作成(定義)した内容を見るには?

    Oracle 10gで順序sequenceの作成(定義)した内容を見るにはどうしたらよいのでしょうか? desc sequence_nameでは SP2-0381: DESCRIBE sequenceは使用できませんと表示されます。

  • シーケンス取得について

    AスキーマとBスキーマがあり AにはSというシーケンスが作成されて、GRANTでBに権限付与されています。 BのUSER_SEQUENCESにはもちろん存在しないため、 SELECT MAX_VALUE FROM USER_SEQUENCES WHERE SEQUENCE_NAME でMAX_VALUEの取得でエラーになります。 これを回避する方法ってありますでしょうか?? もしくはBのUSER_SEQUENCES に追加する方法がありますでしょうか? どなたかお願い致します。

  • sequenceの値の表示

    Oracle9iを使用しています。 create sequence ClientNum start with 101; という生成プログラムを作りました。 これの値を表示させたいのですが、どうやったらいいのでしょうか。

  • SEQUENCEのEXPORT

    当方ではORACLE8.0.5 OSはsolaria2.6を使用しています CREATE SEQUENCEで作成したものを 別のDBに移行したいのですが移行先のDBにもすでに同じ名前のSEQUENCEがあるため まずこれを削除してから移行元のDBのSEQUENCEをIMPORTしようと考えております 質問ですがUSERに作成されたSEQUENCEをEXPORTする方法を教えてください よろしくお願い致します。

  • Oracleのシーケンスありのテーブル作成について

    Oracleのテーブルを作るのに、ある列を自動で「全体の通し番号」みたいなユニーク(一意)な番号を振りたいく、 シーケンス(sequence)を作成しテーブルを作ろうとしているのですがうまくいきません。 どこがわるいのでしょうか。 create sequence "yamaaf_seq"; CREATE TABLE TBL_AFFILIATE_SESS( UNIQ_ID NUMBER(11,0) DEFAULT nextval('yamaaf_seq') NOT NULL, ORG_CODE VARCHAR2(64) NOT NULL, primary key("UNIQ_ID"));

  • oracleのsequenceについて

    oracle masterのオラクル入門の勉強をしています。 知識があやふやなので教えてもらいたいのですが、 オブジェクトであるsequenceにアクセスできるのは 作成したユーザーのみ(そのスキーマ内)? or 複数のユーザー(全てのスキーマ内)でも可能? どちらでしょうか? スキーマの名前が変更されているかもしれませんが、 スキーマとユーザーは同じ意味ですよね?