Oracleの基本
~データベース入門から設計/運用の初歩まで

[表紙]Oracleの基本 ~データベース入門から設計/運用の初歩まで

A5判/368ページ

定価(本体2,640円+税)

ISBN 978-4-7741-9251-2

電子版

→学校・法人一括購入ご検討の皆様へ

書籍の概要

この本の概要

データベース製品で世界/国内ともにNo.1のシェアを誇るOracleは,データベースに携わるエンジニアにとって必須知識の1つといえます。本書では,Oracle初心者/新人エンジニアが押さえておくべき知識とスキルをわかりやすく丁寧に解説。Oracleの使い方はもちろん,データベースの基礎知識から,データ操作のためのSQL,テーブル設計,データベース運用/管理の基礎までしっかり押さえ,実務で使える入門スキルを身につけられます。
日本で4人しかいない「Oracle ACE(Oracle Database)」の称号を持つトップエンジニア率いる現場の精鋭エンジニアたちが生み出した,究極のOracle入門書です。

こんな方におすすめ

  • これまでOracle Databaseを使ったことがないOracle初心者の方
  • Oracle Databaseの基本を学びたい新人SE,新人アプリケーション開発者,新人データベース管理者の方
  • ORACLE MASTERの参考書を探している方

著者の一言

Oracle Database(以下,Oracle)は,非常に多くの企業向けシステムで使われているデータベース製品です。企業向けシステムに関わるエンジニアにとって,Oracleの知識は必要不可欠なものであり,その知識の証明としてオラクル社によって「ORACLE MASTER」という資格試験が定められています。システム開発/運用の企業に就職した新人エンジニアの中には,「会社からORACLE MASTERの受験が義務付けられている」という方もいるかもしれません。
しかし,いざ,Oracleの勉強をはじめたり,Oracleの実務に携わると,こんなことを実感するのではないでしょうか。

「多種多様な機能がありすぎて,どう使いこなせばいいのかわからない」
「Oracleだけで使われる独自用語がたくさんあって,頭が混乱する」

また,システム開発/運用の実務におけるOracleとのかかわり方は,Oracleの使い方だけでありません。データの更新や参照,アプリケーション開発,テーブル設計,データベース運用など多岐にわたります。
にもかかわらず,これまでの市販の入門書やORACLE MASTER試験対策本の多くでは,Oracle単体の機能やしくみに閉じた狭い視点で,Oracleの用語説明をベースにした解説に終始してしまい,Oracleの全体像やシステム開発/運用の実務におけるOracleの役割を理解しにくい傾向にありました。
そこで,本書はOracle独自の用語の使用を最小限にとどめ,次の2点を考えながら執筆しました。

  • 平易な表現を用いてOracleを解説すること
  • データベース,Oracle,開発,設計,運用の基本について広くさまざまな視点から学べること

これらの解説ノウハウは,弊社コーソルの新人教育で培われたものです。コーソルの新人教育には,約2週間という短い期間で多くの新卒エンジニアをORACLE MASTER Bronze DBAに合格させているという実績があります。さらに最近では,IT 未経験の新人エンジニアが,入社から2年半で,ORACLE MASTER Platinum(2日間の実技試験により認定されるORACLE MASTERの最上位資格)を取得するような例も出てきています。本書には,コーソルの新人エンジニアの生の声を反映させ,ノウハウを惜しみなく注ぎ込みました。
この本を手にとっていただいたみなさんには,Oracleやデータベースを学びはじめる最初の1冊として,ぜひ役立てていただければと思います。

目次

  • はじめに
  • 本書について

第1章 データベースを知る

1.1 なぜデータベースは必要なのか

1.2 リレーショナルデータベースの基礎

  • リレーショナルモデルにしたがってデータを整理する
  • 標準化されたデータアクセス用言語 SQL
  • 本書の構成

第2章 Oracleを使ってみる

2.1 データベースを構築する

  • インストールファイルをダウンロードする
  • Oracleをインストールする
  • 作成したデータベースを確認する

2.2 データベースに接続する

  • SQL*Plusでデータベースに接続する
  • データベースへの接続を切断する

2.3 データベースを起動/停止する

  • SYSユーザーでデータベースに接続する
  • データベースを停止する
  • データベースを起動する

2.4 学習用ユーザーを作成する

  • testユーザーを作成する

2.5 テーブルとデータ操作の基本

  • テーブルを作る‐CREATE TABLE文
  • データ型とは
  • テーブルの定義を確認する
  • データを追加する‐INSERT文
  • データを検索する‐SELECT文
  • データを更新する‐UPDATE文
  • データを削除する‐DELETE文
  • すべてのデータを高速に削除する‐TRUNCATE TABLE文
  • テーブルを削除する‐DROP TABLE文
  • SQLにコメントを入れる
  • データベースを削除する

第3章 より高度なデータ操作を学ぶ

3.1 データを複雑な条件で検索する

  • テストデータを準備する
  • 列の表示名を変更する
  • 検索結果をソートする‐ORDER BY句
  • さまざまな条件でデータを絞り込む

3.2 データを加工/集計する

  • 演算子とファンクション
  • データを合計する‐SUM()
  • データの平均値,最大値,最小値を得る‐AVG(),MAX(),MIN()
  • データの件数を数える‐COUNT(*)
  • 種類ごとにデータを集計する‐GROUP BY句,HAVING句

3.3 NULLとIS NULL条件

  • 列にNULLを設定する
  • NULLを検索する‐IS NULL条件
  • 演算子,ファンクション,文字列連結とNULL
  • 集計ファンクションとNULL
  • COUNT()とNULL
  • NULLの注意点

3.4 SELECT文とSELECT文を組み合わせる

3.5 テーブルを結合する

  • 内部結合
  • 左外部結合
  • 右外部結合

3.6 データの表示画面にこだわる

  • 改行/改ページの動作を調整する
  • 列データの表示幅を調整する
  • 日時データの表示を調整する

3.7 トランザクションでデータを安全に更新する

  • なぜトランザクションが重要か
  • トランザクションの「ALL or NOTHING」特性
  • トランザクションを使う
  • 実行中のトランザクションを取り消す‐ROLLBACK文
  • トランザクションを開始/終了する方法

第4章 データをより高速に/安全に扱うしくみ

4.1 検索処理を高速化するインデックス

  • なぜインデックスが必要か
  • インデックスのしくみ
  • インデックスを作成する‐CREATE INDEX文
  • インデックスを使う
  • インデックスを使える検索条件

4.2 SELECT文をシンプルにまとめるビュー

  • なぜビューが必要か
  • ビューを作成する‐CREATE VIEW文
  • ビューを使うメリット
  • 4.3 不正なデータの混入を防ぐ制約
  • なぜ制約が必要か
  • NOT NULL制約
  • 主キー制約(プライマリーキー制約)と主キー
  • 一意制約(ユニーク制約)と一意キー
  • 外部キー制約(参照整合性制約)と外部キー
  • チェック制約
  • 複数の列に対して制約を指定する

4.4 連番を振り出すシーケンス

  • なぜシーケンスが必要か
  • シーケンスを作成して連番を取得する

4.5 セキュリティ機構の基礎となるユーザー機能

  • ユーザーを作成する‐CREATE USER文
  • ユーザーを削除する‐DROP USER文
  • アカウントをロックする
  • パスワードを変更する
  • オブジェクト所有者としてのユーザー/スキーマ

4.6 ユーザー権限を制御する

  • 権限システムの基礎
  • 権限を付与する/取り消す‐GRANT文/REVOKE文
  • 管理ユーザー(SYSユーザー/SYSTEMユーザー)の権限
  • 複数の権限をグループ化するロール
  • アプリケーション用ユーザーに付与すべき権限
  • 明示的に権限を付与しなくても実行できる操作
  • 権限を付与できる権限

第5章 テーブル設計の基本を知る

5.1 テーブル設計とは

  • テーブル設計の3つのステップ
  • テーブル設計の題材とする業務

5.2 第1ステップ‐概念設計

  • テーブル候補を決める‐エンティティの抽出
  • 情報をテーブル候補に含める‐エンティティの属性の抽出
  • テーブル候補を図に表す‐概念E-R図の作成

5.3 第2ステップ‐論理設計

  • 論理設計でやること
  • リレーショナルモデルの基本
  • 主キーを決める
  • くり返し項目を別テーブルに切り出す
  • 関連の多重度を明らかにする
  • 1対多関連を外部キーでモデル化する
  • 多対多関連を交差テーブルに変換する
  • 1対1関連を取り除く
  • 重複して存在する列を削除する
  • ほかの列から計算できる列を取り除く
  • 正規形のルールを破っていないかを確認する
  • 列に設定するデータ項目の特徴を整理する
  • 業務に必要なデータがデータベース化されているかチェックする

5.4 第3ステップ‐物理設計

  • Oracleがオブジェクトにストレージ領域を割り当てるしくみ
  • 物理名を決める
  • 列のデータ型,サイズを決める
  • 制約を決める
  • インデックスを付ける列を決める
  • テーブル,インデックスのサイズを見積もる
  • オブジェクトを格納する表領域を作成する
  • オブジェクトの所有ユーザーを作成する
  • 決定事項を設計書にまとめる
  • SQL(CREATE xxx文)を作成する

第6章 データベース運用/管理のポイントを押さえる

6.1 データベースにおける運用/管理の重要性

  • 適切な運用/管理がされないと問題が発生する
  • データを守る:バックアップ
  • データベースを調整する:メンテナンス
  • データベースが正常に動作しているか見る:監視
  • ネットワーク環境でデータベースを使用する:リモート接続
  • データベースのトラブルに対処する

6.2 バックアップを取ってデータを守る

  • Oracleのバックアップ機能のしくみ
  • アーカイブログモードで運用する
  • アーカイブログモードへ変更する
  • RMANを使ってオンラインバックアップを取得する
  • オフラインバックアップを取得する
  • バックアップ取得で守るべき4つのポイント
  • バックアップ出力先を設定する
  • アーカイブREDOログファイルをバックアップする
  • 定期的にバックアップを取得するしくみをつくる
  • 古いバックアップを削除する
  • 障害からデータベースを復旧する

6.3 データベースのメンテナンス

  • OracleがSQLを実行するしくみ
  • オプティマイザ統計情報を収集する
  • テーブルが断片化するまでの流れ
  • テーブルを再編成して断片化を解消する
  • Oracleを構成する初期化パラメータとは
  • 初期化パラメータの値を確認する
  • 初期化パラメータの値を変更する‐ALTER SYSTEM SET文
  • メモリ関連の初期化パラメータ‐MEMORY_TARGET,SGA_TARGET,PGA_AGGREGATE_TARGET
  • プロセス関連の初期化パラメータ‐PROCESSES

6.4 データベースを監視する

  • データベース監視の4つの観点
  • OracleやOSの起動状態を監視する‐死活監視
  • OracleやOSのエラーを監視する
  • ストレージの空き状況を監視する
  • OSリソースの使用状況を監視する
  • Oracleのパフォーマンス情報を定期的に取得する

6.5 ネットワーク環境/本番環境でOracleに接続する

  • リモート接続の全体像とOracleクライアント
  • リスナーを構成する
  • リスナーを起動/停止する‐lsnrctlコマンド
  • サービス登録を構成する
  • クライアントマシンを構成する
  • クライアントのSQL*Plusからデータベースにリモート接続する
  • アプリケーションとドライバ

6.6 トラブルに立ち向かうためには

  • まず,なにが起きているのか確認する
  • ログを確認する
  • My Oracle Supportやインターネット検索を活用する
  • テクニカルサポートに迅速に支援を依頼できる準備をしておく
  • おわりに
  • 索引
  • 著者略歴
  • 監修者略歴

著者プロフィール

渡部亮太(わたべりょうた)

Oracle Database製品サポート業務に従事したのち,現在はコーソル全体の技術力向上活動および対外広報活動を行う。講演および執筆実績多数。
日本で4人しかいないOracle ACE(Oracle Database)の1人。Japan Oracle User Group (JPOUG) 共同創設者,ボードメンバー。
最近の楽しみは,7歳の息子とラグビーをすること,ラグビーを観戦すること。
ORACLE MASTER Platinum Oracle Database 10g,11g,12c保有。
好きなOracle Databaseのエラー番号はORA-01578。


相川潔(あいかわきよし)

前職ではシステム開発(要件定義から実装,運用まで)に従事。より専門性の高いスキルを習得すべくコーソルへ転職。
ORACLE MASTER Platinum Oracle Database 10g,11g,12c保有。
仕事のモットーは「困った時こそシンプルに考える」。好きな食べ物はカキフライ。
好きなOracle Databaseのエラー番号はORA-01017。
なんと番号が私の誕生日。さらに偶然にも,コーソル ホームページ技術情報のORA-01017説明ページの執筆を担当した。


日比野峻佑(ひびのしゅんすけ)

コーソルへ新卒で入社。Oracle Database製品のサポート業務を経験したのち,現在はVMware製品のサポートに従事。
Oracleに次ぐコーソルの柱を築くべく,新部署の立ち上げに勤しんでいる。
趣味は料理。料理で渡伊した異色の経歴を持ち,社内行事ではコーソル専属のシェフとして腕をふるっている。
ORACLE MASTER Platinum Oracle Database 11g,VMware Certified Professional VCP5-DCV,VCP6-DTM保有。
好きなOracle Databaseのエラー番号はORA-07445。


岡野平八郎(おかのへいはちろう)

独立系ソフトハウスで約4年間DB2, SQL Serverの運用管理を担当した後,スキルアップできる環境があり,行動指針にも共感できたコーソルへ2006年4月に転職。
現在はOracle Databaseの技術支援を行う傍ら,チームの「ご意見番」として,蓄積した技術や対応スキルなどを惜しみなくメンバーへ伝えている。
ORACLE MASTER Platinum Oracle Database 12c(1番乗り)など,保有資格は多数。 趣味はソロスタイルのアコースティックギター。
好きなOracle Databaseのエラー番号はORA-04031。


宮川大地(みやがわだいち)

独立系SIerで約5年間,ジョブ管理ツール(とOracle Databaseもほんの少し)の運用業務に従事。ITエンジニアとしての更なるスキルアップを目指し,2011年11月にコーソルへ転職。
Oracle Database製品の技術支援チームでExadataと相思相愛な関係に。現在は,Exadataを使用した金融系基幹システムの運用業務という形でお付き合い継続中。Exadataへのパッチ適用回数は,国内でもトップクラス(のはず)。
趣味は草野球とゴルフ。やれないと翌週絶不調。
好きなOracle Databaseのエラー番号はORA-06512。


株式会社コーソル(かぶしきがいしゃこーそる)

Oracleを中心にデータベースの設計,導入・構築,運用管理,保守・サポート,コンサルティング等,「Oracle Database技術」の強みを活かしたビジネスを展開。
「CO-Solutions=共に解決する」の理念のもと,「データベース技術」×「サービス」を軸とし,高い技術をもとにお客様へ"心あるサービス"を提供し続けることにこだわっている。
ORACLE MASTER Platinum保有者がリモートでデータベースの定常業務から障害発生時の対応を24時間365日で行う「リモートDBAサービス」や「時間制DBAサービス」,第三者の視点からデータベース関連製品群の選定および利用方法をコンサルティングする「DBAの窓口」など独自のサービスを展開している。
エンジニア社員の「ORACLE MASTER」保有率は98%に及び,そのうちの約40%は2日間の実技試験をもって認定される最上位資格ORACLE MASTER Platinumを取得している。
世の中に必要とされるデータベースエンジニアを育成すべく,社員教育には心血を注いでおり,技術者を数多く育成した企業に贈られる「Oracle Certification Award」を5年連続で受賞。2017年9月時点で,企業別ORACLE MASTER 11g/12c Platinum取得者数ランキング国内No.1。
働きやすい職場環境を目指しており,2016年1月に厚生労働省認定「子育てサポート企業」の証である,くるみんマークを取得。
産休・育休取得実績も多く,過去にのべ21名が取得。男性5名の育児休暇取得実績もあり。