您的位置:首页 > 其它

ORA-01031: insufficient privileges的解决方法

2010-06-10 23:32 316 查看
#############################################

#

# 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
是否已经补丁到最新
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: