2014年10月23日木曜日

[Oracle] 10g→11gの移行後、UTL_SMTPパッケージでのメール送信時にORA-24247エラー

Oracle11gの環境に、UTL_SMTPパッケージを使用してメール送信する
バッチを移行、実行したところORA-24247エラーが出てメールが送信できない
現象が発生しました。


調べてみたところ、セキュリティ強化の一環でアクセス制御リスト(ACL)に
スキーマとSMTPサーバを登録してあげる必要があるそうで。


そんなわけで、登録用のPL/SQLを覚書。

BEGIN
  DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(
    acl         => 'hoge.xml',       --名前(任意の名前.xml)
    description => 'description', --説明(なんでもよい)
    principal   => 'hoge',           --スキーマ
    is_grant    => TRUE,
    privilege   => 'connect'
  );

  DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(
    acl         => 'hoge.xml',       --名前(任意の名前.xml)
    principal   => 'hoge',           --スキーマ
    is_grant    => TRUE,
    privilege   => 'resolve'
  );

  DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(
    acl         => 'hoge.xml',                       --名前(任意の名前.xml)
    host        => 'HostName or IP Address' --SMTPサーバ
  );

END;
/

2014年10月20日月曜日

[Oracle] 重複のあるレコードを取得するSQLを調べてみた

一意キー等の設定されていないテーブルにおいて
重複のあるレコードのみを表示するSQLを書いてみました。


SELECT * FROM target_table
GROUP BY column1, column2, ・・・ columnN
HAVING COUNT(*) > 1
/


使う機会はあまりないかもしれませんが、一応覚書。
# Oracle以外でも使えるかも

[その他] Firefox最新版で問題発生

後輩にOEM(11g)の見方を教えようとしたところ、なぜか後輩PCのFirefoxで
接続しようとすると「安全な接続ができませんでした」と表示されてしまい
参照することができない事態に出くわしました。


そんな馬鹿な、と思いつつ自分のFirefoxで見ると問題なし。
プロキシ設定に問題あるのかなー、といろいろいじってみるも
状況改善せず。


そうしてようやく気付いたのがFirefoxのバージョンは違うのか?ということ。


後輩:33.0
自分:32.0


んでは、自分のFirefoxのバージョンあげてみよう。



・・・



ぎゃーーー見れなくなった!!


ということで結論は「古いバージョンを使おう」。

備忘録としてFirefoxのFTPサイトを覚書。

2014年10月16日木曜日

[Oracle] DataPump Export / Import でかかる時間

expdp、impdpを使用して、データを移行するのに
どれくらい時間がかかるのかを試してみました。

■Export元
 Oracle 10.2.0.3.0 x64 Standard Edition
 OS:Windows 2003R2 x64 Standard Edition

■Import先
 Oracle 11.2.0.4.0 x64 Standard Edition
 OS:Windows 2008R2 x64 Standard Edition (Hyper-V内の仮想環境)

■ダンプサイズ
 Datapumpのサイズ見積:114GB
 実際に出力されたdmpファイルサイズ:約90GB


サーバスペックについては伏せておきますが、
いずれも約3.5時間程度かかりました。

それに加えて、Import先へのOracleインストールやら
Import後のオブジェクトコンパイルやらを含めてトータルで約9時間。


もっと時間かかると思っていたけど、1日でできるレベルなのね~

2014年10月6日月曜日

[Oracle] データベースのサイズとdmpのサイズが違う

サーバの移設へ向けて、データ移行するためにOEMで
DBサイズを確認。

 ・・・約350GB

expdp で full=y estimate_only=y を試行してみる。

 ・・・約110GB

実際に expdp で fully=y を実行。

 ・・・約90GB


4分の1!

確かに完全一致はしないだろうけど、こんなに軽量化されるもの?
どうしてこうなった。。