【问题标题】:Identify current oracle encryption识别当前的预言机加密
【发布时间】:2018-08-30 14:13:48
【问题描述】:
我目前在使用 PL/SQL 构建的 Oracle WebDB 中运行应用程序。我必须在我的 PC 上安装的 Oracle Enterprise Manager Console 中更改 WebDB 的用户密码的唯一访问权限。我们的 Web 控制台和用户更改密码页面不再可用。
我正在尝试编写一个新的更改密码页面。有什么方法可以找出 OEM 控制台用于更新 sys.user$ 表的加密类型,以便在我的新密码更改页面中复制它?
【问题讨论】:
标签:
oracle
security
plsql
【解决方案1】:
您可以在 PLSQL 中使用动态 sql 来执行正确的
'Alter user -user- identified by "password";'
声明。
【解决方案2】:
您不能直接更新SYS.USER$ 视图。而且不是加密,是uses hashing。
使用来自 PL/SQL 的 ALTER USER <username> identified by <user_password> 语句。然后密码被散列并存储在SYS.USER$ 视图中。您应该使用EXECUTE IMMEDIATE 语法使它们动态化:
DECLARE
dml_create_user VARCHAR2(256) := '';
s_user_to_create := 'ju' ;
s_user_password := 'the_passwd' ;
BEGIN
dml_create_user :=
'create user '||s_user_to_create
|| 'identified by '||s_user_password
|| ' default tablespace TSR01 '
|| ' temporary tablespace TST01 '
|| ' profile DEFAULT ' ;
EXECUTE IMMEDIATE dml_create_user ;
END;