お世話になります。
当方、毎朝バッチにてOracleの停止/起動を行っております。

しかし本日、Oracleの停止が正常にできませんでした。
alert_SID.logを見たところ、該当時間に以下のような
メッセージが表示されておりました。

SHUTDOWN: Active sessions prevent database close operation

「有効セッションが存在したため、DBをshutdownできませんでした。」との内容に見受けられますが、当方、
シャットダウンコマンドを -immediate で仕掛けております。

何故Oracleが停止できなかったのか、なにかお分かりに
なる方がいらっしゃいましたら、お手数ですが、ご教示
いただけると助かります。

ちなみに環境は以下の通りです。
OS:Windows2000 server SP4
DB:Oracle 9.2.0.4

このQ&Aに関連する最新のQ&A

A 回答 (3件)

#2へ



オラクルのサポート情報をみだらに公開してはなりません。
あきらかなサポート契約違反です。
    • good
    • 0

以下、KROWN60805からの抜粋です。



--------------------------------------------------
Oracle9i Database Release2 から仕様が変更され、
shutdownがセッションのログオフやアクティブ・コールの終了を1時間待機し続けた場合には、shutdown処理がキャンセルされるようになりました。
--------------------------------------------------

データベースが正常に稼動していた場合、SHUTDOWN前に大量の更新を含む処理などを行っていると、ロールバック(immediate shutdown時の動作)に1時間以上かかることはあり得ます。

データベースが異常な動きをしていた場合もありますので、その時間帯のダンプファイル(Oracle)やイベントビューア(OS)に何らかの警告やメッセージが出力されていないか調査してください。

また、キャンセルされたデータベースはステータスがshutdown状態になりますので、再起動を行う必要があります。(immediateでshutdownできない場合、abortで行ってください。)
    • good
    • 0

シャットダウン直前にそのサーバーのOSかOracleでリソースを大量消費または長時間にわたる作業が行われてなかったかをご確認願います。

    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aと関連する良く見られている質問

QOracleがシャットダウンできません

SolarisでOracleを動かしていたのですが、端末エミュレーターで
SVRMGR>shutdown
と打っても
SVRMGR>shutdown

↑ここにプロンプトが点滅し続けるのみで一向に落ちません。裏で他にサーバーマネージャーを起動してもないです。javaとSQLを使っていて、反応しなくなって閉じることのできないプログラムが2つ残ってます。どうすればshutdownできるのでしょうか?反応しなくなったプログラムがやはりマズイのでしょうか?プログラムはjavaで書いた、SQLを使った簡単なものです。
他に必要な情報がありましたら追記しますので、よろしくお願いします。

Aベストアンサー

Oracleは、Oracleに接続しているプロセスがいると、shutdownでは落とせません。
キレイに落とすには、shutdownを行う前に クライアントアプリケーションからの接続をすべて切っておく必要があります。
今回の場合、そのプログラムが閉じることができないということですので、Oracleを強制的に落としてしまうか、若しくはそのセッションを強制的に切ってやってその後にshutdownですね。
前者の場合、
まず、shutdownで とまっているのを Control + C で元に戻し、

SVRMGR> shutdown immediate

で落としてみてください。 これは、クライアントが何も作業をしていない状態であれば、接続を自動で切ってくれます。
これで無理であれば、

SVRMGR> shutdown abort

としてください。
これは、強制的にshutdownします。
このあと、startupを行うと、Oracleは自動でデータベースをリカバリしてくれます。

後者については、
Alter system kill session というコマンドを使うのですが、これについては、もう少し作業が複雑になりますので、マニュアルをみて調べるかしてみてください。ここで説明するとながくなってしまうので。。。

Oracleは、Oracleに接続しているプロセスがいると、shutdownでは落とせません。
キレイに落とすには、shutdownを行う前に クライアントアプリケーションからの接続をすべて切っておく必要があります。
今回の場合、そのプログラムが閉じることができないということですので、Oracleを強制的に落としてしまうか、若しくはそのセッションを強制的に切ってやってその後にshutdownですね。
前者の場合、
まず、shutdownで とまっているのを Control + C で元に戻し、

SVRMGR> shutdown immediate

で落と...続きを読む

Qデータを削除しても表領域の使用率が減りません

いつもお世話になっております。

今使用している表領域の使用率が高くなってきたため、
不要なテーブルやデータを削除しました。

ですが、少ししか使用率が減らず困っています。

テーブルを削除した際にはPURGE RECYCLEBINで、BIN~のテーブルも
消しています。

何か他に原因があるのでしょうか?

Aベストアンサー

前の方のおっしゃるとおり、DELETEしただけでは領域は開放されません(ハイウォーターマークが下がらない)ので、以下を試してみてください。

1.該当テーブルの全件削除で良い場合
truncate テーブル名 drop storage;
を実行する。
これで領域も開放されます。(最後のところをreuse storageとすると領域保持する意味となる)

2.部分的にdeleteして、領域を開放したい場合
alter table テーブル名 enable row movement;
alter table テーブル名 shrink space cascade;
alter table テーブル名 disable row movement;
を実行する。
1行目は領域開放の前準備、3行目は1行目の変更を元に戻す意味。
2行目でcascadeしておくと、関連インデックスの領域も一緒に縮小してくれます。

Qsqlplusで表示が変なので、出力を整形したい。

いつもお世話になっています。

サーバにアクセスしてsqlplusで、
データを調べたいのですが、
出力形式が見づらくて困っています。

よくわからいのですが、
---------------------------
カラム名1
---------------------------
カラム名2
---------------------------
カラム名3
---------------------------
1の値 2の値
3の値
---------------------------
カラム名1
---------------------------
カラム名2
---------------------------
カラム名3
---------------------------

上記のように意味不明な形式で出てきます。

例えばこんな風に

select カラム1,カラム2,カラム3 from hoge;

カラム1 1の値
---------------------------
カラム2 2の値
---------------------------
カラム3 3の値

等のように分かりやすく表示できないでしょうか?

ちなみにOracle9iR2を使用しています。
sqlに関するツールは使用できないルールでして、あくまでsqlplusのコマンド上でみやすくしなければなりません。

分かりづらくですいませんが、皆さま、ご教授お願いします。

いつもお世話になっています。

サーバにアクセスしてsqlplusで、
データを調べたいのですが、
出力形式が見づらくて困っています。

よくわからいのですが、
---------------------------
カラム名1
---------------------------
カラム名2
---------------------------
カラム名3
---------------------------
1の値 2の値
3の値
---------------------------
カラム名1
---------------------------
カラム名2
---------------------------
カラム名3
-----------------------...続きを読む

Aベストアンサー

SQLPLUSを起動して、

SQL>set linesize 列数

でどうだ。

SQL>show linesize

で確認ができる。

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

初めまして。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の知識が薄く困っております。
よろしくお願い致します。

さて、現象ですがPC起動と同時にOracleが起動するように設定しているのですが、
マウントまで行ったり行かなかったりで困っております。
(起動する度に現象が異なります)
Ver:ORACLE V10.1.0.2.0
OS :WindosXP SP2

アラートログを確認しますと、
XXXX started with pid=Y(XXXX=SMONだったりRECOだったり・・・)
の直後に、
alter database mount exclusive
のコマンドが続く場合は、うまく立ち上がるようです。
しか...続きを読む

Aベストアンサー

なんとなく、ORACLE_SIDの環境変数の設定あたりが怪しそうな
気がしますが・・・

障害に対する情報ではないのですが、参考として。

Windowsプラットフォームの場合、データベースの起動は
バッチ処理で起動するようにします。
サービス起動時にDBインスタンスも起動する設定をしないようにし
(1)ORACLE_SID環境変数の設定
(2)サービスの起動(net startコマンド)
(3)sqlplusでstartupの実行
(4)listenerの起動(lsnrctlコマンド)
を実行するバッチをグループポリシーのスタートアップスクリプト
などに登録します。
バッチの結果をリダイレクトしておけば、エラーになったときも
確認取れますし。

終了もサービスに頼らずにシャットダウンするバッチを作成し
グループポリシーのシャットダウンスクリプトに登録します。

QOracleのsystem表領域について

ORACLE初心者です。

system表領域がいっぱいになる現象が発生しました。(使用率98%)
原因調査を依頼されましたが、system表領域がどのような要素で
構成され、増えていくのか分かりません。

(環境)
Windows2000Server
Oracle 8.1.6 WorkGroupServer

ユーザのデフォルト表領域はちゃんと指定しているとの事です。
何か情報がありましたら、教えていただきたくお願いします。

Aベストアンサー

SQL*PLUSを起動し、一般ユーザが使用しているユーザIDで
ログインしてください。

そして、
select table_name,tablespace_name
from user_tables;
を実行します。

テーブル名と表領域名が表示されますので、表領域systemを
占有しているテーブル名がわかるかと思います。

QDirコマンドでフォルダ内ファイルの合計サイズをだすには?(コマンドプロンプトにて)

いろいろ調べましたが不明な点があり、質問します。

WindowsのDOSプロンプトでdirコマンドを打つとフォルダ・ファイルの一覧が表示されますが、その中にファイルサイズが表示されています。
このサイズを合計できるコマンドはありませんか?
DIRコマンドのオプションを調べましたがそれらしいものが見当たりません。
具体的には
C:\xxx\配下に50個程度のファイルがあります。
その50個の合計サイズを知りたいです。
xxxフォルダの親フォルダにはアクセス不可です。

ずーっと悩んでいます。よろしくお願いします。

なお、OSはWindowsNTか2000で使用予定です。

Aベストアンサー

カレントドライブ、カレントフォルダを
C:\xxx\
にした状態で、

dir /s /a-d

/sパラメータででサブディレクトリすべてを検索
/a-dパラメータでディレクトリ以外のファイル(つまり属性に関係なくすべてのファイル

これを実行すると最後にファイルの個数とファイルサイズの合計を表示します。

もし、隠し属性のファイルは合計しないのであれば、

dir /s

だけで良いと思われます。

QSQL*PLUSにてデータベース名表示

SQL*PLUSにて、起動時ホスト文字列(データベース)を入力しますが、
そのデータベースをSQL*PLUS上、表示する方法を知りたいです。
どこかテーブルに持っているのか、もしくは、表示コマンドがあるのか、ぜひ教えてください。
以上、よろしくお願いします。

Aベストアンサー

インスタンス名でよいのですか?一応、インスタンス名とホスト名を表示するSQLを書きます。

select INSTANCE_NAME, HOST_NAME from v$instance;

回答が的を射ていない場合は補足をお願いいたします。

Qバッチファイルで昨日の日付を取得

すみません、どなたか教えて下さい。

バッチファイルの記述で、昨日の日付を取得する方法を教えて下さい。
今日の日付は下記のように取得しています。

rem 日時変数の取得
for /f "tokens=1-3 delims=/" %%a in ('echo %date:~-10%') do (set YYYYMMDD=%%a%%b%%c
)

Aベストアンサー

:: ----- prevdate.bat はじめ -----
@echo off
::今日の日付を取得
set yy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
echo 今日は、%yy%年%mm%月%dd%日です。

::1日前の日付を計算する
set /a dd=%dd%-1
set dd=00%dd%
set dd=%dd:~-2%
set /a ymod=%yy% %% 4
if %dd%==00 (
if %mm%==01 (set mm=12&& set dd=31&& set /a yy=%yy%-1)
if %mm%==02 (set mm=01&& set dd=31)
if %mm%==03 (set mm=02&& set dd=28&& if %ymod%==0 (set dd=29))
if %mm%==04 (set mm=03&& set dd=31)
if %mm%==05 (set mm=04&& set dd=30)
if %mm%==06 (set mm=05&& set dd=31)
if %mm%==07 (set mm=06&& set dd=30)
if %mm%==08 (set mm=07&& set dd=31)
if %mm%==09 (set mm=08&& set dd=31)
if %mm%==10 (set mm=09&& set dd=30)
if %mm%==11 (set mm=10&& set dd=31)
if %mm%==12 (set mm=11&& set dd=30)
)
echo 昨日は、%yy%年%mm%月%dd%日です。

echo.
pause
:: ----- prevdate.bat おわり -----

参考URL:http://www.atmarkit.co.jp/fwin2k/win2ktips/419batchdate/batchdate.html

:: ----- prevdate.bat はじめ -----
@echo off
::今日の日付を取得
set yy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
echo 今日は、%yy%年%mm%月%dd%日です。

::1日前の日付を計算する
set /a dd=%dd%-1
set dd=00%dd%
set dd=%dd:~-2%
set /a ymod=%yy% %% 4
if %dd%==00 (
if %mm%==01 (set mm=12&& set dd=31&& set /a yy=%yy%-1)
if %mm%==02 (set mm=01&& set dd=31)
if %mm%==03 (set mm=02&& set dd=28&& if %ymod%==0 (set dd=29))
if %mm%==04 (set mm=03&& set dd=31)
if...続きを読む

Q正規表現でAND検索はできるのでしょうか

正規表現でAND検索はできるのでしょうか?

現在ASPでデータベースのデータを検索しようとしているのですが,検索エンジンみたいに複数の語をスペースで区切って入力して,データを絞り込んで表示したいのです。

OR検索みたいにそれぞれの語を"|"でつなぐというようなやり方があるのでしょうか?
それとも一つ一つの語で検索を繰り返すという方法しかないのでしょうか?

ご存知の方,ご教授ください。

Aベストアンサー

&&でつながれたらいかがですか?

(?=.*stat)(?=.*ate)はAND検索という意味ではありません。
statedのようにstatとateを重複して含む単語にマッチするという意味です。

普通はこんな回りくどいことはせず、
/stat/ && /ate/
で済ませると思います。
(もしくは単純にループでまわしていくとか)


foo.*bar|bar.*foo
も、2語程度までが限界ですよね。
10語分繋げることを考えると気が遠くなります。
(記述も処理時間も)

言語によってはさらに処理を短縮できるような
特有な構文がありますから、調べてみればよろしいかと思います。

QOracle(オラクル)で、日付時刻型の検索方法について

質問させていただきます。
データベースはオラクルを使っていて、
SQL文で、抽出するときにエラーが出て困っています。

日付時刻型が「2005/05/26 19:13:00」という感じで入ってます。
2005/05/26 を抽出したいのですが、
BETWEEN '2005/05/26 00:00:00' AND '2005/05/26 23:59:59'

だと、エラーでできません。
どなた様か、ご教授よろしくお願いしますm(_ _)m

Aベストアンサー

日付検索を行う場合は、以下のように書式を含める必要があります。

col BETWEEN TO_DATE('2005/05/26 00:00:00','YYYY/MM/DD HH24:MI:SS') AND TO_DATE('2005/05/26 23:59:59','YYYY/MM/DD HH24:MI:SS')

ただ、厳密には

col >= TO_DATE('2005/05/26', 'YYYY/MM/DD')
AND
col < TO_DATE('2005/05/27', 'YYYY/MM/DD')

と書くべきでしょうね。


人気Q&Aランキング

おすすめ情報