Oracle Databaseにユーザー(スキーマ)を作った記録

  • 環境
    • 接続先 : (RDS)Oracle Database 12c Standard Edition Release 12.2.0.1.0 - 64bit Production
    • 接続元 : (EC2)Ubuntu 18.04 LTS(64ビット x86)
      • SQL*Plus: Release 12.2.0.1.0 Production

RDSでOracleを作成したのでユーザーを作成します。

ponsuke-tarou.hatenablog.com

SQL*PlusでDBにログインします。

管理者ユーザーでログインします。

$ sqlplus admin/hoge@oracle-12.fuga.us-east-2.rds.amazonaws.com:1521/PONDB

SQL*Plus: Release 12.2.0.1.0 Production on 火 310 13:57:46 2020

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

最終正常ログイン時間: 火 310 2020 13:45:58 +00:00


Oracle Database 12c Standard Edition Release 12.2.0.1.0 - 64bit Production
に接続されました。
SQL>

表示幅が狭いと見ずらいので広げます。

SQL> show linesize
linesize 80
SQL> set linesize 120

ユーザーに設定する情報を確認します。

ユーザーを作成する構文

CREATE USER my_name
IDENTIFIED BY "my_password"
[DEFAULT TABLESPACE my_tablespace]
[TEMPORARY TABLESPACE my_temp_tablespace]
[PROFILE my_profile]
CREATE USER、ユーザーの作成 - オラクル・Oracleをマスターするための基本と仕組み

作りたいユーザー名が既にないことを確認します。

SQL> select distinct username from all_users where username like '%ponsuke%';

レコードが選択されませんでした。
注意 : キャメルケースでユーザー名を指定すると大文字小文字が区別されないのでダサいことになります。

キャメルケースで書くと大文字小文字が区別されず、全部大文字か全部小文字(表示するツールによるらしい)になります。
「_」などで区切るスネークケースがよいです。
ダサいのを誤って作ってしまったので削除しました。

/* 所有していたオブジェクトもろともユーザーを削除する */
SQL> drop user PONSUKETAROU cascade;

使用する表領域を選びます。

「DEFAULT TABLESPACE(ユーザー・オブジェクト を作成するときの使用するデフォルト表領域)」「TEMPORARY TABLESPACE(Oracle が使用する作業用の表領域)」で指定する値を選びます。
現在存在する表領域を検索して選びます。

SQL> select tablespace_name,block_size,initial_extent from dba_tablespaces;

TABLESPACE_NAME BLOCK_SIZE INITIAL_EXTENT
--------------- ---------- --------------
SYSTEM                8192          65536
SYSAUX                8192          65536
UNDO_T1               8192          65536
TEMP                  8192        1048576
USERS                 8192          65536
RDSADMIN              8192          65536

6行が選択されました。

ユーザーを作成します。

SQL> create user ponsuke identified by ponsuke default tablespace USERS temporary tablespace TEMP profile DEFAULT;

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

-- 確認します。
SQL> select username from all_users where regexp_like(username, 'ponsuke', 'i');

USERNAME
------------------------------------------------------------------------------------------------------------------------
PONSUKE

SQL>

権限を付与します。

権限を付与しないとデータベースに接続すらできません。

SQL> grant create session,create table,create view,create sequence,create trigger,create synonym,unlimited tablespace to ponsuke;

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

作成したユーザーでログインしてみます。

$ sqlplus ponsuke/ponsuke@oracle-12.fuga.us-east-2.rds.amazonaws.com:1521/PONDB

SQL*Plus: Release 12.2.0.1.0 Production on310 14:32:13 2020

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

Oracle Database 12c Standard Edition Release 12.2.0.1.0 - 64bit Production
に接続されました。
SQL>

失敗したこと

ORA-01045: user username lacks CREATE SESSION privilege

qiita.com

ORA-00988: パスワードが指定されていないか、または無効です。

qiita.com

f:id:ponsuke_tarou:20161113100841j:plain