Oracle Database@Azure ~ Autonomous Database を動かす

前回の記事では Oracle Database@Azure を利用するためのサブスクリプションの購入と、Autonomous Database(ADB) のデプロイ手順を紹介しました。

今回は、前回の記事でデプロイしたdb201を使用して、デプロイ後の操作・アクセス方法を紹介します。

blog.jbs.co.jp

Azure Portal で可能な操作

Oracle Database@Azure は Azure上で稼働していますが、Oracle Cloud Infrastructure(OCI)のサービスなので通常OCIコンソールでADBを操作します。Azure Portalの画面からADBに対してできる操作を確認します。

ADBの削除、クローン作製

概要メニューからADBの削除、クローン作製ができます。クローン作製ではデータベースのスキーマ、メタデータ、データをそのままにCPU数、ネットワークなどの構成を変更してクローンを作成できます。

ディザスタ・リカバリ

バックアップコピーにスイッチバックできます。2025年7月時点では使用できませんが西日本リージョンでもOracle Database@Azure が利用できるようになるとフェイルオーバーもできるようになるかもしれません。

バックアップ

過去に取得したバックアップの確認とリストアができます。

監視

メトリックを指定してデータベースの状態を監視できます。

ADB の起動・停止

ADBの起動・停止は Azure Portal からはできないので OCI コンソールから行います。Oracle Database@Azure の ADBの概要ページから「OCIに移動」をクリックしてOCIコンソールにアクセスします。

その他のアクションから「起動」「停止」をクリックすることで起動、停止できます。

起動状態は ADB は Azure Portal上でも確認できます。起動中は「Available」、停止中は「Stopped」と表示されます。

ADB へのアクセス

ADB にアクセスするには接続情報を取得する必要があります。Azure Portal の ADB の設定・接続ページに接続情報が表示されます。

今回使用する環境では相互TLS認証は不要なので、TLS認証が「TLS」となっている行をコピーして、お使いの Oracleクライアントの tnsnames.ora に記述してください。

記述例
db201_medium = 
(description= 
    (retry_count=20)
    (retry_delay=3)
    (address=(protocol=tcps)(port=1521)(host=*******.*********.oraclecloud.com))
    (connect_data=(service_name=**********.****.oraclecloud.com))
    (security=(ssl_server_dn_match=no))
)

接続例
$ sqlplus admin@db201_medium

SQL*Plus: Release 23.0.0.0.0 - Production on Tue Jul 29 02:08:49 2025
Version 23.8.0.25.04

Copyright (c) 1982, 2025, Oracle.  All rights reserved.

Enter password:
Last Successful login time: Tue Jul 29 2025 01:34:20 +00:00

Connected to:
Oracle Database 23ai Enterprise Edition Release 23.0.0.0.0 - for Oracle Cloud and Engineered Systems
Version 23.9.0.25.08

SQL>

相互TLS認証を使用する場合は、 OCIコンソールからウォレットをダウンロードする必要があります。以前の記事に相互TLS認証を利用した接続方法を記載しているので参照してください。

Windows クライアントから Oracle Autonomous Database への接続 - JBS Tech Blog

表領域の作成

これから作成するユーザーが利用する表領域を作成する前に、デプロイ直後の表領域の情報とデフォルト表領域を確認します。

SQL> select tablespace_name ,file_name,bytes from dba_data_files;

TABLESPACE_NAME  FILE_NAME                                              BYTES
---------------- ------------------------------------------------------ ----------
SYSTEM           +DATA/E**D/3******6E/DATAFILE/system.583.1206361225    1322254336
SYSAUX           +DATA/E**D/3******6E/DATAFILE/sysaux.780.1206361225    2212495360
UNDOTBS1         +DATA/E**D/3******6E/DATAFILE/undotbs1.534.1206361225  1714421760
DATA             +DATA/E**D/3******6E/DATAFILE/data.585.1206361225      1178599424
DBFS_DATA        +DATA/E**D/3******6E/DATAFILE/dbfs_data.581.1206361225  104857600
SAMPLESCHEMA     +DATA/sampleschema_dbf                                 2.1475E+11

SQL> select PROPERTY_NAME,PROPERTY_VALUE from database_properties where PROPERTY_NAME = 'DEFAULT_PERMANENT_TABLESPACE';

PROPERTY_NAME                  PROPERTY_VALUE
------------------------------ ------------------------------
DEFAULT_PERMANENT_TABLESPACE   DATA

指定がない場合ユーザーには DATA表領域が使われますが、ユーザー専用の表領域として USER01_TBS を作成してみます。

SQL> create tablespace USER01_TBS datafile size 2G;
create tablespace USER01_TBS datafile size 2G
*
ERROR at line 1:
ORA-01031: insufficient privileges

エラーがでました。権限がないようです。ADB では表領域管理も自動化されているので、表領域の追加、削除、変更は認められていません。ユーザーはDATA表領域を使用します。

ユーザーの作成

初期状態では管理者ユーザーであるADMINしかないので、ユーザーUSER01を作成します。

SQL> create user user01 identified by abcdefgh;
create user user01 identified by abcdefgh
*
ERROR at line 1:
ORA-28219: password verification failed for mandatory profile
ORA-20000: password must contain 1 or more uppercase characters

パスワードの複雑性でエラーが出力されました。オンプレミス環境の 19c では特に指定はなかったのですが、ADBでは12文字以上で大小英字、数字を含むことが求められています。

SQL> create user user01 identified by **************;

User created.

ユーザーが作成されたので権限を付与して、user01の情報を確認します。

SQL> grant connect,resource to user01;

Grant succeeded.

SQL> select username,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE from dba_users where username = 'USER01';

USERNAME             DEFAULT_TABLESPACE             TEMPORARY_TABLESPACE
-------------------- ------------------------------ ------------------------------
USER01               DATA                           TEMP

SQL> select * from dba_ts_quotas where username = 'USER01';

no rows selected

SQL> select * from dba_sys_privs where grantee = 'USER01';

no rows selected

SQL> select * from dba_role_privs where grantee = 'USER01';

GRANTEE              GRANTED_ROLE         ADM DEL DEF COM INH
-------------------- -------------------- --- --- --- --- ---
USER01               CONNECT              NO  NO  YES NO  NO
USER01               RESOURCE             NO  NO  YES NO  NO

表領域へのクォータがないので割り当てます。

SQL> alter user user01 quota unlimited on data;

User altered.

SQL> select * from dba_ts_quotas where username = 'USER01';

TABLESPACE_NAME                USERNAME                  BYTES  MAX_BYTES     BLOCKS MAX_BLOCKS DRO
------------------------------ -------------------- ---------- ---------- ---------- ---------- ---
DATA                           USER01                        0         -1          0         -1 NO

作成したユーザーでテーブルを作成する

作成した USER01 でデータベースにアクセスします。

$ sqlplus user01@db201_medium

SQL*Plus: Release 23.0.0.0.0 - Production on Tue Jul 29 12:37:32 2025
Version 23.8.0.25.04

Copyright (c) 1982, 2025, Oracle.  All rights reserved.

Enter password:

Connected to:
Oracle Database 23ai Enterprise Edition Release 23.0.0.0.0 - for Oracle Cloud and Engineered Systems
Version 23.9.0.25.08

SQL>

テーブル tbl01 を作成して、レコードを挿入します。

SQL> create table tbl01(a1 int,a2 varchar2(10));

Table created.

SQL> insert into tbl01 values (1,'abcde');

1 row created.
SQL> select * from tbl01;

        A1 A2
---------- ----------
         1 abcde

テーブルが作成され、データが挿入できることを確認しました。

おわりに

ADBの起動停止とADBへのアクセス、ユーザー作成について紹介しました。

OCIコンソールでの操作、ADBでの表領域の制限、ユーザーのパスワードなどオンプレミスとは違う部分もありますが、データベースに接続できてしまえばオンプレミスと同じ操作でデータベースを扱うことができます。

今後の記事でも、ADBを使い込んで気になる機能を紹介していきます。

執筆担当者プロフィール
三条 光暢

三条 光暢(日本ビジネスシステムズ株式会社)

Oracle、PostgreSQLを中心に各種データベースの設計・構築・運用を携わっています。

担当記事一覧