LoginSignup
19

More than 5 years have passed since last update.

Windows10にOracle12cをインストールしたので手順を残しておこうと思う。

Last updated at Posted at 2016-10-27

Orcle 12cをWindows10にセットアップする

この作業のゴール

  • Oracle 12c がWindows10上で動作する
  • データベースにユーザーとしてuser/passを作成する
  • Oracle 12c へ外部からユーザーuser/passとしてアクセスができる
  • Oracle 12c へ古いOracleから出力されたdmpファイルをインポートし、
    user/passがローカル/リモートでインポートされたデータへアクセスできる

1. Oracle 12c のインストール

  • 1-1 setup.exeの実行

    • Oracle 12c のsetup.exeを右クリックメニューから管理者として実行を選択し、以下の手順でインストール作業を行う

      • ##### ステップ1/9 セキュリティアップデートの構成
        -> メールアドレスを空欄にし、セキュリティアップデートをMyOracleSupport経由で受け取ります のチェックを外す
        -> [次へ]を選択し、「電子メールアドレスが指定されていません」のダイアログで[はい]を選択する
      • ##### ステップ2/9 インストール・オプションの選択
        -> [データベースの作成及び構成]を選択し、[次へ]を選択する
      • ##### ステップ3/9 システム・クラス
        -> [サーバー・クラス]を選択し、[次へ]を選択する
      • ##### ステップ4/9 Oracleホーム・ユーザーの指定
        -> [新規Windowsユーザーの作成]を選択し、標準ユーザーアカウントを作成する
        (今回はuser/passをuser/passとした)
      • ##### ステップ5/9 標準インストール構成
        -> デフォルトで埋められた内容を変更せず、パスワードとしてpasswordを設定し[次へ]を選択
        -> パスワード強度が弱いため警告が表示されるが処理続行のために[はい]を選択
      • ##### ステップ6/9 前提条件のチェック
        -> 環境変数、レジストリなどを自動で検証してくれるため処理が終わるのを待つ
      • ##### ステップ7/9 サマリー
        -> 検証結果が表示されるので確認を行う。念のため[レスポンス・ファイルの保存]を選択し検証結果を保存しておく
        -> [インストール]を選択し、インストール処理を実行する
      • ##### ステップ8/9 製品のインストール
        -> インストールが自動的に始まるので完了まで待つ
      • ##### ステップ9/9 終了
        -> データベースがインストールされたことを確認したのちにインストーラを終了する
  • 1-2 インストール結果の確認

    • Oracle 12cのインストールとデータベースの構築に成功していることを確認する

      • [コントロールパネル]->[システムの詳細]->[環境変数]->[システム環境変数]のPathに
        C:¥app¥[ユーザー名]¥product¥12.0.1¥dbhome_1¥bin
        が宣言されていることを確認する
      • Windows管理ツールのサービスからOracleのサービスが存在していること、状態が[実行中]であることを確認する
      • sqlplusに

        sqlplus / as sysdba
        

        でログインし、

        SQL> select instance_name from v$instance;
        

        と打つと

        INSTANCE_NAME
        ----------------
        orcl
        

        とインスタンス名が表示されることを確認する

      • sqlplus上で

        SQL> shutdown immediate
        

        及び

        SQL> startup
        

        を実行してデータベースが停止、起動できることを確認する。

2. ユーザーの作成とリスナーの設定

  • 2-1 リスナーサービスの存在確認

    • コマンドプロンプトから

      lsnrctl status
      

      を実行し、実行結果として

      サービスのサマリー...  
      サービス"CRLExtProc"には、1件のインスタンスがあります。
          インスタンス"CLRExtProc"、状態UNKNOWNには、このサービスに対する1件のハンドラがあります...
      サービス"orcl"には、1件のインスタンスがあります。
          インスタンス"orcl"、状態READYには、このサービスに対する1件のハンドラがあります...
      サービス"orclXDB"には、1件のインスタンスがあります。
          インスタンス"orcl"、状態READYには、このサービスに対する1件のハンドラがあります...
      サービス"pdborcl"には、1件のインスタンスがあります。
          インスタンス"orcl"、状態READYには、このサービスに対する1件のハンドラがあります...
      

      のように、CDB、PDBを含むリスナーサービスのステータスが表示されることを確認する

  • 2-2 pdbの存在確認と起動

    • sqlplusに

      sqlplus / as sysdba
      

      でログインし、

      SQL> show pdb
      

      でPDBORCLがPDBとして存在していることを確認する。

      |CON_ID  |CON_NAME|OPEN MODE |RESTRICTED|
      |--------|--------|----------|----------|
      |2       |PDB$SEED|READ ONLY |NO        |
      |3       |PDBORCL |READ WRITE|NO        |
      

      のようになっていれば、PDBORCLが存在している。

    • また、OPEN MODEMOUNTEDの場合は、PDBが起動していないため、

      SQL> alter pluggable database pdborcl open;
      

      でPDBを起動する。また、

      alter pluggable database PDB名 save state;
      

      でpdbの自動起動設定を行える

  • 2-3 pdbに接続しユーザーを作成する

    • sqlplusに入った状態でshow con_nameを実行すると

      SQL> show con_name;
      
      CON_NAME
      ------------------------------
      CDB$ROOT
      

      と表示されCDBに接続していることを確認できる
      ここで

      SQL> alter session set container=pdborcl;
      
      セッションが変更されました。
      

      として、pdbへ接続する。また、

      SQL> show con_name;
      
      CON_NAME
      ------------------------------
      PDBORCL
      

      と表示されればpdbに接続されていることが確認できる

    • ユーザーアカウントの作成

      SQL> create user user identified by pass;
      
      ユーザーが作成されました。
      
      SQL> grant all privileges to user;
      
      権限付与が成功しました。
      
      SQL> grant dba to user;
      
      権限付与が成功しました。
      

      でユーザーuserを作り、全権限とpdborclコンテナの管理権限を付与する
      このままでは接続できないため、
      C:¥app¥[user]¥product¥12.1.0¥dbhome_1¥NETWORK¥ADMINtnsnames.ora

      PDBORCL =
          (DESCRIPTION =
              (ADDRESS = (PROTOCOL = TCP)(HOST = [ホスト名])(PORT = 1521))
              (CONNECT DATA =
                  (SERVER = DEDICATED)
                  (SERVICE_NAME = pdborcl)
              )
          )
      

      を追記して

      sqlplus user/pass@pdborcl
      

      で接続できることを確認する

3. dmpファイルのインポートと確認

  • 3-1. dmpファイルをimpコマンドでインポートする

    • sqlplusからログアウトして、コマンドプロンプトで

      imp user/pass@pdborcl file=[dmpファイルのパス] full=y log=[logファイルのパス];
      

      としてインポート処理を行う
      必要ならばプロンプトログをリダイレクトしてテキストデータとして出力したり、
      sqlコマンドをspoolを用いてテキストデータとして出力する
      ログはlogオプションで指定した先に出力されるので上記のテキストデータ出力等々は必要でない限りは特に必要ない

  • 3-2. インポートしたデータの確認

    • インポートが終了したらselect文などでデータがインポートできていることを確認し、正しくインポートができたことを確かめる

4. リモートからのアクセス

  • 4-1. クライアントのセットアップ

    • クライアントとして利用したMacにOracle Instant Client(12.1.0.2)を導入する。 Oracle公式ページ( http://www.oracle.com/technetwork/topics/intel-macsoft-096467.html )から、instantclient-basic-macos.x64.12.1.0.2.0.zipをダウンロードする また、sqlplusコマンドセットであるinstantclient-sqlplus-macos.x64-12.1.0.2.0.zipも同様にダウンロードする。 両方を解凍したのち、instantclient_12_1に展開後のディレクトリ内のファイルをまとめる
    • まとめたものを任意のディレクトリ(今回は~/oracle/)に保存して、sqlplusコマンドにパスを通す

      export ORACLE_HOME=/User/[User]/oracle
      export SQLPATH=$ORACLE_HOME/instantclient_12_1/
      
      export PATH="$HOME/.rbenv/bin:$PATH:$SQLPATH"
      

      .bashrcに追記後、tnsnames.ora~/oracle/network/admin/以下に作る
      今回は

      PDBORCL =
          (DESCRIPTION =
              (ADDRESS = (PROTOCOL = TCP)(HOST = [ホスト名またはIP])(PORT = 1521))
              (CONNECT_DATA = (SERVICE_NAME = pdborcl))
          )
      

      と記述
      保存後$source ~/.bashrcで設定を反映させる。
      ターミナルからsqlplusが起動したら成功

  • 4-2. リモートからのアクセスを行う

    • とりあえずsqlplus user/pass@pdborcl してみてDBに入れたら以下のlistener.oraの書き換えは不要です
    • Oracleが動作しているサーバーのlistener.oraファイルのHOSTをサーバーのホスト名に書き換え、SID_LIST_LISTENER

      (SID_DESC =
          (GLOBAL_DBNAME = ORCL)
          (ORACLE_HOME = C:¥app¥[Windowsユーザー名]¥product¥12.1.0¥dbhome_1)
          (SID_NAME = ORCL)
      )
      

      を追記し、サービスからリスナーのサービスを再起動する

    • また、1521番のポートを解放、C:¥Windows¥System32¥drivers¥etc下のhostsファイルにホスト名とローカルIPアドレスを記述。はしておいてください

    • 設定が終了したらMacでsplplus user/pass@pdborclを用いてログイン、任意のデータベース操作を行いリモートからログインできていることを確認する

29 Oct ちょこっと追記

追記1

ストアドパッケージがimportコマンドだときっちりインポートされず、
一部はパッケージボディがINVALIDステータスを示していたり、
他にはそもそもパッケージヘッダのみ入っていてパッケージボディがないとかいうことが起きました。
その場合は、INVALIDなパッケージは再コンパイルをしてみてください。
パッケージヘッダがあるのにボディがない場合は、パッケージのソースhoge.sqlをsqlplusにコピペしてみてください。
なんかいい感じに入ります。
パッケージまたはテーブルなどに依存関係があるとインポート順序によってこういう不具合が起きるみたいです。
ステータスが改善されたらexecuteとかで実行して確認してみてください。

追記2

サーバー側のlistener.oraのHOSTはPCのホスト名にしておくとなんか繋がります。
IPアドレスだと繋がらない。localhostとかにするとそもそも外から繋がらないです

* Oracleって新規導入よりもリプレースやアップデートの案件が多いかと思います。
そしておそらく個人で好き好んで触ったり利用する人もあまりいないのかなとも。

  • とりあえずメモ書きmdからuser/passとか漏らしたらいけないやつを修正して投下。いろいろこまごま知見を得たりしてて修正が必要な部分もあるのでその辺はおいおい追記したり修正したりします。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19