[改訂2版]Oracleの基本 〜データベース入門から設計/運用の初歩まで
書籍情報
発売日 : 2022年07月16日
著者/編集 : 渡部 亮太/舛井 智行/岡野 平八郎/峯岸 隆一/日比野 峻佑/相川 潔
出版社 : 技術評論社
発行形態 : 単行本
書籍説明
内容紹介
世界トップエンジニア「Oracle ACE」率いる精鋭エンジニアたちによる至高の入門書が増補改訂。ORACLE MASTER Platinum取得者数No.1企業の経験から“本当に必要な知識”をぎゅっと凝縮。長期サポートバージョン19c対応でパワーアップ。ORACLE MASTER試験の参考書にも!21c/19c〜11g対応。
目次
●はじめに
●本書について
■第1章 データベースを知る
■■1.1 なぜデータベースは必要なのか
■■1.2 リレーショナルデータベースの基礎
■■■リレーショナルモデルにしたがってデータを整理する
■■■標準化されたデータアクセス用言語SQL
■■■本書の構成
■第2章 Oracleを使ってみる
■■2.1 データベースを構築する
■■■インストールファイルをダウンロードする
■■■Oracleをインストールする
■■■マルチテナントアーキテクチャ
■■■作成したコンテナデータベースを確認する
■■2.2 データベースに接続する
■■■CDBルートにローカル接続する
■■■Linux/UNIXでの環境設定
■■■Windowsでの環境設定
■■■データベースへの接続を切断する
■■■PDBにリモート接続する
■■2.3 データベースを起動/停止する
■■■SYSユーザーでCDBルートにローカル接続する
■■■コンテナデータベースを停止する
■■■コンテナデータベースを起動する
■■■PDBをオープンする
■■■PDBをクローズする
■■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 セキュリティ機構の基礎となるユーザー機能
■■■マルチテナント環境におけるユーザー
■■■Oracleのユーザー機能の役割
■■■ユーザーを作成する‐CREATE USER文
■■■ユーザーを削除する‐DROP USER文
■■■アカウントをロックする
■■■パスワードを変更する
■■■オブジェクト所有者としてのユーザー/スキーマ
■■4.6 ユーザー権限を制御する
■■■権限システムの基礎
■■■権限を付与する/取り消す‐GRANT文/REVOKE文
■■■複数の権限をグループ化するロール
■■■アプリケーション用ユーザーに付与すべき権限
■■■明示的に権限を付与しなくても実行できる操作
■■■権限を付与できる権限
■■4.7 管理ユーザーSYS、SYSTEMと共通ユーザー
■■■管理ユーザー(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からデータベースにリモート接続する
■■■簡易接続ネーミングメソッド(EZCONNECT)
■■■アプリケーションとドライバ
■■6.6 トラブルに立ち向かうためには
■■■まず、なにが起きているのか確認する
■■■ログを確認する
■■■My Oracle Supportやインターネット検索を活用する
■■■テクニカルサポートに迅速に支援を依頼できる準備をしておく
●おわりに
●索引
●著者略歴
●監修者略歴
●本書について
■第1章 データベースを知る
■■1.1 なぜデータベースは必要なのか
■■1.2 リレーショナルデータベースの基礎
■■■リレーショナルモデルにしたがってデータを整理する
■■■標準化されたデータアクセス用言語SQL
■■■本書の構成
■第2章 Oracleを使ってみる
■■2.1 データベースを構築する
■■■インストールファイルをダウンロードする
■■■Oracleをインストールする
■■■マルチテナントアーキテクチャ
■■■作成したコンテナデータベースを確認する
■■2.2 データベースに接続する
■■■CDBルートにローカル接続する
■■■Linux/UNIXでの環境設定
■■■Windowsでの環境設定
■■■データベースへの接続を切断する
■■■PDBにリモート接続する
■■2.3 データベースを起動/停止する
■■■SYSユーザーでCDBルートにローカル接続する
■■■コンテナデータベースを停止する
■■■コンテナデータベースを起動する
■■■PDBをオープンする
■■■PDBをクローズする
■■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 セキュリティ機構の基礎となるユーザー機能
■■■マルチテナント環境におけるユーザー
■■■Oracleのユーザー機能の役割
■■■ユーザーを作成する‐CREATE USER文
■■■ユーザーを削除する‐DROP USER文
■■■アカウントをロックする
■■■パスワードを変更する
■■■オブジェクト所有者としてのユーザー/スキーマ
■■4.6 ユーザー権限を制御する
■■■権限システムの基礎
■■■権限を付与する/取り消す‐GRANT文/REVOKE文
■■■複数の権限をグループ化するロール
■■■アプリケーション用ユーザーに付与すべき権限
■■■明示的に権限を付与しなくても実行できる操作
■■■権限を付与できる権限
■■4.7 管理ユーザーSYS、SYSTEMと共通ユーザー
■■■管理ユーザー(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からデータベースにリモート接続する
■■■簡易接続ネーミングメソッド(EZCONNECT)
■■■アプリケーションとドライバ
■■6.6 トラブルに立ち向かうためには
■■■まず、なにが起きているのか確認する
■■■ログを確認する
■■■My Oracle Supportやインターネット検索を活用する
■■■テクニカルサポートに迅速に支援を依頼できる準備をしておく
●おわりに
●索引
●著者略歴
●監修者略歴
著者情報
渡部 亮太
●渡部亮太(わたべりょうた)
Oracle Database製品サポートに従事したのち、現在は企画/技術広報業務およびコーソル全体の技術力向上活動を行う。講演および執筆実績多数。福岡在住。
日本で7人しかいないOracleACE(Oracle Database)の1人。Japan Oracle User Group(JPOUG)共同設立者、ボードメンバー。
ORACLE MASTER Platinum Oracle Database 10g、11g、12c保有。
最近の楽しみは11歳の息子とタッチラグビーをすること、ラグビーを観戦すること。日本開催のラグビーワールドカップ2019では、息子と一緒に日本 vs サモアを含む全6戦を観戦した。
渡部, 亮太
舛井 智行
●舛井智行(ますいともゆき)
Oracle Databaseに関するサービス(設計/構築/運用)業務を経て、現在は企画&マーケティング部門で取扱製品拡販、プロモーション活動を行う。
最近はOracle Databaseでなく、複数DB製品を一元管理できるDatabase Performance Analyzer(DPA)、Oracle SE2向け災害対策製品Dbvisitやデータベース管理製品Toadの拡販に力を入れている。
趣味は株とライトノベル。
舛井, 智行
岡野 平八郎
●岡野平八郎(おかのへいはちろう)
独立系ソフトハウスで約4年間DB2、SQL Serverの運用管理を担当した後、スキルアップできる環境があり、行動指針にも共感できたコーソルへ2006年4月に転職。現在はOracle Databaseの技術支援を行う傍ら、チームの「ご意見番」として、蓄積した技術や対応スキルなどを惜しみなくメンバーへ伝えている。
ORACLE MASTER Platinum Oracle Database 12c(1番乗り)など、保有資格は多数。
趣味はソロスタイルのアコースティックギター。
岡野, 平八郎
峯岸 隆一
●峯岸隆一(みねぎしりゅういち)
2006年コーソルに中途入社後、Oracle製品のサポート業務を経て、現在は企画&マーケティング部門で検証/拡販業務を行う。Oracle Database、SQL Server、Postgre SQLなどの複数DB製品に対応した管理/運用製品を主に担当している。
ORACLE MASTER Platinum Oracle Database 10g、11g、12c保有。
問題解決するまであきらめない「しつこさ」が武器。趣味はスポーツ観戦。
峯岸, 隆一
日比野 峻佑
●日比野峻佑(ひびのしゅんすけ)
コーソルへ新卒で入社。Oracle Database製品のサポート業務を経験したのち、現在はVMware製品のサポートに従事。Oracleに次ぐコーソルの柱を築くべく、新部署の拡大に勤しんでいる。
趣味は料理。料理で渡伊した異色の経歴を持ち、社内行事ではコーソルの専属シェフとして腕をふるっている。
ORACLE MASTER Platinum Oracle Database 11g、VMware Certified Implementation Expert VCIX6-DCV、VMware Certified Advanced Professional VCAP7-DTM保有。
日比野, 峻佑
相川 潔
●相川潔(あいかわきよし)
SIerにてシステム開発(要件定義から実装、運用まで)を経験後、より専門性の高いスキルを習得すべくコーソルへ転職。
コーソルで10年勤務したのち、合同会社リシテを起業。
仕事では経営者とエンジニア、家庭では夫と二児の父と複数の立場で奮闘中。好きな食べ物はカキフライ。仕事のモットーは「困ったときこそシンプルに考える」。
相川, 潔
コーソル
株式会社コーソル
●株式会社コーソル
Oracleを中心にデータベースの設計、導入・構築、運用管理、保守・サポート、コンサルティング等、「Oracle Database技術」の強みを活かしたビジネスを展開。「CO-Solutions=共に解決する」の理念のもと、「データベース技術」×「サービス」を軸とし、高い技術をもとにお客様へ“心あるサービス”を提供し続けることにこだわっている。
ORACLE MASTER Platinum保有者を含む経験豊富なエンジニアがリモートでデータベースの定常業務から障害発生時の対応を24時間365日で行う「リモートDBAサービス」などを展開。東京・福岡・カナダの3拠点ですべて日勤帯で対応するフォロー・ザ・サン体制をとることにより、サービスの安定提供を実現している。