Oracle Database:密码包含特殊字符的时候,命令行工具连接时候的写法
密码包含特殊字符是比较常见的情况,比如说,密码包含【@】符号,这时候如果直接拼接会导致与【@TNS】冲突,因此,如果密码包含特殊字符,Oracle常见的命令行的工具的写法是有所区别的;
一、SQL*Plus
登录:
1 2 |
sqlplus 'system/"1@34"'@TNSNAME <meta charset="utf-8"/>sqlplus 'sys/"1@34"'@TNSNAME as sysdba |
修改密码:
1 2 |
set define off alter user scott identified by "123&456"; |
其中【&】字符是Oracle中用来识别自定义变量的特殊字符,所以,如果在SQLPlus的命令行中修改的密码中包含该特殊字符的时候,会触发相关操作,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
SYS@lhrdb> alter user scott identified by "tiger&123"; Enter value for 123: old 1: alter user scott identified by "tiger&123" new 1: alter user scott identified by "tiger" User altered. SYS@lhrdb> |
很显然,如果是这样的效果,就没有达到需要在密码中包含特殊字符【&】的效果;
或者,Oracle中修改密码还有一种方式:使用【password】关键字,具体如下:
1 2 3 4 5 6 7 8 9 10 11 |
SYS@lhrdb> password scott Changing password for scott New password: Retype new password: Password changed SYS@lhrdb> |
二、expdp
1 |
expdp\''sys/"1@34"'@TNSNAME as sysdba\' directory=DATA_PUMP_DIR dumpfile=xxxx.dmp schemas=scott compression=all metrics=y |