MS_Oracle11gXEODPNET - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki

Oracle11gXE + ODP.NET Managed Driver

抂芁

詳现

Oracle XEをダりンロヌドしおむンストヌル

https://www.oracle.com/database/technologies/xe-downloads.html

※ SYS, SYSTEM のパスワヌドは「system」にしおおく。
 seigi@123 だず @ の問題で SQL*Plus からログむンできなくなる。

補足@ が問題になる理由: SQL*Plus の
sqlplus user/password@接続識別子 ずいう蚘法では、
パスワヌド䞭の @ が接続識別子の区切りず解釈されおしたう。
本番環境でこの制玄に匕きずられないよう、
実運甚では sqlplus user@tns ず入力しおから
パスワヌドは察話的に入力するコマンド ラむンに残さないのが定石である。

クラむアント・ツヌルをダりンロヌドしおむンストヌル

SQL Developer

  • SQL Developer をダりンロヌドしおむンストヌルする。

  • システム芁件を確認するず、JDK 1.8 以䞊、
    Windows 10 では、JDK 8u51 or higher が必芁になる。

  • 必芁に応じお、以䞋から、JDK nunn をダりンロヌドしおむンストヌルする。

    • 以䞋から、ダりンロヌドしお利甚可胜OTN ラむセンスで利甚可胜

    • OTN ラむセンスの JDK かAdoptOpenJDK かだが、以䞋を芋るず、
      SQL Developer は、Oracle Java のみサポヌトず蚀う事らしい。

    • 「Windows 64-bit with JDK 8 included」をダりンロヌドすれば
      別途 JDK をダりンロヌドむンストヌルする必芁は無いずのこず。

    • 参考Java 有償化正確には Oracle Java の有償化
      Java有償化に぀いお調べおみた。

補足最新化: AdoptOpenJDK は珟圚
**Eclipse TemurinAdoptium**に改称されおいる。
たた、Oracle JDK のラむセンスは
**NFTC2021 幎→ 埓業員数ベヌスのサブスクリプション2023 幎**ず
倉遷しおいるため、利甚前に条件の確認が必芁である。

A5:SQL Mk-2

A5:SQL Mk-2蚀語等に䟝存しない汎甚開発支揎ツヌルの該圓節を参照

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

Oracleを起動しおアプリケヌションから䜿うたで。

Oracleを起動する。

「Start Menu」に「Start Database」が䜜成されおいるのでコレを抌䞋する。

SQL Developerを起動しお接続する。

接続を远加する。

  • 接続名任意

  • ナヌザヌ名system

  • パスワヌドむンストヌル時に入力したパスワヌド

  • Oracle既定倀のたたでむむ

    • 接続タむプ基本
    • ロヌルデフォルト
    • ホスト名localhost
    • ポヌト1521
    • SIDxe
  • 参考

補足SID ずサヌビス名: 12c 以降のマルチテナント構成では、
SID ではなくサヌビス名XEPDB1 などで接続する。
接続タむプ「基本」の画面で
「SID」ではなく「サヌビス名」のラゞオ ボタンを遞ぶ必芁がある。
埌述の ORA-65049 ず同じく、
12c 以降で手順が倉わるポむントである。

SQLを発行するDDLを発行しおテヌブルを䜜成する。

※ 必芁であれば、先に、「SCOTT/tiger スキヌマを䜜成する。」を実斜しおおく。

  • メニュヌの「SQL ワヌクシヌト」を抌䞋しお、䜜成した接続名を遞択する。
    若しくは、䞊蚘で開いた接続名で指定した名称タブのメニュヌから
    「非共有 SQL ワヌクシヌト」を遞択。

  • 開いた「SQL ワヌクシヌト」タブに SQL を貌り付けお SQL を発行する
    DDL を発行しおテヌブルを䜜成する。

  • 䜜成したテヌブルに察しお SQL を発行しおデヌタが参照できるかどうか確認する。

䜜成したテヌブルに察しおSQLを発行しおデヌタを参照

移行メモ誀字: 元ペヌゞの「出指定した名称」は「で指定した名称」の誀蚘。

Visual StudioからODP.NET Managed Driverを䜿甚しお接続・実行する。

  • 新芏䜜成 → プロゞェクト → コン゜ヌル アプリケヌションを䜜成する。

  • 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();
        }
    }
}

補足最新化NuGet パッケヌゞの遞択: 察象ランタむムによっお
導入するパッケヌゞが異なる。

ランタむム NuGet パッケヌゞ
.NET Framework Oracle.ManagedDataAccess
.NETCore 3.1 / 6 以降 Oracle.ManagedDataAccess.Core

接続文字列の Data Source は、䞊蚘の EZ Connect 蚘法
ホスト/サヌビス名のほか、tnsnames.ora のネット サヌビス名や
接続蚘述子そのものも指定できる
ADO.NETデヌタプロバむダの接続文字列。

たた、system は管理者アカりントであり、
アプリケヌションからの接続には䜿わないのが原則である
怜蚌目的であるこずを螏たえお読むこず。

SCOTT/tigerスキヌマを䜜成する。

system スキヌマではクリヌンナップなどが面倒なので、scott/tiger スキヌマを䜜成する。

プラガブル・デヌタベヌスの䜜成(12c以降)

12c 以降では、プラガブル・デヌタベヌスを䜿甚する必芁がある
埌述の ORA-65049 を参照。

スキヌマ䜜成甚のDDLを取埗

  • 「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を実行

  • スキヌマ䜜成甚の 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 で utlsampl.sql を実行できなかったので sqlplus を䜿甚。

スキヌマに接続しテヌブルを䜜成する。

  • 「SQL Developer を起動しお接続する。」に戻っお手順を繰り返す。

スキヌマをクリアリセットしおテヌブルを再䜜成する。

  • CASCADE 付きの DROP USER を行うこずで、スキヌマをクリアリセットできる。

  • 前述の 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 を発行しおテヌブルを䜜成する。」に戻っお手順を繰り返す。

ORA-NNNNN

ORA-28001: the password has expired.

  • 11g からデフォルトで、パスワヌドが 180 日期限切れになるらしい。
  • 開発・テスト甚途であれば、無期限に指定しおおいた方がむむかも。
alter profile default limit password_life_time unlimited;

補足: これは開発・テスト環境限定の察凊である。
本番環境でパスワヌドの有効期限を無期限にするのはセキュリティ䞊望たしくない。
アプリケヌション甚アカりントの期限切れによる停止を避けたい堎合は、
専甚のプロファむルを䜜っお個別に蚭定するか、
そもそもパスワヌドを持たない認蚌方匏
Kerberos、蚌明曞、クラりドのマネヌゞド IDを怜蚎する。

ORA-01109: database not open

ORA-65049: creation of local user or role is not allowed in CDB$ROOT.

  • 12c 以降ではプラガブル・デヌタベヌスを䜿甚する必芁がある。

  • 既定で、XEPDB1 なるプラガブル・デヌタベヌスがあるのでコレを利甚可胜。

  • ネット䞊に様々な情報があるが、正盎、よヌ解らんので。
    「Database Configuration Assistant」を䜿甚しお管理䜜成・削陀するのが楜。

補足マルチテナント構成: 12c 以降の Oracle は
**CDBコンテナ DBず PDBプラガブル DB**の 2 局構造になった。

圹割
CDB$ROOT むンスタンス共通のメタデヌタを保持。業務ナヌザは䜜らない
PDBXEPDB1 等 実際のアプリケヌション甚デヌタベヌス

CDB$ROOT に接続したたた CREATE USER SCOTT を実行するず
ORA-65049 になる。
これを避けるには、本文にあるずおり
ALTER SESSION SET CONTAINER=XEPDB1; で PDB に切り替えるか、
最初からサヌビス名で PDB に盎接接続する。

なお、CDB$ROOT に共通ナヌザを䜜る堎合は
C## プレフィックスが必芁であるCREATE USER C##ADMIN ...。

トラブルシュヌティング

vendor code (17002) 発生、TNSListenerが起動しおいない。

ホスト名/IPアドレス倉曎

  • Oracle は、ホスト名/IP アドレスを倉曎するず起動しなくなる。
  • 開発環境なので、Oracle のアンむンストヌル・むンストヌルを行った。

補足: これは listener.ora / tnsnames.ora に
むンストヌル時のホスト名が埋め蟌たれおいるこずによる。
再むンストヌルせずずも、
%ORACLE_HOME%\network\admin\ 配䞋の 2 ファむルの HOST= を
新しいホスト名たたは localhostに曞き換えお
リスナヌを再起動すれば埩旧できるこずが倚い。

「ORACLE_HOME」環境倉数

  • 環境倉数に ORACLE_HOME を远加するず、この珟象が発生するらしい。
    䞁床、Apache JMeterの調査ず動䜜確認で
    ORACLE_HOME 環境倉数を远加しおいた。

  • 必芁に応じお、ORACLE_HOME 環境倉数を削陀する。

補足: Windows 版の Oracle は
レゞストリHKLM\SOFTWARE\ORACLE\KEY_*から ORACLE_HOME を解決するため、
環境倉数偎に別の倀があるず䞍敎合を起こす。
耇数の Oracle Home が同居する環境で起きやすい問題である。

参考

ODP.NET Managed Driver

で、tnsnames.ora を参照する方法

が、サポヌトするOracleバヌゞョン

Oracle を利甚予定ですが、Open棟梁で察応しおいないバヌゞョン・゚ディションはある - Google グルヌプ
https://groups.google.com/forum/#!topic/opentouryoproject/iDxTplIdWVs

Express Editionのその埌

12c で廃止ず蚀われおいたらしいが、18c で埩掻した暡様。

12c

  • Oracle XEExpress Editionは 12c で廃止 | Oracle 初心者でもスッキリわかる
    https://sql-oracle.com/?p=1738

18c

補足最新化珟圚の XE: Express Edition はその埌も継続しおおり、
21c XE が提䟛されおいる。制限は、

  • CPU: 2 コアたで
  • メモリ: 2GB たで
  • ナヌザ デヌタ: 12GB たで

ずいったもの。
珟圚は、コンテナ むメヌゞ
container-registry.oracle.com/database/expressで
起動するのが最も手軜である。


Tags: 移行, デヌタアクセス, ADO.NET

⚠ **GitHub.com Fallback** ⚠