« 2011年11月 | トップページ | 2012年1月 »

2011年12月

2011年12月25日 (日)

TIPS : Oracleの統計情報ハンドリング関係。

先回の記事で、後回しにした統計情報のハンドリンク関連についての備忘メモ。

impdpを使用する際に、「CONTENT=METADATA_ONLY」を使用すると統計情報がロックされます。(仕様)

このままだと、データ更新によりデータ分布が変わった場合、最適な検索パスが使用されない可能性が出てきます。

昔は、オプティマイザが怪しいというか信頼できなかったので、あえて統計情報に頼らず、統計ロック+

ヒント句なんかを使用している場合が多かったのですが、最近のバージョンはかなり頭がいいです。

なので、統計情報のロックは、解除するのがデフォルトかな。

begin
  DBMS_STATS.UNLOCK_SCHEMA_STATS (
     ownname => user);
end;
/

上記SQLを「unlock_stats.sql」とでも名前をつけて保存し、ロックを解除したいスキーマユーザでログオンし、

実行すると、すべてのテーブルの統計情報のロックが外れます。

「とはいえやっぱり統計をロックしたいテーブルがある」場合は、上記を行った後に、改めて個別にロックしましょう。

以下のスクリプトが、参考になるかと。

declare 
   cursor TAB_CURSOR is 
         select Table_Name 
           from USER_TAB_STATISTICS 
          where stattype_locked is not null
          order by 1;

   Lv_Table_Name   USER_TAB_STATISTICS.Table_Name%TYPE; 

begin 

   open TAB_CURSOR; 
   loop 
      fetch TAB_CURSOR into Lv_Table_Name;
      exit when TAB_CURSOR%NOTFOUND; 

         DBMS_STATS.UNLOCK_TABLE_STATS(
            ownname => user,
            tabname => Lv_Table_Name);

         DBMS_STATS.GATHER_TABLE_STATS(
            ownname => user,
            tabname => Lv_Table_Name,
            method_opt => 'FOR ALL INDEXED',
            cascade => TRUE);

         DBMS_STATS.LOCK_TABLE_STATS(
            ownname => user,
            tabname => Lv_Table_Name);

   end loop; 
   close TAB_CURSOR; 

end; 
/

上記スクリプトは、ロックされているテーブルを対象に、

1.ロック解除「DBMS_STATS.UNLOCK_TABLE_STATS」

2.統計取得「DBMS_STATS.GATHER_TABLE_STATS」

3.再ロック「DBMS_STATS.LOCK_TABLE_STATS」

するスクリプトです。単純ですね。

なのでロックしたかったら、「DBMS_STATS.LOCK_TABLE_STATS」の部分を参考に。

あと、統計取得のオプションは一例なので、詳しくはマニュアルを必ず参照のこと。

なお、これを使ってDBが遅くなった、と言われても困るので、その点は自己責任で、よろしく。

| | コメント (0) | トラックバック (0)

2011年12月18日 (日)

TIPS : Oracleのimpdp/expdpで、特定テーブルのみ取込/除外したい場合の対処方法

今回は、あまりにデータが大きすぎて、取り込むと時間がかかりすぎるテーブルを
除外しようとしたときに発生したエラーについて、記録。
(ちなみに、OSはLinuxです。)

1.USER_Aのスキーマダンプから、USER_Bスキーマに対してテーブルデータ以外を取り込む。

シェススクリプト(概要)は以下のように作りました。

impdp USER_B/PASSWORD_B@SERVICE_B \
dumpfile=DATA_PUMP_DIR:USER_A.dmp \
logfile=DATA_PUMP_DIR:impdp_METADATAONLY.log \
remap_schema=USER_A:USER_B \
content=METADATA_ONLY \
transform=oid:n

2.できあがったUSER_Bスキーマ(およびテーブル構造)に対して、テーブルデータのみを取り込む。

その際に、特定のテーブルについては、取り込まない。

シェススクリプト(概要)は以下のように作りました。

impdp USER_B/PASSWORD_B@SERVICE_B \
dumpfile=DATA_PUMP_DIR:USER_A.dmp \
logfile=DATA_PUMP_DIR:impdp_DATAONLY.log \
remap_schema=USER_A:USER_B \
table_exists_action=truncate \
content=DATA_ONLY \
exclude=TABLE:"TABLE_A",\
TABLE:"TABLE_B",\
TABLE:"TABLE_C" \
transform=oid:n

でそれぞれ実行すると、「1」は問題なく終わるのですが、「2」ででエラーが発生しました。

Import: Release 11.2.0.1.0 - Production

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

接続先: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
ORA-39001: 引数値が無効です
ORA-39071: EXCLUDEの値の形式が正しくありません。
ORA-00936: 式がありません。

初めて使うオプションなので、文法間違えたかな?と思い、いろいろ試す。

複数テーブル指定の時は、TABLE句が使えないかもと思ってテーブル指定方法を変えた。

impdp USER_B/PASSWORD_B@SERVICE_B \
dumpfile=DATA_PUMP_DIR:USER_A.dmp \
logfile=DATA_PUMP_DIR:impdp_DATAONLY.log \
remap_schema=USER_A:USER_B \
table_exists_action=truncate \
content=DATA_ONLY \
exclude=TABLE:"IN 'TABLE_A','TABLE_B','TABLE_C'" \
transform=oid:n

でもだめ。

マニュアル見ても、記述方法は問題ないんだが?と思い、実験することしばし。

結局「"」「'」「(」などの文字をエスケープすると、問題なく処理されました。

impdp USER_B/PASSWORD_B@SERVICE_B \
dumpfile=DATA_PUMP_DIR:USER_A.dmp \
logfile=DATA_PUMP_DIR:impdp_DATAONLY.log \
remap_schema=USER_A:USER_B \
table_exists_action=truncate \
content=DATA_ONLY \
exclude=TABLE:\" IN \( \'TABLE_A\',\'TABLE_B\',\'TABLE_C\' \)\" \
transform=oid:n

めでたし、めでたし。

ちょっとだけ、「content=DATA_ONLY」と「table_exists_action」や「transform」句の共存に意味はあるのか?

とも思いましたが、まあ動いたからいいことにしました。実験の時間も、もうないし。

今回はimpdpで使用しましたが、expdpでも使えるオプションなので、

ダンプファイルサイズを小さくしたい場合などに使えるかも。

あと気をつけるべき重要なことが1点。

これ(METADATA_ONLY)で取り込んだテーブルの統計情報はロックされてしまうので、

後ほど、解除を忘れないように。

一括解除のスクリプトもUPしようと思ったが、この件は来週。

| | コメント (0) | トラックバック (0)

2011年12月11日 (日)

皆既月食、次は「2014年10月8日」

2011年12月10日は、全国で月食が見ることができる日でした。
一応かけ始めは見たのですが、完全な皆既月食は「寝落ち」で見ることができず。。。

1

2_2

しょぼいデジカメなので、写りはこんなもんですか。

月食って日食と異なり、あまり華やかなイメージがなく、人気もそれほど、というイメージ。
夜空を見上げても満天の星が見られるのは、空が明るすぎて難しくなってきました。
なので、見上げてみようという人が少なくなったのかもしれないですね。

でも意外とレアな天体ショーなのかも知れません。
次回の皆既月食は、3年待たなければならないのですから。(なのに寝落ち。。。反省)
Outlookの予定表に入れておこうかな。

| | コメント (0) | トラックバック (0)

紅葉ももう終わり・・

紅葉狩りをする暇もなかったので、こんな時期になってしまいながらも、
やっぱり日本に生まれたからには、春夏秋冬それぞれのイベントを楽しむのは
大切なことですよね。

で、嵐山・北野天満宮・清水寺にフラッとお出かけ。
オフシーズンなので、人出はそれほど多くないかと思いきや、結構な賑わいでした。

肝心の紅葉はというと、山一面、目が覚めるような錦に染まるような状況は見られず・・
数はかなり少ないながらも、探せばあるかなという状態。

ネットの紅葉情報では、大丈夫っぽい書き方でしたが、実際はそれぞれもう終了してます。
感覚としては1週間ほど情報鮮度が遅れている感じ。
ネットの情報では、
嵐山・・色あせ始め
北野天満宮・・紅葉見ごろ
清水寺・・色あせ始め
ですが、私の感じでは、どこも落葉、一部色あせて残っているって感じです。
投稿写真なんかも、色あせたり、裸の木々を投稿する人は少なく、
それなりのベストショットを投稿すると思われるので、
写真の様子が全般的に見られると考えるのは早計でした。。。

ハイシーズンに行ってみたいが、人ごみの中見るもの風情がないしな~。

2

Photo

| | コメント (0) | トラックバック (0)

2011年12月 4日 (日)

宇治抹茶入りコーヒー

初見ネットで、誰得?と思ったのが、これ。

Style


「GEORGIA X GREEN 和-STYLE」

製品名は、「ジョージアクロス 和-STYLE」だそうです。「X」はクロスって読むのね。

この前買って飲んでみました。

感想としては、うう~ん。。。コーヒーはコーヒー、抹茶は抹茶で飲みたいな~、って感じ。

まずいっていう訳ではなく、缶コーヒーの新たなテイスト・フレーバーと言われると、ありかも。

飲み慣れると、人によっては、癖になるかも知れません。

既存の缶コーヒーに飽きている人は、ぜひ試してみてください。

ただ、この商品、個人的見解ですが、単発っぽい気がします。

飲んで気に入った人、いまから買いだめしておかないと、入手困難になるかもです。

| | コメント (1) | トラックバック (0)

« 2011年11月 | トップページ | 2012年1月 »