listener之一二_MySQL

Jun 01, 2016 pm 01:28 PM
listener クライアント データベース プログラム

bitsCN.com

listener之一二

 

一、注册

    注册就是将数据库作为一个服务注册到监听程序。客户端不需要知道数据库名和实例名,只需要

知道该数据库对外提供的服务名就可以申请连接到数据库。这个服务名可以与实例名一致,也可以不

一致,且可以注册多个服务。

    注册可以分为静态注册与动态注册,下面分别介绍静态注册和动态注册。

二、静态注册

    静态注册就是预先配置好listener.ora文件,配置信息如下:

#listener.oraSID_LIST_LISTENER =  (SID_LIST =    (SID_DESC =      (SID_NAME = PLSExtProc)      (ORACLE_HOME = /u01/app/oracle/product/10.2/db_1)      (PROGRAM = extproc)    )    (SID_DESC =      (SID_NAME = orcl)##数据库的实例名      (ORACLE_HOME = /u01/app/oracle/product/10.2/db_1)##监听程序所在路径      (GLOBAL_DBNAME = test01)##数据库对外提供的服务名    )  )LISTENER =  (DESCRIPTION_LIST =    (DESCRIPTION =      (ADDRESS = (PROTOCOL = TCP)(HOST = db01)(PORT = 1521))      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))    )  )
ログイン後にコピー

当用户通过客户端申请连接数据库时,首先通过监听程序读取listener.ora中的配置信息(无论数据库

是否启动,用户的连接请求都会通过监听程序的检查,因为静态监听是无法识别数据库的启动状态的

,只有用户试图连接数据库时,数据库才会返回相关信息。)

下面我们来看下数据库处于打开和关闭状态时,服务test01的实例状态:

1、打开状态

[oracle@db01 admin]$ lsnrctl statusLSNRCTL for Linux: Version 10.2.0.1.0 - Production on 16-OCT-2013 06:58:27Copyright (c) 1991, 2005, Oracle.  All rights reserved.Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=db01)(PORT=1521)))STATUS of the LISTENER------------------------Alias                     LISTENERVersion                   TNSLSNR for Linux: Version 10.2.0.1.0 - ProductionStart Date                16-OCT-2013 06:39:09Uptime                    0 days 0 hr. 19 min. 18 secTrace Level               offSecurity                  ON: Local OS AuthenticationSNMP                      OFFListener Parameter File   /u01/app/oracle/product/10.2/db_1/network/admin/listener.oraListener Log File         /u01/app/oracle/product/10.2/db_1/network/log/listener.logListening Endpoints Summary...  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=db01)(PORT=1521)))  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))Services Summary...Service "PLSExtProc" has 1 instance(s).  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...Service "orcl" has 1 instance(s).  Instance "orcl", status READY, has 1 handler(s) for this service...Service "orclXDB" has 1 instance(s).  Instance "orcl", status READY, has 1 handler(s) for this service...Service "orcl_XPT" has 1 instance(s).  Instance "orcl", status READY, has 1 handler(s) for this service...Service "test01" has 1 instance(s).  Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...   =>实例orcl的状态为unknownThe command completed successfully此时当用户通过客户端连接数据库时:SQL> conn system/hat@test01
ログイン後にコピー

已连接。

2、关闭状态:

[oracle@db01 admin]$ lsnrctl statusLSNRCTL for Linux: Version 10.2.0.1.0 - Production on 16-OCT-2013 06:54:44Copyright (c) 1991, 2005, Oracle.  All rights reserved.Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=db01)(PORT=1521)))STATUS of the LISTENER------------------------Alias                     LISTENERVersion                   TNSLSNR for Linux: Version 10.2.0.1.0 - ProductionStart Date                16-OCT-2013 06:39:09Uptime                    0 days 0 hr. 15 min. 35 secTrace Level               offSecurity                  ON: Local OS AuthenticationSNMP                      OFFListener Parameter File   /u01/app/oracle/product/10.2/db_1/network/admin/listener.oraListener Log File         /u01/app/oracle/product/10.2/db_1/network/log/listener.logListening Endpoints Summary...  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=db01)(PORT=1521)))  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))Services Summary...Service "PLSExtProc" has 1 instance(s).  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...Service "test01" has 1 instance(s).  Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...   =>实例orcl的状态为unknownThe command completed successfully
ログイン後にコピー

此时当用户通过客户端连接数据库时:

SQL> conn system/hat@test01

ERROR:

ORA-01034: ORACLE not available

ORA-27101: shared memory realm does not exist

Linux Error: 2: No such file or directory

由此可知,用户的连接请求通过了监听的检查,但数据库没有打开,于是就返回了ora-01034的错误。

通过上面的实验,验证了当监听静态注册时,服务的实例状态均为unknown,监听程序无法知道数据库

是否处于打开状态。

三、动态注册

动态注册就是不需预先配置listener.ora文件,而是instance在启动的时候PMON进程根据

init.ora中的instance_name、service_names两个参数将实例和服务动态的注册到listener中。

注册到监听器中的实例名从init.ora文件中的instance_name参数取得。如果该参数没有设定值,

那么它将取init.ora文件中的db_name值。

注册到监听器中的服务名从init.ora文件中的参数service_names(该参数可以设置多个值,且值

以逗号分隔)和db_domain取得。如果service_names参数没有设定值,数据库将取init.ora文件中的

db_name值。

采取动态注册时,listener.ora配置如下:

#listener.oraSID_LIST_LISTENER =  (SID_LIST =    (SID_DESC =      (SID_NAME = PLSExtProc)      (ORACLE_HOME = /u01/app/oracle/product/10.2/db_1)      (PROGRAM = extproc)    )  )LISTENER =  (DESCRIPTION_LIST =    (DESCRIPTION =      (ADDRESS = (PROTOCOL = TCP)(HOST = db01)(PORT = 1521))      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))    )  )
ログイン後にコピー

 

    动态注册默认只注册到默认的监听器上(名称是LISTENER、端口是1521、协议是TCP),如果需要向

非默认监听注册,则只需要配置local_listener参数。

四、如何区分静态注册与动态注册

方法一:通过lsnrctl status监测

静态注册的监听实例状态为unknown,动态注册的监听实例状态为ready

方式二:查看listener.ora文件

listener.ora文件中添加了如下信息的为静态注册,没有添加为动态注册

(SID_DESC =

  (SID_NAME = orcl)##数据库的实例名

  (ORACLE_HOME = /u01/app/oracle/product/10.2/db_1)##监听程序所在路径

  (GLOBAL_DBNAME = test01)##数据库对外提供的服务名

)

注:1、由于动态注册监听是通过pmon进程来动态添加的,因此一旦数据库关闭,那么动态注册的服务便立即从监听程序中消除。

2、如果想远程启动数据库,需要通过静态注册。

bitsCN.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

GoogleマップをiPhoneのデフォルト地図にする方法 GoogleマップをiPhoneのデフォルト地図にする方法 Apr 17, 2024 pm 07:34 PM

iPhone のデフォルトの地図は、Apple 独自の地理位置情報プロバイダーである Maps です。マップは改善されていますが、米国外ではうまく機能しません。 Googleマップと比べて何も提供するものはありません。この記事では、Google マップを iPhone のデフォルトの地図として使用するための実行可能な手順について説明します。 Google マップを iPhone のデフォルトの地図にする方法 Google マップを携帯電話のデフォルトの地図アプリとして設定するのは、思っているよりも簡単です。以下の手順に従ってください – 前提条件 – 携帯電話に Gmail がインストールされている必要があります。ステップ 1 – AppStore を開きます。ステップ 2 – 「Gmail」を検索します。ステップ 3 – Gmail アプリの横にある をクリックします

iPhoneに時計アプリがない:それを修正する方法 iPhoneに時計アプリがない:それを修正する方法 May 03, 2024 pm 09:19 PM

携帯電話に時計アプリがありませんか?日付と時刻は iPhone のステータス バーに引き続き表示されます。ただし、時計アプリがないと、世界時計、ストップウォッチ、目覚まし時計、その他多くの機能を使用できません。したがって、見つからない時計アプリを修正することは、やるべきことリストの一番上に置く必要があります。これらの解決策は、この問題の解決に役立ちます。解決策 1 – 時計アプリを配置する 誤って時計アプリをホーム画面から削除した場合は、時計アプリを元の場所に戻すことができます。ステップ 1 – iPhone のロックを解除し、App ライブラリ ページに到達するまで左にスワイプを開始します。ステップ 2 – 次に、検索ボックスで「時計」を検索します。ステップ 3 – 検索結果に以下の「時計」が表示されたら、それを長押しして、

iPhoneのカメラとマイクへのアクセスを許可できません iPhoneのカメラとマイクへのアクセスを許可できません Apr 23, 2024 am 11:13 AM

アプリを使用しようとすると、「カメラとマイクへのアクセスを許可できません」というメッセージが表示されますか?通常、カメラとマイクのアクセス許可は、必要に応じて特定の人に付与します。ただし、許可を拒否すると、カメラとマイクは機能しなくなり、代わりにこのエラー メッセージが表示されます。この問題の解決は非常に基本的なもので、1 ~ 2 分で解決できます。解決策 1 – カメラ、マイクの権限を提供する 必要なカメラとマイクの権限を設定で直接提供できます。ステップ 1 – [設定] タブに移動します。ステップ 2 – [プライバシーとセキュリティ] パネルを開きます。ステップ 3 – そこで「カメラ」権限をオンにします。ステップ 4 – 内部には、携帯電話のカメラの許可を要求したアプリのリストが表示されます。ステップ5 – 指定したアプリの「カメラ」を開きます

PHP MQTT クライアント開発ガイド PHP MQTT クライアント開発ガイド Mar 27, 2024 am 09:21 AM

MQTT (MessageQueuingTelemetryTransport) は、IoT デバイス間の通信に一般的に使用される軽量のメッセージ送信プロトコルです。 PHP は、MQTT クライアントの開発に使用できる、一般的に使用されるサーバー側プログラミング言語です。この記事では、PHP を使用して MQTT クライアントを開発する方法を紹介します。以下の内容が含まれます。 MQTT プロトコルの基本概念 PHPMQTT クライアント ライブラリの選択と使用例: PHPMQTT クライアントを使用した公開と使用

Go 言語はデータベースの追加、削除、変更、クエリ操作をどのように実装しますか? Go 言語はデータベースの追加、削除、変更、クエリ操作をどのように実装しますか? Mar 27, 2024 pm 09:39 PM

Go 言語は、効率的かつ簡潔で習得が容易なプログラミング言語であり、同時プログラミングやネットワーク プログラミングに優れているため、開発者に好まれています。実際の開発ではデータベースの操作が欠かせませんが、今回はGo言語を使ってデータベースの追加・削除・変更・クエリ操作を実装する方法を紹介します。 Go 言語では、データベースを操作するために通常、よく使用される SQL パッケージや gorm などのサードパーティ ライブラリを使用します。ここでは SQL パッケージを例として、データベースの追加、削除、変更、クエリ操作を実装する方法を紹介します。 MySQL データベースを使用していると仮定します。

Hibernate はポリモーフィック マッピングをどのように実装しますか? Hibernate はポリモーフィック マッピングをどのように実装しますか? Apr 17, 2024 pm 12:09 PM

Hibernate ポリモーフィック マッピングは、継承されたクラスをデータベースにマップでき、次のマッピング タイプを提供します。 join-subclass: 親クラスのすべての列を含む、サブクラス用の別個のテーブルを作成します。 table-per-class: サブクラス固有の列のみを含む、サブクラス用の別個のテーブルを作成します。 Union-subclass: join-subclass と似ていますが、親クラス テーブルがすべてのサブクラス列を結合します。

iOS 18では、紛失または破損した写真を復元するための新しい「復元」アルバム機能が追加されます iOS 18では、紛失または破損した写真を復元するための新しい「復元」アルバム機能が追加されます Jul 18, 2024 am 05:48 AM

Apple の最新リリースの iOS18、iPadOS18、および macOS Sequoia システムでは、さまざまな理由で紛失または破損した写真やビデオをユーザーが簡単に回復できるように設計された重要な機能が写真アプリケーションに追加されました。この新機能では、写真アプリのツール セクションに「Recovered」というアルバムが導入され、ユーザーがデバイス上に写真ライブラリに含まれていない写真やビデオがある場合に自動的に表示されます。 「Recovered」アルバムの登場により、データベースの破損、カメラ アプリケーションが写真ライブラリに正しく保存されない、または写真ライブラリを管理するサードパーティ アプリケーションによって失われた写真やビデオに対する解決策が提供されます。ユーザーはいくつかの簡単な手順を実行するだけで済みます

HTML がデータベースを読み取る方法の詳細な分析 HTML がデータベースを読み取る方法の詳細な分析 Apr 09, 2024 pm 12:36 PM

HTML はデータベースを直接読み取ることはできませんが、JavaScript と AJAX を通じて実現できます。この手順には、データベース接続の確立、クエリの送信、応答の処理、ページの更新が含まれます。この記事では、JavaScript、AJAX、および PHP を使用して MySQL データベースからデータを読み取る実践的な例を示し、クエリ結果を HTML ページに動的に表示する方法を示します。この例では、XMLHttpRequest を使用してデータベース接続を確立し、クエリを送信して応答を処理することで、ページ要素にデータを埋め込み、データベースを読み取る HTML の機能を実現します。

See all articles