• ベストアンサー

Oracleで空きがあるのにimportできない

4年程前から稼動しているLinuxシステム(Oracle8i使用)があります。そのシステムでexpしたデータを、別のサーバ(同じくOracle8i)にimpしたいのですが、エラーになってしまいます。 IMP-00003: ORACLE error 1237 encountered ORA-01237: cannot extend datafile 1 ORA-01110: data file 1: '/u01/app/oracle/oradata/orcl/system01.dbf' ORA-19502: write error on file "/u01/app/oracle/oradata/orcl/system01.dbf", bloc kno 202993 (blocksize=8192) ORA-27072: skgfdisp: I/O error Linux Error: 9: Bad file descriptor Additional information: 202993 Import terminated successfully with warnings. いろいろ調べたら SYSTEM にデータを入れるのは良くないということがわかりましたが、このサーバは本番サーバではないので表の中身を select で見れれば十分なので、このままの構成で行かれればと思います。 ディスク容量が不足しているようですが、DBA Studio で調べてみると、SYSTEM 1,608,576KB(1,570MB)中、800,992KB(782MB)使用中と表示されます。 imp したいファイルは 158,880KB(155.2MB)なので空き容量の部分に余裕で入ると思うのですが、データファイルを拡張しようとしているみたいです。 df コマンドの出力は /dev/sda6 2909420 2745980 15644 99% /u01 となり、確かにパーティションの空き容量はないのですが、SYSTEM領域の残り800MBの部分にはインポートできないのでしょうか。

  • haru44
  • お礼率68% (153/223)
  • Oracle
  • 回答数3
  • ありがとう数1

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

  • ベストアンサー
  • masusun
  • ベストアンサー率15% (44/285)
回答No.2

DBの定義情報わかりますか?(init*.ora)db_block_sizeとかcontrol_filesとかです。 Oracleの場合仮に1ブロック100MBであった場合で 現在99MB分使用している状況だとします。 そこへimpなどで2MB分を投入した場合、当然拡張され、DB上101MBとなりますが、 実ファイル(Linuxのdisk)上では新たに100MB分データが増えますよ。 ですので150MBしか追加しないので大丈夫だと思っていても、 拡張された結果、disk上は1GBの空きが必要だったなんてことがあるということです。 あとdfの結果ですが残り容量が「15644」とありますが単位は何ですか?MB? やはりこちらが足らないように感じるのですが・・・

haru44
質問者

補足

回答ありがとうございます。 /u01/app/oracle/admin/orcl/pfile/initorcl.ora の中の定義情報は以下のようになっています。単位はわかりません。 db_block_size = 8192 control_files = ("/u01/app/oracle/oradata/orcl/control01.ctl", "/u02/app/oracle/oradata/orcl/control02.ctl", "/u03/app/oracle/oradata/orcl/control03.ctl") Linuxのファイルシステム上の空き領域は15644Kバイト、つまり15Mバイトしかありません。足りないことは十分承知ですが、拡張は予算的にも不可能な状況です。でも表領域には空きがあるようなので、そこに格納できないかと思っています。 DBA Studioで見ると、使用しているSYSTEM表領域は下記のように表示されます。 1,608,576KB(1,570MB)中、800,992KB(782MB)使用中 つまり800Mバイト近くが空き領域になっているはずなので、ここに格納されて欲しいのです。この800Mバイト近い領域は使われずに、必ず実ファイルが拡張されてしまうのでしょうか? 150Mバイトのデータを追加するために1GBの空き容量が必要だとは知りませんでした。そんなにディスクを無駄遣いするのなら、もうOracleは使いません。

その他の回答 (2)

  • masusun
  • ベストアンサー率15% (44/285)
回答No.3

No.2です。 一点誤解を与えてしまいそうなので補足します。 > 150Mバイトのデータを追加するために1GBの空き容量が必要だとは知りませんでした。そんなにディスクを無駄遣いするのなら、もうOracleは使いません。 その結論は早計ですよ。1GBというのはあくまでたとえ話でした。 単に追加で150M増やしたいからといってもそれ以上diskを使用することもある ということです。大げさすぎましたすいません。 DBはなんだかんだでOracleが一番良いと思いますよ。 規模の大きいものはOracle、小さいものはSQLserverというのが大体の主流ではないでしょうか。 ブロック拡張に関してはデフォルト設定のようですのでもともと たいした規模のDBではないということですね? テーブルスペース【system】の空き領域が800MBほどということですね。 このsystem表領域は実ファイルでは/u01/app/oracle/oradata/orcl/system01.dbfですが ファイルサイズは1.5GBくらいでしょうか? それ以上であれば何らかの理由で既に空き領域が無いことになります。 例えばあるプロック(表領域を細かく刻んだ単位:この場合約8KB単位)が破損していて 使用できないため拡張しようとしていることも考えられます。 通常考えてそれだけの空き容量があればスペース拡張はしないはずです。 一度ブロック破損していないかチェックしてみてはいかがでしょうか? dbvコマンドです。使用例としては以下の通りです。 ※DB停止後 dbv blocksize=8192 FILE=/u01/app/oracle/oradata/orcl/system01.dbf

haru44
質問者

補足

回答ありがとうございます。 ご推測のように、それほど大きなデータベースではありません。 system01.dbf は 1,468,014,592バイト(1.4GB) あります。 dbvを実行してみました。 DBVERIFY: Release 8.1.6.1.0 - Production on Fri Nov 18 14:09:07 2005 (c) Copyright 1999 Oracle Corporation. All rights reserved. DBVERIFY - Verification starting : FILE = /u01/app/oracle/oradata/orcl/system01.dbf DBVERIFY - Verification complete Total Pages Examined : 179200 Total Pages Processed (Data) : 78328 Total Pages Failing (Data) : 0 Total Pages Processed (Index): 74099 Total Pages Failing (Index): 0 Total Pages Processed (Other): 25826 Total Pages Empty : 947 Total Pages Marked Corrupt : 0 Total Pages Influx : 0 Index に意外に多くのページが使われていることと、Other に無視できない量のページが使われていることが気になりました。 Other とは何なのでしょうか。

  • OsieteG00
  • ベストアンサー率35% (777/2173)
回答No.1

この当たりではないかと思うんですが... 試しに、違うパーティションに割り当てた表領域にインポートしてみてください。

参考URL:
https://www.ashisuto.co.jp/standard/faq/2002/st62_23a.html
haru44
質問者

お礼

早速の解凍ありがとうございます。 ご指摘のページを拝見しましたが、ソートやUPDATEのときにエラーが出る状態ではないので、一時表領域の問題ではなさそうな気がします。 800MBの空き領域はあきらめ、別パーティションにimpしようと思いデータファイルを作成し下記のようにしてみましたが、同じエラーになってしまいました。 SQL> alter user user1 default tablespace data1; User altered. IMP-00003: ORACLE error 1237 encountered ORA-01237: cannot extend datafile 1 ORA-01110: data file 1: '/u01/app/oracle/oradata/orcl/system01.dbf' ORA-19502: write error on file "/u01/app/oracle/oradata/orcl/system01.dbf", bloc kno 202993 (blocksize=8192) ORA-27072: skgfdisp: I/O error Linux Error: 9: Bad file descriptor Additional information: 202993 impコマンドでロードする際の表領域の指定はどのようにすれば良いのでしょうか?

関連するQ&A

  • オラクル表領域データファイルの削除について

    まず、経緯から書きますと、 レコードINSERT処理(Access)にて表領域不足エラーが出たため、 以下コマンドにてデータファイルを追加しました。 ALTER TABLESPACE USERS ADD DATAFILE '/db3/oradata/ora805/datafile09.dbf' SIZE 1000M; ところが、以下のエラーが出ました。 エラー行: 1: エラーが発生しました。 ORA-19510: 207360ブロックのサイズ設定に失敗しました   (ファイル"/db3/oradata/ora805/datafile09.dbf"、ブロックサイズ=2048)。 ORA-27059: skgfrsz: ファイル・サイズを削減できません。 SVR4 Error: 28: No space left on device Additional information: 2 ORA-19502: ファイル"/db3/oradata/ora805/datafile09.dbf"の書込みエラー。   ブロック番号: 207105(ブロックサイズ=2048) ORA-27063: skgfospo: 読込み/書込みのバイト数が正しくありません。 SVR4 Error: 28: No space left on device Additional information: -1 Additional information: 131072 まず、このエラーの詳細が正確に理解できていない状況なのですが、 なんとなく、これは、空き容量がないところに1000Mのデータファイルを 作成しようとして、大きすぎて作成出来ませんというエラーを返された、 と解釈しました。 それで、sqlplusにてデータファイルの一覧を見てみると、 追加しようとしていたdatafile09.dbfは確認できませんでした。 表領域 ファイル名            サイズ 自動追加 ---------------------------------------------------------- USERS /db1/oradata/ora805/datafile01.dbf 4194304 NO 0 USERS /db1/oradata/ora805/datafile02.dbf 2097152000 NO 0 USERS /db1/oradata/ora805/datafile03.dbf 2097152000 NO 0 USERS /db2/oradata/ora805/datafile04.dbf 2097152000 NO 0 USERS /db2/oradata/ora805/datafile05.dbf 1048576000 NO 0 USERS /db2/oradata/ora805/datafile06.dbf 996147200 NO 0 USERS /db3/oradata/ora805/datafile07.dbf 2097152000 NO 0 USERS /db3/oradata/ora805/datafile08.dbf 1887436800 NO 0 ところが、OS(Solaris5.6)に戻って、 /db3/oradata/ora805 フォルダの一覧を確認しますと、 以下のように datafile09.dbf が出来ていました。 -rw-rw---- 1 oracle dba 2097154048 13:52 datafile07.dbf -rw-rw---- 1 oracle dba 1887438848 13:52 datafile08.dbf -rw-rw---- 1 oracle dba 1048578048 14:32 datafile09.dbf ここから、質問なのですが、 1)なぜ、datafile09.dbf は OSでファイルが認識されているのに、 sqlplusでデータファイルを一覧したときには表示されないのか。 2)datafile09.dbf をいったん消したいのですが、 OSレベルで datafile09.dbf を削除してもオラクルに悪影響は 出ないのでしょうか。正しい消し方がわかりません。 以上です。 どなたかアドバイスいただけないでしょうか? よろしくお願いいたします。 Ver:Oracle8 OS:SunOS 5.6(Solaris)

  • Oracleデータベースの復旧方法

    識者の方々、どうかお教えください。 昨日データメンテナンス中に、保守プログラムがとまってしまいました。 サーバーを再起動して、Oracleをスタートしたところ、データベースに接続できなくなっていました。 色々調べましたが、以下の状態から進むことができません。 恥ずかしながらバックアップはとっていませんでした。 なんとか復旧する手だてはあるのでしょうか? -------------------------------------------- SQL>connect sys/Oracle as SYSDBA アイドル・インスタンスに接続しました。 SQL>startup ORACLEインスタンスが起動しました。 Total System Global Area 1826944268 bytes Fixed Size 70924 bytes Variable Size 49324416 bytes Redo Buffers 77824 bytes データベースがマウントされました。 ORA-01589: データベースをオープンするにはRESETLOGSまたはNORESETLOGSを使用する必要があります SQL> alter database open resetlogs; alter database open resetlogs * 行1でエラーが発生しました。: ORA-01152: ファイル1は十分に古いバックアップからリストアされていません。 ORA-01110: データファイル1: '/opt/oracle/oradata/o10g/system01.dbf' SQL>recover database using backup controlfile until cancel; ORA-00279: 変更 25084677(04/20/2009 12:11:39で生成)にはスレッド1が必要です。 ORA-00289: 検討すべきログライル: D:\ORACLE\ORA81\RDBMS\ARC87062.001 ORA-00280: 変更 258365040(スレッド1)は順序番号 87062に存在します。 ログの指定:[<RET>=suggested | filename | AUTO | CANCEL} auto ORA-00308: ORA-27041: OSD-04002: ファイルをオープンできません。 O/S-Error: (OS 2) 指定されたファイルが見つかりません。 ORA-01547: 警告:RECOVERは成功しましたがOPEN RESETLOGSが次のエラーを受け取りました。 ORA-01194: ファイル1は一貫した状態にするためにさらにリカバリが必要です。 ORA-01110: データ・ファイル1:D:\ORACLE\ORADATA\MYCOMPANY\SYSTEM01.DBF ----------------------------------------------------------

  • 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:ファイルが制御ファイルより新しくなっています。-古い制御ファイルです。 どなたか、解決方法をご存知の方、ご教授ください。

  • 表領域の作成について

    表領域を作成してインポートしたら下記のエラーが出力されて困っています。 表領域の作成の仕方が駄目でエラーが出力されてしまったのでしょうか。 下記のCREATE TABLESPACE文で表領域を作成しています。 ---------------------------------------------------------------------- CREATE TABLESPACE "T_DAT" BLOCKSIZE 8192 DATAFILE 'D:\oracle\oradata\ora92\DAT_01.DBF' SIZE 32767M, 'D:\oracle\oradata\ora92\DAT_02.DBF' SIZE 32767M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M SEGMENT SPACE MANAGEMENT AUTO; ---------------------------------------------------------------------- コマンドプロンプトでimpコマンドを実行したら、下記のエラーなどが出力されました。 ---------------------------------------------------------------------- IMP-00003: Oracleエラー1659が発生しました。 ORA-01659: nを超えるMINEXTENTSを表領域T_DATに割当てできません。 IMP-00003: Oracleエラー1658が発生しました。 ORA-01658: 表領域T_DATにセグメント用のINITIALエクステントを作成できません。 ---------------------------------------------------------------------- 何がいけないのかが正直わかりません。 申し訳ありませんがアドバイスいただけませんでしょうか。 宜しくお願いします。

  • オラクルのインポートについて

    はじめまして。 12時前に質問したのですが、私の質問がWebから 見えないので、心配になってもう一度登録しています。 質問ですが、オラクルのDBサーバー移行作業を 3日前から進めているのですが、テーブルの インポートが出来なくて困っています。 インポート時のエラーは以下の通りです。 --------------------------------------------- C:\Temp>imp user/user@test file=C:\Temp\imp.dat log=C:\Temp\TBCIXBA.imp tables=tablename Import: Release 9.2.0.1.0 - Production on 金 Jun 18 11:43:46 2004 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. 接続先: Oracle9i Release 9.2.0.1.0 - Production JServer Release 9.2.0.1.0 - Production エクスポート・ファイルはEXPORT:V09.02.00によって従来型パス経由で作成されました IMP-00013: DBAのみ別のDBAがエクスポートしたファイルをインポートできます。 IMP-00000: エラーが発生したためインポートを終了します。 --------------------------------------------- お忙しいところすいませんが、手を貸して下さい。 失礼します。

  • Oracle起動時に"ORA-01115"メッセージ・エラー

    Windows NT Server SP6aとOracle8.1.6 Workgroup Serverの組合せで, 昨日まで正常に起動していたのですが, 今日になって,起動時(マウント後オープン時)に下記のメッセージ(Oracle Enterprise Manager)を表示して起動できなくなりました。 マニュアルには,「デバイスのアクセスをリストアしてから。。。」などと処置について記述されていますが,よくわかりません。 どなたか,ご存知でしたら,原因と対策をご教授いただけませんか? --------------------------------------------------------------------- ORA-01115:ファイル2(ブロック番号2757)からの読込みI/Oエラーが発生しました。 ORA-01110:データ・ファイル2:F:\ORACLE\.......\RBS01.DBF ORA-27070:skgfdisp:非同期の読込み/書込みに失敗しました。 OSD-04016:非同期I/O要求待機中にエラーが発生しました。 O/S-Error:(OS 2)指定されたファイルが見つかりません。

  • Oracleの監査設定の方法について

    Oracle9iを使用しています。 参考URLなどを基に、oracleの監査設定をしたのですが失敗します。 質問:「init.ora」に”audit_trail=DB”を追記すると参考URLに書いてあるのですが、どこに追記すれば良いのか分かりません。 以下は、私のPC環境の [C:\oracle\admin\orcl\pfile] に保存された「init.ora.1022007114158」ファイルです。 ############################################################################## # Copyright (c) 1991, 2001, 2002 by Oracle Corporation ############################################################################## ########################################### # MTS ########################################### dispatchers="(PROTOCOL=TCP) (SERVICE=orclXDB)" ########################################### # Redo Log and Recovery ########################################### fast_start_mttr_target=300 ########################################### # Miscellaneous ########################################### aq_tm_processes=1 compatible=9.2.0.0.0 ########################################### # Instance Identification ########################################### instance_name=orcl ########################################### # Optimizer ########################################### hash_join_enabled=TRUE query_rewrite_enabled=TRUE star_transformation_enabled=TRUE ########################################### # Cursors and Library Cache ########################################### open_cursors=300 ########################################### # Cache and I/O ########################################### db_block_size=8192 db_cache_size=16777216 db_file_multiblock_read_count=32 ########################################### # System Managed Undo and Rollback Segments ########################################### undo_management=AUTO undo_retention=10800 undo_tablespace=UNDOTBS1 ########################################### # Job Queues ########################################### job_queue_processes=10 ########################################### # Security and Auditing ########################################### remote_login_passwordfile=EXCLUSIVE ########################################### # Sort, Hash Joins, Bitmap Indexes ########################################### hash_area_size=1048576 pga_aggregate_target=33554432 sort_area_size=1048576 ########################################### # Database Identification ########################################### db_domain="" db_name=orcl ########################################### # File Configuration ########################################### control_files=("C:\oracle\oradata\orcl\CONTROL01.CTL", "C:\oracle\oradata\orcl\CONTROL02.CTL", "C:\oracle\oradata\orcl\CONTROL03.CTL") ########################################### # Processes and Sessions ########################################### processes=150 ########################################### # Pools ########################################### java_pool_size=33554432 large_pool_size=8388608 shared_pool_size=50331648 ########################################### # Diagnostics and Statistics ########################################### background_dump_dest=C:\oracle\admin\orcl\bdump core_dump_dest=C:\oracle\admin\orcl\cdump timed_statistics=TRUE user_dump_dest=C:\oracle\admin\orcl\udump 参考URL http://www.cisco.com/japanese/warp/public/3/jp/service/manual_j/sec/mars/marslcug/chapter11/17020_01_11.shtml http://oracle.na7.info/21_kansa.html http://www005.upp.so-net.ne.jp/khayashi/platinum/02.html http://www.insight-tec.com/mailmagazine/ora3/vol163.html

  • オラクルのエラー

    すみません、オラクルに接続しようとすると 下記のメッセージが出てつなげないんですが、 原因はなんでしょうか。 オラクルは9i、OSはWIN2000です。 IMP-00058: Oracleエラー1033が発生しました。 ORA-01033: ORACLE initialization or shutdown in progress

  • 新規表領域の作成について

    はじめて質問します。 現在Oracle9iで開発を行っているのですが下記のようなことができるかどうかをお教え下さい。 Oracle9i ServerがインストールされているPCとは別のPC上の共有フォルダ内に新規の表領域を作成したい。 具体的にはOracle ServerがインストールされているPCがSV1、 新規表領域を作成したい別のPCがCL2、CL2の共有フォルダがORA_DATA としてSV1とCL2はLANで繋がっておりSV1からCL2の共有フォルダは閲覧できる状態です。 この状態で CREATE TABLESPACE USERS2 DATAFILE '\\CL2\ORA_DATA\USERS02.DBF' SIZE 10M LOGGING ONLINE と実行すると ORA-01119: データベース・ファイル'\\CL2\ORA_DATA\USERS02.DBF'の作成中にエラーが発生しました。 ORA-27040: skgfrcre: 作成エラーが発生しました。ファイルを作成できません。 OSD-04002: ファイルをオープンできません とエラー表示され作成に失敗してしまいます。 ディスクの容量は50G以上空いており容量不足とは考えにくいです。 やはり'\\CL2\ORA_DATA\USERS02.DBF'といった書き方がマズイのでしょうか? それともOracleでは根本的にこういったことは許可されていないのでしょうか? もう何日も行き詰まっている状態ですのでどうかご助力下さい。

  • マニュアル通りにDB作成してるのですが、エラーになります

    以下のガイドを参照してDBを作成しようとしているのですが、エラーがでて作成できません。 Oracle9i データベース管理者ガイド リリース2(9.2) 手順6:create database文の発行 ページ2-18 環境:Oracle9i 9.2.0 どなたかアドバイスお願いします。 -----------実行結果---------------------------------------- SQL> create database mynewdb 2 USER SYS IDENTIFIED BY pz6r58 3 USER SYSTEM IDENTIFIED BY yltz5p 4 LOGFILE GROUP 1 ('c:\oracle\oradata\mynewdb\redo01.log') SIZE 100M, 5 GROUP 2 ('c:\oracle\oradata\mynewdb\redo02.log') SIZE 100M, 6 GROUP 3 ('c:\oracle\oradata\mynewdb\redo03.log') SIZE 100M 7 MAXLOGFILES 5 8 MAXLOGMEMBERS 5 9 MAXLOGHISTORY 1 10 MAXDATAFILES 100 11 MAXINSTANCES 1 12 CHARACTER SET US7ASCII 13 NATIONAL CHARACTER SET AL16UTF16 14 DATAFILE '/ORACLE/ORADATA/mynewdb/system01.dbf' SIZE 325M REUSE 15 EXTENT MANAGEMENT LOCAL 16 DEFAULT TEMPORARY TABLESPACE tempts2 17 DATAFILE 'c:\oracle\oradata\mynewdb\temp02.dbf' 18 SIZE 20M REUSE 19 UNDO TABLESPACE undotbs 20 DATAFILE 'c:\oracle\oradata\mynewdb\undotbs01.dbf' 21 SIZE 200M REUSE AUTOEXTEND ON NEXT S120K MAXSIZE UNLIMITED; DATAFILE 'c:\oracle\oradata\mynewdb\temp02.dbf' * 行17でエラーが発生しました。: ORA-25139: CREATE TEMPORARY TABLESPACE????????????? -----------実行結果----------------------------------------