はじめに
前回Oracle CloudのBase DBに接続できましたので、データを登録するための事前準備として、表領域とスキーマーを作成します。
表領域の作成
OSにSSHでログインし、oracleユーザからSQL*Plusで接続します。
$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Jul 18 10:24:55 2023
Version 19.19.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
Version 19.19.0.0.0
PDBの確認と接続
Oracle DBは、マルチテナントアーキテクチャを採用しており、CDBとPDBがあります。
ざっくり言うと、CDBはPDBを管理するための領域、PDBはユーザデータを保存する領域です。
デフォルトのCDBとPDBを確認します。
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 DB0714_PDB1 READ WRITE NO
今はCDBに接続されていて、書き込み可能なPDBとしてDB0714_PDB1
があります。
表領域やスキーマーはPDBに作成しますので、PDBに接続します。
SQL> alter session set container = DB0714_PDB1 ;
Session altered.
SQL> show con_name
CON_NAME
------------------------------
DB0714_PDB1
表領域の確認と作成
デフォルトで作成されている表領域を確認します。
SQL> select tablespace_name from dba_tablespaces;
TABLESPACE_NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS
作成されている表領域とData Fileを確認します。
SQL> set lin 120
SQL> col TABLESPACE_NAME for a20
SQL> col FILE_NAME for a80
SQL> select tablespace_name,file_name,bytes/1024/1024 MB from dba_data_files;
TABLESPACE_NAME FILE_NAME MB
-------------------- -------------------------------------------------------------------------------- ----------
SYSAUX +DATA/DB0714_8SM_KIX/006C0A4610BB0447E0637C00000A3A75/DATAFILE/sysaux.271.114217 420
0831
UNDOTBS1 +DATA/DB0714_8SM_KIX/006C0A4610BB0447E0637C00000A3A75/DATAFILE/undotbs1.270.1142 70
170841
SYSTEM +DATA/DB0714_8SM_KIX/006C0A4610BB0447E0637C00000A3A75/DATAFILE/system.273.114217 420
0819
USERS +DATA/DB0714_8SM_KIX/006C0A4610BB0447E0637C00000A3A75/DATAFILE/users.274.1142170 5
995
表領域を作成します。今回のBase DBはASMで構成されています。
名称SHIBUYA
、容量100MB
の表領域をASM領域に作成します。
SQL> create tablespace SHIBUYA datafile '+DATA' size 100m ;
Tablespace created.
SQL> select tablespace_name,file_name,bytes/1024/1024 MB from dba_data_files;
TABLESPACE_NAME FILE_NAME MB
-------------------- -------------------------------------------------------------------------------- ----------
SYSAUX +DATA/DB0714_8SM_KIX/006C0A4610BB0447E0637C00000A3A75/DATAFILE/sysaux.271.114217 420
0831
UNDOTBS1 +DATA/DB0714_8SM_KIX/006C0A4610BB0447E0637C00000A3A75/DATAFILE/undotbs1.270.1142 70
170841
SYSTEM +DATA/DB0714_8SM_KIX/006C0A4610BB0447E0637C00000A3A75/DATAFILE/system.273.114217 420
0819
USERS +DATA/DB0714_8SM_KIX/006C0A4610BB0447E0637C00000A3A75/DATAFILE/users.274.1142170 5
995
TABLESPACE_NAME FILE_NAME MB
-------------------- -------------------------------------------------------------------------------- ----------
SHIBUYA +DATA/DB0714_8SM_KIX/006C0A4610BB0447E0637C00000A3A75/DATAFILE/shibuya.281.11425 100
14633
スキーマーの作成
ユーザとスキーマーは厳密には違うものですが、「同じものと捉えてもよい」という記載もあったりします。
ユーザを作成すると、同じ名称のスキーマーが作成されるので、ここでは深く考えずにユーザ ≒ スキーマー
くらいの認識でいこうと思います。
スキーマーの作成
スキーマーの作成と言いつつ、コマンドがcreate user
ですからね。
ここでは、ユーザ名ken
、デフォルト表領域SHIBUYA
でスキーマーを作成します。
SQL> create user ken identified by <パスワード> default tablespace SHIBUYA temporary tablespace temp;
確認します。
(grepできたらいいんですけど、SQLで同じようなことをする書き方がわからない)
SQL> select username from dba_users;
USERNAME
--------------------------------------------------------------------------------------------------------------------------------
SYS
SYSTEM
XS$NULL
LBACSYS
OUTLN
DBSNMP
APPQOSSYS
DBSFWUSER
GGSYS
ANONYMOUS
CTXSYS
USERNAME
--------------------------------------------------------------------------------------------------------------------------------
DVSYS
DVF
GSMADMIN_INTERNAL
OLAPSYS
MDSYS
XDB
WMSYS
GSMCATUSER
MDDATA
SYSBACKUP
REMOTE_SCHEDULER_AGENT
USERNAME
--------------------------------------------------------------------------------------------------------------------------------
GSMUSER
SYSRAC
OJVMSYS
SI_INFORMTN_SCHEMA
PDBUSER
AUDSYS
DIP
ORDPLUGINS
SYSKM
ORDDATA
ORACLE_OCM
USERNAME
--------------------------------------------------------------------------------------------------------------------------------
SYS$UMF
SYSDG
ORDSYS
KEN
37 rows selected.
権限の設定
作成したユーザに以下マニュアルにある3つの事前定義ロールを付与します。
SQL> grant connect to ken;
Grant succeeded.
SQL> grant resource to ken;
Grant succeeded.
SQL> grant dba to ken;
Grant succeeded.
接続
一旦ログアウトして、作成したスキーマーに接続します。書式は以下です。
$ sqlplus <スキーマ名>/<パスワード>@<ホスト名>:<ポート>/<サービス名>
@
以降はOCIコンソールのPDB接続
から確認できます。
$ sqlplus ken/<パスワード>@aoyama.public.xxxvcn01.oraclevcn.com:1521/DB0714_pdb1.public.xxxvcn01.oraclevcn.com
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Jul 18 14:26:24 2023
Version 19.19.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
Version 19.19.0.0.0
SQL> show user
USER is "KEN"
SQL> show con_name
CON_NAME
------------------------------
DB0714_PDB1
tnsnames.ora
tnsnames.ora
ファイルに接続の情報を記載しておくことで、接続コマンドを簡略化できます。
$ cd $ORACLE_HOME/network/admin
$ ls
samples shrept.lst sqlnet.ora tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/19.0.0.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
LISTENER_DB0714 =
(ADDRESS = (PROTOCOL = TCP)(HOST = aoyama)(PORT = 1521))
DB0714_8SM_KIX =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = aoyama)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = DB0714_xxx_kix.public.oskvcn01.oraclevcn.com)
)
)
## 追記
PDB1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = aoyama)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = db0714_pdb1.public.xxxvcn01.oraclevcn.com)
)
)
## ここまで
$ sqlplus ken/<パスワード>@PDB1
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Jul 18 14:46:00 2023
Version 19.19.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
Last Successful login time: Tue Jul 18 2023 14:26:25 +09:00
Connected to:
Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
Version 19.19.0.0.0
SQL> show user
USER is "KEN"