そういうのがいいブログ

SIerで働く30代サラリーマンSEがインフラエンジニアに憧れてLinux・クラウド・AWSの勉強をするブログ

Oracleプラガブル・データベースPDB【表領域・ユーザーの作成手順】

※[PR]当ブログの記事の中にはプロモーションが含まれています。

Oracleプラガブル・データベースPDB【表領域・ユーザーの作成手順】

Oracle Database 19cでプラガブル・データベース(PDB)に表領域とユーザーを作成する手順を知りたい方へ

Oracle Databaseのプラガブル・データベース(PDB)は、
新規作成した直後だと、 「SYSTEM」「TEMP」などの必要最低限の表領域しか作られていない状態です。

今回は、通常のユーザーが使用する表領域「USERS」をPDBに作成して、ユーザーも作成する手順を紹介したいと思います。

あと、オラクルデータベースのおススメの勉強法があれば知りたい、という方に向けての情報も記事の後半で書きます。

OraclePDBに表領域を作成して、ユーザーも作成する手順を解説します

本記事では、下記の内容を解説します。

  1. Oracle19cのプラガブル・データベースPDBに表領域を作成する手順
  2. Oracle19cのプラガブル・データベースPDBにユーザーを作成する手順
  3. ラクルデータベースのおススメの勉強法の紹介

この記事を書いている私は、某SIerに勤務しながら、WEB系エンジニア・インフラエンジニアに憧れて、プログラミングおよびインフラ技術の勉強をしています。
私が実機で試したコマンドや画像を載せて書いています。
実際にこの記事に書いた方法で、Oracle Linux8.1上にインストールしたOracle Database 19cのプラガブル・データベースPDB上に表領域とユーザーを作成できました。(30分もかからず)
記事の信頼性担保に繋がると思います。

Oracle19cにプラガブル・データベースPDBに表領域を作成する手順

PDBローカル管理者の権限・ロールの確認、DBA権限の付与

CDBルートにOS認証で接続

[oracle@SV-PLUTO ~]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on 土 125 16:17:44 2020
Version 19.3.0.0.0

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



Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
に接続されました。
SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT
SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 ORCLPDB1                       READ WRITE NO
         5 FINDTPDB                       READ WRITE NO

PDBに接続切り換え

alter session set container = <PDB名>;
SQL> alter session set container = FINDTPDB;

セッションが変更されました。

SQL> show con_name

CON_NAME
------------------------------
FINDTPDB

PDBローカル管理者ユーザーの権限・ロールの確認

SQL> select GRANTEE, GRANTED_ROLE, ADMIN_OPTION
  2  from SYS.DBA_ROLE_PRIVS
  3  where GRANTEE = 'FINDTADM'
  4  /

GRANTEE    GRANTED_ROLE         ADMIN_OPTION
---------- -------------------- ---------------
FINDTADM   PDB_DBA              YES
SQL> select GRANTEE, PRIVILEGE, ADMIN_OPTION
  2  from SYS.DBA_SYS_PRIVS
  3  where GRANTEE = 'PDB_DBA'
  4  /

GRANTEE    PRIVILEGE                                ADMIN_OPTION
---------- ---------------------------------------- ---------------
PDB_DBA    CREATE PLUGGABLE DATABASE                NO
PDB_DBA    CREATE SESSION                           NO

PDB_DBA」に「DBA」ロールを付与

grant DBA to PDB_DBA;
SQL> grant DBA to PDB_DBA;

権限付与が成功しました。
SQL> select GRANTEE, GRANTED_ROLE, ADMIN_OPTION
  2  from SYS.DBA_ROLE_PRIVS
  3  where GRANTEE = 'PDB_DBA'
  4  /

GRANTEE    GRANTED_ROLE         ADMIN_OPTION
---------- -------------------- ---------------
PDB_DBA    DBA                  NO

PDBに表領域の作成

PDBローカル管理者ユーザーでPDBに接続

[oracle@SV-PLUTO ~]$ sqlplus findtadm/findtadmx@FINDTPDB

SQL*Plus: Release 19.0.0.0.0 - Production on 土 125 16:37:00 2020
Version 19.3.0.0.0

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

最終正常ログイン時間: 土 125 2020 13:25:31 +09:00


Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
に接続されました。
SQL> show con_name

CON_NAME
------------------------------
FINDTPDB

PDBローカル管理者ユーザーで表領域「USERS」を作成

CREATE TABLESPACE USERS
DATAFILE '/opt/oracle/oradata/findtpdb/users01.dbf' SIZE 300M REUSE
AUTOEXTEND ON NEXT 500K MAXSIZE UNLIMITED
  • DATAFILE: データファイルのパス、拡張子は一般的に「dbf
  • SIZE:データファイルのサイズ指定
  • REUSE:すでに同じパスにファイルが存在した場合は再利用する
  • AUTOEXTEND ON:自動拡張ON (表領域の空きが不足すると自動で拡張される)
SQL> CREATE TABLESPACE USERS
  2  DATAFILE '/opt/oracle/oradata/findtpdb/users01.dbf' SIZE 300M REUSE
  3  AUTOEXTEND ON NEXT 500K MAXSIZE UNLIMITED
  4  /

表領域が作成されました。

OraclePDBに表領域が作成できました

表領域の作成後の確認

SQL> select TABLESPACE_NAME, BLOCK_SIZE, INITIAL_EXTENT, MAX_EXTENTS, MAX_SIZE,  STATUS, CONTENTS
  2  from SYS.DBA_TABLESPACES
  3  /

TABLESPACE BLOCK_SIZE INITIAL_EXTENT MAX_EXTENTS   MAX_SIZE STATUS    CONTENTS
---------- ---------- -------------- ----------- ---------- --------- ---------------------
SYSTEM           8192          65536  2147483645 2147483645 ONLINE    PERMANENT
SYSAUX           8192          65536  2147483645 2147483645 ONLINE    PERMANENT
UNDOTBS1         8192          65536  2147483645 2147483645 ONLINE    UNDO
TEMP             8192        1048576             2147483645 ONLINE    TEMPORARY
USERS            8192          65536  2147483645 2147483645 ONLINE    PERMANENT
SQL> select FILE_NAME, TABLESPACE_NAME, BYTES, BLOCKS, STATUS
  2  from SYS.DBA_DATA_FILES
  3  /

FILE_NAME                                  TABLESPACE      BYTES     BLOCKS STATUS
------------------------------------------ ---------- ---------- ---------- ---------
/opt/oracle/oradata/findtpdb/system01.dbf  SYSTEM      293601280      35840 AVAILABLE
/opt/oracle/oradata/findtpdb/sysaux01.dbf  SYSAUX      356515840      43520 AVAILABLE
/opt/oracle/oradata/findtpdb/undotbs01.dbf UNDOTBS1    104857600      12800 AVAILABLE
/opt/oracle/oradata/findtpdb/users01.dbf   USERS       314572800      38400 AVAILABLE

表領域の作成後の確認

Oracle19cのプラガブル・データベースPDBにユーザーを作成

Oracle19cのプラガブル・データベースPDBにユーザーを作成する手順

表領域が作成できたので、引き続き、PDB管理者ユーザーでPDBにユーザーを作成します。

PDBにユーザー作成

CREATE USER <ユーザー名>
IDENTIFIED BY <パスワード>
DEFAULT TABLESPACE USERS
QUOTA UNLIMITED ON USERS
TEMPORARY TABLESPACE TEMP
  • QUOTA:表領域USERSへの無制限に使用できる領域サイズの割り当て
SQL> CREATE USER findtuser01
  2  IDENTIFIED BY ●●●●●●●●●●●
  3  DEFAULT TABLESPACE USERS
  4  QUOTA UNLIMITED ON USERS
  5  TEMPORARY TABLESPACE TEMP
  6  /

ユーザーが作成されました。

作成したユーザーに権限付与

grant create session to <ユーザー名>
grant resource to <ユーザー名>
grant unlimited tablespace to <ユーザー名>
  • CREATE SESSION: この権限が無いとOracleDatabaseに接続できない
  • RESOURCE: テーブルなどのオブジェクト作成を可能にするロール
  • UNLIMITED TABLESPACE: 無制限に領域を使用できる権限
SQL> grant create session to findtuser01
  2  /

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

SQL> grant resource to findtuser01
  2  /

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

SQL> grant unlimited tablespace to findtuser01
  2  /

権限付与が成功しました。
SQL> select GRANTEE, PRIVILEGE, ADMIN_OPTION
  2  from SYS.DBA_SYS_PRIVS
  3  where GRANTEE = 'FINDTUSER01'
  4  /

GRANTEE     PRIVILEGE                                ADM
----------- ---------------------------------------- ---
FINDTUSER01 UNLIMITED TABLESPACE                     NO
FINDTUSER01 CREATE SESSION                           NO
SQL> select GRANTEE, GRANTED_ROLE, ADMIN_OPTION
  2  from SYS.DBA_ROLE_PRIVS
  3  where GRANTEE = 'FINDTUSER01'
  4  /

GRANTEE              GRANTED_ROLE         ADMIN_OPTION
-------------------- -------------------- ---------------
FINDTUSER01          RESOURCE             NO

PDBに新しいユーザーが作成できました!

作成したユーザーでPDBに接続

[oracle@SV-PLUTO ~]$ sqlplus findtuser01/●●●●●●●●●●●@FINDTPDB

SQL*Plus: Release 19.0.0.0.0 - Production on 土 125 17:07:47 2020
Version 19.3.0.0.0

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



Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
に接続されました。
SQL> show user
ユーザーは"FINDTUSER01"です。
SQL>

参考にしたサイト

ユージ&ギョータの実践データベース講座「マルチテナント・アーキテクチャ編 第2回 表領域やユーザー、表の作成」:Oracle Technology Network

【Oracle】表領域・ユーザー・テーブルを作成する:DBAlone

ラクルデータベースのおススメの勉強法の紹介

私は、某SIerに勤務しながら、入社以来10年以上、オラクルデータベースを使用したシステムに関わる仕事をしています。

ラクルデータベースについて、仕事場以外でも勉強をしたい、おススメの勉強法を知りたい、と考えている方のために、
①おすすめの書籍と、②おすすめのオンライン学習サイト、 を紹介します。

働きながら勉強するための、おススメの書籍とオンラインで学習できるサイトの紹介です

ラクルデータベースの勉強ができるおススメ書籍

朝の通勤時や帰宅時の電車の中や、社外打合せへの移動中などに勉強するなら、やはり書籍が一番だと思います。

Oracleの基本 ~データベース入門から設計/運用の初歩まで

技術エキスパートとして認定されたOracle ACEの渡部亮太さんの書かれた本です。

https://twitter.com/wrcsus4twitter.com

本書では、Oracle初心者/新人エンジニアが押さえておくべき知識とスキルを、現場で活躍するOracleエンジニアたちが、わかりやすく丁寧に解説。
Oracleの使い方はもちろん、データベースの基礎知識から、データ操作のためのSQL、テーブル設計、データベース運用/管理の基礎までしっかり押さえ、実務で使える入門スキルを身につけられます。
Oracleを学びたいすべての人に最適な入門書です。

Oracleの基本 ~データベース入門から設計/運用の初歩まで

プロとしてのOracleアーキテクチャ入門【第2版】

もう1冊、こちらもOracle ACEの渡部亮太さんの書かれた本です。

本書は、Oracle Databaseのアーキテクチャ(内部構成)について解説した入門書です。 本書の内容を理解することで「Oracleの動作の仕組み」を本質的に理解することができます。 これからOracleを使用する初心者の方から、実際にシステムの開発や運用管理を行っている DBエンジニアやシステムエンジニアの方を対象としています。

プロとしてのOracleアーキテクチャ入門【第2版】(12c、11g、10g 対応) 図解と実例解説で学ぶ、データベースの仕組み (Oracle現場主義)

ラクルデータベースの勉強ができるオンライン学習サイト

iStudy

ラクルのeラーニングサイトといえば、「iStudy」です。
ラクル関連のいろいろなコースが用意されています。

https://www.istudy.co.jp/products/training/list/it/database?a8=s7Jmh7cw.IM0943bcaLmnD3k0J16MwDZcaLVQ1eubuKw.IJDo4JwjbXtMI1QYQXMFuHbe5J2F7Jmgs00000020030001

f:id:souiunogaii:20200118213515j:plain

f:id:souiunogaii:20200118213502j:plain