<em id="1rarx"><ins id="1rarx"></ins></em><sup id="1rarx"></sup>

<progress id="1rarx"><tr id="1rarx"></tr></progress>
<sup id="1rarx"><menu id="1rarx"></menu></sup>
<menuitem id="1rarx"></menuitem><optgroup id="1rarx"><small id="1rarx"><sub id="1rarx"></sub></small></optgroup>

    <sup id="1rarx"><menu id="1rarx"></menu></sup>
    <div id="1rarx"></div><div id="1rarx"><tr id="1rarx"><object id="1rarx"></object></tr></div>
      <em id="1rarx"></em>

          存檔

          ‘oracle’ 分類的存檔

          The listener supports no services

          2017年8月14日 1 條評論

          [[email protected] ~]$ lsnrctl status

          LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 14-AUG-2017 13:56:45

          Copyright (c) 1991, 2013, Oracle. All rights reserved.

          Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))
          STATUS of the LISTENER
          ------------------------
          Alias LISTENER
          Version TNSLSNR for Linux: Version 11.2.0.4.0 - Production
          Start Date 14-AUG-2017 13:54:44
          Uptime 0 days 0 hr. 2 min. 0 sec
          Trace Level off
          Security ON: Local OS Authentication
          SNMP OFF
          Listener Parameter File /home/oracle/product/11gR2/network/admin/listener.ora
          Listener Log File /home/oracle/product/diag/tnslsnr/localhost/listener/alert/log.xml
          Listening Endpoints Summary...
          (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))
          (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
          The listener supports no services
          The command completed successfully

          tlister啟動沒有服務

          #netmgr
          在database services下增加實例名配置,替換紅色部分為你的實例名。

          客戶端連接報錯:
          ORA-12541:TNS:no listener
          把127.0.0.1 替換為你機器的ip

          分類: oracle 標簽:

          oralce刪除數據庫

          2017年8月14日 沒有評論

          sqlplus / as sysdba
          SQL> startup
          ORACLE instance started.

          Total System Global Area 2.0176E+10 bytes
          Fixed Size 2261928 bytes
          Variable Size 2818575448 bytes
          Database Buffers 1.7314E+10 bytes
          Redo Buffers 41463808 bytes
          Database mounted.
          Database opened.
          SQL> alter database close;

          Database altered.

          SQL> alter system enable restricted session;

          System altered.

          SQL> drop database;

          Database dropped.

          Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
          With

          刪除 /etc/oratab
          刪除 rm -rf product/
          刪除 rm -rf oraInventory/

          未關閉的進程殺掉
          [[email protected] ~]# ps -ef|grep ora
          root 4736 3961 0 13:17 pts/2 00:00:00 su - oracle
          oracle 4737 4736 0 13:17 pts/2 00:00:00 -bash
          oracle 4763 1 0 13:18 ? 00:00:00 /home/oracle/product/11gR2/bin/tnslsnr LISTENER -inherit
          root 5482 3790 0 13:36 pts/1 00:00:00 grep ora
          [[email protected] ~]# kill -9 4763

          這樣重新安裝數據庫,不會報實例沖突

          分類: oracle 標簽:

          防火墻斷開數據庫或者mq的連接造成的長時間重連等待

          2016年6月8日 沒有評論

          在測試環境經常會遇到服務失去響應,需要假死15分鐘左右才能繼續處理業務,每天早上來都需要重啟服務才行,直覺感覺是防火墻有問題,不同于生產網絡,測試網絡之間的防火墻每隔固定時間最長24小時就會斷開無數據流量的連接,但是應用端以為連接還是好的,需要探查較長的時間來確認連接是否可用。同時也發現有人在遇到這方面的解釋,比較詳細,post一下供參考。
          最近生產上發現一個問題,剛開始,應用連接數據庫正常,如果長時間沒有業務估計半小時以上,再發起業務時,發現應用重連不上數據庫,一直掛在重連那里,如果重啟應用又能很快連上數據庫(數據庫是Oracle)。后來經數據庫專家的同學看了后,發現我們的生產是RAC的,而客戶端配置了TAF,導致在發生會話切換的時候,可能原來的連接沒有釋放好,影響了重連。把Oracle客戶端的TAF關掉,重連的問題解決了。但又出現了一個很奇怪的現象,就是今天要說的重點問題,如果長時間沒業務的時候還是斷,而且斷了后執行SQL要15分鐘左右應用才能返回,這將導致應用在15分鐘內不能服務,應用返回的錯誤是 ORA-03113: end-of-file on communication channel從這個錯誤看,應該是Oracle客戶端返回了連接斷開的錯誤,但是為什么要15分鐘后才返回這個錯誤呢?

          機器的網絡情況如下:

          應用主機A ----> FW1(防火墻1) ---->FW2(防火墻2) ----> 數據庫主機(OracleDB)

          后來經網絡專家的同學判斷,有可能是防火墻設置了會話超時,如果長時間一個會話上沒有數據防火墻就會刪除

          會話,同時網上也有人遇到類似的情況:

          26142928_6I68

          我們做了類似的嘗試,放開防火墻的時間限制后,問題沒再出現。但是還有幾個疑問沒有解決:

          1.為什么防火墻刪除會話后,主機要等15分鐘?

          2.防火墻刪除會話后,會不會通知主機(給主機發RST)?

          早上和同事討論,猜測是由于防火墻刪除了會話,但主機并不知道,有數據庫操作的時候,由Oracle客戶端發起TCP請求,但由于防火墻找不到會話,丟棄了這些包(目前是不是丟還不清楚),導致了TCP不停地超時重發。

          查看TCP/IP詳解第一卷的21章節21.2節,都超時重發有這樣的描述:

          26142928_3a2X

          這里提到9分鐘,不過這本書寫得比較早,猜測linux有所不一樣,不過原理差不了太多,google了一下,

          好像找到了15分鐘的說法, 參考資料[1]中提到:

          TCP_RTO_MIN=(HZ/5)=0.2s
          TCP_RTO_MAX=(120*HZ)=120s
          linear_backoff_thresh = ilog2(120*5)=ilog2(0x258)=9
          timeout:未超過linear_backoff_thresh=9的部分按TCP_RTO_MIN 2的指數倍增長,超過的部分按TCP_RTO_MAX線性增長
          tcp_time_stamp:當前時鐘時間
          例如數據發送階段,sysctl_tcp_retries2=9,則timeout=1023*TCP_RTO_MIN=204.6s;sysctl_tcp_retries2=11時,timeout=1023*TCP_RTO_MIN+2*TCP_RTO_MAX=448.6s
          默認sysctl_tcp_retries2=15,timeout=1023*TCP_RTO_MIN+6*TCP_RTO_MAX=920.6s,約15分鐘

          是根據RTO及一定的算法算出來的(具體的算法,可以看參考資料[3])

          簡單說,就是如果系統配置重傳次數小于9的話,就是指數增長時間,如果大于9的話,就是最大超時時間。

          而linux默認是15,所以剛好是15分鐘,查看我們主機的配置,確認是15:

          [[email protected] ~]$ cat /proc/sys/net/ipv4/tcp_retries2
          15

          現在還有一個問題沒弄清楚,就是防火墻刪除會話后,是否會通知主機?現在看起來應該是不會的,至少在主機上是沒收到防火墻的RST,由于兩個防火墻的兩個廠商不一樣,也有可能是一個吃掉另外一個的包也說不定。假如刪除會話后,在原來的會話上來有包上來,是重建會話呢?還是直接把包丟棄?還是發RST呢?從目前主機的現象來看,猜測是:

          防火墻刪除會話后,不會通知主機也就是不會給主機發RST,當有新包上來,找不到連接,但不是S包的時候,直接丟棄,

          導致主機用完了重發次數后,自己發RST后給應用報斷開連接。

          不過。。。以上的東東都是根據現象來猜測的,最有效的辦法是捉出tcpdump包來看,但由于是生產不敢亂動,也先這樣吧!

          僅以此記,為避免以后踩坑,同時開發人員也要關心網絡部署,當時我并沒有考慮中間有兩個防火墻。

          來源http://m.oschina.net/blog/318965

          分類: oracle, 架構 標簽:

          一個關于分頁的面試題

          2015年5月1日 5 條評論

          在網上看到面試中考分頁的帖子,結合自己的想法,集合一下,歡迎討論。

          分頁是各式各樣系統開發過程中必不可少的環節,普通web應用數據量小、訪問量小,分頁可以用簡單的方式來實現,一般是通過startrow+pagenum來實現,甚至可以提前生成靜態頁面,這樣數據庫基本沒有壓力,缺點是數據變動時要重新生成所有列表頁,而且不能實時顯示數據的變化。

          不過還好的是對于大多數的應用能夠實現需求即可,不必過多考慮優化。

          互聯網公司的海量數據,情況就變得不一樣了,更多考慮的是性能和效率,加載速度提高一點點,就意味著用戶體驗的提升,用戶體驗決定著產品的未來。

          因此我們可以看到數據量變大的情況下一個高效的分頁變的重要程度,分頁面試能夠體現面試者是否處理過大量數據,沒處理過也能夠體現其面試時處理問題的思考和應變能力。

          不管什么方法做分頁,它都離不開數據庫的支持,優化原則是盡量減少掃描數據庫中記錄的條數。

          常用的關系數據庫mysql和oracle為例:mysql分頁依賴于limit,oracle分頁使用rownum實現。

          mysql分頁方法?

          mysql分頁的核心語句:

          先看一下分頁的基本原理(CSDN那個百萬級數據庫來測試!):

          SELECT * FROM csdn ORDER BY id DESC LIMIT 100000,2000;
          耗時: 0.813ms

          分析:對上面的mysql語句說明:limit 100000,2000的意思掃描滿足條件的102000行,扔掉前面的100000行,返回最后的2000行。

          問題就在這里,如果是limit 100000,20000,需要掃描120000行,在一個高并發的應用里,每次查詢需要掃描超過100000行,性能肯定大打折扣。

          在《efficient pagination using mysql》中提出的clue方式。

          利用clue方法,給翻頁提供一些線索,比如還是SELECT * FROM csdn order by id desc,按id降序分頁,每頁2000條,當前是第50頁,當前頁條目id最大的是102000,最小的是100000。如果我們只提供上一頁、下一頁這樣的跳轉(不提供到第N頁的跳轉)。

          那么在處理上一頁的時候SQL語句可以是:
          SELECT * FROM csdn WHERE id<=102000 ORDER BY id DESC LIMIT 2000; #上一頁 耗時:0.015ms 處理下一頁的時候SQL語句可以是: SELECT * FROM csdn WHERE id>102000 ORDER BY id ASC LIMIT 2000; #下一頁
          耗時:0.015ms

          這樣,不管翻多少頁,每次查詢只掃描20行。效率大大提高了!

          但是,這樣分頁的缺點是只能提供上一頁、下一頁的鏈接形式。

          oracle如何分頁?

          oracle分頁的核心:

          大量數據時oracle分頁語句的優化(通過rownum和rowid來進行分頁),如下:

          分類: mysql, oracle 標簽:

          如何配置plsql developer

          2014年12月26日 沒有評論

          1.安裝oracle客戶端,
          不必安裝完整的oracle,oracle太大了,也消耗系統資源,一個客戶端30多兆。
          訪問http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
          需要注冊一個oracle賬號,然后登陸,選擇適合自己的版本下載并解壓到一個目錄中,例如c:oracleclient

          2.設置環境變量
          NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
          TNS_ADMIN=C:oracleclient

          3.配置tnsname.ora
          在目錄C:oracleclient下新建tnsname.ora,把連接串保存到該文件中

          4.安裝plsql developer
          網上隨便down一個,然后雙擊可執行文件安裝即可

          5.配置PLSQL Developer
          第一次不用登錄,點擊取消或者cancel直接進到PLSQL Developer
          Tools --> Preferences--> Connections,
          Oracle Home內容為 C:oracleclient
          OCI library內容為C:oracleclientoci.dll

          關閉重啟,即可

          分類: oracle 標簽:

          使用php連接oracle

          2013年12月22日 2 條評論

          要使用php連接oracle,基本條件是
          1.需要你安裝了php、
          2.安裝了oracle、
          3.配置了tnsname.ora。
          本地命令行使用sqlplus能夠連接到oracle。

          根據你機器的版本選對64bit或者32bit的php程序,我們使用php的oci8擴展連接oracle

          安裝好php后,打開oci8擴展,

          寫一段連接oracle的ora.php代碼
          閱讀全文...

          分類: oracle, php 標簽: , ,

          oracle入門筆記之BLOB類型字段

          2010年2月5日 沒有評論

          test

          分類: oracle 標簽:
          印度快乐8官网
          <em id="1rarx"><ins id="1rarx"></ins></em><sup id="1rarx"></sup>

          <progress id="1rarx"><tr id="1rarx"></tr></progress>
          <sup id="1rarx"><menu id="1rarx"></menu></sup>
          <menuitem id="1rarx"></menuitem><optgroup id="1rarx"><small id="1rarx"><sub id="1rarx"></sub></small></optgroup>

            <sup id="1rarx"><menu id="1rarx"></menu></sup>
            <div id="1rarx"></div><div id="1rarx"><tr id="1rarx"><object id="1rarx"></object></tr></div>
              <em id="1rarx"></em>

                  <em id="1rarx"><ins id="1rarx"></ins></em><sup id="1rarx"></sup>

                  <progress id="1rarx"><tr id="1rarx"></tr></progress>
                  <sup id="1rarx"><menu id="1rarx"></menu></sup>
                  <menuitem id="1rarx"></menuitem><optgroup id="1rarx"><small id="1rarx"><sub id="1rarx"></sub></small></optgroup>

                    <sup id="1rarx"><menu id="1rarx"></menu></sup>
                    <div id="1rarx"></div><div id="1rarx"><tr id="1rarx"><object id="1rarx"></object></tr></div>
                      <em id="1rarx"></em>