インストールしたOracle Express Edition18cにテーブルとデータ作ってみた

スポンサーリンク

インストールしたOracle Express Edition18cにテーブルとデータ作ってみた

以前の記事で「Oracle Express Edition18c」をインストールする方法とセットアップについて書いているので興味のある方はそちらを参考にしてみて下さい。ちなみに今回はその続きです。

・インストールについての記事

【無償】勉強用にOracle Express Edition18cをWindows10にインストールしてみた
勉強用にOracle Express Edition18cをインストールしてみた タイトルの通り、勉強用にOracleをWindows10にインストールしてみました。Express Editionをインストールしてる記事が少なかったのでE...

・セットアップについての記事

【勉強用】インストールしたOracle Express Edition18cのセットアップしてみた
インストールしたOracle Express Edition18cのセットアップしてみた 無料でインストールした「Oracle Express Edition18c」のセットアップをしてみようと思います。ちなみにインストールについては、以...

プラガブル・データベースのデフォルト起動状態について

前回のセットアップで作成したプラガブル・データベースにログインしましょう。もしかしたら以下のようなエラーが出る可能性があります。

C:\>sqlplus ADMIN/PASSWORD@//localhost:1521/XEPDB1

ERROR:
ORA-01109: データベースがオープンされていません。
デフォルト設定の場合、コンテナデータベースが起動した状態ではプラガブル・データベースは、MOUNT状態で起動されます。

そのためマウント状態のプラガブル・データベースを起動するため、いったんコンテナデータベースにログインしてプラガブルデータベースをオープンしましょう。

--プラガブル・データベースの状態確認
show pdbs
--プラガブル・データベースのオープン
alter pluggable database <PDB> open;
C:\>sqlplus sys/password@XE as sysdba

Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production
Version 18.4.0.0.0
に接続されました。
SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 XEPDB1                         MOUNTED    

SQL> alter pluggable database XEPDB1 open;

プラガブル・データベースが変更されました。

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 XEPDB1                         READ WRITE NO

これでプラガブル・データベースがオープンされた状態になったのでログインしてみましょう。

プラガブル・データベースにログインしてテーブル作成

それでは、プラガブル・データベースにログインしてテーブルを作成します。

C:\>sqlplus ADMIN/PASSWORD@//localhost:1521/XEPDB1

Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production
Version 18.4.0.0.0
に接続されました。
SQL>

以下の簡単な「CREATE」文を発行しましょう。

CREATE TABLE EXAMPLE
(
 ID    varchar2(10)
 ,NAME varchar2(10)
 ,AGE  number
);
SQL> CREATE TABLE EXAMPLE
  2  (
  3   ID    varchar2(10)
  4   ,NAME varchar2(10)
  5   ,AGE  number
  6  );

表が作成されました。

プラガブル・データベースに作成したテーブルにデータを作成する

先ほど作成した「EXAMPLE」テーブルに「INSERT」文を発行してみましょう。

INSERT INTO EXAMPLE VALUES ('001','いるか',1);
SQL> INSERT INTO EXAMPLE VALUES ('001','いるか',1);
INSERT INTO EXAMPLE VALUES ('001','いるか',1)
            *
行1でエラーが発生しました。:
ORA-01950: 表領域'USERS'に対する権限がありません

おかしいですね。。。セットアップの時に「grant resource to ADMIN;」したはずなのですが。。。

なんとググってみたらOracle12cより前のバージョンは「grant resource」つけてるとデフォルトで「unlimited tablespace」をつける仕様だったみたいです。

ということなので、いったんログアウトしてsysdba権限をつけてログインしなおして、個別に権限を付けます。

grant unlimited tablespace to ADMIN;
SQL> exit;
Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production
Version 18.4.0.0.0との接続が切断されました。

C:\>sqlplus ADMIN/PASSWORD@//localhost:1521/XEPDB1 as sysdba

Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production
Version 18.4.0.0.0
に接続されました。
SQL> grant unlimited tablespace to ADMIN;

権限付与が成功しました。

それでは、INSERTを流してみましょう。そのままだとSYSDBA権限ついてるのでまたログアウトして入りなおしてみてください。

C:\>sqlplus ADMIN/PASSWORD@//localhost:1521/XEPDB1

Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production
Version 18.4.0.0.0
に接続されました。
SQL> INSERT INTO EXAMPLE VALUES ('001','いるか',1);

1行が作成されました。

ようやくINSERTまでたどり着きました\(^o^)/次回はJAVAとOracleの連携を少し記事で書いてみようと思います。

コメント

タイトルとURLをコピーしました