CREATE USERするまで
前回の続き。
Oracleに入るまで
wslでDockerでOracleイメージを走らせる。
Dockerのイメージに入る。以下はよく使うから暗記しておいたほうがいい。
docker exec -it イメージ名 bash
sqlplusで接続する
sqlplus sys/oracle@//localhost:1521/SID as sysdba
表領域の確認
select tablespace_name,block_size,initial_extent from dba_tablespaces;
CREATE USER
CREATE USER otete IDENTIFIED BY "TEST" DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
実行すると
ORA-65096: invalid common user or role name
こちらが出て怒られる。
これは、CDBに直接ユーザは作成できないから。
PDBで作れよってことらしい。
今実際に自分がどこに接続しているかを確認するには以下
show con_name
Docker logsでコンテナをビルドしたときのログを確認する
PDBの名前を知るためにログを漁った。
まずdocker psでコンテナIDをメモしておく。そのIDで以下実行する。
docker logs コンテナーid
ログを見てみたけど、どれがPDBの名前なのかわからなかった。
tnsnames.oraを確認
/opt/oracle/product/12.2.0.1/dbhome_1/network/admin/tnsnames.ora
こちらをcatで見てみる
SERVICE_NAME=PDBなので、そのままPDBでやれば接続できるのか?
PDBで接続とその確認
sqlplus system/oracle@PDB
あ、というかよく考えたら以下でPDBの設定自分でやってたわ。。。
起動用の環境変数ファイル(oracle.env)をOracleDatabase/SingleInstance/dockerfiles/12.2.0.1/にoracle.envを作成
後日、以下で接続できることも発見
パスワード:oracle
PDB名:PDB
これらは、oracle.envで設定した。
sqlplus pdbadmin/oracle@localhost:1521/PDB
再度Create Userする
できた。
ロールを付与
テスト環境なので、ツヨツヨの権限を与える。
GRANT DBA TO OTETE;
GRANT UNLIMITED TABLESPACE TO OTETE;
その他
Userの確認
select * from ALL_USERS where USERNAME = ‘OTETE’;
select * from DBA_USERS where USERNAME = ‘OTETE’;
便利なコマンド
こちらが非常にわかりやすく便利だったのでそのまま。
いつも知りたいと思って探すのに苦労してるので。
自分のメモなので、詳細については元を確認してください。
-- 自分の所有する権限を確認
select * from user_sys_privs;
-- 自分の所有するロールを確認
select * from user_role_privs;
-- ロールに紐づくシステム権限を確認
select * from role_sys_privs where role = '<ロール名>';
-- ユーザに権限を付与
grant <権限> to <ユーザ>;
-- 権限をロールに付与
grant <権限> to <ロール>;
-- 接続先の確認
show con_name
-- 接続先の切り替え
alter session set container = <接続先SID>;
-- ユーザ作成
create user <ユーザ名> identified by <パスワード> default tablespace <デフォルト表領域> temporary tablespace <一時領域>;
ディスカッション
コメント一覧
まだ、コメントがありません