Maclean’s Oracle Database Tech Blog Archives

  • MySQL MyISAMテーブルにDMLで: “ERROR 144 (HY000): Table ???? is marked as crashed and last (automatic?) repair failed”

    この記事で   症状 リーズン ソリューション 回避策 恒久的な解決 リファレンス 適用範囲: MySQLサーバのバージョン5.0以上 この資料の情報は、すべてのプラットフォームに適用されます。 症状 MyISAMテーブルにDMLを使ったら (inserts, deletes, selectsなど),以下のトラブルになるかもしれない: 101001 14:57:57 [ERROR] ./bin/mysqld: Table ‘./test/t2’ is marked as crashed and last (automatic?) repair failed   原因 Bug 11764345 –SHOW TABLE STATUS + SMALL MYISAM_SORT_BUFFER_SIZE IN REPAIR, TABLE CRASHE   当小的myisam_sort_buffer_size与repair by sort发生,且有人运行 ‘show table status’ 或引用表selects from information_schema…

  • Windowsシステムで,OPTIMIZEあるいはREPAIRが4GBに超えたMyISAMテーブルを壊れた

    この記事で ターゲット ソリューション リファレンス 適用範囲: MySQLサーバのバージョン5.6以上 この資料の情報は、すべてのプラットフォームに適用されます。 ターゲット Windowsシステムで,OPTIMIZE TABLEは4GBに超えたMyISAMテーブルを壊れた。   解決策 Windowsで作成したbugが損害を引き起こした:   http://bugs.mysql.com/bug.php?id=69683 BUG 17235179 OPTIMIZE AFTER A DELETE RETURNS ERROR 0 CAN’T GET STAT OF MYD FILE   解決策は5.6.19あるいはより新しいバーションにアップロードする。   リファレンス BUG:17235179 –OPTIMIZE AFTER A DELETE RETURNS ERROR 0 CAN’T GET STAT OF MYD FILE

  • MySQL InnoDB:ファイルオペレーションシステムエラ番号117

    この記事で ターゲット ソリューション リファレンス 適用範囲: MySQL サーババーションは4.0から5.7 まで[リリース4.0から5.7まで] どんなプラットフォームにも適用する   目標 トラブル: InnoDBがこのようなエラをエラログに報告したら、mysqld.exe崩壊した:   130820 13:37:44 InnoDB: Operating system error number 1117 in a file operation. InnoDB: Some operating system error numbers are described at InnoDB: http://dev.mysql.com/doc/refman/5.5/en/operatingsystemerrorcodes. html InnoDB: File operation call: ‘flush’. InnoDB: Cannot continue operation.   解決策 アドバイス: これはInnoDBやMySQLのせいじゃない 该问题是由于硬盘,控制器,驱动或操作系统。 このトラブルはディスク、コントローラー、ドライブあるいはオペレーションシステムによるものである。   ERROR_IO_DEVICE…

  • MySQL InnoDBはなぜこわれたか。どうやって防ぐか。

    この記事で ターゲット ソリューション InnoDBは破損の原因 リファレンス 適用範囲: MySQLサーバのバージョン5.0以上 この記事では、すべてのプラットフォームに適用されます 目標: InnoDB損害を起こすよくある原因を学んで、そしてそれを防ぐ   解決策 InnoDB損害な原因 InnoDB損害について主に四つの原因がある: ハードウェア損害(一般的にはディスクやメモリーにある) シャットダウン (例えば電源が切れたあるいはオペレーションシステムのbugによるもの) Bugs 整合性がないバックアップ Error Correction Codeを使った場合を除いて、ディスクエラを防ぐ方法はあまりいない。   電源が切れたよるシャットダウンに対してUPSは最善な保護である。オペレーションシステムbugによるシャットダウンに対して(幸いこれは極まれに起こっている)、電池バックアップのディスクが一部の書き込むことを防げる。一般的にはinnodb_flush_log_at_trx_commit = 1でディスクに書き込むことを確保する。 だが、電池バックアップディスクは保護だから、オペレーションシステムあるいはディスクが実際に上書きされていないかもしれない。   変更ログでアップロード必要があるかを確認してください。さもなければ、bugを防げない。変更ログが以下のものにある: MySQL 5.0 MySQL 5.1 MySQL 5.5 MySQL 5.6 MySQL 5.7   一般的に、バックアップは予想したよりもっと壊されやすい。この場合の原因はFLUSH TABLES WITH READ LOCKで、InnoDBはまだ底でデータファイルを書き込む。これはこのバックアップ方法がMyISAMに効くが、InnoDBに適用していないと意味する   どんな場合にも、常にバックアップを用意することとバックアップをテストすることを勧めている。  

  • REPAIR TABLE MyISAM テーブルで”Table ‘X’ is Read Only”エラを報告する

    この記事で 症状 その理由 ソリューション リファレンス 適用範囲: MySQLサーババージョン4.0以上 症状: MyISAMテーブルをリカバリするときに、”Table ‘x’ is read only”エラはどういう意味か、どうやってリカバリできるか。 mysql> repair table t; +‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐+‐‐‐ ‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐+ | Table | Op | Msg_type | Msg_text | +‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐+ | test.t | repair | Error | Table ‘t’ is read only | | test.t | repair | status | Operation failed | +‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐+   原因:…

  • How to Recover a Corrupted InnoDB Table Definition File

      この記事で ターゲット リカバリ リファレンス 適用範囲: MySQLサーババーション 完全なshow create tableのテーブルインポートで定義ファイルを再構造できる。 目標 何のバックアップもない場合に、壊れたInnodbテーブル定義ファイルを再構造する。 リカバリ 以下のファイルはInnoDBに壊れたテーブル定義ファイルをリカバリする方法を示した。同じなテーブルを作成しないでその定義を壊れたテーブルからコピできる。 mysql [localhost] {msandbox} ((none)) > drop database test; Query OK, 5 rows affected (0.44 sec) mysql [localhost] {msandbox} ((none)) > create database test; Query OK, 1 row affected (1.38 sec) mysql [localhost] {msandbox} ((none)) > create table test.a (b int); Query…

  • InnoDB エラ:”log sequence number is in the future”

    この記事で 症状 変更 原因 解決策 初期ログファイルをリカバリする データを再びロードする MyISAMに転換する 仕事テーブル リファレンス   このファイルはOracle Support’s Rapid Visibility (RaV)で発信するから、独立した技術テストに制約されていない。   適用範囲: MySQLサーバ4.0以降 この記事では、すべてのプラットフォームに適用する   症状 リカバリしてみた後にInnoDBを使うと、以下のエラになる。 ERROR ‐‐‐‐‐ ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ 120207 13:30:29 InnoDB: Error: page 573441 log sequence number 22 697197707 InnoDB: is in the future! Current system log sequence number 5 2916730276. InnoDB: Your database may be corrupt…

  • MySQL: どうやってmyisam-recover-optionsオプションを使うでしょう?; myisamrecover

    この記事で ターゲット 修理 リファレンス 適用範囲: MySQLサーバ – バージョン4.0以上 この資料の情報は、すべてのプラットフォームに適用されます。 目標 MySQLのmyisamrecoveroptionsオプションを学んで、サーバを起動するときのシャットダウンの場合にどうやって自動的なリカバリを起動することを把握できる。 myisam‐recover‐options MySQL 5.1とより早いバーションでmysqlrecoverと呼んでいる。   リカバリ myisam‐recover‐optionsオプションは起動MySQLを作成するときのMyISAM自動リカバリである。myisam‐recover‐optionsオプションが以下の数値を使える: DEFAULT: バックアップなしに強制的に手早くテストしてリカバリできる。 BACKUP: データファイルがリカバリするときに変更されたら、MYD ファイルのバックアップをtbl_name‐datetime.BAKと格納してください FORCE: .MYD ファイルが一行以上のデータをなくしたとしてもリカバリを実行する。 QUICK: どんなdeleteブロックもなければ行をテストしない。   myisam‐recover‐options には値の組合も適用できる。例えば、データファイルがリカバリするときに変更されたら、たとえ例如果数据文件在恢复时被更改,即使创建备份时丢失了多于一行,FORCE,BACKUP 结合恢复的使用。 myisam‐recover‐optionsのQUICKとDEFAULT値はどんなデータを削除しないから、二つの安全なオプションである。自動リカバリにも適応している。DEFAULTとFORCEの違いはたとえFORCEが前に完成した文からすべての行を見つけ出せないとしても、リカバリを続けられるから、 FORCEとBACKUPを組み合って、MyISAMデータファイルを変更する前にバックアップを作成してください。   myisam‐recover‐options オプションでDEFAULT を使うとはいい策と思っているが、失敗した場合に、そのエラがこのあとよく現れてデータをなくすリストを納得できるなら、人工的にリカバリして、myisamrecover=FORCE,BACKUPを使ってください。   人工的なリカバリを実行する前にテーブルバックアップを作成してください。   Myisamchkを使えば, myisamchk时没有其他程序在使用表。を運用しているときにほかのプログラムがテーブルを使っていないことを確保してください。

  • InnoDBテーブルのTable is Fullエラ

    この文で 症状 4.xでは、5.0.84以下、下記の5.1.37と、InnoDBのプラグイン5.1.40とし、以下の 使用のInnoDBテーブルスペースは、すべてのバージョンを使用していませんもしinnodb_file_per_table 問題を再現: 自動拡張機能を備えたInnoDBのテーブルスペースは、すべてのバージョンの使用を含むもしinnodb_file_per_table 原因 4.xでは、5.0.84以下、以下のInnoDBプラグとでは、次の5.1.37と5.1.40 固定サイズのInnoDBテーブルスペースを使用し、もしinnodb_file_per_tableのすべてのバージョンを使用していません 自動拡張機能を備えたInnoDBのテーブルスペースは、すべてのバージョンの使用を含むもしinnodb_file_per_table ソリューション 5.1.40とバージョン4.x以下、5.0.84以下、5.1.37以下、InnoDBのプラグインで InnoDBのテーブルスペースの固定サイズを使用し、もしinnodb_file_per_tableのすべてのバージョンを使用していません 自動拡張機能を備えたInnoDBのテーブルスペースは、すべてのバージョンの使用を含むもしinnodb_file_per_table参考 このドキュメントでは、Oracle Support’s Rapid Visibility (RaV) で送信されるため、独立した技術検査の対象ではありませんされています。   適用範囲: MySQLサーバのバージョン4.0以上 この資料の情報は、すべてのプラットフォームに適用できる。 ***Checked for relevance on 22jun2014***   症状 このトラブルに及ぼす可能性は二つがある: 4.xでは、5.0.84以下、5.1.37以下、同様、、InnoDBのプラグインとバージョン5.1.40、次のサーバーのバージョンのMySQLのいずれかを実行しているとき: 0と4.1すべてのバーション 0.84とその以下 InnoDBプラグインなしの1:5.1.37とその以下 MySQLの1ウィジェットがあるInnoDB:5.1.40以下 1023を超えた動的なトランザクションがあって、エラ情報”Table is Full”がクライアントへ返されたときに、インサートエラが起こる。エラログには、より記述的なエラを含む: 110912 14:52:14 InnoDB: Warning: cannot find a free slot for an undo log. Do you…

  • 何が原因でMySQLサーバのMyISAMテーブル壊れた

    何が原因でMySQLサーバのMyISAMテーブル壊れた   利用できるプラットフォーム: MySQLサーバー – バージョン:4.0〜5.5 – リリース:5.5 MySQLサーバ – バージョン:4.0 – リリース:4.0 MySQLサーバー – バージョン:4.0〜5.5 – リリース:4.0〜5.5   目標: MyISAMテーブルが壊れた具体的な原因を説明する   解決策 MyISAMストレージエンジンはとっても頼りになれる。もしMyISAM テーブルが壊れたことがよくあれば、それについての原因をよく考えるほうがいい。データを検索するときに、以下のエラ情報が出たら、テーブルが壊れたことと意味している: Error 1034 Incorrect key file for table: ‘…’. Try to repair it あるいは: Error 126 = Index file is crashed Error 127 = Record-file is crashed Error 134 = Record…