「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>ADO.NETデータプロバイダ]]
--Oracle11gXE + ODP.NET Managed Driver
--[[PostgreSQL + NpgSql]]

* 目次 [#f5fbbcd9]
#contents

*概要 [#l01b64fb]
-久々にOracleをインストールしたので手順をメモしておく。
-[[古い、ODP.NETからは、なるべく早く移行したほうが良い>ADO.NETデータプロバイダ#j939b851]]。

*詳細 [#d0ba7c92]

**Oracle XEをダウンロードしてインストール [#ub079273]
https://www.oracle.com/database/technologies/xe-downloads.html

%% http://www.oracle.com/technetwork/jp/database/database-technologies/express-edition/downloads/index.html %%

※ SYS, SYSTEMのパスワードは「system」にしておく。~
 (seigi@123だと@の問題でSQL Plusからログインできなくなる)。

**クライアント・ツールをダウンロードしてインストール [#b8c6de26]

***SQL Developer [#e17f4fd9]
-SQL Developerダウンロードしてインストールする。

--Oracle SQL Developer ダウンロード~
http://www.oracle.com/technetwork/jp/developer-tools/sql-developer/downloads/index.html

-システム要件を確認すると、JDK 1.8 以上、~
Windows 10では、JDK 8u51 or higher が必要になる。

--Certification~
http://www.oracle.com/technetwork/developer-tools/sql-developer/certification-096745.html

-必要に応じて、以下から、JDK nunnをダウンロードしてインストールする。

--以下から、ダウンロードして利用可能(OTNライセンスで利用可能)

---Java SE - Downloads | Oracle Technology Network | Oracle~
https://www.oracle.com/java/technologies/javase-downloads.html

--OTNライセンスのJDKか?AdoptOpenJDKか?だが、以下を見ると、~
SQL Developerは、Oracle Java のみサポートと言う事らしい。~
---AdoptOpenJDK/openjdk-support > Issue #91~
Adopt OpenJDK latest not working with Oracle SQL Developer~
https://github.com/AdoptOpenJDK/openjdk-support/issues/91

--「Windows 64-bit with JDK 8 included」をダウンロードすれば~
別途JDKをダウンロード&インストールする必要は無いとのこと。~
https://www.oracle.com/technetwork/jp/developer-tools/sql-developer/downloads/index.html

--[[参考:Java有償化(正確にはOracle Javaの有償化)>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Java%E6%9C%89%E5%84%9F%E5%8C%96%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E8%AA%BF%E3%81%B9%E3%81%A6%E3%81%BF%E3%81%9F%E3%80%82]]~

***[[A5:SQL Mk-2>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?%E8%A8%80%E8%AA%9E%E7%AD%89%E3%81%AB%E4%BE%9D%E5%AD%98%E3%81%97%E3%81%AA%E3%81%84%E6%B1%8E%E7%94%A8%E9%96%8B%E7%99%BA%E6%94%AF%E6%8F%B4%E3%83%84%E3%83%BC%E3%83%AB#x5ab8cd7]] [#ea51e909]

-参考
--A5:SQL Mk-2でかんたんにOracleへ接続する手順・方法 | Oracle初心者でもスッキリわかる~
https://sql-oracle.com/?p=1744#toc3

**Oracleを起動してアプリケーションから使うまで。 [#k1805ec5]

***Oracleを起動する。 [#pe62bf8f]
「Start Menu」に「Start Database」が作成されているのでコレを押下する。

***SQL Developerを起動して接続する。 [#w6049665]
接続を追加する。

-接続名:任意
-ユーザー名:system
-パスワード:インストール時に入力したパスワード

-Oracle(既定値のままでイイ)
--接続タイプ:基本
--ロール:デフォルト
--ホスト名:localhost
--ポート:1521
--SID:xe

-参考
--Oracle Databaseへの接続および検索 > SQL DeveloperからOracle Databaseへの接続~
http://docs.oracle.com/cd/E16338_01/appdev.112/b56265/tdddg_connecting.htm#CEGFCEGG

***SQLを発行する(DDLを発行してテーブルを作成する)。 [#r9ca6c77]
※ 必要であれば、先に、[[SCOTT/tigerスキーマを作成する。>#t85841b3]]を実施しておく。

-メニューの「SQLワークシート」押下して、作成した接続名を選択する。~
若しくは、上記で開いた接続名(出指定した名称)タブのメニューから「非共有SQLワークシート」を選択。

-開いた「SQLワークシート」タブにSQLを貼り付けてSQLを発行する(DDLを発行してテーブルを作成する)。
--OpenTouryo/TestTable.txt at develop · OpenTouryoProject/OpenTouryo~
https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/files/resource/Sql/oracle/TestTable.txt

-作成したテーブルに対してSQLを発行してデータが参照できるかどうか確認する。
#ref(1.png,left,nowrap,作成したテーブルに対してSQLを発行してデータを参照)

***Visual StudioからODP.NET Managed Driverを使用して接続・実行する。 [#y967a038]

-新規作成 → プロジェクト → コンソールアプリケーションを作成する。

-NuGetからODP.NET Managed Driverを検索してインストールする。

-以下のコードを記述してデバッグ実行するとレコード件数が返る。~
(接続文字列のアカウントは、systemとインストール時に入力したパスワードなど環境に合わせて変更すること。)

 using Oracle.ManagedDataAccess.Client;
 
 namespace ConsoleApplication1
 {
     class Program
     {
         static void Main(string[] args)
         {
             OracleConnection cn = new OracleConnection("User Id=system;Password=xxxx;Data Source=localhost/XE;");
             cn.Open();
             OracleCommand cmd = new OracleCommand("SELECT COUNT(*) FROM SHIPPERS", cn);
             Console.WriteLine(cmd.ExecuteScalar().ToString());
 
             Console.ReadKey();
         }
     }
 }

**SCOTT/tigerスキーマを作成する。 [#t85841b3]
systemスキーマではクリーンナップなどが面倒なので、scott/tigerスキーマを作成する。

-Oracle 11gの環境で、scott/tigerのサンプルスキーマを作成 | cyberarchitect~
http://replication.hatenablog.com/entry/2015/02/16/093000

***プラガブル・データベースの作成(12c以降) [#nfb6e5b1]
&color(red){12c以降};では、[[プラガブル・データベースを使用する必要がある。>#h4d647df]]

***スキーマ作成用のDDLを取得 [#p45b8b93]
-「C:\oraclexe」がインストール・ディレクトリとして、~
以下にSCOTT/tigerスキーマ作成用のDDLを発見できた。
 "C:\oraclexe\app\oracle\product\11.2.0\server\rdbms\admin\utlsampl.sql"

>(utlsmtp.sqlと間違いやすいと思うので注意する。)

-18cの場合は、以下にある。
 "C:\u01\app\product\18.0.0\dbhomeXE\rdbms\admin\utlsampl.sql"

***スキーマ作成用のDDLを実行 [#q13b33ad]
-スキーマ作成用のDDLをSQL Developerを使用して実行する。

-プラガブル・データベース+SQL Developer無しの場合は、~
sqlplus を使用して以下のように utlsampl.sql を実行する。
 >cd ...\rdbms\admin\utlsampl.sql
 >sqlplus system/system as sysdba
 SQL> show con_name
 SQL> alter session set container=XEPDB1;
 SQL> show con_name
 SQL> @utlsampl.sql

>※ [[A5:SQL Mk-2>#ea51e909]]でutlsampl.sqlを実行できなかったのでsqlplusを使用。

***スキーマに接続しテーブルを作成する。 [#s8aeadcb]
-[[SQL Developerを起動して接続する。>#w6049665]]に戻って手順を繰り返す。

***スキーマをクリア(リセット)してテーブルを再作成する。 [#e531a335]
-CASCADE付きの「DROP USER」を行うことで、スキーマをクリア(リセット)できる。

--スキーマ作成・削除 (oracle)|淡々たんのメモ~
https://ameblo.jp/tan3/entry-10013104664.html

-前述の"utlsampl.sql"内では、冒頭で、下記のCASCADE付きの「DROP USER」が呼ばれているので、~
再実行すれば、これをクリア(リセット)できる。開発・テストの際に便利。
 DROP USER SCOTT CASCADE;
 DROP USER ADAMS CASCADE;
 DROP USER JONES CASCADE;
 DROP USER CLARK CASCADE;
 DROP USER BLAKE CASCADE;

>注意:「SCOTT/tiger」への接続がある場合、「DROP USER」に失敗するので、~
Oracleを再起動して、systemユーザーから"utlsampl.sql"を再実行する。

-[[SQLを発行する(DDLを発行してテーブルを作成する)。>#r9ca6c77]]に戻って手順を繰り返す。

**ORA-NNNNN [#t82e1f67]

***ORA-28001: the password has expired. [#o091e2f0]
-11gからデフォルトで、パスワードが180日期限切れになるらしい。
-開発・テスト用途であれば、無期限に指定しておいた方がイイかも。
 alter profile default limit password_life_time unlimited;

-参考
--急にoracleに繋がらなくなった!?~ORA-28001:パスワードが期限切れです~ - Qiita~
https://qiita.com/maruyama42/items/cb3177f8701f1679669a

***ORA-01109: database not open [#u9441c47]
-oracle - How do I resolve this "ORA-01109: database not open" error? - Stack Overflow~
https://stackoverflow.com/questions/27280405/how-do-i-resolve-this-ora-01109-database-not-open-error

***ORA-65049: creation of local user or role is not allowed in CDB$ROOT. [#h4d647df]
-12c以降ではプラガブル・データベースを使用する必要がある。

-既定で、XEPDB1なるプラガブル・データベースがあるのでコレを利用可能。

-(ネット上に様々な情報があるが、正直、よー解らんので。)~
「Database Configuration Assistant」を使用して管理(作成・削除)するのが楽。

*トラブルシューティング [#pc76edb5]

**vendor code (17002) 発生、TNSListenerが起動していない。 [#nb4a83b8]

***ホスト名/IPアドレス変更 [#nedf2059]
-oracleは、ホスト名/IPアドレス変更すると起動しなくなる。
-開発環境なので、oracleのアンインストール・インストールを行った。

***「ORACLE_HOME」環境変数 [#e174f7b8]
-環境変数に「ORACLE_HOME」を追加すると、この現象が発生するらしい。~
(丁度、[[Apache Jmeter]]の調査と動作確認で「ORACLE_HOME」環境変数を追加していた。)

-必要に応じて、「ORACLE_HOME」環境変数を削除する。

*参考 [#ccfb44d7]
-意外と簡単!? Oracle Database 11g Release 2 データベース構築編~
http://www.oracle.com/technetwork/jp/articles/selfstudy-win-11-131931-ja.pdf

-SQL Developerの使い方~ダウンロード、インストール、DB接続、SQL実行~
Oracle オラクルエンジニア通信 - 技術資料、マニュアル、セミナー Blog~
https://blogs.oracle.com/oracle4engineer/sql-developerdbsql

**ODP.NET Managed Driver [#e9bc6e17]

***で、tnsnames.ora を参照する方法 [#gb23d8ca]
-Managed な ODP.NET で tnsnames.ora を参照する (Windows, Visual Studio 2015) - Qiita~
https://qiita.com/monta31538/items/b31382e98ae03f5d9c3c

***が、サポートするOracleバージョン [#wf21ab3c]
Oracleを利用予定ですが、Open棟梁で対応していないバージョン・エディションはある? - Google グループ~
https://groups.google.com/forum/?hl=ja#!topic/opentouryoproject/iDxTplIdWVs

**Express Editionのその後 [#t37c7096]
12cで廃止と言われていたらしいが、18cで復活した模様。

***12c [#oaf70475]
-Oracle XE(Express Edition)は12cで廃止! | Oracle初心者でもスッキリわかる~
https://sql-oracle.com/?p=1738

***18c [#e656f7ab]
-Oracle Database 18c Express Edition がそろそろ出るようです! | DBXAP~
https://dbxap.sixsquare.co.jp/oracle-database-18c-express-edition/

-Oracle Database 18c Express Editionの紹介 - Qiita~
https://qiita.com/nakaie/items/2e383d4916530dce6a4f

-[[OracleをDockerコンポーズ化する。>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Oracle%E3%82%92Docker%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%82%BA%E5%8C%96%E3%81%99%E3%82%8B%E3%80%82]]
-[[OracleをDockerコンポーズ化する。 - 開発基盤部会 Wiki>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Oracle%E3%82%92Docker%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%82%BA%E5%8C%96%E3%81%99%E3%82%8B%E3%80%82]]

----
Tags: [[:データアクセス]], [[:ADO.NET]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS