`

sqlplus as sysdba可以登录,但是用pl/sql用sys用户登录报ora-01017

阅读更多

 

 remote_login_passwordfile参数 2012-11-02 16:54:10

分类: Oracle

转自:http://www.dbasky.com/oracle/remote_login_passwordfile_sqlnet_ora.html

今天复习的一个知识点:

remote_login_passwordfile,一直对这个参数的认识只是停留在它控制是否sys用户能在远程使用密码文件认证登录,对于他的值设置,适用情况没有更深的研究,今天就打算做一些小实验来探索他的使用。
本次测试基于windowsoracle 10g,可能测试结果会有偏差。

首先阅读10g reference文档中的描述:

作用:这个参数控制oracle是否检查密码文件 取值范围:none,shared(默认) noneoracle会忽略任何密码文件,此时有权限的用户(比如sys)必须使用操作系统认证。 shared:一个或多个数据库可以使用密码文件,这时密码文件中可以包含sys和非sys用户 exclusive:这个参数10g中取消了,但为了向后兼容,你可以设置,与shared功能一样。 rac中多个实例应该有相同的值。

oracle数据库没有启动之前,oracle内的用户是无法通过oracle来认证的,sys用户要启动oracle,就必须使用别的认证方式:一是密码文件认证,二是操作系统认证。

操作系统认证:通常要求该用户属于本地DBA组,然后通过操作系统认证登录到oracle,从而来启动数据库。
密码文件认证:如果是远程以sys用户登录来启动数据库,那么只有通过密码文件认证来登录了。
这个时候remote_login_passwordfile就来控制是否可以远程来登录。

1.remote_login_passwordfile = NONE

此时不能使用任何密码文件来登录数据库,只能在本地通过操作系统认证来起停数据库,远程sysdba登录是不被允许的,即使你$ORACLE_HOME/dbs下有密码文件。这样类似在别的机器上使用sqlplus sys/oracle@orcl as sysdba语句的登录都会报错。此时,即使你在本地机器上OEM database control也是会报错的,提示无效的用户名密码,实际也是不能用密码文件验证身份。

2.remote_login_passwordfile = SHARED

此时可以在远程使用密码文件认证来登录数据库,如果本地没有密码文件,或者密码文件丢失,也是不能登录成功的,此时可以使用orapwd重新创建密码文件。remote_login_passwordfile = SHARED时,更改sys用户密码是不被允许的。同时授予除sys外的其他用户sysdba权限也是不允许的。此时可以通过密码文件在本机成功登录OEM database control

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

SQL> show parameter pass   

NAME                                 TYPE        VALUE
 
------------------------------------ ----------- ------------------------------
 
remote_login_passwordfile            string      SHARED  
 

SQL>
 select * from v$pwfile_users;   

USERNAME                       SYSDB SYSOP
 
------------------------------ ----- -----
 
SYS                             TRUE TRUE
 

SQL>
 alter user sys identified by oracle; 

alter
 user sys identified by oracle * 
ERROR at line
 1: ORA-28046: Password change for SYS disallowed 

SQL>
 grant sysdba to test; 

grant
 sysdba to test * 
ERROR at line
 1: ORA-01999: password file cannot be updated in SHARED mode

windows系统中,shared模式下打开数据库的话不能删除pwd.ora文件,看来oralce会锁定这个文件给多个数据库使用。
2.remote_login_passwordfile = EXCLUSIVE

oracle 10g文档中说exclusiveshared有相同的行为,可是我做的实验的结果并不是这样,可见oracle的文档也不能全信。11g中这个错误被修正了。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44

SQL> alter system set remote_login_passwordfile=exclusive scope=spfile;   

System altered.
   

SQL>
 shutdown immediate; 

Database
 closed. Database dismounted. ORACLE instance shut down. 

SQL>
 startup 

ORA-32004: obsolete
 and/or deprecated parameter(s) specified
ORACLE instance started. 
 
Total System Global Area
 264241152 bytes 
Fixed Size
 1296160 bytes
Variable Size
 163580128 bytes 
Database
 Buffers 92274688 bytes 
Redo Buffers
 7090176 bytes 
Database
 mounted. 

Database
 opened. 
SQL>
 
SQL>
 
SQL>
 show parameter remote  
 NAME                                 TYPE VALUE
 ------------------------------------ ----------- ------------------------
 
remote_archive_enable                 string true
 
remote_dependencies_mode              string TIMESTAMP
remote_listener                       string
 
remote_login_passwordfile             string EXCLUSIVE
 
remote_os_authent                    
 boolean FALSE 
remote_os_roles                      
 boolean FALSE
SQL>
 
SQL>
 
SQL>
 grant sysdba to test;   Grant succeeded.   
SQL>
 
SQL>
 show parameter compati   
NAME                                               TYPE         VALUE
 
------------------------------------               ----------- ------------------------

compatible string 10.2.0.3.0 plsql_v2_compatibility
 boolean      FALSE

当我又重新置会shared 模式时

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42

SQL> alter system set remote_login_passwordfile =shared scope=spfile   

System altered.
   

SQL>
 shutdown immediate; 

Database
 closed. Database dismounted. ORACLE instance shut down
.
 
SQL>
 startup 

ORA-32004: obsolete
 and/or deprecated parameter(s) specified 

ORACLE instance started.
   
Total System Global Area
 264241152 bytes 
Fixed Size
 1296160 bytes 
Variable Size
 163580128 bytes 
Database
 Buffers 92274688 bytes 
Redo Buffers
 7090176 bytes 
Database
 mounted. 
Database
 opened. 

SQL>
 show parameter pass   
NAME                                 TYPE         VALUE
------------------------------------ ----------- ---------
 
remote_login_passwordfile            string       SHARED  
 

SQL>
 select * from v$pwfile_users;   

USERNAME                       SYSDB  SYSOP
 
------------------------------ -----  -----
 
SYS                            TRUE   TRUE
 
TEST                           TRUE   FALSE

SQL>
SQL>
 grant sysdba to test; 

grant
 sysdba to test * 

ERROR at line
 1: ORA-01999: password file cannot be updated in SHARED mode 

SQL>
 revoke sysdba from test;

revoke
 sysdba from test * 

ERROR at line
 1: ORA-01999: password file cannot be updated in SHARED mode

 

 

分享到:
评论

相关推荐

    ORACLE SYS.DBMS_REGISTRY_SYS has errors

    标题中的问题“ORACLE SYS.DBMS_REGISTRY_SYS has errors”指的是在Oracle数据库系统中,系统包BODY `SYS.DBMS_REGISTRY_SYS` 出现错误,导致了一系列的PL/SQL调用失败。这种错误通常与数据库的元数据注册功能有关,...

    Oracle用sysdba登录问题

    - 命令行方式直接使用`SQLPLUS / AS SYSDBA`命令尝试登录。 - 如果没有指定用户名和密码,则会自动尝试通过OS验证方式登录。 2. **使用PL/SQL Developer登录**: - 在PL/SQL Developer中,可以直接输入`SYS`作为...

    ORACLE DBMS STATS ERROR

    1. **以SYSDBA身份登录**:使用`sqlplus "/as sysdba"`命令启动SQL*Plus。 2. **限制模式启动数据库**:运行`startup restrict`命令以限制模式启动数据库,这将阻止用户连接,确保在验证和重编译期间不会干扰其他...

    Winserver2012安装19c注意事项.docx

    接着,打开cmd,登录sqlplus / as sysdba;修改system和sys密码:alter user system identified by zlsoft;alter user sys identified by zlsoft。如果未执行上述第二步,登录PL/SQL会报用户名/口令无效。 四、...

    oracle用户解锁三种方法.doc

    5. 之后,你可以尝试使用解锁后的用户登录。 第三种情况,当你在PL/SQL Developer中尝试以`scott/tiger`登录时,可能会遇到账户被锁定的问题。解决方法如下: 1. 启动DOS命令行,输入`sqlplus`,然后以`system`...

    登录Oracle数据库(1).ppt

    当以sys用户登录时,务必使用`sysdba`角色,以执行数据库维护和管理任务。其他用户应根据职责分配适当的权限,避免不必要的安全风险。 总的来说,登录Oracle数据库的过程涉及到验证身份、指定服务名以及可能的角色...

    oracle 提示登录密码过期完美解决方法

    2. 使用sys用户的DBA权限连接,格式为`conn sys/your_sys_password as sysdba`,将your_sys_password替换为sys用户的实际密码。 3. 登录成功后,输入`alter user scott identified by tiger;`来重置scott用户的密码...

    Windows Server 2016 Oracle 12C安装连接的若干问题处置方法

    远程登录Oracle 12C的sys和system用户时报ORA-01017错误,而本地登录则无异常,可通过以下步骤解决: 1. **检查监听状态**:确保监听器运行正常,可以使用`tnsping`命令进行验证。例如:`tnsping 服务名`。 2. **...

    非常完整和齐的Oracle总结文档第2版本

    此时可以通过sqlplus以sysdba身份登录,然后使用`ALTER USER`命令重置密码,例如`ALTER USER system IDENTIFIED BY manager;`和`ALTER USER sys IDENTIFIED BY manager;`。 Oracle数据库中,rownum是用于分页查询的...

    数据库通用操作命令

    1. **使用SYS用户登录** 如果忘记了`SYSTEM`用户的密码,可以使用`SYS`用户登录并修改密码: ```sql sqlplus sys/your_password as sysdba alter user system identified by new_password; ``` 2. **使用...

    玩转oracle

    - 在命令行中使用`sqlplus / as sysdba`命令来启动Oracle实例。 - 可以通过监听器管理工具lsnrctl来控制监听器的服务状态。 **卸载Oracle:** - 首先停止所有Oracle服务。 - 卸载Oracle客户端和服务。 - 清理注册表...

    oracle恢复工具-FY_Recover_Data

    因此用当前的System信息是不能恢复过来的,在AUL/MyDUL中可以当作没有System时的情况来处理,在下面的命令中, 我们用Truncate后的数据对象号就不能进行恢复, 而使用Truncate以前的就可以, 当然空间不能被重新利用了是...

    Oracle日常运维常见错误及解决方案

    问题 1:Oracle 服务器进入 PL/SQL Developer 时报 ora-01033 错误 解决方法:首先,进入 CMD,执行 set ORACLE_SID=fbms,确保连接到正确的 SID;然后,运行 sqlplus "/as sysdba",停止服务,观察启动时有无数据...

    oracle最全面的错误疑难解决方案和总结文档.docx

    - 首先使用 `system` 用户登录。 - 执行解锁命令: ```sql alter user scott account unlock; ``` 2. **重置密码**: - 在登录状态下,使用 `password` 命令来重置密码: ```sql password scott ``` ####...

    ORACLE 连接设置方法

    - 利用SQL*Plus工具进行远程连接,使用sys用户时需要使用assysdba模式,例如: ```plaintext sqlplus /nolog connect /as sysdba ``` - 对于普通用户,则使用常规方式连接。 #### 三、常见问题与解决方法 1....

    oracle新手上手文档

    - **命令行登录**:可以通过命令行使用`sqlplus`命令登录Oracle数据库。对于超级管理员(例如sys用户),需要在用户名/密码后面加上`as sysdba`,以获取最高级别的权限。 - **查看当前用户**:使用`show user`命令...

    oracle最全笔记

    - 可以通过指定身份登录:`SYS/DHEE@SHAIN AS SYSDBA` 或 `SYS/DHEE@SHAIN AS SYSOPER`。 - **SYSDBA**:具有完全的数据库管理权限,包括启动、关闭数据库等。 - **SYSOPER**:具有较高级别的管理权限,但无法...

    Oracle初学者必知的100个问题

    - **版本信息查询**: 使用`$sqlplus /as sysdba`命令可以连接到Oracle数据库,并通过`select * from v$version;`获取版本信息。例如: ``` SQL> select * from v$version; BANNER -----------------------------...

    oracle命令登入

    如果你只是想启动SQL*Plus但不立即登录数据库,可以使用: ``` sqlplus /nolog ``` 这种方式下,你可以先进行一些预处理,然后使用`connect`命令登录数据库: ``` SQL> connect sys/oracle@127.0.0.1/icpdb ``` ...

Global site tag (gtag.js) - Google Analytics