Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Oracle製品を使ったシステム開発の新人研修事例/JPOUG Tech Talk Night #9

Oracle製品を使ったシステム開発の新人研修事例/JPOUG Tech Talk Night #9

弊社の所属部署では内製開発力やトラブルシューティング力強化を目的として、新人全員それぞれに、仮想マシンの作成から Oracle Linux, Oracle Database, Oracle WebLogic Serverなどのインストールと設定をさせ、簡単なJavaアプリケーション開発を行う一気通貫のモノ作り研修を行っています。
研修の工夫点や「初期化パラメータファイルをviで変更したら、なぜかエラーメッセージが出続けて止まりません!」などのトラブルシューティング事例を紹介します。

sawaki.hideto

June 25, 2024
Tweet

Other Decks in Technology

Transcript

  1. Copyright (c) The Japan Research Institute, Limited 自己紹介 佐脇 秀登(SAWAKI

    Hideto) • 株式会社 日本総合研究所においてクレジットカードシステム(オープン系)開発を所管する本部の 部長(オンプレのOpenShift上に構築したAPIを提供するシステムや、一日数千万件のデータを扱う Oracle Exadata など、ミッションクリティカルで大規模なシステム基盤の責任者) • また、社内でシニアエキスパート(ITアーキテクト)としての職位に認定され、全社の大規模案件の アーキテクチャ検討支援を行うとともに、技術相談やログ解析などトラブルシューティング支援にも従事 • 本部内の新人研修も企画、運営 → 本日はこのお話をします 保有資格 • ORACLE MASTER Platinum 8i • 高度情報処理技術者試験 x 8 • ネットワークスペシャリスト • プロダクションエンジニア • データベーススペシャリスト • セキュリティ(今の情報処理安全確保支援士相当) • アプリケーションエンジニア(今のシステムアーキテクト相当) • プロジェクトマネージャ • ITサービスマネージャ • ITストラテジスト
  2. Copyright (c) The Japan Research Institute, Limited 若手の方/指導する側の方へ システムを開発する力や、Oracle製品を扱う技術力はどうやって鍛えますか? 生成系AIによる回答(をベースに加筆、修正)

    1. Oracle社公式のトレーニングコースやセミナーに参加する 2. 関連の書籍や技術ブログを読む 3. 実際のプロジェクトでOracle製品を使用する経験を積む 4. オンラインのコミュニティに参加して情報交換をする(JPOUG) 5. ハンズオンの演習や実践的な課題を解く 6. 模擬試験を解く/資格を取得する 7. 有識者からのフィードバックを受ける 関連の書籍例 どういう人になりたい/育てたいですか? • 資格は持っているけど実際のシステムは作ったことがない人? or • 資格は無くても、システムを作れる人? ⇒ 資格も持っていて、システムも作れる人!
  3. Copyright (c) The Japan Research Institute, Limited 新人研修について 【研修の目的】 当社はシステムを作る会社

    ⇒ 要件定義やプロジェクト管理だけでなく、パートナーさんが作成 した成果物(設計、テスト結果)をレビューできる技術力(目利き力)を身に付けるとともに、 いざとなれば内製開発やトラブルシューティングをできる社員を育成する。 【どうやって】 新人全員の基礎的な集合研修が終わり、Java、インフラ(Linuxやネットワーク)の外部研修を 受講した8月から翌年3月までの間に、以下を実施(別途OJTも) • モノ作り研修(基礎編)(講師:先輩社員) →座学や資格試験で身に付かない実践力を鍛える • モノ作り研修(応用編)(講師:先輩社員) (要件定義~システムテストまで疑似案件開発を実施) ※100万件テストデータ作成、JMeterの負荷テスト、AWR取得なども実施 その後、先輩とともに資格取得のための勉強会(輪講形式) (LPIC1(Linux), Oracle Master Bronze) ※私の部署は6割がOracle Master保有。うち半分はGold以上。
  4. Copyright (c) The Japan Research Institute, Limited モノ作り研修(基礎編)について 【研修の目的】 •

    まずは標準的な構成であるWeb三層アーキテクチャシステムを中身からしっかりと理解する • トラブルシューティングの基本動作を身に付ける • 一度は一気通貫でシステムを作りきる経験を積む 【どうやって】 知識のインプットだけでなく、実機構築や成果物作成などアウトプットを行う ↓ • 新人全員それぞれに、仮想マシンの作成からOSやミドルウェアのインストール と設定をさせ、簡単なJavaアプリケーション開発という一気通貫のモノ作りを 行う • トラブル発生時は自分でログを見て、マニュアルやネットで調べる • それでもダメなら先輩にQAを書く(サポート問い合わせの練習) • 自分で構築したシステムの概念図を発表(説明できないものは理解してない) • 自由研究課題の発表を行う(例:OracleとDb2, SQL Serverの違いについて)
  5. Copyright (c) The Japan Research Institute, Limited モノ作り研修(基礎編)概要図 研修用サーバ Windows

    Hyper-V Apache WebLogic Oracle HTML サーブレット リリース HTML サーブレット 一人一つの仮想マシンを 切り出して実施 スキル区分 身に付けるスキル(抜粋) PC/ブラウザ □Webアプリの製造・テスト □Webアプリのリリース □デバッグ(開発者モード) □HTTPレスポンスの理解 ネットワーク □疎通確認 □SSH □アクセス制御 □帯域制御 サーバ □仮想環境のゲストOS作成 □OSインストール □WEB、AP構築、起動、停止 □サービスの自動起動設定 □Linuxの基本コマンド データベース □DB構築、起動、停止 □スキーマ作成 □テーブル作成 □sqlplusの操作 □SQLの基本 OS(Oracle Linux) 研修用サーバ上に仮想マシンを作成し、Oracle Linuxをインストール。 そこにApache、Oracle WebLogic、Oracle Databaseをインストールし連携させる。 また、テーブルに対する更新を行うアプリケーション(クレジットカードの入会申し込み画面)を 作成しリリースする。 開発用端末 プラグイン JDBC CDB PDB1 http ssh
  6. Copyright (c) The Japan Research Institute, Limited 工夫した点について(1/4) 講師側の負担を減らすため構築手順書は一から作らない •

    VM作成、Oracle Linux、Oracle Database のインストール VM作成からのOracle 19cインストール手順 前編(Linuxシングル) | コーソルDatabaseエンジニアのBlog (cosol.jp) https://cosol.jp/techdb/2021/06/oracle19c_setup_1of2/ コーソル(渡部)さんありがとう! 「Oracle Linux 7.9 を 8.6 に読み替えて!」 • Oracle WebLogic Server Oracle WebLogic Server 12.2.1.4.0 - チュートリアル https://docs.oracle.com/cd/F23552_01/weblogic-server/12.2.1.4/tutorials.html Oracleさんありがとう! • Apache Apache HTTP Server用プラグインの構成 (oracle.com) https://docs.oracle.com/cd/E72987_01/webtier/develop-plugin/apache.htm Apache から WebLogic にリクエストを転送するためのプラグイン (mod_wl_24.so)の マニュアルとメモを渡す。Apacheの基本的な部分はググるだけで大丈夫。
  7. Copyright (c) The Japan Research Institute, Limited 工夫した点について(2/4) トラブルシューティングを経験して欲しいのでトラブルの種を仕込む 「OS起動時に自動でサービス(WebLogicやOracle)が起動するように設定すること」

    と、あえて言わず、たまにOSから再起動してもらう → 阿鼻叫喚 「OSは起動しましたが Oracle にログインできません!」 「エラーメッセージは?それ、どういう時に出るエラー?」 「リスナーもOracleインスタンスも起動してません!」 「自動起動するように設定していないから、起動していないね。 手動で起動する手順は調べてみて。 自動起動させるには OS に systemd という機能があるけど、それは別途勉強会で」 「手動起動させようとすると、またエラーが出ます」 「実施した手順を見せて。ORACLE_HOMEなど環境変数が設定されていないよ」 「WebLogicは起動しているはずなのに、ページが表示されません」 「ログは?アクセスログに出ていない。firewalldで拒否されている。」 「firewalldは無効化したはずなんです」 「それは一時的な無効化。永続化していないので再起動すると元に戻るよ」 → 何のために必要な手順か理解するまでエラーメッセージを元に復旧を繰り返して覚える
  8. Copyright (c) The Japan Research Institute, Limited 工夫した点について(3/4) 質問の仕方をテンプレートで教える (自分の状況、実施したことを製品サポートに正しく効率よく伝える練習になる)

    技術系メーリングリストで質問するときのパターン・ランゲージ (hyuki.com) https://www.hyuki.com/writing/techask をアレンジ。テンプレートに従うと、質問する前に自然に自分で調べる癖がつく。 原因を確かめるため、以下のようなテストを行ってみましたが、 問題の解決には至りませんでした。 (a) 入力を◦◦ではなく××にしてみた →上記と同じ結果になった 【エラーメッセージのコピー&ペースト】 なお、私の環境は以下の通りです。 【マシン, メモリ量, OS, 利用ソフト, バージョンなどを箇条書 きに】 ◦◦、××、△△を検索しましたが、 ◎◎に関するページばかりで、解決に役立つ情報は見つかり ませんでした。 この研修の過去ログも調べましたが、 ◦◦に関する話題は見つかりませんでした。 ◦◦を実行すると、◦◦というエラーになる問題で困っ ています。原因または解決策をご存知の方はいらっしゃ いませんか。 私の行った手順は以下です。 (1) (2) すると、以下のような結果になりました。 【表示されたものをコピー&ペーストする】 私は【予想結果】になると思いました。なぜなら、 【参考資料】には、以下のように書かれているからです。 > 【適切な分量の引用】
  9. Copyright (c) The Japan Research Institute, Limited 工夫した点について(4/4) 質問されたら、なるべく答えそのものではなく、調べ方を教える (お腹が減った人には魚をあげるのではなく、魚釣りの方法を教えて、独り立ちを促す)

    • Oracle 製品マニュアルはインターネットに公開されていて、この辺に書いてあるよ • ApacheからWebLogicにリダイレクトする設定は、 (WebLogic のプラグインなので、Apacheの設定だけど) WebLogicのマニュアルに書いてあるよ • Oracle 製品には、My Oracle Support というサポートサイトがあって、保守契約者は様 々なナレッジや不具合情報にアクセスして、自分で調べられるよ
  10. Copyright (c) The Japan Research Institute, Limited 【事象】 初期化パラメータファイルをviで変更したら、なぜか エラーメッセージが出続けて止まりません!

    事例1 【原因】 初期化パラメータファイルはバイナリとテキストがある。 バイナリ(spfile)をviで編集したため破損した。 【対応】 alert.logから過去の起動時の初期化パラメータを読み取り、 テキストの初期化パラメータファイルを再作成して復旧。 (復旧方法は My Oracle Supportにありました。 普段からalert.logを見ている人は、初期化パラメータが 記録されているのを見かけるので、これで戻せると気付くかも)
  11. Copyright (c) The Japan Research Institute, Limited 【事象】 sqlplusから接続しようとすると「ORA-12154: TNS:

    指定された 接続識別子を解決できませんでした」とエラーになります。 サービス名もあっています。何なら、tnsnames.oraを参照しない 簡易接続ネーミングで接続しようとしても同じエラーです。 事例2 【原因】 パスワードに@が含まれると接続できない特定バージョン(19.5~)の SQL*Plus の不具合。(My Oracle Support* で解決) ※Doc ID 2784930.1 【対応】 パスワードを変更する。または引用符””で囲む。 簡易接続ネーミング・メソッド ユーザ名[/パスワード]@ホスト名:ポート/サービス名
  12. Copyright (c) The Japan Research Institute, Limited 【事象】 rootでリスナーを起動すると、ログの書き込み権限が無くエラー 事例3

    【原因】 起動ユーザが違う。 【対応】 rootではなく、Oracleインストールユーザで起動させる。 【素朴な疑問】はて?なぜrootなのに書けないんですか? 【超深堀】 Linuxのシステムコールトレース(strace)コマンドで解析。 ⇒ リスナーはrootで起動されるとdaemonさんにスイッチする 内部動作(setuid(2,…))だったため権限エラーになっていた。 教える方もトラブルシューティング技術がレベルアップ。
  13. Copyright (c) The Japan Research Institute, Limited • 新人全員、インフラ構築から簡易アプリ作成までモノ作りを完遂 •

    あえてトラブル対応をさせることと、質問のテンプレートを使う ことで、自分で考えて、調べて、分からなければ聞く、という 基本動作が身に付いた • 先輩や上司への報告、サポート問い合わせの訓練になった • 2年目以降の先輩社員も、新人の質問対応で復習したり スキルアップした ⇒ 組織として好循環 モノ作り研修を終えて
  14. Copyright (c) The Japan Research Institute, Limited • 技術力アップには、モノ作りをして、手を動かすことが大事 知っていることを実際に何度も操作して身に付けよう

    • ログは自分の目で見て調べよう • 原因は仮説を立てて検証しよう • 資格試験と、手を動かすことはバランス良く 実際に触ってからの方が資格試験も理解しやすいこともある • 壊しても誰にも迷惑をかけないハンズオン環境を持とう 共用機でビビッていると試せません! ⇒ 気軽にインストールできる Oracle23ai FREE などがオススメ 最後にオススメ