sysdba不能远程登录,我们该怎么做

 

 

sysdba不能远程登录这个也是一个很常见的问题了。 

碰到这样的问题我们该如何解决呢?


我们用sysdba登录的时候,用来管理我们的数据库实例,特别是有时候,服务器不再本台机器,这个就更是有必要了。 

当我们用sqlplus "/ as sysdba" 
是可以登录的。 

但是我们如果用sqlplus "sys/password@tnsname as sysbda"这样的方式去不能登录. 

这里我们的错误一般分为两类 
第一类: 提示ORA-01031: insufficient privileges(权限不足)  
引用:
sqlplus "sys/password@10.0.0.195 as sysdba" 
ERROR: 
ORA-01031: 权限不足


如果是这样的错误,你明明是用这个sys登录的,而且确实是sysdba的权限,为什么登录却提示你的权限不够叻。 
这里的问题出现在密码文件里,由于你的密码文件缺损或者不存在,而Oracle实例对sysdba的权限是根据这个 
密码文件来判断的,如果你的用户被grant to sysdba了,那么这个用户的密码和用户名也在这个密码文件了。 
这样也就发现你不是sysdba的角色,当然as sysdba就会提示权限不足了哟。 
为什么这样做了,如果我们的数据库没有open,那么对于的一些动态视图是不能打开的,所以oracle必须把这些 
用户的口令和username放在一个独立的文件里,这样在数据库还不是open的状况写,有个地方判断了。 

如何解决了。我们首先来判断一下 
执行sql 
SQL> select * from v$pwfile_users; 
USERNAME SYSDB SYSOP 
------------------------------ ----- ----- 
SYS TRUE TRUE 

如果这里选择不出了记录的话,就是密码文件没有叻。 

这里解决的方法就是重建orapwd文件 
使用密码文件orapwd 命令 orapwd -c file=”$ORACLE_HOME/dbs/orapwd$ORACLE_SID” entity=5 password=changeoninstall 
再次查看 v$pwfile_users 这时候有一条记录了 

现在再试试,我们的问题基本上就解决了 

还有一种情况,提示的是ORA-01017:用户名密码出错  
这样的错误,可是你的密码和用户名明明输入的都是正确的。这又是为什么叻 
检查一下系统参数remote_login_passwordfile的值, 
这里需要启动密码文件的话,需要前提就是这个值, 这里的值可以NONE,EXCLUSIVE和SHARE 
EXCLUSIVE和SHARE都可以,EXCLUSIVE是独占的文件,SHARE是多实例的体系中的共享模式 
这个问题基本上就是这个值导致的 
SQL>alter system set remote_login_passwordfile=EXCLUSIVE scope=spfile; 

现在重启服务试试看。 

已经OK解决了吧 

这里以前有分别谈过这两个问题 
可以看看这两个问题的分别讨论 
ORA-01017:用户名密码出错 故障实例  
解决10g上 非本机SQLPLUS conn as sysdba出现ORA-01031: insufficient privileges问题

 

 

 




 

 

要允许 SYSDBA 用户远程登录Oracle 数据库,需要进行以下步骤: 1. 确保监听器已启动:在数据库服务器上,运行以下命令检查监听器的状态: ``` lsnrctl status ``` 如果监听器未运行,请使用以下命令启动监听器: ``` lsnrctl start ``` 2. 修改监听器配置文件:找到监听器配置文件 `listener.ora`,一般位于 `$ORACLE_HOME/network/admin` 目录下。使用文本编辑器打开文件,并添加以下内容: ``` (SID_DESC = (GLOBAL_DBNAME = <数据库全局名称>) (ORACLE_HOME = <数据库主目录>) (SID_NAME = <实例名称>) ) ``` 将 `<数据库全局名称>` 替换为数据库的全局名称(例如,ORCL),将 `<数据库主目录>` 替换为数据库的主目录路径,将 `<实例名称>` 替换为实例的名称。 3. 重启监听器:使用以下命令重启监听器以使配置更改生效: ``` lsnrctl reload ``` 4. 确保防火墙未阻止连接:如果在数据库服务器远程客户端之间有防火墙,请确保防火墙未阻止数据库的监听端口(默认为 1521)。 5. 远程连接到数据库:现在,您可以使用 SYSDBA 角色通过远程客户端连接到数据库。在客户端的 SQL*Plus 或其他数据库工具中,使用以下命令连接到数据库: ``` sqlplus sys/<密码>@<数据库全局名称> as sysdba ``` 将 `<密码>` 替换为 SYS 用户的密码,将 `<数据库全局名称>` 替换为数据库的全局名称。 请注意,允许远程 SYSDBA 访问可能增加数据库的安全风险。在实施此设置之前,请确保采取适当的安全措施,并只授权受信任的用户进行远程 SYSDBA 访问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

inthirties

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值