六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 67|回复: 0

ORA-01031: insufficient privileges 解決方案

[复制链接]

升级  86%

9

主题

9

主题

9

主题

童生

Rank: 1

积分
43
 楼主| 发表于 2013-1-27 04:42:54 | 显示全部楼层 |阅读模式
ORA-01031: insufficient privileges
原文出自:http://www.chinaunix.net/jh/19/132866.html
#############################################
#
# NAME: troubleshoot connect internal.txt
#
# DESCRIPTION:
#  connect internal
# connect / as sysdba 要口令問題:
# refer (METALINK,ORACLEDOC),
# metalink search words(connect internal)
# NOTE:
#
# modifiy (MM/DD/YY)  AUTHOR
# 05/03/03 ZORROL  
#############################################
————————————————————
1。檢查sqlnet.ora 文件.
sqlnet.ora 文件損壞或格式不對可以導致出現該問題。
sqlnet.ora 文件可能存放路徑為
$TNS_ADMIN/sqlnet.ora
如果沒有設置$TNS_ADMIN默認在$ORACLE_HOME/network/admin/sqlnet.ora  

$HOME/sqlnet.ora      
(1).   可以從別的機器拷貝一個文件過來,注意備份原來的sqlnet.ora。
---檢查sqlnet.ora 文件內容
(2).   檢查SQLNET.AUTHENTICATION_SERVICES  
如果沒有使用dblink.檢查該行並設置
SQLNET.AUTHENTICATION_SERVICES = (BEQ,NONE)
(3).   SQLNET.CRYPTO_SEED  
在unix 下不需要該參數。如果存在該行,註釋掉或刪掉
(4).AUTOMATIC_IPC  
如果該參數為 ON,將強制使用"TWO_TASK" 連接
最好設置為OFF
AUTOMATIC_IPC = OFF
2.檢查相關文件的權限配置。
找到$TNS_ADMIN/*
$ cd $TNS_ADMIN   
$ chmod 644 sqlnet.ora tnsnames.ora listener.ora   
$ ls -l sqlnet.ora tnsnames.ora listener.ora   
-rw-r--r--   1 oracle dba        1628 Jul 12 15:25 listener.ora   
-rw-r--r--   1 oracle dba         586 Jun  1 12:07 sqlnet.ora   
-rw-r--r--   1 oracle dba       82274 Jul 12 15:23 tnsnames.ora
3.檢查操作系統相關設置。
(1).  $ORACLE_HOME環境變量是否設置正確
% cd $ORACLE_HOME     
% pwd  
如果錯誤,請重新設置:
sh or ksh:    ----------     
$ ORACLE_HOME=<path_to_ORACLE_HOME>     
$ export ORACLE_HOME      
Example:     
$ ORACLE_HOME=/u01/app/oracle/product/7.3.3     
$ export ORACLE_HOME      
csh:     ----   
% setenv ORACLE_HOME <path_to_ORACLE_HOME>       Example:     
% setenv ORACLE_HOME /u01/app/oracle/product/7.3.3   
另外$ORACLE_HOME路徑應為實際路徑,不應是目錄連接(ln -s)
(2)  $ORACLE_SID是否設置正確;
% echo $ORACLE_SID                           
(3).確信沒有設置$TWO_TASK
檢查 "TWO_TASK" 是否設置:
sh, ksh or on HP/UX only csh:   
-----------------------------------
env |grep -i two   
- or -   
echo $TWO_TASK     
csh:     
----
setenv |grep -i two      
如果有返回行比如:
TWO_TASK=   
- or -  
TWO_TASK=PROD   
就需要取消著這些環境變量設置 :
sh or ksh:   
----------   
unset TWO_TASK        
csh:
----   
unsetenv TWO_TASK   
(4) 檢查oracle 文件的權限:
% cd $ORACLE_HOME/bin     
% ls -l oracle
權限應為:rwsr-s--x, or 6751.
如果不是:
% chmod 6751 oracle  
(5). 檢查當前所連接的操作系統用戶是否是"osdba" 並且已經定義在:
"$ORACLE_HOME/rdbms/lib/config.s"  
or
"$ORACLE_HOME/rdbms/lib/config.c".
通常應為dba
% id     uid=1030(oracle) gid=1030(dba)   
可以如果"gid" 是 "dba" , "config.s" or "config.c"
裡面應該有:           /* 0x0008         15 */         .ascii  "dba\0"   
如果沒有添加目前的操作系統用戶到dba 組,或則手工編輯更改config.c並且:%relink oracle
(6).所需要的文件系統是否正確mount
%mount
(7) 目前身份是否是"root" 並且操作系統環境變量 "USER", "USERNAME", and "LOGNAME" 沒有設置成"root".
root用戶是特例,除非當前組是dba 組,否則不能connect internal.
把root用戶當前組改為dba組:
# newgrp dba
-----最好不要以root管理數據庫;
(8).檢查"/etc/group" :
是否存在重複行
% grep dba /etc/group      
dba::1010:
dba::1100:  
如果有,刪掉沒有用的。
(9).確信停掉的instance沒有佔用內存資源
比如:ipcs -b            
T         ID       KEY        MODE    OWNER      GROUP   SEGSZ        
Shared Memory:           
m          0   0x50000ffe --rw-r--r-- root       root         68           
m       1601   0x0eedcdb8 --rw-r----- oracle      dba    4530176        
可以看到1601 被oracle 使用,刪掉.
-------注意是否啟動了多個instance
% ipcrm -m 1601
(10).如果同時還有ora-12705 錯誤檢查一下環境變量:
"ORA_NLS", "ORA_NLS32", "ORA_NLS33" ,"NLS_LANG".     
(11).檢查 "ORACLE_HOME" and "LD_LIBRARY_PATH 環境變量:
$ LD_LIBRARY_PATH=$ORACLE_HOME/lib     
$ export LD_LIBRARY_PATH      
$ ORACLE_HOME=/u01/app/oracle/product/8.0.4     
$ export ORACLE_HOME
(12).當前的instance 所再的磁盤是否有足夠的磁盤空間
df -k
(13).用戶對/etc/passwd 是否有讀權限。
(14).如果使用mts 方式,確信你的連接使用dedicade server 方式。
(15).安裝ORACLE所需操作系統補丁是否打全。ORACLE 是否已經補丁到最新
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表