DB

UbuntuにOracle 12cを入れようとして文字化けしたOUIとDBCAを日本語にする

DB

仕事でVirtualBoxに立てたUbuntu(14.10)にOracle 12c(12.1.0.2.0)を入れることになったのですが、 インストール完了までは鬼のようにハマりどころがありました。 今回はインストーラーのOUI(Oracle Univeral Installer)と データベースを作成するツールのD…

oracleでCLOB型データに「distinct」をつけて表示する方法

DB

oracleにはラージオブジェクトというデータ型があります。 ラージオブジェクト (CLOB、NCLOB、BLOB、BFILE) Oracle 9i Oracle 10g 最大格納可能サイズ ブロックサイズ×(4G-1)…最大 8T 〜 128TB(CHUNK サイズ:32KB)バイト(※1)、BFILEでは 4G バイト(Oracle …

WindowsのクライアントからDB2に特殊文字をinsertして文字化けしないようにする

題名がやたらと長くてすいません。 クライアントの開発環境がWindowsでDBがDB2の場合に発生し得ます。 クライアントのSQL開発環境ツール(A5SQL MK-2やCSEや黒猫等)を使って、 DB2に下記の文字をinsertした場合に文字化けしていまいます。 ざっくりとした原因…

DB2で非同期REORGコマンドの進捗状況を知る

DB

DB2にはREORGコマンドというものがあります。 索引または表を再編成してくれる重要なコマンドです。 コマンドはこんな感じです。 テーブル DB2 "REORG TABLE スキーマ.テーブル名 INPLACE ALLOW WRITE ACCESS START" インデックス DB2 "REORG INDEXES ALL FO…

DB2でテーブルやシーケンスのDROP文をオサレに作成する

DB

前回のエントリでスキーマを削除した時の話の続きです。 スキーマを削除するには存在している全てのテーブル、シーケンスを削除しなければいけません。 今まで僕は「list tables」の内容をテキストにリダイレクトして力技でDROP文を作成していました。 そんな…

DB2でEXPLAIN表が消せない

DB

今日DB2でスキーマを整理する為に、 いくつかの不要になったスキーマを削除する事になりました。 手順としては削除対象のスキーマのテーブルとシーケンスを削除してスキーマを削除します。 全てのテーブルを削除する特別なコマンドはないようなので、 DB2の…

DB2で大量のデータを一気に消す

DB

職場ではSQLの処理時に出力されるログをDBのテーブルに格納しています。 どんどん溜まっていくので、たまにパンクして削除の依頼があります。 そんな時に下記のコマンドを実行すると、即効削除出来ます。 db2 "import from /dev/null of del replace into テ…

DB2がエラーや警告を出した場合の調べ方

DB

DB2がエラーや警告を発した場合は「db2diag.log」を見ます。 1 インスタンスユーザーに切り替えて、db2diagコマンドを実行する su - インスタンスユーザー db2diag -level Error, Warning 2 特定のコードからエラーの詳細情報を取得する 次に、db2diag.logに…

DB2でインデックスチューニングをする

DB

DB2で実行計画を取得した時に、大変コストが高いものがあるということで まず第一段階としてインデックスのチューニングをする事になりました。最初は該当のSQLを目で追って、怪しそうなところにインデックスをはっていたのですが めちゃくちゃ非効率と言う…

FTPとかSCPするとファイルサイズが変わってしまう

DBからテーブルのデータをCSVやIXFファイルでエクスポートして、 別のサーバーにFTPやSCPコマンドで転送する時に、大きさに差異がないか下記のコマンドでチェックします。 du ディスク使用量を表示する(KByte) 書式 du [オプション] [ディレクトリ]オプシ…

DB2でシーケンスの初期値を変更した時の不思議

DB

DB2で、シーケンスの初期値を変更する時にちょっと不思議な事があります。 初期値を変更するには2つパターンがあると思います。 初期値を「10」に変更する場合。1. 1度「DROP」して、「CREATE」する再作成パターン DROP SEQUENCE シーケンス名 CREATE SEQUENCE …

DB2でテーブルやシーケンスを作成した時にエラーが発生していないかチェックする

DB

テーブルやシーケンスを作成した場合に、エラーが発生していないかチェックしたい時の確認方法。 まずテーブルやシーケンスを作成するDDLを作り、下記のコマンドで実行します。 DDLファイルを実行するコマンド db2 -tvf ファイル名 その実行内容をログに出力…

DB2でLOAD PENDINGを解消する

DB

他のチームの人からある作業依頼がありました。 あるテーブルにCSVファイルのデータ(1千万件以上)をインポートしてほしいという内容でした。 なぜ依頼をしてきたかというと、独自のツールを使用してインポートしたら、何回やっても途中でフリーズしてしまう…

SQLServer初体験

DB

今日ある作業の引き継ぎでSQLServerを初めて使いました。 作業内容としてはあるDBの*1リストアとバックアップでした。 使ってみた感想としては、作業中にコンソールに何も表示されないので時間の見積もりがしにくいなーって思いました。 処理の前後に時間表…

DB2でテーブルのレイアウトを比較する

DB

システム開発で旧システムを新システムに改修する場合はデータの移行作業が発生します。 本番環境のテーブルと移行対象のテーブルのレイアウトが一緒じゃないと移行に失敗します。 そこでテーブルのカラム、データ型、桁数等の情報を知るには下記のコマンド…

RUNSTATSコマンドでDB2のパフォーマンス向上作戦

DB

DB2では*1アクセスパスの決定に*2統計情報を使用します。 そのため、統計情報が現在のテーブルの状態とかけ離れていると、 いくらインデックス等を最適に設計しても、レスポンスが悪くなります。 例えば、データが100行程度の状態でバインドしたアプリケーシ…

DB2で大量のデータをCSV(IXF)ファイルからインポートする

DB

DB2で10万件以上のデータをCSVファイルもしくはIXFファイルから インポートする時に注意しないといけない事があります。 僕はやってしまったんですが、何も考えずに実行すると アクティブログが大量にはかれてDBのCPUが振り切ってしまいました。 そのせいで…

DB2でデッドロックを解消する

DB

DB2でデッドロックが発生した場合に解消する方法 1. DB2サーバにインスタンスユーザでログインする 2. 以下のコマンドで、DBにログインする$ db2 connect to 3. 以下のコマンドで、ロック情報を採取し 該当オブジェクトをロックしているアプリケーションハン…