Oracleシーケンスの欠番確認方法、再起動しても欠番は発生しない理由は?

このQ&Aのポイント
  • Oracleのシーケンスの欠番を確認したいが、再起動しても欠番が発生しない状況に悩んでいます。
  • サービスの再起動やインスタンスの再起動を試しましたが、シーケンスの欠番が確認できませんでした。
  • 通常運用時にデータベースが起因してシーケンスの欠番が発生することを確認したいです。
回答を見る
  • ベストアンサー

oracle シーケンスの欠番を確認したい

いつもお世話になります。 oracleのシーケンスの欠番を確認したいのですが、以下のようにサービス、インスタンスの再起動を試してみたのですが欠番はおきませんでした。 ・サービスの再起動 コントロールパネルから、サービスを開いて、「OracleServiceXE」、「OracleXETNSListener」の再起動。 シーケンスをselectした結果、欠番確認できず。 ・インスタンスの再起動 コマンドプロンプトを起動し、sqlplusから、sysdbaでoracleに接続。 shutdown、startupコマンドを行い、インスタンスを再起動。 シーケンスをselectした結果、欠番確認できず。 インスタンスの再起動を行えば欠番がおきる、というのをサイトで見たのですが、欠番は起きませんでした。なぜ起きないのでしょうか。 何か手順に不備があるのでしょうか。 alter system文による欠番は確認しています。 しかし、意図的にこのコマンドを発行しなければよいので、確認したいのは、通常運用時、データベースが起因してシーケンスの欠番が発生してしまう、ということです。 再起動などは普通に行うと思うので、その際に欠番が発生することを確認したいのです。 宜しくお願いします。 oracle:Oracle Database 11g Express Edition Release 11.2.0.2.0 OS:Windows Vista Home Promium 64bit

  • Oracle
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.2

こんにちわ。 > 元々キャッシュに関してはデフォルトのまま(20)で試してますが、欠番は確認できていません。 > 以前のoracleのバージョンだと欠番されていたが、11gだと起きないものなのでしょうか? Sequence から採番した時に、SGA (Shared Pool) にCache されるので、 事前に「select seq1.nextval from dual;」とか行って、アクセスしておかないと Cache されません。 11g (11.2.0.3) で最近確認しましたが、Shared Pool をFlush しただけで普通に 欠番が発生していました。 書き忘れましたが、RAC 環境だったりすると、1Node を再起動しても、もう1Node が 情報を持ってたりするらしく、欠番は発生しませんでした。

その他の回答 (1)

  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.1

こんにちわ。 > なぜ起きないのでしょうか。 Sequence がCache されていないのだと思います。 Default では、Cache されるので SQL> Create sequence seq1; SQL> select seq1.nextval from dual; としてから、インスタンスを再起動してみて下さい。

narukami521
質問者

お礼

返答ありがとうございます。 元々キャッシュに関してはデフォルトのまま(20)で試してますが、欠番は確認できていません。 以前のoracleのバージョンだと欠番されていたが、11gだと起きないものなのでしょうか?

関連するQ&A

  • Oracleの起動時に、マウントしたりしなかったりで困っています。

    初めまして。Oracleの知識が薄く困っております。 よろしくお願い致します。 さて、現象ですがPC起動と同時にOracleが起動するように設定しているのですが、 マウントまで行ったり行かなかったりで困っております。 (起動する度に現象が異なります) Ver:ORACLE V10.1.0.2.0 OS :WindosXP SP2 アラートログを確認しますと、 XXXX started with pid=Y(XXXX=SMONだったりRECOだったり・・・) の直後に、 alter database mount exclusive のコマンドが続く場合は、うまく立ち上がるようです。 しかし、 XXXX started with pid=Y の後に何もない時はマウントできていないようです。 また、 (1) > sqlplus /nolog (2) SQL> connect sys/aaaa@bbbb as sysdba (3) SQL> select status from v$instance; とすると、「STARTED」状態であり、 SQL> alter database mount; SQL> alter database open; とすると、正常に動作するようになります。 oradim.logを確認すると、  ORA-01012: not logged on  ORA-24324: service handle not initialized が出ていますが、どこから調査をすればいいのか暗闇の中です。 お助言頂きますようお願い致します。

  • oracle sequence

    oracleのシーケンスでdual表からselect文のnextvalで取得したものをインサート したいのですが、ループ内で上記処理を複数回行ったときに、値が一回目以降 更新されずに困っています。 例) for (i=0;i < 5){ (1)セレクト文発行しシーケンスを取得。 (2)取得したシーケンスを変数にセット (3)インサート実行(主キーに取得したシーケンスをセット) } こんな感じで実行したときに、はじめはシーケンスが+1されますが、 それ以降シーケンスが増加しません。そのため、重複エラーが発生してしまいます。。。 どのように対処したらよいのかまったく見当がつきません。 大変申し訳ないのですが、ご教示いただきたくよろしくお願い申し上げます。

  • Oracle sqlplusで接続できなくない

    お世話になっております。 Oracle11gを使っています。 PROCESSESの値を変えようとして、 以下のコマンドを実行しました。 ALTER SYSTEM SET PROCESSES = 10 SCOPE = SPFILE; Oracleを再起動した後、 sqlplusを使ってログインできなくなってしまいました。 表面的には、 ORA-12514: TNS: リスナーは接続記述子で要求されたサービスを現在認識していません。 というメッセージなのですが、サーバのログに以下の記述を見つけました。 ORA-00444: background process "MMAN" failed while starting ORA-00020: maximum number of processes () exceeded PROCESSESの値が小さすぎたようです。 SPFILEに定義されているので、 変更するにはsqlplusで接続して、 再度ALTER SYSTEM コマンドを実行すると思うのですが、 そもそもsqlplusで接続できないので、変更することができません。 データベースOpen時に、 nomoutにしてPFILEから起動しようとするとしても、 これもまた、接続できないので、使えない手段でした。 また、SPFILEのバックアップも取っていなかったので、どうにもなりません。 この窮状から復旧する方法について、教えていただければ幸いです。 よろしくお願いします。

  • ORACLE XEでインスタンスが自動起動しない

    【環境】 ・WindowsServer2012 R2 Standard ・Oracle Database 11g R2 Express Edition お世話になります。 上記環境にて、OracleXEのインストールを行ったのですが、 Windows起動時にインスタンスが自動起動してくれずに困っています。 XEとリスナーのサービスはどちらもスタートアップの種類を"自動"としており、 実際に、Windowsが起動するとサービス自体は問題なく開始状態になっています。 ただ、その状態でsqlplusなどでOracleに接続する際、 SYSDBA権限を持ったユーザであれば接続可能なのですが、 ※「アイドル・インスタンスに接続しました」というメッセージが表示されます。 一般ユーザで接続しようとすると ORA-01034:Oracle not available ORA-27101:shard memory realm dose not exist となり、接続できません。 インスタンスが起動していないからということはわかりましたが、 自動でインスタンスを起動させるにはどのようなことを行えばよいのでしょうか。 ※手動であればSYSDBAユーザでstartupをかければいいということはわかっております。 自動起動させるようなバッチファイルを作成する方法や、 最悪レジストリをイジったりといった手段もアレコレ探してみましたが これといった情報は得られませんでした。 何かお分かりになる方いらっしゃいましたらご教示の程宜しくお願い致します。

  • OracleのSQLPLUSログインについて

    sqlplusにてデータベースにアクセスできません。 どなたか知恵をお貸しください。 環境は、LinuxにOracle10gをインストールしました。 インストールと同時にデータベース(orcl)を作成しました。 インストールしたマシンにて、sqlplusを実行してみようとしているところです。 Oracleのインストール、データベースの作成が終了し、 コマンドラインから"sqlplu /nolog"を実行し、データベースに 接続しようとしましたが、エラーと表示されます。 コマンド、エラーは以下の通りです。 SQL> conn sys/manager as sysdba ERROR ORA-12162: TNS:net service name is incorrectly specified Oracleのインストール、データベースの作成を行った Linuxのユーザは"oracle"です。 この場合、ユーザ名はoracleが正しいのでしょうか?

  • オラクルに接続できない

    すみません、オラクルに接続しようとすると、 「ORA-01033:Oracleの初期化またはシャットダウン中です」とメッセージが表示され、 接続できません。 そこでsysdbaで接続し、shutdownを行った後にstartupを行うと、 「ORA-12514: TNS: リスナーは接続記述子でリクエストされたサービスを現在認識していま せん」とメッセージが表示され、復旧できない状態です。 どのようにすれば復旧・接続できるようになるのでしょうか? ちなみにオラクルはoracle11gです。

  • 特権ユーザーって?

    Oracle9iで質問です。 OS認証が設定されていて、 サーバー上のsqlplusから" / as sysdba"でログインすると、 「アイドルインスタンスに接続しました。」と表示されました。 DB名とか指定していないですが、 これはどのDBに繋がったんですか? 1DB1インスタンスの構成なので、 この場合に限って指定する必要はないとかでしょうか? nDBnインスタンスの場合は? その後、startupし、テーブルを作ってみたところ、OWNERはSYSになっていました。 これは、SYSDBA権限でOracleに認証された人は、 DB内ではSYSとして扱われるという事ですか?

  • PLSQL内で実行したSQLの結果をVBに渡したい。

    VBからas sysdba でオラクルに接続できないそうなので、 VBからSQLPLUSを起動し、PLSQLを実行させることで代行しようと考えています。 そのPLSQL内で実行したSQLの結果をVB側に渡したいのですが、 何かよい方法はないでしょうか? よろしくお願い致します。

  • ORACLE9iのリカバリ方法

    ORACLE9iのリカバリ方法を教えてください。 Windows server 2003 R2、Oracle9iを使用しています。 Cドライブにoracleをインストール、Dドライブにoracleのデータを格納しています。 Cドライブのハードディスクが駄目になったので、Cドライブのハードディスクを交換して Windows server 2003 R2をインストールして Windowsの標準機能のバックアップ(バックアップデータには、system stateも含んでいます。)からバックアップしておいたデータを復元させました。 ファイル単位のデータや、オラクルのサービスは復旧したのですが、オラクルのテーブルなどが開きません。 SI ObjectBrowserでオラクルを開こうとしたとき、 「ORA-01219:データベースがオープンしていません。固定の表/ビューに対する問合せのみ可能です。」 というメッセージが表示されます。サービスの再起動をしましたが、同じようなエラーがでます。 SQLPLUSで、alter database openのコマンドを入れてデータベースをオープンさせようとしたところ、 次のようなエラーが出てきました。 ORA-01122:データベース・ファイル8の照合検査でエラーが発生しました。 ORA-01110:データ・ファイル8:'D:ORACLE^ORADATA\SFRES\USER01.DBF' ORA-01207:ファイルが制御ファイルより新しくなっています。-古い制御ファイルです。 どなたか、解決方法をご存知の方、ご教授ください。

  • オラクルDBからのデータ取得について

    こんばんわ。 オラクル(sqlplus)についての質問2点です。 (1)シェルからオラクルDBへアクセスし、データを取得したいのですが、  select時に、結果のヘッダーをつけずに結果(データ)のみをファイル出力することは可能でしょうか? (DB2で言うところの「-x」オプションのような・・・) (2)エラー時にSQLコードを取得したいのですが、SQLコードをファイル出力することは可能でしょうか? オラクルは初心者で、行き詰まってしまいました・・・ どうかよろしくお願いします。