SQL Developer から Oracle Cloud を試す

Oracle Cloud Free Tier環境が利用できるようになったので、データベースの作成とSQL Developerから接続して簡単に検証してみました。

# 初期画面
  利用を開始するにはユーザーの登録、スマートフォンを使った認証、クレジットカードの登録などが必要です。認証を終えて接続すると下記の画面が表示されました。下記の画面は英語ですが、右上の地球アイコンから表示言語を指定できます。

![初期画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181284/5ffc3c88-4338-c460-98d5-47531bcc9695.png)



外部から接続するために仮想クラウドネットワークを作成します。外部から接続するため、とりあえず「仮想クラウド・ネットワークおよび関連リソースの作成」を選択しました。

# データベースの作成
  データベースの作成には初期画面からCreate a databaseをクリックします。
データベースの名前や表示名、ライセンスの情報、CPU数、ストレージ容量等を指定します。バージョン、エディション、追加オプション等を指定する画面はありません。

![Create a database#1](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181284/0034fadb-b80d-7f6e-caa6-ccfdbed38710.png)

初期作成されるユーザー名はADMIN固定です。パスワードは英大文字／英小文字／数字／記号を含める必要があります。

![Create a database#2](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181284/4f51098f-7da0-a4ec-f0a3-0c07d7158b97.png)



[Create Autonomous Database] ボタンをクリックすると、数分でデータベースが利用できます。内部的にはPDBを一つ作ったくらいの時間感覚です。

![Provisioning](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181284/8c581562-d177-3eb3-afa9-e3409675afb7.png)

左側のアイコンがAVAILABLEに変更されたら利用可能です。

![Available](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181284/128572b8-f97d-3d49-caa6-984bc4e33049.png)

# SQL Developerからの接続
SQL DeveloerからOracle Cloudを利用する場合には、「ウォレット」と呼ばれるクライアント資格証明が格納されたzipファイルの利用が簡単です。

## ウォレットのダウンロード
データベースのWeb画面から [DB接続] ボタンをクリックすると下記の画面が表示されます。「クライアント資格証明（ウォレット）のダウンロード」項目の [ダウンロード] ボタンをクリックするとzipファイルがダウンロードできます。

![database connect](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181284/4616950e-5e4a-c021-0851-06a525288d40.png)

このzipファイルには以下のファイルが格納されています。

|ファイル名|内容|
|:---|:---|
|tnsnames.ora|ローカル・ネーミング・パラメータ|
|ojdbc.properties|JDBC Driver属性設定|
|sqlnet.ora|プロファイル・パラメータ|
|ewallet.p12|ウォレット|
|cwallet.sso|ウォレット|
|truststore.jks|トラストストア|
|keystore.jks|キーストア|

## SQL Developerからの接続
 ウォレットのダウンロードが完了したらSQL Developerの接続を作成します。SQL Developerの左上部にある緑色の十字アイコンをクリックします。

![wallet](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181284/49f86ca0-6f0a-0d1f-9660-3ae0f7214f96.png)


「認証タイプ」項目は「デフォルト」に設定し、「ユーザー名(U)」項目にはADMINを、「パスワード(P)」項目にはデータベース作成時に入力したパスワードを指定します。
次に「接続タイプ」のリストから「クラウド・ウォレット」を選択します。次に「詳細」タブにの「構成ファイル(C)」項目に、先ほどダウンロードしたzipファイルのパスを指定します。
zipファイルを展開する必要はありません。「サービス(S)」項目にはウォレット内のtnsnames.oraファイルに含まれるサービス名のリストが自動的に出力されるため、
任意の値を選択します。

「テスト(T)」ボタンをクリックすると、接続テストを実行できます。無事テストが成功したら「保存(S)」ボタンをクリックします。
最後に「接続(C)」ボタンをクリックすることでAutonomous Databaseに接続するSQL Developer環境が完成します。

# Autonomous Databaseの利用
管理者用として初期状態ではADMINユーザーのみが利用できます。

## バージョン
　作成したAutonomous Databaseのバージョンを確認してみます。V$VERSIONビューを検索します。Oracle Database 18c Enterprise Editionが利用されていることがわかります。

```
SQL> SELECT * FROM V$VERSION;

BANNER                                                                           BANNER_FULL                                                                                                                                                      BANNER_LEGACY                                                                        CON_ID
-------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ----------
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production           Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production                                                                                           Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production                    0
                                                                                 Version 18.4.0.0.0                                                                                                                                                                                                                                          
```

Linux上で動作していることがわかります。

```
SQL> SELECT * FROM V$DATABASE;

      DBID NAME      CREATED  RESETLOGS_CHANGE# RESETLOG PRIOR_RESETLOGS_CHANGE# PRIOR_RE LOG_MODE     CHECKPOINT_CHANGE# ARCHIVE_CHANGE# CONTROL CONTROLF CONTROLFILE_SEQUENCE# CONTROLFILE_CHANGE# CONTROLF OPEN_RESETL VERSION_ OPEN_MODE            PROTECTION_MODE      PROTECTION_LEVEL     REMOTE_A ACTIVATION# SWITCHOVER# DATABASE_ROLE    ARCHIVELOG_CHANGE# ARCHIVEL SWITCHOVER_STATUS    DATAGUAR GUARD_S SUPPLEME SUP SUP FORCE_LOGGING                           PLATFORM_ID PLATFORM_NAME                                                                                         RECOVERY_TARGET_INCARNATION# LAST_OPEN_INCARNATION# CURRENT_SCN FLASHBACK_ON       SUP SUP DB_UNIQUE_NAME                 STANDBY_BECAME_PRIMARY_SCN FS_FAILOVER_STATUS     FS_FAILOVER_CURRENT_TARGET     FS_FAILOVER_THRESHOLD FS_FAIL FS_FAILOVER_OBSERVER_HOST                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        CON PRIMARY_DB_UNIQUE_NAME         SUP MIN_REQUIRED_CAPTURE_CHANGE# CDB     CON_ID
---------- --------- -------- ----------------- -------- ----------------------- -------- ------------ ------------------ --------------- ------- -------- --------------------- ------------------- -------- ----------- -------- -------------------- -------------------- -------------------- -------- ----------- ----------- ---------------- ------------------ -------- -------------------- -------- ------- -------- --- --- --------------------------------------- ----------- ----------------------------------------------------------------------------------------------------- ---------------------------- ---------------------- ----------- ------------------ --- --- ------------------------------ -------------------------- ---------------------- ------------------------------ --------------------- ------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --- ------------------------------ --- ---------------------------- --- ----------
PENDING_ROLE_CHANGE_TASKS                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          CON_DBID FOR
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------- ---
2423671681 EPA1POD   19-08-28           1207024 19-08-28                 1192063 19-08-28 ARCHIVELOG           1.6360E+13      1.6360E+13 CURRENT 19-08-28               7490547          1.6360E+13 19-10-10 NOT ALLOWED 19-08-28 READ WRITE           MAXIMUM PERFORMANCE  MAXIMUM PERFORMANCE  ENABLED   2423704956  2423704956 PRIMARY                  1.6360E+13 DISABLED NOT ALLOWED          DISABLED NONE    NO       NO  NO  NO                                               13 Linux x86 64-bit                                                                                                                 2                      2  1.6360E+13 YES                NO  NO  epa1pod                                                 0 DISABLED                                                                  0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          NO                                 NO                               YES          0 
NOT APPLICABLE
```

## 表領域
 デフォルトで作成されている表領域は以下の通りです。

|名前|用途|
|:---|:---|
|SYSTEM|管理用表領域|
|SYSAUX|補助表領域|
|UNDOTBS1|UNDO表領域|
|TEMP|一時表領域|
|DATA|アプリケーション用デフォルト表領域|
|DBFS_DATA|DBFS用表領域|
|SAMPLESCHEMA|  |
|UNDO_8|UNDO表領域|

ADMINユーザーはCREATE TABLESPACEシステム権限を持っていますが、表領域作成はエラーになるようです。

```
SQL> SELECT * FROM USER_SYS_PRIVS WHERE PRIVILEGE='CREATE TABLESPACE';

USERNAME                                          PRIVILEGE                                ADM COM INH
------------------------------------------------- ---------------------------------------- --- --- ---
ADMIN                                             CREATE TABLESPACE                        YES NO  NO 

SQL> CREATE TABLESPACE data2 DATAFILE '+DATA/data2.dbf' SIZE 10M;
ORA-01031: 権限が不足しています
01031. 00000 -  "insufficient privileges"
*Cause:    An attempt was made to perform a database operation without
           the necessary privileges.
*Action:   Ask your database administrator or designated security
           administrator to grant you the necessary privileges
```