インストールしたOracle Express Edition18cにテーブルとデータ作ってみた
以前の記事で「Oracle Express Edition18c」をインストールする方法とセットアップについて書いているので興味のある方はそちらを参考にしてみて下さい。ちなみに今回はその続きです。
・インストールについての記事
【無償】勉強用にOracle Express Edition18cをWindows10にインストールしてみた
勉強用にOracle Express Edition18cをインストールしてみた タイトルの通り、勉強用にOracleをWindows10にインストールしてみました。Express Editionをインストールしてる記事が少なかったのでEx...
・セットアップについての記事
【勉強用】インストールした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の連携を少し記事で書いてみようと思います。
コメント