在Oracle中,Oracle用户密码含特殊字符时如何登陆?
答案部分
当Oracle用户密码含有特殊字符(例如,&、@、$等)的时候,SQL*Plus和exp或expdp等工具进行登录的时候在写法上有很大的差异。
若密码不含“&”符号,则可以使用双引号将密码括起来进行密码修改:
alter user lhr identified by "l@h\r/0";
若密码包含有“&”符号,则需要首先设置define为off才可以修改密码:
set define off
alter user scott identified by "$tiger&123l@h\r/0%s,d$";
alter user scott identified by "$?`$%*H\@f'\<a-q/$-@#<>`}:H$";
若密码包含有“"”双引号,则需要使用password来修改密码:
password scott
在Linux平台下,使用不同客户端连接Oracle数据库的写法如下表所示:
Linux平台 | SQL*Plus工具 | exp、imp、expdp、impdp | |
---|---|---|---|
普通用户 | 无tns | sqlplus 'lhr/"l@h\r/0"' | expdp 'lhr/"l@h\r/0"' |
有tns | sqlplus 'lhr/"l@h\r/0"'@LHRDB | expdp 'lhr/"l@h\r/0"'@LHRDB | |
sys用户 | 无tns | sqlplus / as sysdba | expdp \'/ AS SYSDBA\' |
有tns | sqlplus 'sys/"l@h\r/0"'@LHRDB as sysdba | expdp \''sys/"l@h\r/0"'@LHRDB as sysdba\' | |
正常密码 | sqlplus sys/lhr@lhrdb as sysdba | expdp \'sys/lhr@LHRDB as sysdba\' |
在上表中,含特殊字符密码为:l@h\r/0,正常密码为:lhr,tns为:LHRDB,总的写法原则为:密码用双引号括起来,用户名和密码用单引号括起来,然后【用户名】+【密码】+【tns】+【as sysdba】用单引号括起来,最后的这个单引号用“\”进行转义。
在Windows平台下,使用不同客户端连接Oracle数据库的写法如下表所示:
Windows平台 | SQL*Plus工具 | exp、imp、expdp、impdp | |
---|---|---|---|
普通用户 | 无tns | sqlplus lhr/"""l@h\r/0"""sqlplus lhr/\"l@h\r/0\" | expdp lhr/"""l@h\r/0"""expdp lhr/\"l@h\r/0\" |
有tns | sqlplus lhr/"""l@h\r/0"""@LHRDBsqlplus lhr/\"l@h\r/0\"@LHRDB | expdp lhr/"""l@h\r/0"""@LHRDBexpdp lhr/\"l@h\r/0\"@LHRDB | |
sys用户 | 无tns | sqlplus / as sysdba | expdp \"/ as sysdba\" |
有tns | sqlplus sys/"""l@h\r/0"""@LHRDB as sysdbasqlplus sys/\"l@h\r/0\"@LHRDB as sysdba | ||
正常密码 | sqlplus sys/lhr@lhrdb as sysdba | expdp \"sys/lhr@LHRDB as sysdba\" |
在上表中,含特殊字符密码为:l@h\r/0,正常密码为:lhr,tns为:LHRDB,总的原则为:密码用3个双引号括起来,或者用一个双引号括起来,然后用“\”将双引号进行转义。
& 说明:
有关本小节的更多内容可以参考我的BLOG:http://blog.itpub.net/26736162/viewspace-2135493/
本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。