oracle課堂筆記--第十八天

來源:互聯網
上載者:User

標籤:dba   and   共用   services   home   acl   11.2   維護   訪問   

Oracle NET

1.用戶端通過@ora10g的名字去tnsname.ora檔案擷取伺服器的具體串連資訊

2.用戶端通過tnsname.ora中的描述向伺服器發出連結請求伺服器端

3.伺服器的監聽器接收到串連請求後,驗證請求的服務的有效性

4.伺服器端產生一個服務進程和用戶端進程建立串連

 

查看會話建立過程:

$ netstat -tlnp | grep 1521

$ sqlplus sys/[email protected] as sysdba

$ netstat -tnp | grep sqlplus

$ kill -9 1234 殺死維護sqlplus的進程

監聽的配置

設定檔:

$ vi $ORACLE_HOME/network/admin/listener.ora

通過netca添加新的監聽服務Listener15210,連接埠使用15210

$ vi listener.ora

$ netstat -tln|grep 1521

$ lsnrctl status listener15210

 

通過netmgr配置進階選項

 

通過lsnrctl命令來啟動/停止/查看/重載監聽器/服務

lsnrctl start|stop|status|reload|service

指定監聽的名稱:

$ lsnrctl status listener15210    監聽資訊

 

網路環境變化,需要檢查listener.ora和/etc/hosts檔案

 

netca刪除Listener15210

執行個體的配置 (資料庫)

靜態註冊和動態註冊

什麼是靜態註冊

就是監聽器的設定檔中寫明了監聽哪個執行個體 需要配置SID_DESC欄位

定位執行個體的方式可以使用SID_NAME或者SERVICE_NAME來定位

什麼是動態註冊

就是監聽器的設定檔中沒寫明監聽哪個執行個體

要通過PMON告知監聽器要監聽的具體執行個體

PMON是將SERVER_NAME告訴給監聽器 這個過程就是註冊

預設一分鐘PMON註冊一次 也就是說啟動監聽 還沒註冊時 是無法串連的

添加3種方式,後面的刪掉,用文檔改寫

區分靜態註冊和動態註冊

lsnrctl status

是 ready 就是動態

是 unknow 就是靜態

 

靜態註冊listener.ora檔案資訊:

$ vi listener.ora

SID_LIST_LISTENER =

  (SID_LIST =

        (SID_DESC =

                (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)

                (SID_NAME =ora11g)

        )

  )

$ lsnrctl reload

.....

Services Summary...

Service "ora11g" has 1 instance(s).

  Instance "ora11g", status UNKNOWN, has 1 handler(s) for this service...

狀態總是顯示未知的,當有請求時,監聽器才去確認資料是否存在

 

動態註冊

Oracle9i起執行個體使用動態服務註冊來通知監聽程式有關其資料庫服務的資訊。

服務註冊依賴PMON 進程向監聽程式註冊執行個體資訊 註冊間隔為1分鐘左右

手動註冊命令 alter system register;

無需在listener.ora 檔案中設定任何資訊 此檔案可以不存在

 

3種註冊方式:

本地預設連接埠監聽     (監聽和資料庫在一台主機  不需改配置)1521

本地非預設連接埠監聽   (監聽和資料庫在一台主機,需改配置,知道連接埠在哪,連接埠不是1521)

遠程監聽       (不在一台主機上)

 

本地非預設連接埠:

netca建立listener15210,使用15210連接埠

$ netstat -tlnp | grep 15210

 

寫入監聽的別名:

$ cd $ORACLE_HOME/network/admin

$ vi tnsnames.ora

listener15210 =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = node1.test.com)(PORT = 15210))

  )

  

修改參數:

SQL> ALTER SYSTEM SET LOCAL_LISTENER=listener15210;

SQL> ALTER SYSTEM register;     立即註冊(可選)

 

服務資訊已添加到新的監聽中:

$ lsnrctl status listener15210

用戶端指定新連接埠串連:

$ sqlplus sys/[email protected]:1521/orcl as sysdba 報錯

$ sqlplus sys/[email protected]:15210/orcl as sysdba

 

刪除配置:

SQL> ALTER SYSTEM SET LOCAL_LISTENER=‘‘;

SQL> ALTER SYSTEM register;

$ vi tnsnames.ora 刪除listener15210別名

netca刪除15210連接埠的監聽

用戶端配置

 

輕鬆串連:

$ sqlplus sys/[email protected]:1521/orcl as sysdba

適用於臨時性的串連

 

本地命名:

查看現有的主機連接字串

$ cd $ORACLE_HOME/network/admin

$ vi tnsnames.ora    解析

 

$ sqlplus sys/[email protected] as sysdba

 

使用netca添加新的主機連接字串orcl192

$ sqlplus sys/[email protected] as sysdba

SQL> select name from v$database;

 

tnsping測試,不需要使用者名稱和口令:

$ tnsping 192.168.0.1:1521/orcl

$ tnsping orcl192

 

解析方法的順序:

$ vi sqlnet.ora

netca可以修改

 

恢複預設設定:

SQL> alter system set local_listener=‘‘;

SQL> alter sytem register;

 

netca刪除不需要的監聽和串連配置

共用伺服器模式

專有服務和共用服務模式

專有模式

 

每個使用者進程和服務進程間通過監聽器建立串連

進程資訊存放於PGA中,也就是說有多少個使用者進程就有多少個PGA產生

單單只有進程串連還不足以操作資料庫,還需要產生的會話資訊

會話資訊儲存在UGA中,UGA在專有模式中存在於PGA

因為進程和進程間是相互隔離的,所以會話資訊也相對獨立

這就導致了服務進程只能獲知目前使用者進程的會話請求資訊 只能為目前使用者進程服務

 

共用模式

使用者進程的請求被監聽器接收,監聽器不委派伺服器處理序,而是將調度器資訊返回給用戶端

調度器將使用者進程的請求放入請求隊列

多個服務進程中的一個服務進程從隊列中擷取使用者進程的請求,並處理這個使用者進程的請求

服務進程處理完後將處理結果放入響應隊列,每個調度器都有自己的響應隊列

響應隊列的資訊反饋給對應的調度器

調度器再把服務進程處理的結果返回給使用者進程

 

共用模式中的使用者進程的會話資訊對每一個伺服器處理序來說都是可見的.

因為共用模式的UGA資訊存在於SGA中,所以此時一個使用者進程的請求可以由多個服務進程來完成.

 

 

共用伺服器的配置 通過初始化參數dispatchers來配置

可以通過DBCA來修改

$ lsnrctl service

SQL> show parameter disp

SQL> show parameter shared_server

 

專有模式和共用模式是可以相容在一起使用的

此時看使用者如何選擇

 

tnsnames.ora中

ORA10G =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = dba.up.com)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED) # 不寫這個值就是按伺服器的模式來匹配

   # shared 指定使用共用方式串連

   # DEDICATED 指定使用專有模式串連

      (SERVICE_NAME = raw10g)

    )

  )

 

測試三種模式

 

ORCL_default =   預設

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = node1.test.com)(PORT = 1521))

    (CONNECT_DATA =

      (SERVICE_NAME = orcl)

    )

  )

 

ORCL_dedicated =       管理員

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = node1.test.com)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = orcl)

    )

  )

 

ORCL_shared =      共用

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = node1.test.com)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = SHARED)

      (SERVICE_NAME = orcl)

    )

  )

 

測試:

$ sqlplus sys/[email protected]_default as sysdba

$ sqlplus sys/[email protected]_dedicated as sysdba

$ sqlplus sys/[email protected]_shared as sysdba

 

SQL> select SID, SERVER, PROGRAM from v$session where USERNAME=‘SYS‘;

SQL> select distinct sid from v$mystat;

 

管理維護、大資料量匯入、備份恢複等工作不適合用共用方式:

SQL> shutdown immediate 共用串連下不能發行管理命令

 

恢複原有設定:

dbca修改為dedicated方式

db link

資料庫A訪問遠端資料庫B上面的表:

在資料庫A中,使用netca建立主機描述字串orcl_dblink指向資料庫B

$ netca

$ tnsping orcl_dblink

在資料庫A中建立資料庫連結:

SQL> create database link orcl_dblink_hr connect to hr identified by hr using ‘orcl_dblink‘;

using使用主機描述字串orcl_dblink

使用者和口令都是資料庫B上的

db link的名字不要求和主機描述字串一致

 

訪問資料庫B中的表:

SQL> select count(*) from [email protected]_dblink_hr;

SQL> select count(*) from hr.employees, [email protected]_dblink_hr;

 

oracle課堂筆記--第十八天

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.