「[[マイクロソフト系技術情報 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]]