ラベル Oracle の投稿を表示しています。 すべての投稿を表示
ラベル Oracle の投稿を表示しています。 すべての投稿を表示

2013年8月3日土曜日

"コンテナ・データベースとして作成"チェックボタン

Oracle12cのインストール・DB作成時の指定のうち、"コンテナ・データベースとして作成"チェックボタンのチェックを外してみた。


これだと、CREATE USERはエラー無し。PDBも無しの前バージョンと同じになる

 SQL> create user test identified by test;

 ユーザーが作成されました。

 SQL> select PDB from v$services;

 PDB
 ------------------------------------------------------------





 SQL>

単一DBしか使わないところでも、コンテナ・データベースとして作っておいた方が良い点とかあるのかな?

2013年8月2日金曜日

oracle 12cでユーザ作成時のエラー

12cでユーザ作成時のエラー。

 SQL> create user test identified by test;
 create user test identified by test
            *
 行1でエラーが発生しました。:
 ORA-65096: 共通ユーザーまたはロール名が無効です

結構な数の人が引っかかってるみたいでGoogleで"ORA-65096"で検索すると結構な数のページがヒットする。
(Oracle 12c新機能を扱っているページを探す時にも便利なキーワード)

対応方法としては、
・接続識別子にユーザーを作成したプラガブルデータベースを指定し、対象のプラガブルデータベースに接続
 (http://www.cosol.jp/tech/detail/ora-65096.shtml)
・alter session set containerコマンドで接続先のプラガブルデータベースを変更
  (http://www.climb.co.jp/blog_dbmoto/archives/1272)
等色々あるが、面倒なんでマルチテナントアーキテクチャ使わずに今まで通りのやり方というのはできないのかね。

データベース作成時、"コンテナ・データベースとして作成"というチェックボックスがあるがこれをはずしておけば上みたいなエラーから開放されるのかな?



Solarisにコンテナが導入された時、OS担当の連中に「お勤めご苦労!」と言ってたけどよもやOracleにまで導入されるとは・・・・。
「Sun買収の時気づけよ」と言われてもねぇ

2013年7月27日土曜日

Oracle 12c のPL/SQL関連新機能

今月頭に漸く公開されたOracle12c
「仕事で使うのはRelease2が出てから」とはいいながら、出ると触りたくなるのが人情というもの。
早速、Windows(x64)版をインストールしてみました。

PL/SQL関連の新機能については、TOADのブログにまとめられているのが一番わかりやすいと思います。各機能の詳細についても今後同ページやOracle Magazineで公開していくとのことで期待しています。
http://www.toadworld.com/platforms/oracle/b/weblog/archive/2013/07/01/oracle-database-12c-new-pl-sql-features.aspx


上の記事にあるDBMS_UTILITYに入っていた例外発生時の情報表示に有用なFORMAT_CALL_STACKあたりがUTL_CALLSTACK Packageとして独立したという話。
独立に伴う新機能とバグの追加は今までのパッケージでも良くあるので非常に気になるところ。


2013年1月9日水曜日

Oracle 11g のバングラデシュ夏時間対応

退院後、リハビリがてらやろうと思って首を突っ込んだが泥沼。

オラクルから、Oracle 11gのバングラデシュの夏時間対応個別パッチが
公開されているがこれが曲者で、これ当てると他の国がおかしくなる。

近頃、繊維関連以外の業種もバングラデッシュに進出しているところが
多いので、もしそんな会社のDB扱うことになったら潔く苦しんでくださいな。
(日本のサポートに聞くから駄目で、甲骨文やパシフィックに聞けばいいと
 言われてもねぇ。伝手ないし。。。)


2012年10月30日火曜日

DBA & Developer Day 2012

一昨年より秋に開催されているOracleの技術トレーニングイベント、今年は11月20日の1日のみ新宿での開催になったみたいだが、全く募集しているのに気づかなかった。後日ホームページで情報が公開されるとのことだが行きたかった、残念。

2012年10月28日日曜日

ORA-28002

Oracle 11g ではデフォルトでパスワードの有効期限が180日になっており、
インストールしたまま使っていると、
ORA-28002: the password will expire within n days
のメッセージが出るようになるんだが、うちのパソコンに入れたやつは1ヶ月位前から
ORA-28002: the password will expire within 7 days
とずっと「あと7日」のまま。
OSの日付もちゃんとあっているんだが、何が原因だろ?

※上記の有効期限を無制限にしたい場合、
alter profile default limit password_life_time unlimited;



2012年6月17日日曜日

(PL/SQL)デバックモードでコンパイルした時のPLSQL_OPTIMIZE_LEVEL

自分だけ知らんなかったと思っていたら、他にも知らない者がいたので
まとめとく。


<<前提>>
下記のようなPL/SQLのプロシージャをOracle 11gで普通にコンパイルして
実行すると正常終了するが10gで実行するとEXCEPTIONに飛んで行き
 ”Error code -1843: ORA-01843: not a valid month
というメッセージが表示される。


create or replace procedure ttt is
  v_code  NUMBER;
  v_errm  VARCHAR2(64);
BEGIN
 IF TO_DATE('20112233','YYYYMMDD')>SYSDATE THEN    ' <<== ここの式に問題
  NULL;
 END IF;
EXCEPTION
 WHEN OTHERS THEN
   v_code := SQLCODE;
   v_errm := SUBSTR(SQLERRM, 1, 64);
   DBMS_OUTPUT.PUT_LINE('Error code ' || v_code || ': ' || v_errm);
END;


これは11gでは、ディフォルトの設定でPLSQL_OPTIMIZE_LEVELが2でコンパイルされ
IF文の中がNULLだけだとIF文自体を省略してコンパイルされるのでEXCEPTIONが発生する
式が実行されないのに対して10gはPLSQL_OPTIMIZE_LEVELが1でコンパイルされる為
IF文内のTO_DATE('20112233','YYYYMMDD')が実行されEXCEPTIONが発生する。




<<11gでデバックモードでコンパイルした時>>
で、SQL*Developer等でデバックする為、「デバック用にコンパイル」とかでコンパイルして
実行すると11gでもEXCEPTIONが発生するようになる。
この部分が全く知らなかった部分で11g上でデバックモードでコンパイルした場合、
PLSQL_OPTIMIZE_LEVELの設定値にかかわらず1と同等の状態でコンパイルされるという話。


実働環境にSQL*Developer等入れておくと時々デバックモードでコンパイルしたままに
なっている場合があるので、一応ご注意を。(しかし、最適化の資料少ないねぇ。はっきり
わかるのはこれ位で、あとは調べるのが面倒なINLINEがらみ。)

2012年3月27日火曜日

10万円でRAC環境


大阪駅近くのソフマップでHPのパソコン、12G RAM, Windows 64bit版というのが
日曜5台限定で8万ほどで売っていた。これにVirtualBoxとOTNで公開されている
イメージ(解凍すると50G、DBサーバ2台、DNSサーバ1台のイメージ入り、
メモリ8G推奨)を入れたら、Oracleインストール、ミドルウェア設定、DB作成な
でせずに2ノードのRAC環境が取得できる。4Gのパソコンにオプション全てOFFにし
てセットアップしひとまず動いた所を確認して喜んでいた者にとっては夢のような話。
VMなんで縮退の検証とかも思いのまま。


RACの可用性と拡張性を体験しよう! Oracle RAC 11g R2の新機能ハンズオン


2012年3月21日水曜日

AWRレポートの資料

日本語で書かれたAWRレポートの資料というと、昨年の白金台で配られたPSソリューションズさんの「STATSPACK/AWR 分析レポート」が一番詳しく判りやすい。当日は紙ベースでの提供だったがいずれ一般公開する予定もあるとのこと。

2012年2月9日木曜日

問合せの変換(Query Transformation)


新人研修のネタ。その1

はじめに
コストベース・ルールベースの違いについて聞かれると、統計情報を使って
実行計画を決めるか、決まったルールによって実行計画を決めるかの違いと
答えてしまいますが、実際はもう少し複雑でコストベースのオプティマイザ
にはルールベースの頃には無かったQuery Transformationという機能が追加
されており統計情報を元に受け取ったSQLの冗長な部分をけずったり置き換え
たりする最適化の機能が追加されています。


1.Query Transformationの中身
 Query Transformationは幾つかの機能に分かれており、Oracle11gだと下記の
 通り。(全てではありません。他にも公開・未公開含め幾つかあるはず)
  Aggregate Subquery Elimination
  Common subexpression elimination
  Complex View Merging
  Filter predicate push-down in a view
  Group by placement
  Intersect conversion into join
  Join Elimination
  Join predicate push down (JPPD)
  Materialized view rewrite
  Minus conversion into anti-join
  Native Full Outer Join
  OR expansion
  Order by Elimination
  Outer to inner join conversion
  Predicate move-around
  Star transformation
  Subquery unnesting
    IN / EXISTS -> SEMI JOIN
    NOT IN / NOT EXISTS -> ANTI JOIN
    Null-Aware and Single Null-Aware ANTI JOIN
  Transitive Predicates

  上記のそれぞれの機能のうち幾つかは、インターネット上の資料や
  研修資料で公開されています。(インターネット上でCost Based  Query
  TransformationやCBQTで検索してください。Oracleの研修だと
「SQL チューニングワークショップ」に概要説明が入っています)

ここでは判りやすいやつ1点
OR expansion
   SELECT *
       FROM emp
      WHERE job = 'CLERK' OR deptno = 10;
     のようなSQLがあり、jobとdeptnoにそれぞれINDEXがついている場合、
     下記のように置き換えることがあります。(かならずという訳ではなく
     統計情報等使って判定)

   SELECT *
       FROM emp
      WHERE job = 'CLERK'
      UNION ALL
     SELECT *
        FROM emp
       WHERE deptno = 10 OR job <> 'CLERK' ;

2.最適化の無効化
話を聞くと便利そうなQuery Transformationですが、複雑でより過激に
進化している機能の為不具合が多く、この為か当機能を無効化する
非公開の初期化パラメータが用意されています。

_optimizer_cost_based_transformation
Query Transformation全部の機能のON,OFF
これをOFFにすると上記全てがOFFになる為、稼動後サポートから不具合
対応で設定変更を勧められても無理。

個別の機能についてもそれぞれ、ON、OFFが可能になるパラメータが用意
されていると思われますが、まとまった形では公開されていません。
個別の不具合対応で一つづつ調べている状況。
(おそらく、サポートの[1274553.1]に上げられているパラメータ全て
調べれば判ると思います)

    Order by Elimination
      _optimizer_order_by_elimination_enabled
    Optimizer Join Push Predicate
      _optimizer_multi_level_push_pred
    Group by placement
      _optimizer_group_by_placement



参考資料

Oracleのオプティマイザが問い合わせ処理を最適化する方法~ソースコードを書いている
エンジニアが語る

1. 問合せの変換(Query Transformation)の部分
これ読んでもらえれば気づくと思いますが、各機能の名前は資料によって
微妙に異なります。

Cost Based Query Transformations by Riyaj Shamsudeen
  インターネットの各サイトに出回っているRiyaj Shamsudeenの講演資料。

Optimizer Cost Based Query Transformation [ID 1082127.1]
サポートのページ

Dion Cho氏のページ
Query Transformation関連の記事有り。(韓国の方が書かれた日本語なので読みにくい所
はありますが、日本語で書かれた記事として貴重。)


ablog
  http://d.hatena.ne.jp/yohei-a/20110224/1298529324
    Vew Mergingの例示。 10053のログで結果の説明をされているのでわかりやすい。

Oracle10g Cost Base Optimizerにまつわる検証
  http://www.insight-tec.com/mailmagazine/ora3/vol228.html
  Insight Technologyさんの「おら! オラ! Oracle どっぷり検証生活」。10gの頃。


2012年2月1日水曜日

PL/SQL Package内の 「PRIVATE」 キーワード


Oracle のPackage作成時、TAGとして使えていた「PRIVATE」というキーワード
11g R2だとエラーになるようになったんだね。

CREATE OR REPLACE PACKAGE HOGEHOGE AS
  PRIVATE FUNCTION ISNUMERIC ( ACCT in varchar2) return number;
          FUNCTION ISNUMERIC2 ( ACCT in varchar2) return number;
END HOGEHOGE;
/

10.2.0.4だと正常終了
11.2.0.2, 11.2.0.3だとコンパイルエラー
-------- -----------------------------------------------------------------
2/20     PLS-00103: 記号"ISNUMERIC"が見つかりました。
        次のうちの1つが入るとき:
        := . ( @ % ; not null range default character
        記号":=" は続行のために"ISNUMERIC"に代わりました。

2/40     PLS-00103: 記号"VARCHAR2"が見つかりました。
        次のうちの1つが入るとき:
        (

4/1      PLS-00103: 記号"END"が見つかりました。 次のうちの1つが入るとき:
        begin function pragma procedure subtype type <an identifier>

LINE/COL ERROR
-------- -----------------------------------------------------------------
        <a double-quoted delimited-identifier> current cursor delete
        exists prior

もともと使えるのがイレギュラーだったんだけど、使えなくなるのはちょっと不便

2012年1月26日木曜日

ORACLE OpenWorld Tokyo 2012に小泉元総理登場

24日の事前登録開始と共にスケジュールが公開されたORACLE OpenWorld Tokyo 2012。
ラリーエルソンも会場には現れず基調講演は映像のみ。期待していたDatabase 12cの
お披露目は無い模様。講演者は他に小泉元総理・星野リゾートの社長とか。何か前回・
前々回に呼んでいたらすごかったという残念な面子。
開発者向けのDevelopは無料化し金曜1日に短縮。かわりにUnivacityの方で
 「EXADATA管理(短縮)」
とか。EXADATA上のDBでAWRレポートとか取得すると、知らないEVENTが上位に
来ていることがあるので、ちょっと受けて勉強したいところ。


しかし、年度始めの色々忙しい時期に何でやるのかねぇ。
 2012年3月30日(金) - 4月1日(日) ART FAIR TOKYO
 2012年4月04日(水) - 4月6日(金) ORACLE OpenWorld Tokyo 2012
 2012年4月09日(月) -            大友原画展


残念ながら、今回は見送り


(28日)
小泉元総理の講演は既に満席。今でも人気あるんだねぇ