【Oracle】Oracle 12c Bronze とったどー

  • 2016.05.22 Sunday
  • 17:48
JUGEMテーマ:コンピュータ

生きてます。こんにちわ。
去年、データベースとSQLとか明日本気出すみたいな投稿をしてたみたいですが
ちゃんと本気出しまして、資格をゲットしました。
とったのはOracle 12c Bronzeです。
試験の内容とか書き込んでしまうと、資格はく奪になりかねないので触れませんが
感想程度に書き下すと

・SQLは、10用のSQLが一番簡単だから黙ってそれ受けるといいよ。
・我こそはというつわものは12c受けて返り討ちにあうがいい。私は12c SQL一発合格しましたが
・SQLの試験はただSQLが書けるだけではおそらく落ちます。
 普段からカラム名が英語や日本語、大文字小文字が混在、
 日本語の単語が並べられてるけど意味が良く分からない文章や
 ときどき本当に書き間違えが存在するような仕様書から
 望まれた答えを予想し、思いやりと察しで解決してしまうようなそんなDB管理者様なら普通に合格できるレベルだと思います。
・特定分野の業界用語がしれーっと出てきます。
 ITプロという情報処理試験の一番のレベルの資格に登場していたのを確認したので
 それぐらいSEなら一般常識だろという感じなのでしょうか?
 知らない単語が日本語名でかかれ、書かれているSQLは英単語になっていると私にはさっぱりで太刀打ちできません。
・12cのSQLはマジ難しいですよ。気を付けてね!
・12cのSQLは悩んで時間をかけると時間切れになります。
 まず問題文と参考というタブに書かれているものを全部読んでいると、それだけで時間がオーバーしてしまうと思います。
 何を聞かれているか、あってるものを抜きすのか、間違っているものを見つける問題か見極め、
 SQLみて正解見つけたら、すぐ次へ、みたいなテンポよくやらないと間に合わないと思います。
 これ正解だと思うんだけど自信がないから別の選択股も読もうかなみたいな事をしてると時間切れ間違いなしです。
 さくさく解いていきましょう。
 というか解答テクニックみたいなSQLとは別次元で努力しないといけない気がします。
・12cのDBAは、SQLの難解さに比べて気が抜けるレベルで簡単です。時間も半分余ってしまいました。

勉強時間はSQLは半年、DBAが一週間程度ですかね。
SQLの半年は、述語論理や集合論とデータベース論理の学習も含めています。
解答トレーニングに一ヶ月くらい費やしました。

本気でSQLやらDBAやらを勉強しようと思って資格とることにした。

  • 2015.08.04 Tuesday
  • 00:07

絶賛、明日から本気出す!中なんですが、
今はデータベース関連の技術に関して本気出す状態です。
前々から書いているようにデータベースを勉強しようと思い、
まず手始めにリレーショナルデータベースモデルを勉強するために
論理学と集合論をかじってみたりしてみました。
これには関しては、このブログを読んでくださっている技術者の
皆さん全員にお勧めしたいです。

ろんりと集合

この本が凄くお勧めです。これを読んだ後にリレーショナルデータベースの
理論的な事を言及している本を読むとなるほどなーって思うことを請け合いです。
※高度な数学を学ばれ、その知識をキチンを持ってる方には釈迦に説法と思われますので注意。

で、まあ、データモデルに関しては、また深く深く沈み込めると思うんですが
それよりもSQLがまともにかけた方が良いよねっておもってみたりしてまして、
Oracleの資格とろうかなと今更ながらにがんばってます。

ところで、Oracle masterっていつの間に下から順に取得しなければならなくなったの?
そして、受験料が異様に値上がりしてませんか????

ねーねー。

そうそうリレーショナルデータベース関連でお勧めの本2冊。

評価:
市川 忠男
森北出版
¥ 3,672
(2005-03)
コメント:4章がリレーショナルデータベースな内容になってます。ページ数があまりありませんが、ポイントがものすごく的確にまとまっていて、感動します。

評価:
増永 良文
サイエンス社
¥ 2,808
(2003-03)
コメント:特にデータベース管理者の心意気とか余計な主張とかはなく、純粋にリーレーショナルデータベースに関して論理的な展開で紹介されている良本だと思いました。教え方がうまいと思うし、論理的だと思う。すばらしいです。

【Oracle + .Net】DbDataSourceEnumeratorで接続先リストを取得する。

  • 2012.11.04 Sunday
  • 00:27
JUGEMテーマ:コンピュータ

Sourcce and project
 
DbDataSourceEnumeratorクラスを利用すると、接続先のリストを取得することができます。前々から書いているとおりDBに対して無知で、触ったことがあるDBはOracleしかないので他のDBでもうまくいくのか分かりませんが、Oracle Data Access Components (ODAC)を利用して以下のコードを実行してみるとうまく取得することができたので紹介します。

using System;
using System.Data;
using System.Data.Common;
using System.Linq;

namespace Art55.DbProviderFactoryDemo20121104_001
{
    class Program
    {
        static void Main()
        {
            DbProviderFactory factory = DbProviderFactories.GetFactory("Oracle.DataAccess.Client");
            if (factory.CanCreateDataSourceEnumerator)
            {
                DbDataSourceEnumerator dbDataSourceEnumerator = factory.CreateDataSourceEnumerator();
                if (dbDataSourceEnumerator != null)
                {
                    DataTable dataSourceTable = dbDataSourceEnumerator.GetDataSources();
                    Console.WriteLine(dataSourceTable
                        .Columns
                        .Cast<DataColumn>()
                        .Aggregate(string.Empty, (s, c) => s + c + ", "));
                    dataSourceTable
                        .AsEnumerable()
                        .Select(r => r.Table.Columns.Cast<DataColumn>().Aggregate(string.Empty, (s, c) => s + r[c] + ","))
                        .ToList()
                        .ForEach(Console.WriteLine);
                      
                }
            }
        }
    }
}


実行結果は以下の通りです。

InstanceName, ServerName, ServiceName, Protocol, Port,
XE,192.168.0.4,XE,TCP,1521,
ART55SHOP,192.168.0.1,ART55SHOP,TCP,1521,

----------------------------------
このリストをどこから取得しているのかというと、どうやら「tnsnames.ora
」から読み込んでいるということが分かりました。私のPCの「tnsnames.ora」の設定は以下の通りです。

# tnsnames.ora Network Configuration File: F:¥app¥art55¥product¥11.2.0¥client_1¥network¥admin¥tnsnames.ora
# Generated by Oracle configuration tools.

XE =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.4)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = XE)
    )
  )

ART55SHOP =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.1)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ART55SHOP)
    )
  )

Sourcce and project

【Oracle + .NET】OracleParameter(DbParameter)を使ってみた。

  • 2012.11.03 Saturday
  • 16:49
JUGEMテーマ:コンピュータ

Source and Project
 
OracleParameterを使って見ました。単なる覚え書きなので解説はしません(できません。SQLよく分からない・・・。)と、言いたいのですが、さすがにそれは寂しいので分かる範囲で説明を加えながらサンプルコードを紹介したいと思います。

今回はバインド変数を扱いたいと思います。SQL関連の知識が無知に等しいので、先ほど一生懸命調べた範囲でSQLを記述させてもらうと今回はプログラムとして書きたい内容をSQLで記述すると下記のような感じになります。

SQL> variable job1 VARCHAR2(9)
SQL> variable sal1 NUMBER
SQL> begin
  2     :job1 := 'SALESMAN';
  3     :sal1 := 1500;
  4  end;
  5  /
SQL> select * from emp where job=:job1 and sal>=:sal1;

:job1というところが「バインド変数」というやつらしいです。バインド変数を使うことの利点は「SQL バインド変数の利点」などでググれば、賢い方々のわかりやすい説明がざくざく出てくるはずです(汗)

で、C#で書けば、プログラム制御でSQLも自由自在に書けるわけですが、「バインド変数の利点」とやらの恩恵にあずかることができなくなってしまうわけです。そこで、今回の「OracleParameter」です。OraclePrameterを利用することでバインド変数に値を指定することができます。

ということで、サンプルコード

using System;
using System.Data.Common;
using System.Linq;
using Oracle.DataAccess.Client;

namespace Art55.OracleAccessDemo20121103_001
{
    class Program
    {
        static void Main()
        {
            const string statement = "select * from emp where job=:job1 and sal>=:sal1";
            const string stringconnection = "Data Source=XE;User Id=art55;Password=art55;";
            using (var connection = new OracleConnection(stringconnection))
            {
                using (var command = new OracleCommand(statement, connection))
                {
                    connection.Open();
                    try
                    {
                        DbParameter job = new OracleParameter("job1", "SALESMAN");
                        command.Parameters.Add(job);
                        DbParameter sal = new OracleParameter("sal1", 1500);
                        command.Parameters.Add(sal);

                        var reader = command.ExecuteReader();
                        while (reader.Read())
                        {
                            string line = Enumerable.Range(0, reader.FieldCount)
                                .Aggregate(string.Empty, (s, c) => s + reader[c] + ", ");
                            Console.WriteLine(line);
                        }
                    }
                    finally
                    {
                        connection.Close();
                    }
                }
            }
        }
    }
}

一つ注意なのが、OracleParameterをOracleCommandにAddする順番です。既定ではOracleCommand.BindByNameプロパティがfalseに設定されており、パラメータに名前を指定しても無視されます。そのため、バインド変数が登場する順序でAddする必要があります。

これを実行すると

7499, ALLEN, SALESMAN, 7698, 1981/02/20 0:00:00, 1600, 300, 30,
7844, TURNER, SALESMAN, 7698, 1981/09/08 0:00:00, 1500, 0, 30,

カラム名も出さずに結果を表示しているので、なんのこっちゃ分かりませんが、私が期待していた結果が帰ってきました。

今回の例ではDbDataReadeを利用して、SQLを1回した発行していないのでバインド変数の利点が利いてくるかどうか不明ですが、DataAdapterを利用した際に大量にInsetするとかUpdateするとかいう場合に、パフォーマンスの向上が図れるのではないかと思われます。(想像で申し訳ないのですが・・・)

Source and Project


------------------------------------------------
(追記)
OracleCommand.BindByNameプロパティをtrueに指定すると、ParameterをAddする順序を意識しなくてよくなります。どちらが良いかは、SQLをどのように生成するかによって異なるのかなって思います。

using System;
using System.Data.Common;
using System.Linq;
using Oracle.DataAccess.Client;

namespace Art55.OracleAccessDemo20121103_001
{
    class Program
    {
        static void Main()
        {
            const string statement = "select * from emp where job=:job1 and sal>=:sal1";
            const string stringconnection = "Data Source=XE;User Id=art55;Password=art55;";
            using (var connection = new OracleConnection(stringconnection))
            {
                using (var command = new OracleCommand(statement, connection))
                {
                    connection.Open();
                    command.BindByName = true;
                    try
                    {
                        DbParameter sal = new OracleParameter("sal1", 1500);
                        command.Parameters.Add(sal);
                        DbParameter job = new OracleParameter("job1", "SALESMAN");
                        command.Parameters.Add(job);
                        var reader = command.ExecuteReader();
                        while (reader.Read())
                        {
                            string line = Enumerable.Range(0, reader.FieldCount)
                                .Aggregate(string.Empty, (s, c) => s + reader[c] + ", ");
                            Console.WriteLine(line);
                        }
                    }
                    finally
                    {
                        connection.Close();
                    }
                }
            }
        }
    }
}

【Oracle】なんとなくOracle Database Express Edition 11g Release 2をインストールしてみた。

  • 2012.10.20 Saturday
  • 18:18
JUGEMテーマ:コンピュータ
 
SQLすらまともに書くことができないほど、DBが苦手なので、DB管理などは全くの無知、DBに対する開発もいつも恐怖を感じながら遂行しています(涙)。そんな訳で、そろそろ克服しないと技術者としてはやっていけない(すでにやっていけてない・・・)気がしてきたので、ちょいと勉強しようかなと思い立ちまして、手始めにOracle Database Express Edition 11g Release 2をインストールしてみることにしました。

1)以下から「Oracle Database Express Edition 11g Release 2 for Windows x32」をダウンロードしました。
http://www.oracle.com/technetwork/jp/database/express-edition/downloads/index.html

Windows x32版とLinux版があるようですが、Linuxを用意するのが面倒だったのでWindows版をダウンロードしました。32bitと書いてあるので、64bitでは動作しないのではないかと思いますが、検証はおろかググることすらしてないので不明です。

2)Oracle Database Express Edition 11g Release 2をインストール
インストール先はWindows 7 (x82)です。「.¥DISK1¥setup.exe」をダブルクリックするとインストールが始まります。




















と、まああっけなくインストールできました。ExressではなくStandardなど高級なエディションだと、もっと何か設定しなければならなかったような気がしますが・・・。


ここからは不確かなのですが、インストールした時点でXEというOracleServiceがつくられているようです。インストールした後にちょろちょろといじってしまったため、XEというDBができてしまった可能性もあるので、はっきりとは分かりません。ごめんなさい。

Oracle Database Express Edition 11g Release 2をインストールするとsqlplusもインストールされるので、XEに入ってみました。




ユーザを作ってみました。

CREATE USER "ART55" PROFILE "DEFAULT" IDENTIFIED BY "ART55" DEFAULT TABLESPACE "USERS" TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK;

権限を二つ追加しました。

GRANT "CONNECT" TO "ART55";
GRANT "DBA" TO "ART55";

XEには、サンプルっぽいテーブルがいくつか用意されていて、中身をみるとデータが入っていることが確認できました。データベースの設計なんって全くわからないので、とりあえずこのサンプルデータにアクセスして遊んでみようと思います。

今回はここまで

【Oracle】「オラクル通信」休刊

  • 2008.08.03 Sunday
  • 18:21
毎月無料で出版されていた「オラクル通信」が休刊するそうです。
ベンダーからの一方通行な情報配信から
受け取る側を巻き込んだ「情報共有」へと変わってきているため
オラクル通信の情報配信のあり方を検討した結果、休刊することになったそうです。

まあ建前上の理由だと思いますが・・・

ベンダーから情報と、ユーザ同士の情報共有というのは
それらを利用するユーザにとっては望むものが違うと思うのですが、
その当たりどうなんでしょうか?と思うわけです。
もちろんベンダーから望む情報は正確な情報です。
多少わかりにくい日本語でも、いや英語でも、正確な情報が欲しいときがあります。
それが「オラクル通信」から得られていたか?と思うと・・・「?」ですが、
ベンダーフレンドリーになれるキッカケにはなると思うんですが・・・
いや、ただで貰えるものは貰ってしまえというポリシーな私が言っていることは単なる建前でした。

駄文、すんません。

「オラクル通信」バックナンバー
http://www.oracle.co.jp/2shin/

資料 20080123

  • 2008.01.23 Wednesday
  • 23:27
■ORACLE Twilight
形式:現地セミナー
時間帯:19:00〜20:30
参考URL  http://www.oracle.co.jp/events/

■Oracle Direct Seminer
形式:インターネットセミナー
時間帯:日中定刻
参考URL  http://www.oracle.co.jp/events/

■Oracle 「意外と簡単!?」シリーズ
形式:資料
時間帯:いつでも
参考URL http://otn.oracle.co.jp/easy/

■Oracle Direct Seminar On Demand
形式:動画+mp3+資料
時間帯:いつでも
http://otn.oracle.co.jp/training/ord-seminar/ondemand.html

■MSDN バーチャルラボ
形式:実践+資料
時間帯:いつでも
参考URL http://www.microsoft.com/japan/msdn/virtuallabs/default.aspx

Windows版Oracle Database 11g出荷記念セミナー

  • 2007.12.22 Saturday
  • 20:43
Windows版Oracle Database 11g出荷記念セミナー
というのが、
今週の火曜日(12月18日)にあったので、
ちょろ〜んと行ってきました。

その日、結構、風邪気味というか風邪を引いていたため
行こうかどうか本当は迷ったのですが行って正解でした。




だって!!

Windows版Oracle Database 11g出荷 記念品1 Windows版Oracle Database 11g出荷 記念品2 Windows版Oracle Database 11g出荷 記念品3 Windows版Oracle Database 11g出荷 記念品4


↑こんなものをくれますから!!!

ええとー。
「携帯折りたたみ箸」です。
Oracleさんが言うには箸を11に見立てているらしいです(ちょっと強引)


セミナーの内容はもう聞き飽きるぐらい同じ内容でした。
それとSQL Serverの悪口を何度も聞くのは良い気分がしません。

以上

Oracle やばい惚れそう。

  • 2007.11.16 Friday
  • 00:33
[ORACLE Twilight] Oracle Database 11gはここがスゴイ
http://www.oracle.co.jp/events/tk071115/index.html

に行ってきました。

内容はその名のとおりOracle Database 11gはすごいよ!
MicrosoftのSQL Serverはこんなにも使えませんよって
Oracleさんが必死にアピールしていました。

私自身、あまり他社をけなす姿を見ていい気分はしません。
そもそもデータベース全般が嫌いなので当然Oracleもあまり好きではありません。

が、心が揺れそうです。

Oracle11gムック本

徹底解説Oracle Database 11g (日経BPムック)
だって、今日、ORACLE Twilightに行ったら
なんとムック本がもらえました。

今日の講師さんとジャンゲンして勝ったので
なんとムック本がもらえました。

ですから
なんとムック本がもらえました。

Oracle月間

  • 2007.11.07 Wednesday
  • 06:09
下記が今月の私の予定の一部です。
無料セミナーに出席しまくりな予定です。
「ORACLE+Linuxだから実現できるコスト削減」は一週間前に
そして「ここからはじめようOracle入門」は昨日あり、
すでに終了しています。

Oracleに苦手意識があるので今月は苦手なもの対策として
Oracle月間にすることにしました(笑)

ORACLE Twilightというのは、毎月やっているみたいです。
昨日、受けた「ここからはじめようOracle入門」は
入門にしてはなかなかレベルが高い話でした。
中途半端な知識でとりあえずDBを触っている人とかには最適だと思います。

[ORACLE Twilight] ORACLE+Linuxだから実現できるコスト削減
http://www.oracle.co.jp/events/tk071031/index.html

[ORACLE Twilight] ここからはじめようOracle入門
http://www.oracle.co.jp/events/tk071106/index.html

[ORACLE Twilight] 使いこなそう Oracle PL/SQL
http://www.oracle.co.jp/events/tk071108/

Seasar Conference 2007 Autumn
http://event.seasarfoundation.org/sc2007autumn/

[ORACLE Twilight] 攻略、バックアップ・リカバリ
http://www.oracle.co.jp/events/tk071113/

[ORACLE Twilight] Oracle Database 11gはここがスゴイ
http://www.oracle.co.jp/events/tk071115/index.html

Get ORACLE MASTER ポイント解説 10g Bronze
http://www.oracle.co.jp/events/tk071117/index.html

Oracle Database 11g Launch Roadshow in 横浜
〜全国縦断オラクル都市伝説セミナー〜
http://www.oracle.co.jp/events/legend/071120/index.html

[ORACLE Twilight] データベース・アップグレードのススメ
http://www.oracle.co.jp/events/tk071122/index.html

アプリケーション開発者のためのチューニング
http://www.oracle.co.jp/events/tk071127/index.html

calendar

S M T W T F S
     12
3456789
10111213141516
17181920212223
24252627282930
31      
<< March 2024 >>

あわせて読みたい

あわせて読みたいブログパーツ

selected entries

categories

archives

recent comment

  • 【WPF】DataGridに編集可能なComboBoxを表示するには?
    art55 (07/16)
  • 【WPF】DataGridに編集可能なComboBoxを表示するには?
    arisa (07/16)
  • 【キーボード】6年前のRealForceを復活させることはできる!?その3
    art55 (05/22)
  • 【キーボード】6年前のRealForceを復活させることはできる!?その3
    分解大好き (05/18)
  • 【.NET Framework 4.5】 IListがIReadOnlyListを継承してない理由。
    art55 (02/04)
  • 【.NET Framework 4.5】 IListがIReadOnlyListを継承してない理由。
    Gen (02/04)
  • 【キーボード】RealForce が壊れて帰ってきた。
    art55 (04/29)
  • 【.NET Framework 4.5】 IListがIReadOnlyListを継承してない理由。
    art55 (02/23)
  • 【.NET Framework 4.5】 IListがIReadOnlyListを継承してない理由。
    かるあ (02/22)
  • 【C#】Dictionaryの実装・データ構造・アルゴリズムを観察する。
    art55 (01/16)

recent trackback

recommend

recommend

recommend

C#プログラマのための.NETアプリケーション最適化技法 (Programmer's SELECTION)
C#プログラマのための.NETアプリケーション最適化技法 (Programmer's SELECTION) (JUGEMレビュー »)
Sasha Goldshtein,Dima Zurbalev,Ido Flatow,サシャ・ゴルドシュタイン,ディマ・ズルバレフ,イド・フラトー

recommend

ろんりと集合
ろんりと集合 (JUGEMレビュー »)
中内 伸光
とてもわかりやすいです。

recommend

recommend

シャノン・ノイマン・ディジタル世界
シャノン・ノイマン・ディジタル世界 (JUGEMレビュー »)
市川 忠男
4章がリレーショナルデータベースな内容になってます。ページ数があまりありませんが、ポイントがものすごく的確にまとまっていて、感動します。

recommend

recommend

東プレ Realforce91UBK-S 静音キーボード 静電容量無接点方式 変荷重 ブラック NG01BS
東プレ Realforce91UBK-S 静音キーボード 静電容量無接点方式 変荷重 ブラック NG01BS (JUGEMレビュー »)

テンキーレス、静音のRealForce91UBK-S。スコスコ感がたまらなく気持ちいいです。家と会社で2台持ってます。

recommend

recommend

プログラミング.NET Framework 第4版 (プログラミングシリーズ)
プログラミング.NET Framework 第4版 (プログラミングシリーズ) (JUGEMレビュー »)
Jeffrey Richter
発売予定美 2013年10月10日。.NET Frameworkとお付き合いする人のバイブルですね。

recommend

recommend

キャット・シッターの君に。
キャット・シッターの君に。 (JUGEMレビュー »)
喜多嶋 隆
私のイラストレータデビュー本です。

recommend

Essential .NET ― 共通言語ランタイムの本質
Essential .NET ― 共通言語ランタイムの本質 (JUGEMレビュー »)
ドン・ボックス,クリス・セルズ,Don Box,Chris Sells,吉松 史彰

links

profile

search this site.

others

mobile

qrcode

powered

無料ブログ作成サービス JUGEM