oracle數據庫常見問題處理總結3

一、ORA-28040: No matching authentication protocol
將$ORACLE_HOME/network/admin/sqlnet.ora文件添加以下兩參數node

SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8

二、不一樣表空間數據導入失敗
--修改用戶 orcl 具備 test_data 數據表空間的權限(方法不止這一種)linux

revoke unlimited tablespace from orcl
alter user orcl quota unlimited on test_data

三、oracle單個實例下多用戶,B用戶想讀取A用戶某表的權限
用system登陸,將用戶A的表受權給public或者Bsql

grant select on  A.table to public;
grant select on A.table to B;

四、使用oracle數據庫,多用戶同時對一個表進行增長,刪除,修改,查看等操做,會不會有影響?
問題1、各操做間或者性能上會不會有影響?若是有該如何解決?
分析:
多用戶操做的影響主要是回鎖定記錄,oracle數據庫提供行級鎖,也就是說用戶操做數據時,oracle爲記錄行加鎖,固然若是用戶一次性操做的數據過多,oracle的鎖資源過大,或者鎖定數據長時間沒有釋放(例如幾百萬條記錄更新移植沒有提交)。oracle的資源不夠,會升級爲表鎖。至於性能,仍然跟鎖定的資源大小有關係。
多用戶操做的解決方法:
一次更新量不要太大,記得及時提交結果,養成sql語句後面當即commit或者rollback的習慣。
多人操做表是有加鎖的也就是表是共享的行是獨佔的,你正在操做的行別人只能查不能一塊兒作修改的操做,你commit或rollback以後就會釋放鎖別人就能夠操做了.
oracle併發能夠解決這個問題,只要在增、刪、改時記得及時commit或rollback就好了.數據庫

問題2、兩個用戶同時對一個表進行增長操做,是否是要等一個增長完以後另外一個才能夠執行增長操做啊?
分析:
一個用戶加數據,若是加完數據當即作事務處理,另外一個用戶就不用過久等待,甚至可能沒有感受,再若是一個用戶加數據加鎖後不作事務處理,那另外一個用戶就會一直等待,直到第一個用戶commit後才能夠執行第二個用戶的操做。
其餘知識點:
1)、oracle的數據模式是:用戶建在表空間上,表建在用戶上
2)、一個用戶的表就象本身的私有財產同樣,沒有本身或管理員受權別的用戶是不能查詢或修改的;
3)、對於不一樣用戶下的同名表,都是獨立的數據對象,如user1.table1和user2.table1是相
互獨立的,用戶分別操做本身的表是不影響其餘用戶的;
4)、對於同一用戶下的同一個表,全部有權限的用戶對其進行數據操做時,是會相互影響的,
如對user1.table1來講,user1修改了它的一行,user2又對該表的該行進行了修改,那麼該表的該行的實際內容是在user1修改後基礎上user2修改的結果(注意,全部修改以最後成功提交修改請求的用戶的內容爲準),多個用戶對同一個用戶下的同一個表的同時修改和鎖定會形成鎖等待。vim

五、TNS-12535: TNS:operation timed out、TNS-00505: Operation timed out
該參數能夠經過設置爲0來禁用,在服務端:
1)、設置sqlnet.ora文件:windows

SQLNET.INBOUND_CONNECT_TIMEOUT=0;

2)、設置listener.ora文件:安全

INBOUND_CONNECT_TIMEOUT_listenername=0;

3)、而後reload或者重啓監聽。
說明:這是因爲鏈接超時所產生的問題,在10.2.0.1.0版本中
sqlnet.inbound_connect_timeout參數默認爲60秒,即若是鏈接時間超過60秒則提示超時,
而在其餘版本中這兩個參數默認爲0,即無限制。bash

六、oracle進程過多服務器

--INACTIVE會話過多致使沒法連接,使用以下腳本進行刪除對應用戶INACTIVE進程markdown

begin
  for rec in (select sid,
                     serial#,
                     module,
                     status
                from v$session s
               where s.username is not null
                 and s.status = 'INACTIVE'
                 and username = upper('&數據庫用戶')) loop
    execute immediate 'alter system disconnect session ''' || rec.sid || ', ' || rec.serial# || '''immediate';
  end loop;

七、Oracle用戶被鎖緣由及辦法
在登錄時被告知test用戶被鎖
(1)、用dba角色的用戶登錄,進行解鎖,先設置具體時間格式,以便查看具體時間

SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

(2)、查看具體的被鎖時間

SQL> select username,lock_date from dba_users where username='TEST';

(3)、解鎖

SQL> alter user test account unlock;

(4)、查看是那個ip形成的test用戶被鎖

SQL> select username,lock_date from dba_users where username='EHC';

而後查看下是哪一個IP形成的被鎖(路徑具體看狀況)

find $ORACLE_HOME/ -name listener.log
tail -100f $ORACLE_HOME/listener.log

(5)、查看FAILED_LOGIN_ATTEMPTS的值

SQL> select * from dba_profiles

修改成30次

SQL> alter profile default limit FAILED_LOGIN_ATTEMPTS 30;

修改成無限次(爲安全起見,不建議使用)

SQL> alter profile default limit FAILED_LOGIN_ATTEMPTS unlimited;

八、oracle sqlplus 鏈接時,connection to 顯示的是問號

$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Thu Aug 209:19:56 2012
Copyright (c) 1982, 2009, Oracle.  All rightsreserved.
???:  應該是Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0- 64bit Production
With the Partitioning, Real Application Clusters,Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

解決辦法:

SQL> show parameter nls_la

NAME                                TYPE       VALUE
------------------------------------ -----------------------------------------
nls_language                        string      SIMPLIFIEDCHINESE

而後修改環境變量:NLS_LANG

[oracle@rac2 ~]$ exportNLS_LANG=american_america.zhs16gbk

若是要使之永久生效,能夠添加這個變量到oracle 用戶環境 .bash_profile中。

九、Centos7.2配置RemoveIPC特性,在oracle用戶下定時備份任務結束時,oracle用戶異常退出,致使oracle數據庫退出
整改方法是配置修改,將RemoveIPC修改成no,具體操做以下:

# vim /etc/systemd/logind.conf
RemoveIPC=no
# systemctl daemon-reload
# systemctl restart systemd-logind

十、切換oracle帳號,報-bash: ulimit: open files: cannot modify limit: Operation not permitted

# vi /etc/security/limits.conf
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft memlock 4000000
oracle hard memlock 4000000

十一、12c的安裝部署不容許主機名包含下劃線

SEVERE: [FATAL] [INS-30131] Initial setup required for the execution of installer validations failed.
   CAUSE: Failed to access the temporary location.
   ACTION: Ensure that the current user has required permissions to access the temporary location.
*ADDITIONAL INFORMATION:*
Exception details
 - PRVG-11322 : One or more node names "yqjdzjk_v08" contain one or more of the following invalid characters "_"

解決辦法:
修改hostname去除下劃線

hostnamectl set-hostname yqjdzjk-v08

十二、ORA-27123: unable to attach to shared memory segment

[root@jzhdb1 bin]stat oracle
Access: (6751/-rwsr-s--x)  Uid: (  502/    grid)   Gid: ( 1001/oinstall)
[root@jzhdb2 bin]stat oracle
Access: (0751/-rwxr-x--x)  Uid: (  502/    grid)   Gid: ( 1001/oinstall)

解決辦法:
節點一是6751,節點二是0751,接下來將節點二的oracle文件權限改6751

[root@jzhdb2 bin]# chmod 6751 oracle

1三、ORA-12516 解決方法
oracle服務器上某個數據庫出現' ORA-12516: TNS: 監聽程序找不到符合協議堆棧要求的可用處理程'錯誤,要解決該問題首先查看一下數據庫現有的進程數,是否已經達到參數processes的大小。

# 取得數據庫目前的進程數
select count(*) from v$process;
# 取得進程數的上限
select value from v$parameter where name = 'processes';
# 取得數據庫目前的會話數
 select count(*) from v$session; 
 show parameter sessions;
 show parameter processes;

解決方法:修改會話數與進程數,重啓oracle服務

oracle11g的公式:sessions=1.1*processes+5
oracle12c的公式:sessions=1.1*processes+22

export ORACLE_SID=orcl
sqlplus / as sysdba
alter system set processes=2000 scope=spfile;
alter system set sessions=2205 scope=spfile;
shutdown immediate;
startup;

1四、ORA-12154 TNScould not resolve the connect identifier specified
問題分析:
即沒法解析指定的鏈接標識符。這說明缺乏了一個環境變量,TNS_ADMIN 。
windows的解決方法:
右擊 個人電腦 -> 屬性 -> 高級 -> 環境變量 -> Administrator 的用戶變量 -> 新建 ,

變量名爲:TNS_ADMIN
變量值爲:%ORACLE_HOME%/NETWORK/ADMIN/

其中 %ORACLE_HOME% 即 Orcale 的安裝路徑, 其實,設置的該環境變量的值爲 tnsnames.ora文件所在路徑,特別是重裝後或其它操做,忘了設置TNS_ADMIN 變量,PL/SQL 登錄就會報「沒法解析指定的鏈接標識符」的錯誤 ,而設置TNS_ADMIN變量是爲了可以找到 tnsnames.ora。若是本機上安裝了ORACLE,而且設置了 ORACLE_HOME 環境變量,那麼會自動在%ORACLE_HOME%/NETWORK/ADMIN/位置查找 tnsnames.ora 文件。

linux的處理方法:

oracle@jkttest:/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin$cat tnsnames.ora 
# tnsnames.ora Network Configuration File: /oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

LISTENER_EPOS =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 10.102.0.240)(PORT = 1521))

EPOS =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.102.0.240)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = epos)
    )
  )

LISTENER_ORCL =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 10.102.0.240)(PORT = 1521))

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.102.0.240)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

1五、ORA-12012,ORA-06502,ORA-06512錯誤

Sat Sep 29 16:00:00 2018
Errors in file /u01/app/oracle/diag/rdbms/XXX/XXX/trace/XXX_j000_3516.trc:
ORA-12012: error on auto execute of job "SYS"."BSLN_MAINTAIN_STATS_JOB"
ORA-06502: PL/SQL: numeric or value error
ORA-06512: at "DBSNMP.BSLN_INTERNAL", line 2073
ORA-06512: at line 1
Sat Sep 29 16:03:17 2018
Thread 1 advanced to log sequence 137530 (LGWR switch)

查找MOS: ORA-12012: Error on Auto Execute of job SYS.BSLN_MAINTAIN_STATS_JOB (文檔 ID 1413756.1) 發現爲bug
緣由:

The same is addressed in 
Bug 13637859 - "BSLN_MAINTAIN_STATS_JOB FAILS WITH ORA-06502 
which is marked as a duplicate of
Bug 10110625 - DBSNMP.BSLN_INTERNAL RECEIVES ORA-06502

解決方法:

This issue is fixed in 11.2.0.4.
For versions below 11.1.0.7 apply the patch 6282324.Bug 6282324 is fixed in 11.1.0.7 .
For 11.2.0.2 and 11.2.0.3, please apply  Patch 10110625 (if available for your platform and database version).
-- Login as sys user.

SQL> sqlplus / as sysdba

-- From the sqlplus execute the following:

-- Drop the DBSNMP user by executing catnsnmp.sql script.

SQL> @$ORACLE_HOME/rdbms/admin/catnsnmp.sql

-- Create the DBSNMP user by executing catsnmp.sql

SQL> @$ORACLE_HOME/rdbms/admin/catsnmp.sql

1六、ORA-12514 TNS:監聽程序當前沒法識別鏈接描述符中請求的服務
解決:編輯listener.ora,添加鏈接配置

(SID_DESC =
      (GLOBAL_DBNAME = ORCL)
      (ORACLE_HOME = E:\app\oracle\product\12.1.0\dbhome_1)  
      (SID_NAME = ORCL)
    )

完整配置以下:

# listener.ora Network Configuration File: E:\app\oracle\product\12.1.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = E:\app\oracle\product\12.1.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:E:\app\oracle\product\12.1.0\dbhome_1\bin\oraclr12.dll")
    )
  (SID_DESC =
      (GLOBAL_DBNAME = ORCL)
      (ORACLE_HOME = E:\app\oracle\product\12.1.0\dbhome_1)  
      (SID_NAME = ORCL)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = iZwwv52zvkplxtZ)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )
相關文章
相關標籤/搜索