异常关机后Oracle无法正常连接,使用 conn /as sysdba 出现 ORA-01034 和 ORA-27101: shared memory realm does not exist...

最近异常关机导致oracle无法连接,一直提示ORA-01034和ORA-27101的错误

打开cmd后,输入

sqlplus /npolog

conn / as sysdba

提示

ORA-01034 - Oracle not available”

“ORA-27101 - shared memory realm does not exist

 

原因:

非正常关闭数据库(在没有关闭数据库的情况下直接关机)

 

解决方案:

1。首先检查oracle/admin/sid/bdump/下的alert.log发现没有最后一次数据库的启动相关信息。也就是说电脑可能有异常关机过。

2。进入cmd模式,

sqlplus /nolog

connect / as sysdba

startup

如果还是显示27101错误。初步判定为init.ora文件有异常,copy之前的init.ora文件覆盖。

3。进入cmd模式

sqlplus /nolog

connect / as sysdba

执行startup pfile=c:/oracle/admin/sid/pfile/init.ora,启动成功。

4。输入"select * from user_tables;"测试一下,看是否有查询结果

 

备注:

输入conn /as sysdba 有可能会提示 ORA-01031: insufficient privileges

 

解决方案:

第一步:查看系统用户是否属于ora_dba,如果不在ora_dba组请添加。

 

第二布:检查sqlnet.ora中SQLNET.AUTHENTICATION_SERVICES设置是否是NTS,如果不是请修改,修改后结果SQLNET.AUTHENTICATION_SERVICES= (NTS)。

 

第三步:检查环境变量path server/bin 是否在client_1\bin前面,经查询client_1\bin 在server/bin前面如下:

d:\oracle\product\10.2.0\client_1\bin;d:\oracle\product\10.2.0\db_1\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;%JAVA_HOME%\bin

修改之后

d:\oracle\product\10.2.0\db_1\bin;d:\oracle\product\10.2.0\client_1\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;%JAVA_HOME%\bin

 

第四步:重新打开命令窗口(必须),之后重新登录。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Oracle数据库时,连接到数据库时可能会遇到"ORA01031: insufficient privileges"错误。这个错误表示当前用户没有足够的权限来执行所请求的操作。 "conn / as sysdba"是一种特殊的连接方式,它允许以超级用户(SYSDBA角色)的身份连接Oracle数据库。SYSDBA角色具有最高级别的权限,可以执行任何数据库操作。 当你使用"conn / as sysdba"连接到数据库时,你需要确保你的操作系统用户具有足够的权限来执行这个操作。在Unix/Linux系统上,你需要以Oracle软件所有者的身份运行该命令。在Windows系统上,你需要以管理员身份运行命令提示符或PowerShell窗口,并使用正确的环境变量设置。 如果你遇到"ORA-01031: insufficient privileges"错误,可能有以下几个原因: 1. 操作系统用户没有足够的权限来执行"conn / as sysdba"命令。 2. 数据库用户没有被授予SYSDBA角色。 3. 数据库用户没有被授予足够的权限来执行所请求的操作。 为了解决这个问题,你可以尝试以下几个步骤: 1. 确保你以正确的操作系统用户身份运行"conn / as sysdba"命令。 2. 确保数据库用户被授予SYSDBA角色。你可以使用以下命令检查: ``` SELECT * FROM dba_role_privs WHERE granted_role = 'SYSDBA' AND grantee = '<your_username>'; ``` 如果没有结果返回,你可以使用以下命令将用户添加到SYSDBA角色: ``` ALTER USER <your_username> GRANT SYSDBA; ``` 3. 如果你需要执行特定的操作,确保数据库用户被授予执行该操作所需的权限。你可以使用GRANT语句为用户授予所需的权限。 希望以上信息对你有帮助!如果你还有其他问题,请继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值