Oracle Cloud Infrastructure 2021 Certified Architect Professional （1Z0-997-21）学習メモ

# はじめに
[Oracle Cloud Infrastructure 2021 Certified Architect Professional](https://education.oracle.com/ja/oracle-cloud-infrastructure-2021-architect-professional/pexam_1Z0-997-21) 取得のために学習した際のメモです。

なお、2022年3月31日までOCIの色々な認定試験が無償で受けられるので、この機会にいかがでしょうか。

https://education.oracle.com/ja/oracle-oci-certification

## 感想と結果
- 長文読解みたいな問題が多いので、以降のメモを覚えただけではダメだと思います。Oracle UniversityのLearning Pathにある模擬問題は参考になります。
- 学習内容にはあるのにまったく出題されないものもあれば、学習内容にないのに出題されるものもあります。
- 時間は2時間ありますが、1時間くらいで終わりました。
- 1回目は1問足らず、不合格。2回目で合格できました。

https://catalog-education.oracle.com/pls/certview/sharebadge?id=2EBDD823EAC9FDE2AE5B8AFAC10A11B25D49C514C1D6399408F1AE269A3CE6CA

# API Gateway
API Gatewayはクライアントが使用できるインターフェイスを提供し、バックエンドのWebサービスに接続する。
クライアントはバックエンドの実装を意識する必要はなく、クライアントはAPI Gatewayとやり取りをするだけ。

## API Gateway概要
- サーバーレスのポリシー実施ポイント
- 認証、レート制限、ルーティング、キャッシュ
- パブリックエンドポイント、プライベートエンドポイントを作成可能
    - カスタムドメインを設定して、独自のホスト名でAPIを利用可能
- ロギング、メトリクス
- OpenAPI 2，3サポート

## ネットワーク構成
- Public subnet または Private subnetにプロビジョニングする
    - 複数ADを持つリージョンでは、リージョナルサブネットにプロビジョニングする
        - AD間でアクティブスタンバイ構成になる
            - ユーザは意識する必要なし。プロビジョニングするのは一つ
    - シングルリージョンの場合は、FD間にまたがってプロビジョニングされる
- httpsでアクセスするので、セキュリティリストの443ポートのイングレスを開けておく必要がある。

# Container Registry（OCIR）
- プライベート、パブリックどちらも可
- Open Container Initiative準拠
- IAMを利用して認証可能
- リージョナルリソース
    - リポジトリ名はリージョンで一意である必要がある。
- Dockeイメージはオブジェクトストレージに保存されるが、ユーザーが意識する必要はない。
    - OCIR用にユーザーがバケットを作ったりはしない。

## アクセス許可
- ユーザの認証トークンを使用する

|OCIR操作|IAMポリシー|
|:--|:--|
|view|inspect|
|pull|read|
|push|use|
|manage|manage|

- manage権限を与えるときに、public repositoryを除くパーミッションを与えると、プライベートリポジトリだけを作成できる権限を付与できる。

## Imageの管理
- 削除したイメージは48時間以内なら取り消しできる
    - CLIまたはAPI操作のみで可能。コンソールからはできない。
- 自動削除（保持ポリシー）
    - 以下の3つを指定できる。ポリシーを設定してから反映されるまで最大24時間かかる
        - 特定の日数Pullされていない
        - 特定の日数タグ付けされていない
        - 特定の削除対象外のタグが付与されていない
    - グローバル保持ポリシー（レジストリ全体）とオーバーライドイメージ保持ポリシー（リポジトリ）がある。
        - オーバーライドイメージ保持ポリシーの方が優先される
- イメージの脆弱性スキャン
    - リポジトリにイメージスキャナを追加
    - スキャン結果は13ヶ月保存
    - CICDに組み込むことも可能
- イメージへの署名
    - 出所と完全性を確認
    - Vaultに保存されているマスター暗号キーを使用

# OKE
- コントロールプレーンノード（マスターノード）はOracle管理
    - この部分の課金は発生しない
- ワーカーノード：ユーザ管理
    - 課金対象
    - 最大512ノード
    - 複数のノードをまとめたノードプールを構成する
    - ノードプール内のインスタンスはすべて同じシェイプ
        - ノードプールがスケーリングの単位
        - 0台にすることも可能
        - 複数のノードプールをクラスタ内に構成可能
        - インスタンスを別のスペックのシェイプにするときは、新しいノードプールを作って、クラスタに組み込んで、既存のノードプールのインスタンス数を0にする

## OKEのKubernetesのライフサイクル
- 常に3つのバージョンをサポート
- 新しいバージョンが追加されると、最も古いバージョンは少なくとも30日はサポートされる
    - この少なくとも30日間は4つのバージョンをサポートすることになる
- コントロールプレーンのバージョンの2つ古いバージョンまで、ワーカーノードはサポートしてる
    - 同じ、一世代古い、二世代古いの三つ
    - ワーカーノードの方が新しいのはダメ

## クラスタ作成
- 大きく以下の3パターン
    - クイック作成ワークフロー
        - VCNなども作ってくれる
    - カスタム作成ワークフロー
        - 既存のVCNを利用する
    - APIベース、自動化
        - ワーカーノードにカスタムイメージを選択できる
- ネットワーク構成
    - VCNのCIDRとPod NetworkのCIDRは被らない
    - Pod Networkは16ビットマスク
        - 各ワーカーノードには25ビットマスクずつ割り当てる（デフォルト）
            - 512ノード分のサブネットを確保してる
            - 変更することも可能
    - コントロールプレーン、ワーカーノードそれぞれ別々のサブネットに配置する
        - どちらもパブリックサブネット、プライベートサブネットそれぞれ配置可能

## クラスタの管理
- kubectl delete nodeでノードを削除しない
    - クラスタからは削除されるけど、宙ぶらりんなインスタンスが残る
- ワーカーノードにOCIのロギングエージェントがインストールされている
    - OCIのLoggingでロギングできる
    - 監査ログもとれる
- クラスタアップグレード
    - コントロールプレーン
        - ダウンタイムなし
        - コンソールやAPIからユーザーが実行する
            - キックするだけ。
        - ダウングレード不可
    - ワーカーノード
        - インプレースアップグレード
            - 同じノードプール内で新しいバージョンのインスタンスを追加して、順次Podを移動させる
            - 移動したら古いインスタンスを削除
        - アウトオブプレイスアップグレード
            - 新しいバージョンのノードプールを作成し、順次Podを移動させる
            - 移動したら古いノードプールを削除

## クラスタ自動スケーリング
- ノードプール単位で動作
- Cluster Autoscalerはクラスタ上で動作し、IAMポリシーで管理される
    - これを使ってるときは、手動ではノードを増減させない

## セキュリティ
- OKEはVaultを使ってSecretを暗号化できる
    - クラスタ作成時に設定する
- KubernetesのRBACを拡張して、OCIのIAMと連携できるようになっている

# ファンクション（Oracle Functions）
- イベントが実行されたら、コンテナがデプロイされるがユーザーは意識する必要ない
    - 実行時間に応じて課金
        - 実行時間×使用したメモリ容量[GB秒]×リクエスト数
        - 無料枠はたくさんあるが、Allways freeでは利用できない（30日のトライアル期間が終わったら）
    - ファンクションのイメージ（Docker）をコンテナレジストリに保存する
        - Dockerfileの持ち込み可能

## ファンクションのトリガー
- イベントサービス
    - OCIサービスの状態変化を監視し、変化に応じて事前に定義するルールに応じてファンクションをキックする
- 通知サービス（Notification）
- サービスコネクターハブ
    - ログベースで他のサービスと連携
- APIゲートウェイ
- Oracle Integration
- CLI/SDK

## ユースケース
- イベントドリブン
    - Web、APIのバックエンド
    - リアルタイムのファイルストリーム処理
    - 機械学習、DevOps

## ファンクションの概念
- アプリケーション
    - ファンクションの論理的なグループ
    - VCNのサブネットに紐づける
        - ファンクションをどこで実行するか
- ファンクション
    - コンテナレジストリに保存されるDockerイメージ
    - メタデータ
        - Dockerイメージの位置
        - メモリサイズ
            - 128MB, 256MB, 512MB, 1GBから選択
        - 環境変数
        - タイムアウト値
            - 5-300s
- Fn CLI
    - ファンクションの管理コマンド
    - コードをDockerイメージとしてビルド、パッケージ化、レジストリにPush
    - Java、Python、Node.js、Go, Rubyなどに対応
        - テンプレートを自動生成

### 観測性
- メトリック
    - アプリケーション単位で課金にかかわるメトリックを取得。ファンクション単位でも見れる
        - 呼び出し回数
        - 実行時間
- ログ
    - OCIのロギングサービスと連携できる
    - 「呼び出されましたよ」ってログはデフォルトで取られるけど、プログラムのログを吐き出すときはプログラムで実装する必要ある。
- トレース
    - パフォーマンスのモニタリング

# ストリーミング
クラウドで利用されるメッセージングサービスの分類

|分散ストリーミング|パブリッシュ/サブスクライブ|メッセージキュー
|:--|:--|:--
|Point to Multipoint|Point to Multipoint|Point to Point
|リアルタイム、高スループットのメッセージング<br>IoTなど<br>メッセージの再生可能性|プッシュベースの非同期セマンティクス|信頼性の高い非同期通信<br>消費は一度だけ
|順序保障|配信保障|処理保障
|Kafka|Oracle JMS|MQ   

- OCI ストリーミングサービス
    - マネージドなApache Kafka
        - Kafka互換
            - Kafka APIとOCIネイティブAPIが使える
    - サーバレス
        - 他のOCIとのサービスの連携が容易
    - 従量課金
    - スケーラブル

## セキュリティ
- エンドツーエンドで暗号化
- IAMと統合（認証認可）

## 使用方法
- 用語
    - メッセージ
        - base64でエンコードされたデータの単位
        - スキーマに依存しない
            - XML、JSON、ZIPなどあらゆる形式に対応
        - プロデューサーとコンシューマーはメッセージフォーマットに同意する
    - キー
        - 関連メッセージをグループ化するための識別子
    - ストリーム
        - メッセージの追加専用ログ
    - ストリームプール
        - ストリームを管理するためのグループ
    - パーティション
        - 複数のプロデューサーによる書き込みと複数のコンシューマーによる読み込みを可能にするストリームのセクション
        - 各パーティションを別のノードにホストすることが可能
            - 1つのストリーミングを複数のサーバで水平方向にスケーリングできる
    - オフセット
        - パーティション内でのメッセージの場所を表す
    - カーソル
        - ストリーム内のロケーションへのポインタ

- 最大7日間ストリームを保存する
    - 期限を超える場合は、サービスコネクタ経由でオブジェクトストレージに保存するようにする

# イベントサービス
- OCIのリソースの状態変化に基づいて自動化する
    - オブジェクトストレージにオブジェクトがアップロードされたら、変換するファンクションをキックするなど
- CNCFのクラウドイベントインダストリスタンダードフォーマット（cloudevents）に準拠している

## 概念
- イベント
    - コンパートメント内のリソースの変化を表して、システムまたはユーザのアクションによって発行される
    - CPUの負荷がしきい値を超えたとかはイベントではない。
        - 量的なものはモニタリングで監視する
- ルール
    - イベント内のフィールド値に対する顧客定義のフィルター
    - このルールのマッチングに応じて後続のアクションが実行される
    - リソースと同じコンパートメントに配置する
        - 子コンパートメントにも適用される
- アクション
    - イベントが発生した時のユーザ定義のアクション
    - 事前に準備しておく（ファンクション、ストリーミング、通知）
    - 複数設定可能

# 高可用性の設計
- 高可用性システムを考える3つのポイント
    - 冗長性
    - 監視
    - フェイルオーバー

- 仮想IP
    - セカンダリーIPアドレスは別のインスタンスに付け替えることができる
- IPSec VPN
    - OCIのVPNエンドポイントは冗長化されている。顧客側のCPEも２つ用意することで回線を冗長化できる

# DR
- RPO
    - トランザクションの喪失期間
    - 何時間前までに戻せるか
- RTO
    - 何時間で復旧できるか

# ロードバランサ
- セッションの永続性
    - １つのクライアントから発信されたリクエストを１つのバックエンドサーバに誘導する方法
        - バックエンドセット単位で設定する
            - 設定するパラメータ
                - Cookie名
                - フォールバック
    - サーバ側のCookieドリブンでLBはHTTPモードである必要がある
        - Cookieを受け入れないクライアントには利用できない
    - バックエンドサーバが利用できない場合の挙動
        - フォールバックパラメータがTrueの場合
            - バックエンドセット内の別のサーバにセッションをリダイレクトする
        - Falseの場合
            - 502コードでリクエストに失敗する
- リクエストのルーティング
    - 仮想ホスト名
        - LB自体にホスト名を複数設定して、クライアントがアクセスしたホスト名に応じて、振り分けるバックエンドセットを決める
            - LBとバックエンドセットは1：Nの関係
        - HTTP/HTTPSリスナーにのみ対応。TCPリスナーには対応していない
        - 仮想ホスト名に対して3つのマッチングパターンをサポートしている。正規表現には対応していない。
            - 完全一致
            - *.xxxx.com
            - yyy.xxx.*
    - パスルーティング
        - URLのパス（http://xxxxx.com/yyyの/yyyの部分）に応じて、振り分けるバックエンドセットを決める
    - 仮想ホスト名とパスルーティングは同時に設定可能。コンフリクトしたら、パスルーティングが優先される
    - バックエンドセット内のノードへの負荷分散はラウンドロビンなど別の振り分けポリシー
- SSL
    - 方式
        - SSL Terminate
            - SSLはLBで終了。その後ろは暗号化しない
        - SSLトンネリング
            - 受信したSSL接続をバックエンドサーバにトンネリング
        - Point to point SSL
            - SSLはLBでいったん終了し、バックエンドサーバとはLBの証明書を使用して再度SSL接続
    - 1つ以上の証明書バンドルをLBに追加する
        - パブリック証明書、秘密キー、認証局（CA）の証明書が含まれる
        - PEM形式のx.509タイプの証明書のみ利用可能
            - 既存の証明書を利用する場合は要注意
            - 変換は簡単にできる

# DNS
- OCNのDNSサービス
    - 権威DNSサーバ
        - ゾーン管理
        - VCN外の名前解決
        - 有償
            - queryの数で課金
    - 再帰DNSサーバ
        - VCN内の名前解決
        - 無償

## DNS管理
- 用語（DNS一般用語）
    - ドメイン
        - インターネット全体における特定の場所またはグループを識別するもの
    - ゾーン
        - DNSの名前空間の一部
        - SOAレコード（権威レコード）でゾーンを定義
        - ドメインを細分化したもの
    - ラベル
        - ドメイン名を構成するドットで分けられた個々の部分
    - 子ゾーン
        - 他のゾーンとの間で委任関係がある場合の委任先のゾーン
    - リソースレコード
        - あるゾーン特定のドメイン情報が含まれる
        - 正引き（必須）
            - Aレコードなど
        - 逆引き（状況に応じて、あった方がよい）
            - PTRレコードなど
    - 委任
        - ドメインをサブドメイン（ゾーン）に分割して、そのサブドメインの管理を他のサーバに任せること
- OCI DNSサービス（権威DNS）
    - ドメイン名を取得することはできない。ドメイン名は別途取得する必要がある
    - OCIが管理する権威DNSサーバをOCIコンソールで管理できる
        - VCN内にDNSサーバがプロビジョニングされるわけではない。
    - プライマリ（レコードの更新権限あり）、セカンダリ（ゾーン転送でゾーン情報をもらう）どちらにもなれる
        - プライマリがOCI以外のDNS、セカンダリがOCIのDNSもできる
    - ゾーンファイルのインポート、アップロード可能

## プライベートDNS
- デフォルトはVCN名、サブネット名を使用してドメイン名が設定される
    - カスタムDNSで変更可能（プライベートゾーン）
    - VCN内だけで有効
- プライベートビュー（FastConnectなどでオンプレとつないだり、別のVCNとピアリングしたりするときに使う）
    - ゾーンの情報をぶら下げる
    - 複数のゾーンをビューで見せる
- プライベートリゾルバ（FastConnectなどでオンプレとつないだり、別のVCNとピアリングしたりするときに使う）
    - プライベートビューと紐づける
    - 検索対象のゾーンがわかるようにする
    - VCNの設定画面で設定する
        - 検索対象のVCNを選択する

## トラフィック管理
- クライアントからの問い合わせに対して、ルーティング先を状況に応じて変える
    - フェイルオーバー
        - ヘルスチェック結果に応じて、セカンダリーにトラフィックを振り替える
    - ロードバランサー
        - 複数のエンドポイントへトラフィックを分散
    - ジオロケーションステアリング 
        - エンドユーザの場所に応じたトラフィックの制御
    - ASNステアリング
        - 自律システム番号（ASN）に基づいたトラフィックの制御
    - IP接頭辞ステアリング
        - クライアントのIP接頭辞に基づいたトラフックの制御

# リソースマネージャー（マネージドなTerraform）
- 無償
- リソースコレクションを「スタック」として定義
    - Terraformの設定ファイル(tfファイル)は別途用意する
    - zipファイルをアップロード
    - スタックごとに1アクション
        - plan, apply, destroy
- ドリフトの検出
    - applyした構成と差分が生じている状態
        - .tfstateファイルで管理している構成との差分
    - OCIコンソールから再度スタックをapplyすると、差分を解消してくれる

# DBCS
- 4つのEdition（SE2,EE,EE-HP,EE-EP）
    - SE2から表領域の暗号化が使える

## 仮想マシン
- RAC可
- クローン可
- OCPU
    - シェイプを変更する。再起動必要
- ストレージ（ブロックボリューム）
    - 動的に拡張可能
    - ASMとLVM
        - LVMは初期構築時の容量×10が最大容量となる
            - RAC不可
        - ASMはスタートにかかわらず、40TBまで拡張できる
- ネットワーク帯域
    - 1 OCPUあたり1Gbpsくらい
    - 外部との通信とディスクアクセスを同じネットワークでまかなう。

## ベアメタル
- RAC不可
- ストレージ
    - ブートボリューム：ブロックボリューム
    - DB（データ、RECO）：ローカルNVMe
        - 拡張不可
    - ASMのみサポート
    - 2面ミラー、または3面ミラー（デフォルト）
    - ディスク障害があったら、別ベアメタルサーバにバックアップからリカバリする
- CPU
    - オンラインで拡張/縮小可能（52 OCPUまで）
    - 2 OCPUから2 OCPU単位で拡張/縮小

## ライフサイクル
- DBの作成
    - ベアメタルは同じシステム（OS、Grid Infrastructure）上に複数のDBを作成できる
        - 同じシステム上のDBイメージから作成
        - 同じシステムまたは別のシステムのバックアップから作成
    - 仮想マシンは単一のDBのみサポート
        - バックアップから新しいDBシステムを構築できる
        - 稼働しているVMインスタンスからクローンも可
    - データベースソフトウェアイメージ
        - DBにパッチなどを追加したカスタムイメージを作成
        - データベース作成時にカスタムデータベースソフトウェアイメージを選択できる
- バックアップ
    - 手動（完全バックアップ）、自動（増分バックアップ）でバックアップ可能
        - DBインスタンスを削除すると、自動バックアップも削除される
        - 手動バックアップは残る
    - 自動バックアップ
        - DBは1日一回
            - 毎週のフルバックアップ、毎日の増分バックアップ
            - 保存期間：7, 15, 30, 45, 60日
        - アーカイブREDOログは30分ごと
- パッチ
    - DBシステムパッチ（Grid Infrastructure）→ DBパッチの順で適用する
    - RACはローリングで適用する

## モニタリング
- OCIコンソールでデータベース管理を有効化するとメトリックが使える
- Enterprise Manager
    - マーケットプレイスからプロビジョニングできる
    - オンプレ、クラウド管理
    - Security Listでポートの管理は必要

## 可用性
- DataGuard
    - BM
        - レプリケーション先のインスタンスはあらかじめ作成しておく
        - インターネット経由でのレプリケーションは不可
            - VCN内、もしくはリモートピアリング
    - VM
        - VMはDBのコンソールから作成できる
        - RACのときはスタンバイもRAC
            - 手動で作ればシングルも作れる
        - シェイプは選択できる
        - LVMでも使えるが、お勧めしない。
        - インターネット経由でのレプリケーションは不可
            - VCN内、もしくはリモートピアリング

# ADB（Autonomous Database）
[ADB Specialist](https://qiita.com/dingtianhongjie/items/27a432bf02edce15e116)で勉強したので割愛

# OCVS（Oracle Cloud VMware Solution）
- SDDC
    - サービスとしての仮想DC
    - 物理リソースを超えたオーバーサブスクリプション
        - コンピュート、ネットワーク、ストレージ
    - オンプレ、クラウドをシームレスに統合
    - VCN上にプロビジョニング
        - OCIのネットワークの知識が必要
- ベアメタル3ノード～64ノード
- VMware製品
    - vSphere Enterprise Plus
    - NSX-T Enterprise Plus
    - vSAN
    - HCX Adbanced
        - Enterpriseは別料金
- 最低利用期間は8時間
    - （資料では1か月となっている）
    - 時間課金、月課金、1年コミット、3年コミット
- ホストごとに1つのSKUで課金され、インフラとVMwareのライセンスが含まれる
    - VMware製品のBYOL不可
- Oracle MWのライセンスはオンプレと同じ考え
- root権限はお客様が持つ
- サポートはOracleが担当する
    - VMwareとはバックで連携
- NSX-T
    - 管理プレーン
        - API/GUI エントリーポイント
        - ユーザ構成の維持、運用タスク
    - 制御プレーン
        - 中央制御プレーン（CCP）
        - ローカル制御プレーン（LCP）
            - トランスポートノードで動作
    - データプレーン
        - 制御プレーンへのトポロジー情報を報告
        - パケットレベルの統計情報を保持

# Azureへのアクセス
- Megaportみたいに回線プロバイダーとしてAzure ExpressRouteを選べるリージョンがある
    - 現在8リージョン。日本だと東京リージョン
- 必要なもの

||OCI|Azure
|:--|:--|:--
|仮想ネットワーク|VCN|VNet
|専用回線|FastConnect|ExpressRoute
|ゲートウェイ|動的ルーティングゲートウェイ|仮想ネットワークゲートウェイ
|ルーティング|ルート表|ルートテーブル
|セキュリティ|セキュリティリスト<br>ネットワークセキュリティグループ|ネットワークセキュリティグループ

- AzureのExpressRouteを先に設定する
    - サービスキーを取得して、FastConnectの設定時に指定する

# IPv6
- クラウドで利用するには
    - NATに頼らない
        - アドレスが不足している解決策としてのNATは不要
            - IPv6アドレスはたくさんあるから
        - NAT GatewayはIPv6に対応していない
    - パブリック/プライベートサブネットの使い分け、セキュリティリストはIPv4と同じ
    - デュアルスタック対応に備える
        - 入り口はIPv6、VCN内はIPv4で利用するなど
        - 無理してIPv6だけを使うことはない。
- 「::/0」 <- IPv6でのすべてのアドレス
    - IPv4だと「0.0.0.0/0」に当たるもの
    - ルートテーブル、セキュリティリストなどに設定する
- VNCウィザードではIPv6は有効化できない
    - VCN作成後に有効化はできる

# OCIへの移行
## データ移行
### データ転送サービス
- アプライアンス
    - 150TB/台
        - リージョンによっては95TB
    - オンプレでNFSマウント
    - AES-256で暗号化されている
    - オブジェクトストレージにアップロード後、アプライアンスからデータは消去される（NIST800-88準拠）
    - 2Uサイズ
    - 10GbE （RJ45/SFP+）
    - 送付、データ転送のステータスはコンソールで確認できる
    - OCI CLIで操作
        - Pythonが動作するLinuxが必要
- データ転送ディスク
    - お客様がディスクを用意する
    - 最大100TB、10個のディスクを利用可能
        - OCIの転送ジョブの制限
    - オブジェクトストレージにアップロード後、データを消去（NIST800-88準拠）し、ディスクは返却される

### Storage Gateway
- DockeイメージのNFSサーバ
    - オンプレ側のサーバで起動
    - REST APIでオブジェクトストレージにデータを保存する
    - マウントポイントごとにバケットを分けられる
- 無償
    - オブジェクトストレージの料金は必要
- オブジェクトストレージは標準層だけでなく、アーカイブ層も可

## DB移行
- 移行タイプ
    - オフライン移行
        - ワンタイムコピー
    - オンライン移行
        - 初期コピー後、更新データを継続的にデータをレプリケーション
            - DataPumpで初期以降して、更新データをGoldenGateでレプリケーションするとか。
    - 物理的な移行
        - DBファイルのブロック単位でのコピー
        - ソースDBとターゲットDBでバージョンが同じである必要あり
            - オンプレからADBの移行はできない
        - RMAN、Data Guard
    - 論理的な移行
        - DBコンテンツを論理的に解釈し、ターゲット形式でDBにコピーする
        - DataPump、GoldenGate
    - 直接接続
        - VPNやFastConnectでターゲットDBに直接アクセス可能
    - 間接接続
        - FWなどで直接アクセスできない
        - エージェントとともに移行ツールが必要

- OCI Database Migration Service（DMS）
    - DB移行のマネージドサービス
        - GUIでのガイダンス
    - FromはLinux、11g以降
    - ToはADB
    - ZDMを利用
    - 間接接続の時は、DMSエージェントをオンプレサイトに必要
    - DMSは無料
        - GGがデプロイされるコンピュート、オブジェクトストレージ、ストリーミングサービスで使用されるコンピュート、ネットワーク回線は別料金
        - 作成後6カ月を超える移行を実行したとき、60日以上アイドル状態が続いているときは課金される

### 各移行プロセスで利用できるツール
- 選択
    - Cloud Migration Advisor
        - Webサイト
- Planning
    - Cloud Premigration Advisor Tool（CPAT）
- 移行
    - OCI Database Migration
- アプリケーションの移行
    - OCI Application Migration
        - 今はClassic Migration Serviceと名前が変わってるらしい
- 検証
    - GoldenGate Veridata

## ADBへの移行
- DBMS_CLOUD_ADMIN
    - Sharedでのみ利用可能
        - 専有だと必要ないからこのパッケージがない
    - DBを構成するための管理ルーチンを提供
        - データベースリンク
        - アプリケーションコンティニュイティー
        - 表領域の割り当て制限
- オプティマイザ統計情報の収集
    - ダイレクトパスのロード操作時に自動的に統計情報を収集
        - 手動での収集も可能
    - データが変更されると自動的に統計情報が収集される（ATP）
    - オプティマイザヒントとPARALLELヒントをデフォルトで無視する（ADW）
        - 明示的に有効化は可能
- DataPump
    - スキーマモードを推奨

## ZDM
- 無償
    - バイナリをダウンロードしてDBとは別インスタンスにインストールする
        - Oracle Linux 7
- 物理移行と論理移行（21cから）がある
    - 物理：DataGuard
    - 論理：DataPump、GoldenGate を利用
- 移行先はDBCS/ExaCS/CC/ADB
    - ADBは論理移行のみ
- ソースは最新版でAIX、Solarisにも対応

# セキュリティ
## IAMフェデレーション
- Oracle IDCS, MS AD, SAML(Security Assertion Markup Language)2.0プロトコルをサポートするIDプロバイダーとのフェデレーションを提供
    - アイデンティティプロバイダー（IdP）とサービスプロバイダー（OCI）の間にフェデレーション信頼を設定
    - IdPがユーザを認証すると、そのユーザはOCIのリソースにアクセスできるようになる
- ユーザタイプ
    - フェデレーテッドユーザ
        - 連携したIdPを介してOCIコンソールからサインインするユーザ
        - IdPの管理者によって作成、管理される
        - コンソールへのサインインにSSO認証を使用する
        - プロビジョニングされた/同期されたユーザー
            - OCIはSCIM（System for Cross-domain Identity Management）をサポートしている
            - SCIMを使用するIDCSとOktaでフェデレーテッドユーザをOCIにプロビジョニング可能
            - OCIのユーザに認証情報を割り当てることが可能
    - ローカルユーザ
        - OCIで作成したログイン名とパスワードでOCIコンソールからサインインするユーザ

## サインインオプション
- OCIにサインアップすると、2つのIDシステムにユーザを作成する
    - IDCS
        - ローカルユーザがフェデレーションされている
        - 「IdP名/ローカルユーザ名」
    - IAM
    
# WAF
- WAFエッジノード
    - OCIコンソールで設定するだけで、世界中のエッジノードに設定する
        - OCI以外（他社クラウド、オンプレ）でも保護できる