6 Oracle Net Services接続のクイック・スタート
クライアント・アプリケーションとデータベースのTCP/IPネットワークによる接続のように、単純でありながら一般的なネットワーク構成について、初心者でも設定とテストができるように説明します。
- 接続確立の前提条件
- ネットワークの可用性の確認
- Oracle Net ListenerとOracle Databaseサーバーの起動
- Oracle Connection Managerの起動
- データベースに接続するための簡易接続の使用
- connstrユーティリティを使用した接続文字列の表示
Oracle Database接続文字列コマンドライン・ユーティリティ(connstr
)を実行して、すべての使用可能なネットワーク・サービス名のOracle Database接続文字列を表示できます。 - データベースへの接続
Oracle Databaseに接続するには、いくつかの方法があります。
親トピック: Oracle Net Servicesの構成と管理
6.1 接続確立の前提条件
この章のタスクでは、データベース・サーバーとクライアント・コンピュータとのTCP/IP接続について示します。データベース・サーバーとクライアント・コンピュータは次の条件を満たす必要があります。
-
データベース・サーバー
-
クライアントにアクセスできるネットワークでサーバーが実行中であること
-
Oracleデータベースがインストールされていること
-
リスナーが構成されていること
-
TCP/IPプロトコル・サポートがインストールされていること
-
-
クライアント・コンピュータ
-
データベース・サーバーにアクセスできるネットワークでクライアント・コンピュータが実行中であること
-
Oracleクライアントがインストールされていること
-
TCP/IPプロトコル・サポートがインストールされていること
-
TCP/IPネットワークでは、各コンピュータは一意のIPアドレスを持ちます。ドメイン・ネーム・システム(DNS)などの名前解決サービスを使用すると、コンピュータのIPアドレスをそのホスト名にマップできます。名前解決サービスを使用しない場合、マッピングは通常hosts
と呼ばれるファイルに格納されるため、集約化して保守されます。このファイルは、Linuxでは/etc
ディレクトリに、Microsoft Windowsでは\windows\system32\drivers\etc
ディレクトリにあります。たとえば、sales-server
という名前のデータベース・サーバーのコンピュータのエントリは、次のようになります。
#IP address of server host name alias 192.0.2.203 sales-server sales.us.example.com
6.2 ネットワークの可用性の確認
Oracle Netをクライアント・コンピュータとデータベース・サーバーとの接続に使用する前に、クライアント・コンピュータがデータベース・サーバーのコンピュータと正常に通信できるかどうかを確認します。ネットワークの接続性を評価しておくと、ネットワークに起因するエラーを排除できます。
次の手順では、ネットワーク接続の確認方法について説明します。
-
次のように、データベース・サーバーのコンピュータが、ループバック・テストによって自分自身と通信できることを確認します。
-
ハードウェア接続を確認するには、コマンドラインで次のコマンドを入力します。
ping
ip_address
前述のコマンドで、
ip_address
はデータベース・サーバー・コンピュータのIPアドレスです。たとえば、次のように入力します。ping 192.0.2.203
-
DNSまたはホスト名が正しく構成されていることを確認するには、コマンドラインで次のコマンドを入力します。
ping
host_name
前述のコマンドで、
host_name
はサーバーのホスト名です。 -
サーバーのTCP/IP設定をテストするには、次のコマンドを入力します。
ping 127.0.0.1 ping6 ::1
IPアドレス127.0.0.1は、ループバック・テスト用の標準のIPv4アドレスです。IPアドレス::1 (0: 0: 0: 0: 0: 0: 0: 1)は、ループバック・テスト用の標準のIPv6アドレスです。
-
-
クライアント・コンピュータがデータベース・サーバーのコンピュータと正常に通信できることを確認します。
検証方法は、ネットワーク・プロトコルによって様々です。TCP/IPでは、PING、FTP、TELNETユーティリティを使用できます。
クライアント・コンピュータがサーバーに接続できない場合、ネットワークのケーブル接続やネットワーク・インタフェース・カードが正しく接続されているかを確認します。これらの問題を解消するには、ネットワーク管理者に連絡してください。
6.3 Oracle Net ListenerとOracle Databaseサーバーの起動
Oracle Net ListenerとOracle Databaseサーバーは、データベース・サーバーが接続を受け取る順番で実行している必要があります。次の手順では、Oracle Netリスナーを起動する方法について説明します。
-
リスナー制御ユーティリティを使用してリスナーを起動します。コマンド行から、次のように入力します。
lsnrctl LSNRCTL> START [
listener_name
]前述のコマンドで、listener_nameは、
listener.ora
ファイルに定義されているリスナーの名前です。デフォルトの名前LISTENER
を使用している場合、リスナーを指定する必要はありません。リスナーが正常に起動したことを示すステータス・メッセージが表示されます。
-
次のようにデータベースを起動します。
-
次のコマンドを使用して、データベースに接続せずにSQL*Plusを起動します。
SQLPLUS /nolog
-
次のコマンドを使用して、SYSDBAとしてデータベースに接続します。
SQL> CONNECT
username
as sysdbaパスワードの入力を求めるメッセージが表示されます。
ノート:
単純化するため、この例では、デプロイされたシステムで通常使用されるパスワード管理技術を実行していません。本番環境では、Oracle Databaseのパスワード管理ガイドラインに従い、サンプル・アカウントを無効にしてください。パスワード管理ガイドラインおよびその他のセキュリティ上の推奨事項については、『Oracle Databaseセキュリティ・ガイド』を参照してください。
-
次のコマンドを使用して、データベースを起動します。
SQL> STARTUP
database_name
前述のコマンドで、database_nameはデータベースの名前です。
関連項目:
データベースの起動の詳細は、『Oracle Database管理者ガイド』を参照してください。
-
-
リスナー制御ユーティリティと次のコマンドを使用して、リスナーへのデータベース・サービス登録が完了していることを確認します。
LSNRCTL> SERVICES [
listener_name
]SERVICES
コマンドは、データベースがサポートするサービスと、1つ以上の使用可能なサービス・ハンドラの一覧を示します。データベース・サービス登録が示されていない場合は、次のSQLコマンドを入力します。SQL> ALTER SYSTEM REGISTER;
関連項目:
SERVICES
コマンドの詳細は、「リスナーのサービスの監視」を参照してください
6.4 Oracle Connection Managerの起動
Oracle Connection Managerがインストールされている場合は、次の手順に従ってOracle Connection Managerを起動します。
-
次のコマンドを使用して、Oracle Connection Manager Controlユーティリティ(CMCTL)を起動します。
cmctl CMCTL> ADMINISTER [instance_name]
前述のコマンドで、instance_nameは管理対象のOracle Connection Managerの名前です。
cman.ora
ファイルを表示して、その名前を確認できます。デフォルトでは、このファイルはOracle Connection ManagerのコンピュータのORACLE_BASE_HOME/network/admin
ディレクトリにあります。Oracle Connection Managerは、インスタンス名を示すステータス・メッセージを表示し、まだインスタンスが起動していないことを知らせます。
ノート:
引数にインスタンス名を設定しない場合は、Oracle Connection Managerに完全修飾ホスト名を設定します。これはデフォルトです。
ADMINISTER
コマンドを発行すると、CMCTLにより次のようにインスタンス名が表示されます。CMAN_fully_qualified_host_name
-
次のコマンドを使用して、管理対象として選択したOracle Connection Managerを起動します。
cmctl> STARTUP
インスタンスが起動したことがOracle Connection Managerで確認され、インスタンスのステータスが表示されます。
-
次のコマンドを使用して、Oracle Connection Manager Controlユーティリティを終了します。
cmctl> EXIT
Microsoft Windowsでは、次のような方法で、「コントロール パネル」を介してOracle Connection Managerを起動できます。
6.5 データベースに接続するための簡易接続の使用
「ネットワークの可用性の確認」に関する項で説明しているように、ネットワーク接続が確認された場合、簡易接続ネーミング・メソッドを使用してデータベースに接続します。このネーミング・メソッドを利用すると、データベースへのTCP/IP接続を簡単に行えるようになります。これは、クライアントがデータベースのホスト名の他にオプションのポートとサービス名を使用してデータベースに接続できるようにすることで、ホスト・ネーミング・メソッドの機能を拡張します。簡易接続を使用して接続する構文は、次のとおりです。
CONNECTusername
/password
@host
[:port
][/service_name
][:server_type
][/instance_name
]
ノート:
Oracle Call Interfaceのマニュアルでは、serverはconnect_type
と呼ばれています。
Oracle Databaseサーバーのインストールを「標準」モードで実行した場合、Oracleインスタンスで使用されるデフォルトのサービス名はデータベース名であり、次の簡易接続構文を使用してそのインスタンスに接続できます。
SQLPLUS /nolog SQL> CONNECTusername
@"host
/db_name"
SQL> Enter password:password
関連項目:
このメソッドの詳細は、「簡易接続ネーミング・メソッドの理解」を参照してください
6.6 connstrユーティリティを使用した接続文字列の表示
Oracle Database接続文字列コマンドライン・ユーティリティ(connstr
)を実行すると、すべての使用可能なネットワーク・サービス名のOracle Database接続文字列を表示できます。
tnsnames.ora
ファイルに書き込むこともできます。
connstr
スクリプトは、デフォルトのインストールに含まれています。このユーティリティは、使用可能なシステム構成に基づいて、単一のOracleソフトウェア・インストールの接続文字列を表示します。
ノート:
このユーティリティは、単一インスタンスまたはOracle Database Express Edition (Oracle Database XE)のインストールに適しています。それよりも複雑な構成のOracle Real Application Clusters (Oracle RAC)やOracle Data Guardなどには適していません。これはリスナー制御ユーティリティ(lsnrctl
)に依存しているため、Oracle Databaseとリスナーをホストしているコンピュータでこのユーティリティを実行する必要があります。ただし、表示される接続文字列は、サポートされているすべてのクライアント・システムで使用できます。
例6-1 簡易接続形式でのconnstrユーティリティの出力例
Using Listener: LISTENER with Oracle Home: /app/oracle/product/23c/dbhome_1 Service Name: sales.us.example.com Connection String: sales-server:1521/sales.us.example.com Connection strings can be used to connect to the specified service name. For SQL*Plus you can use: SQL> connect username@sales-server:1522/sales.us.example.com For Python you can use: connection = cx_Oracle.connect(user="username", password="password", dsn="sales-server:1521/sales.us.example.com") For JDBC Thin you can use: OracleDataSource ods = new OracleDataSource(); ods.setURL("jdbc:oracle:thin:@sales-server:1521/sales.us.example.com"); ods.setUser("username"); ods.setPassword("password"); Connection conn = ods.getConnection(); Write connect strings to tnsnames.ora (Y/N)? (Default: N): y
関連項目
6.7 データベースへの接続
Oracleデータベースに接続するには、いくつかの方法があります。
表6-1 データベース接続方法と構文
接続のタイプ | 接続構文 | 説明 |
---|---|---|
コマンドラインから |
コマンドラインからアプリケーションをデータベース・サーバーに接続させるための一般的な書式を次に示します。
暗号化されたパスワードの入力を求めるメッセージが表示されます。 たとえば: SQLPLUS system@sales
Enter password: |
ほとんどのOracleのツール製品は、オペレーティング・システムのコマンドラインを使用して接続できますが、他の方法でも接続できます。 |
ログイン画面から |
|
一部のツールには、ログインの代替形式としてログイン画面が用意されています。ユーザーがデータベース・サーバーにログインするには、ツールのログイン画面のユーザー名フィールドにユーザー名と接続識別子の両方を指定し、パスワード・フィールドにパスワードを入力します。 |
3GLアプリケーションから |
exec sql connect : 前述の接続要求で、:usernameおよび:passwordは3GLの変数です。これらの変数は、静的にまたはユーザーからの入力によってプログラム内で設定できます。データベース・サーバーに接続する場合、:username変数の値の書式は次のとおりです。
:password変数には、接続先データベース・アカウントのパスワードが入ります。 |
OCIやプリコンパイラなど、3GLで作成されたアプリケーションは、クライアントからの直接データベース・アクセス用に中間層およびデータベース・アプリケーション開発者によって使用されます。 |
SQL*Plus内から |
SQLPLUS /nolog
SQL> CONNECT たとえば: SQLPLUS /nolog
SQL> CONNECT scott@serverx
Enter password: 前述のコマンドで、usernameとpasswordは、データベース・ユーザーとパスワードで、net_service_nameはネットワーク・サービス名です。 |
一部のOracleツールには、ツールを終了せずに、異なるユーザー名を指定してデータベースに接続できるコマンドがあります。 他のOracleのツール製品では、この説明とは異なる独自の機能やインタフェースに固有の方法が使用されます。たとえば、Oracle CDE Toolsでは、ログイン・ボタンと、ユーザー名、パスワードおよびリモート・データベースIDのフィールドが使用されます。 |
|
|
このパラメータは、複数のKerberosプリンシパルがデータベース・クライアント経由でログインする必要がある場合に、Kerberosプリンシパル( Kerberos認証を使用してデータベースに接続する場合は、
Oracle Databaseセキュリティ・ガイドを参照してください。 |
|
|
このパラメータは、データベース・クライアントのKerberosプリンシパルを指定するために使用されます。 これはオプションのパラメータです。ただし、このパラメータを使用する場合は、 |
IAMデータベース・パスワード検証認証の使用 |
SQLPLUS /nolog SQL> CONNECT username@net_service_name Enter password: password この接続リクエストでは、usernameはIAMユーザー名、net_service_nameはネットワーク・サービス名、passwordはIAMデータベース・パスワードです。 IAMユーザーは、パスワードベースのプロキシ認証を使用して、データベース・プロキシ・ユーザー・アカウントを介して接続できます。 SQLPLUS [user1]/password123\!@cdb1_pdb2 SQL> SHOW USER; select sys_context('USERENV','AUTHENTICATION_METHOD') from dual; select sys_context('USERENV','PROXY_USER') from dual; select sys_context('USERENV','CURRENT_USER') from dual; |
ユーザー認証および認可用にOracle Cloud Infrastructure (OCI) Identity and Access Management (IAM)を構成した場合、IAMユーザーがIAMユーザー名およびIAMデータベース・パスワードを使用してOCI Database as a Service (DBaaS)に接続できます。この接続方法では、IAMデータベース・パスワード検証(パスワードの暗号化されたハッシュ)がユーザーを認証するためにIAMから取得されます。 このIAMデータベース・パスワードは、OCIコンソール・パスワードとは異なります。IAMユーザーが、OCIコンソールからこのパスワードを設定できます(OCI IAMパスワードの作成を参照)。 必要な認可が付与された後、SQL*Plusなどのオンプレミス・クライアント・アプリケーションを使用して、サポートされている任意のデータベース・クライアントからログインできます。 IAMデータベース検証でのIAMユーザー名およびIAMデータベース・パスワードの使用はデフォルトの構成であり、クライアントに追加のパラメータを設定する必要はありません。ただし、クライアント側の プロキシ認証を使用するようにクライアント接続(通常は中間層環境)を構成できます。この場合、パスワードベースのプロキシ認証を使用することで、プロキシ・データベースのユーザー・アカウントを介して接続するために必要な権限を持つ既存のIAMユーザーを変更できます。プロキシ・ユーザー・セッションに、IAMユーザーに付与されたすべての権限があります。 Oracle Databaseセキュリティ・ガイドを参照してください。 |
IAMトークンベースの認証(ベアラー・トークン)の使用 |
SQLPLUS /nolog
SQL> CONNECT /@connect_identifier
オプションの
|
ユーザー認証および認可用にIAMを構成した場合、IAMユーザーがIAMデータベース・トークン( IAMユーザー名およびIAMデータベース・パスワードを使用して、 IAMユーザーが、OCIコンソールからIAMデータベース・パスワードを設定できます(OCI IAMパスワードの作成を参照)。 データベース・クライアントは、OCI IAMエンドポイントから直接トークンを取得します。データベース・クライアントが追加メタデータとともにIAMエンドポイントを検出できるように、追加パラメータを設定する必要があります。追加のパラメータは IAMユーザーが これらのパラメータは、 Oracle Databaseセキュリティ・ガイドを参照してください。 |
IAMトークンベースの認証(PoPトークン)の使用 |
SQLPLUS /nolog
SQL> CONNECT /@connect_identifier
オプションの
IAMユーザーは、トークンベースのプロキシ認証を使用して、データベース・プロキシ・ユーザー・アカウントを介して接続できます。
|
ユーザー認証および認可用にIAMを構成した場合、IAMユーザーはIAMデータベース・トークン( この接続方法では、APIキー、セキュリティ・トークン、リソース・プリンシパル、サービス・プリンシパル、インスタンス・プリンシパルまたは委任トークン(委任トークンはCloud Shellでのみ使用可能)などのIAMユーザー資格証明のいずれかを使用して、IAMから クライアント・アプリケーションは、次のいずれかの方法で接続リクエストを送信できます。
これらのパラメータは、 プロキシ認証を使用するようにクライアント接続を構成できます。この場合、トークンベースのプロキシ認証を使用することで、プロキシ・データベースのユーザー・アカウントを介して接続するために必要な権限を持つIAMユーザーを変更できます。プロキシ・ユーザー・セッションに、IAMユーザーに付与されたすべての権限があります。 Oracle Databaseセキュリティ・ガイドを参照してください。 |
Azure ADトークンベース認証の使用 |
SQLPLUS /nolog
SQL> CONNECT /@connect_identifier
トークン・ファイルの名前が
トークン・ファイル名が
|
ユーザー認証および認可用にMicrosoft Azure Active Directory (Azure AD)を構成した場合、Azure ADユーザーはAzure AD OAuth2アクセス・トークンを使用してOracle Databaseに接続できます。このアクセス・トークンは、有効期限と範囲を持つベアラー・トークンであり、Azure AD拡張機能を備えたOAuth2.0標準に準拠しています。
トークンは、Linux、Microsoft PowerShellまたはその他の環境で実行されるツールおよびスクリプトからリクエストできます。これらのトークンは、Microsoft SDKを使用してプログラム的にリクエストすることもできます。 クライアント・アプリケーションは、次のいずれかの方法で接続リクエストを送信できます。
Oracle Databaseセキュリティ・ガイドを参照してください。 |
ノート:
IAMトークンベースの認証を構成した場合は、OCI_INTERACTIVE
、OCI_API_KEY
、OCI_INSTANCE_PRINCIPAL
、OCI_DELEGATION_TOKEN
、OCI_RESOURCE_PRINCIPAL
などのOCI認証フローを使用して、IAMシングルサインオン(SSO)資格証明でデータベース・クライアントがdb-token
を直接取得できます。
同様に、Azure ADトークンベースの認証を構成した場合は、AZURE_INTERACTIVE
、AZURE_SERVICE_PRINCIPAL
、AZURE_MANAGED_IDENTITY
、AZURE_DEVICE_CODE
などのAzure認証フローを使用して、Azure SSO資格証明でデータベース・クライアントがアクセス・トークンを直接取得できます。
この機能は、JDBCシン・クライアント、ODP.NET CoreクラスまたはODP.NET管理対象ドライバ・クラスを使用する環境で使用できます。JDBCシン・クライアントに対してこの機能を構成するには、Oracle Database JDBC開発者ガイドを参照し、ODP.NETについては、Oracle Data Provider for .NET開発者ガイドを参照してください。