Oracle Databese 試験の変更について

Oracle Databaseの認定試験に一部変更があったようです。

もちろん今までの取得したものは、有効ですが、これから受験される方は

試験内容や範囲も変更になるものがるようです。

 

先日、資格取得予定の記事を書きましたが、受験・取得を予定しているOracle Database Bronze試験も今までは、2つの試験に合格して、Bronze認定でしたが、これからは、1種類の試験に合格すれば、Bronzeに認定されます。

 

詳細は、以下のOracleのサイトで確認できます。

www.oracle.com

また、PL/SQLの試験もSilverからですが存在することがわかりました。

こちらは、情報も少なく、対策本も古いものしかありませんでしたが、Amazonで入手できたので、Bronze合格後に受験したいと思います。

 

今後の学習予定と資格取得予定

2020年9月もまもなく終わりますね。

コロナ渦などもあり、あっという間の9か月でした。

 

4月から業務も変更になり、転勤もあり、引っ越しもありでいろいろ大変でしたが、なんとか乗り切ることが出来そうです。

 

4月からは、Oracle SQL Developerを利用したSQLを中心に学習を進めました。

AccessMySQLも学ぶ予定もありましたが、採取的には、OracleDatabeseに的を絞って、BROZEの資格取得も視野に入れて、学習を進めました。

 

10月にまもなく入るので、ここで10月以降の学習予定と資格取得予定を明確にして、それをゴールにして、学習を進めていけたらと考えています。

 

学習予定

 

上記の2つに的を絞ります。よって資格取得もおのずと以下の2つになります。

資格取得

2つに的を絞っていますが、決して合格がたやすい試験ではありません。

OracleDatabeseは、受験代金も安価ではなく、2つの試験の合格が必要です。

 

一方、高度情報処理試験は、来年4月の合格を目指しますが、試験レベルも高く、午前試験Ⅰを突破する必要もあり、こちらは、別途試験対策が必要になります。

 

データベーススペシャリストの問題は、事例問題が多く、読解力も必要になります。

こちらも万全な試験対策が必要で、試験は、年1回4月になります。

 

よってOracleDatabeseの試験対策と並行して、高度情報処理試験学習が必要になります。データベースの部分は、共通する部分もありますが、午前対策は、用語などは、暗記が必要になる部分もあります。

 

また、時間配分も重要になります。事例問題にも慣れて、読解力を身に着けて、対応していく必要があるので、難易度は非常に高く、1回の受験での合格は、ほぼ難しいです。なお、午前試験は、合格基準に達していれば、次回以降の受験が免除になります。

 

まずは、年内にOracleDatabeseの1試験合格を目指して学習を進めます。

並行して午前対策とデータベーススペシャリストの学習を進めます。

 

来年の4月以降は、業務内容も考慮して学習内容を見直します。

 

 

【備忘記録】Oracle SQL Developerで接続出来なくなった場合の解決方法

昨日、SQL Developerに接続したら、接続エラーになる事象が発生しました。

その時の解決方法を備忘記録として記載しておきます。

自宅の環境ではよく発生している事象ですが忘れないようにメモ。

 

1,発生した事象の背景

今まで接続出来ていたOracleデータベースに接続出来なくなりました。パスワードも間違えていない。特に設定を変更した覚えもなく。

 

2,思い当たる原因

数日前にPCの接続方法を有線LAN接続から無線LAN接続に変更しました。

これが原因だと気が付くまでに少し時間がかかりました。

 

3,原因切り分け1

まずは、プロセス確認。

環境は、Windows10です。「PC」を右クリックで「管理」→「サービスとアプリケーション」→「サービス」を選択して、サービスの一覧を表示。

Oracleに必要なプロセスを確認し、プロセスの落し上げ(再起動)を実施しました。

f:id:rdbsql:20200913204548p:plain

Oracleプロセス

Oracleの名前ではじまるプロセスは、上記の4つになります。

私は、4つともプロセスの再起動を実施しましたが、すべては、必要なかったかもしれません。

その後、SQL Developerを再起動してみましたが、症状に変わりはなく、接続できない状態でした。

 

4,原因切り分け2

接続しているホスト名がIPアドレスで接続されている場合、IPアドレスが変更になったことが原因の可能性があります。

有線LAN接続では、固定IPに設定していましたが、コマンドプロンプトで確認したら設定されているIPアドレスDHCPで自動割り当てになり、変更されていました。

早速、Oracle SQL Developerの接続先のIPアドレスを変更して接続を試みましたが、接続できませんでした。

この時、SQLPlusからは、SYTEMアカウントから正常に接続出来ていることを確認しており、Oracleのサービスは、正常に動作していることを確認しており、Oracle SQL Developerでの事象であることがわかりました。

 

5,原因切り分け3

これで接続できない原因は、ほぼ特定できました。

Oracleの設定ファイル情報が古いIPアドレスになっていることが原因ではないかと予想して、設定ファイルを確認したら、やはり設定ファイルのIPアドレスが古いものになっていました。新しいIPアドレスに変更して、保存。再度、プロセスを再起動。

その後、Oracle SQL Developerを再起動→再接続して、接続出来ました。

 

設定ファイルは、私の環境では、以下にありました。

D:\app\oraclehome\product\12.2.0\dbhome_2\network\admin

listener.ora

tnsnames.ora

 

6,結論と対策

本来の対策としては、IPアドレスを固定に設定しておくことが無難です。

ISPによっては、無線LANの場合、固定IPをうまく設定できない場合もあります。

私もそうでした。

サーバである以上、IPアドレスが変わることは、本来想定外であるからです。

DHCPでも同じIPアドレスを取得出来たり、PCを再起動しなければ、問題ないかもしれませんが、WinodwsアップデートなどでPCの再起動が必要になるケースも多々、あると思います。その場合、運悪く変更になってしまう可能性もあります。

私の場合、Oracleデータベースに接続できなくなった場合、ほぼ上記の手順を順番に実施することで解決できています。

また、接続先のホスト名がIPアドレスでなくても、何かの理由でホスト名が変更になると接続出来なくなります。

そのため、IPアドレスを固定化して、hostsファイルにホスト名を記入しておけば、常にその名前で接続できます。

IPアドレスが変わった場合も、hostsのIPアドレスを変更するだけで接続が出来ますのでいくらか手間が省けると思います。

 

以上です。

PL/SQL学習日記 サンプルコードの謎を解け!回答編

謎は、すべて解けた。犯人もそのトリックもわかったぜ。

非常に本当に簡単なことだった。

昨日は、気が付かなかったけど、朝もう一度確認したら、一目瞭然でしたね。

でも、これでまた学習を前に進めることが出来る。

 

これを機にPL/SQLのデバック方法も学ばないとだな。自分なりの方法を確立しておきたいというのが正直な感想。

 

模範解答は、以下の通り。違いは、見ていただければわかると思います。

--

DECLARE
v_emp emp%ROWTYPE;
CURSOR c1 IS
SELECT
*
FROM
emp
WHERE
deptno = 10;

BEGIN
OPEN c1;
LOOP
FETCH c1 INTO v_emp;
EXIT WHEN c1%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('DEPTNO : '|| v_emp.deptno
|| ' EMPNO : '|| v_emp.empno
|| ' ENAME : '|| v_emp.ename
|| ' JOB : '|| v_emp.job);
END LOOP;
CLOSE c1;
END;

--

出力結果

DEPTNO : 10 EMPNO : 7782 ENAME : 高橋 JOB : 部長
DEPTNO : 10 EMPNO : 7839 ENAME : 林 JOB : 社長
DEPTNO : 10 EMPNO : 7934 ENAME : 田村 JOB : エンジニア

--

さあ、また今日からPL/SQLの学習を再開だ。

 

PL/SQL学習日記 サンプルコードの謎を解け!

こんなコードを書きました。

ある本に掲載されていたサンプルコードなのですが、何も表示されない

状態です。

 

--

DECLARE
v_emp emp%ROWTYPE;
CURSOR c1 IS
SELECT
*
FROM
emp
WHERE
empno = 10;

BEGIN
OPEN c1;
LOOP
FETCH c1 INTO v_emp;
EXIT WHEN c1%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('DEPTNO : '|| v_emp.deptno
|| ' EMPNO : '|| v_emp.empno
|| ' ENAME : '|| v_emp.ename
|| ' JOB : '|| v_emp.job);
END LOOP;
CLOSE c1;
END;

--

解答とも相違なし。

元のempにも該当データがあることが確認できます。

コンパイル上のエラーは、ないので、構文は問題なさそう。

 

考えられるのは、構文の順序。

LOOP文もそのままEXITされている可能性もあります。

 

いろいろ考えてみよう。それも学習の一環だ。

 

今後の学習内容について

今後、必要になるだろうと思われる内容を整理してみます。

重要性や順番は、順不同で列挙してみます。

  1. SQL PL/SQLAccess含む
  2. Python Excel連携含む
  3. AccessVBA DB連携含む
  4. JavaScript
  5. GAS(JavaScriptベース)
  6. ExcelVBA

実は、Pythonを除くと、ほぼ実務でも利用する知識だということがわかりました。

現在のIT業界では、ほぼ必須になると思われる知識ですね。

比較的環境構築も容易で、学習のための本や動画なども多く、学習しやすい環境にもありますね。

実務で利用する内容の学習が最優先になりますが、上記の6つを今後も継続して学習していくことになりそうです。

これからのブログには上記の内容をメインに技術ブログを書いていく予定です。

お楽しみに。