[Oracle]インストール

「Oracle Database Enterprrise Edition(EE)」をインストールしたよ。

1.ダウンロード

  1. Oracle Database ソフトウェア・ダウンロードで”Oracle Database 12c Release 2″の”Microsoft Windows x64 (64-bit)”の”See All”をクリック。
  2. 遷移先のページで”Oracle Database 12c Release 2 (12.2.0.1.0) for Microsoft Windows (x64)”の”winx64_12201_database.zip”をクリックし、ダウンロード。
    ※ダウンロードにはOracle.comのユーザ登録が必要だった。

2.インストール

「とりあえず、ローカルで動けばいい」の思いでインストールしたので、後々再インストールが必要になるかも。手っ取り早く使いたい時の指針にはなるだろう。そう思おう。
基本的にはデフォルト値だけど、ところどころの選択は以下のようにした。

セキュリティアップデートの構成  電子メール:設定しない
セキュリティ・アップデートをMy Oracle Support経由で受け取ります。:チェックオフ
※警告出るが無視
インストール・オプション データベースの作成および構成:選択
システム・クラス デスクトップ・クラス:選択
Oracleホーム・ユーザー 仮想アカウントの使用:選択
標準インストール ※パスワードのみ入力し、他は初期値のまま
サマリー
終了

インストールが終わり、メニューに追加されたことを確認。
SQL PLUSでとりあえず、”sys”ユーザで「orcl」にログインできた。けど、普通のユーザが欲しい。
※「orcl」・・・インストール時デフォルトのデータベース名

sqlplus sys/<パスワード>@orcl as sysdba
sqlplus system/<パスワード>@orcl as sysdba

3.スキーマ(ユーザ)を作る

まずは概念を簡単にまとめ

では、作成していく。
(1) sysユーザでログイン

sqlplus sys/<パスワード>@orcl as sysdba

(2) 作成するユーザが使用する表領域の作成 <後でやり直している>

CREATE TABLESPACE NTEST_TS
  DATAFILE 'ntest_dt.dbf' SIZE 100M
/

※ファイルパスを省略したら「C:\app\<ユーザ名>\virtual\product\12.2.0\dbhome_1\database\」に作成された。

(3) ユーザの作成 <失敗>

CREATE USER NTEST_US01
  IDENTIFIED BY "NTEST_PASS"
  DEFAULT TABLESPACE NTEST_TS
  TEMPORARY TABLESPACE temp
/

※ん?失敗した。「ORA-65096: 共通ユーザーまたはロール名が無効です」だって。

なんかねOracle 12cからデータベースが2種類に分かれたんだって。
※プラガブルは「Plugg-able」で脱着可能という意味だそうだ。CDBにPDBを抜き差しというイメージか?
んで、ルールとして

  • 通常のローカル接続をした場合、CDBに接続される。
  • CDBにはユーザスキーマを作成することはできない。(ORA-65096となる)
  • ユーザスキーマはPDBに接続して作成する必要がある。
  • CDBからはユーザスキーマが見えない。

だそうだ。
今回はCDBが「orcl」、PDB「orclpdb」となる。そういやインストール時にそんなことが書いてあったような。
ということで「tnsnames.ora」にPDB用のTNSを追加して、PDBにログイン。

TNS
ORCLPDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orclpdb)
    )
  )
ログイン
sqlplus sys/<パスワード>@orclpdb as sysdba

(4) 再度ユーザの作成 <失敗>

CREATE USER NTEST_US01
  IDENTIFIED BY "NTEST_PASS"
  DEFAULT TABLESPACE NTEST_TS
  TEMPORARY TABLESPACE temp
/

※だめだ。「ORA-00959: 表領域’NTEST_TS’は存在しません」だと。CDBで作った表領域はPDBでは使えないのかね。

(5) CDBの”NTEST_TS”を削除して、PDBに作成。
※同じ名前で作るので、”NTEST_TS”を論理削除、物理ファイル「ntest_dt.dbf」を直接削除、再作成の順に行った。

(6) 再々度ユーザの作成

CREATE USER NTEST_US01
  IDENTIFIED BY "NTEST_PASS"
  DEFAULT TABLESPACE NTEST_TS
  TEMPORARY TABLESPACE temp
/

※やっとできた。

(7) 適当にDBAロールを付与。

GRANT DBA TO NTEST_US01

※最低限”CREATE SESSION”がないとログインすらできない

(8) ログイン確認

sqlplus NTEST_US01/NTEST_PASS@ORCLPDB

※OK!

4.SQL Developerでログイン

他の接続ソフトでもいいんだけど、とりあえず付属ソフトでいけるとこまでいってみる。

とりあえずPDBにログインするも、いきなり失敗。

SIDは「orcl」(CDB)だった。サービス名に入力すると入れた。

結局一筋なわではいかなかったな。

当面Oracleでやりたいのは実行計画のお勉強。だましだましやってたが一回ちゃんとやったほうがいいと思ったんで。