Oracle Analytics Server：コマンドでスナップショットを取得する

# はじめに
Oracle Analytics Server（**OAS**）は、オンプレミスのサーバやIaaS上で稼働するAnalytics製品です。
PaaSであるOracle Analytics Cloud（**OAC**）とほぼ同等の機能を持ちます。
OACとは違い、インストール先のOSにログインすることができるため、様々な管理作業をコマンドを使用して実施することもできます。
今回は、スナップショットの作成と復元をコマンドで実施してみます。

## OACとOASの主な違い
|  | OAC | OAS |
|:-|:-|:-|
|セルフサービスBI|対応|対応（一部、非対応機能あり）|
|拡張分析|対応|対応（一部、非対応機能あり）|
|エンタープライズBI|対応|対応|
|インストール|不要 \*1|ユーザが実施 \*2|
|パッチ適用、アップグレード|オラクルが実施|ユーザが実施|
|OSへのログイン|不可|可|

- [ドキュメント：Oracle Analytics Serverでの注目すべき差異](https://docs.oracle.com/cd/F58861_01/whats-different-oas/index.html)
- \*1 [Oracle Analytics Cloud：インスタンスの作成](https://qiita.com/tyo38/items/4106e5a60a6981cdb2f9)
- \*2 マーケットプレイスにデプロイする場合は、面倒なインストール作業はありません。
[Oracle Analytics Server：マーケットプレイスからのデプロイ](https://qiita.com/tyo38/items/725e0808fbe03d343e22)

# スナップショットの作成
OASをインストールしたサーバにログインします。
exportarchive.sh（exportarchive.cmd）を使用します。
場所は、user_projects/domains/bi/bitools/binディレクトリです。
使用方法を確認するために
```
exportarchive.sh --help
```
を実行します。
```
USAGE: exportarchive <service instance key>  <export directory> <encryptionpassword=<password>> {Optional Parameters}
Optional Parameters:
[noconnectionparams] [nouserfolders] [noconfiguration] [nojobs] [includedata] [includecustommaps]
[applicationmodulekey=<application module name>] [applicationmoduleversion=<application module version>]
[applicationmoduledesc=<application module description>] [nodatarefreshservice] [nojazn]
[ nodatamodel ] [ nocontent ]

 Description           : Export achive from a service instance
 Mandatory Arguments   : service instance key | export directory | encryptionpassword
 Optional Arguments    :
         noconnectionparams  : Do not export connection parameters
         nouserfolders       : Do not export user folders content
         noconfiguration     : Do not export configuration content
         nojobs              : Do not export Job information content
         includedata         : Include file based data
         includecustommaps   : Include custom maps layers
         includedaytodaymetadata: Include day to day metadata
         nodatarefreshservice: Include the refresh state of datasets/dataflows managed by Data Refresh Service
         nojazn              : Do not include jazn contents
         nodatamodel         : Do not import RPD metadata content
         nocontent           : Do not import WEBCAT metadata content
***Deprecated!! Passing encryptionpassword on command lines is explicitly forbidden by Oracle Security guidelines. Use standard input.
```
必須パラメータは、service instance key | export directory | encryptionpassword です。
例えば、このように実行します。
```
$ ./exportarchive.sh ssi /home/oracle/tmp/backup
ProdHome:/u01/app/oas/bi
DomainHome:/u01/app/oas/user_projects/domains/bi
Enter bar encryption password within 20 seconds:
```
ちなみに、このようにパスワードを指定して実行もできますが、セキュリティ的に非推奨のようです。
```
exportarchive.sh ssi /home/oracle/tmp/backup encryptionpassword=Admin123
```
コマンドを実行すると、指定したディレクトリに実行した日のUnixtimeのサブディレクトリが作成され、インスタンスキー.barファイルが作成されます。
上記コマンドを2022/12/21に実行したとすると、/home/oracle/tmp/backup/1671590744993 ディレクトリ内に ssi.barファイルが作成されます。

:::note info
GUIメニューの [コマンド]－[スナップショット] で表示されるスナップショットのリストには表示されません。
:::

# スナップショットの復元
exportarchive.shと同じ場所にあるimportarchive.shを使用します。
こちらもパラメータを確認しておきます。
```
USAGE                    : importarchive <service instance key>  <location of bar file to import> encryptionpassword=<password> {Optional Parameters}
Optional Parameters    : [nodatasets] [nojobs] [noconfiguration] [nodatamodel] [nocontent]                          [noauthorization] [nouserfolders] [noconnectionparams]                         [includedata] [includecustommaps] [noruntimerefresh]                         [nodatarefreshservice]
 Description         : Import archive into a service instance
 Mandatory Arguments : service instance key | location of archive file | encryptionpassword for archive
 Optional  Arguments :
 nodatasets          : Do not import Dataset metadata content
 nojobs              : Do not import Jobs metadata content
 noconfiguration     : Do not import SI Configuration content
 noauthorization     : Do not import JAZN metadata content
 nodatamodel         : Do not import RPD metadata content
 nocontent           : Do not import WEBCAT metadata content
 nouserfolders       : Do not import user folders
 noconnectionparams  : Do not import connection parameters
 includedata         : Import Data
 includecustommaps   : Import Custom Maps
 noruntimerefresh    : Do not enable refresh runtime metadata
 includedaytodaymetadata     : Include day to day metadata
 nodatarefreshservice: Include the refresh state of datasets/dataflows managed by Data Refresh Service
***Deprecated!! Passing encryptionpassword on command lines is explicitly forbidden by Oracle Security guidelines. Use standard input.
```
実行してみます。
```
$ ./importarchive.sh ssi /tmp/ssi.bar
ProdHome:/u01/app/oas/bi
DomainHome:/u01/app/oas/user_projects/domains/bi
Enter bar encryption password within 20 seconds:
```

# まとめ
スナップショットにより、ユーザが作成したコンテンツをバックアップできます。
 * スナップショットに含まれるもの
   * 分析
   * ダッシュボード
   * データ・ビジュアライゼーション・ワークブック
   * ピクセルパーフェクト・レポート（Publisher）
   * データセット
   * データフロー
   * データモデル（RPDリポジトリ）
   * アプリケーションロール
など。。。

スナップショットは、同一環境または別の環境に復元できます。
* スナップショットは、ターゲット環境と同じ更新またはそれより前の更新の環境から取得する必要があります。
* ターゲット環境でサポートされていないカタログ・オブジェクトは移行されません。
* 別の環境から作成したスナップショットを復元する場合は、ファイルベースのデータセットに関連付けられているデータをターゲット環境にアップロードする必要があります。

# ドキュメント
- [Oracle Analytics Server 6.4：スナップショットの作成および復元](https://docs.oracle.com/cd/F58861_01/administer-oas/take-snapshots-and-restore-1.html)