我正在努力连接到我为其创建本地用户的可插入数据库。
我的机器上有 Oracle 21c XE。CDB是XE。我使用 sys 作为 sysdba 登录到 SID=XE。我在那里创建了一个 PDB,如下所示:
create pluggable database GRE
admin user manager identified by manager
roles = (dba)
file_name_convert = ('C:\ORADATA\XE\PDBSEED', 'C:\ORADATA\XE\GRE')
;
ALTER PLUGGABLE DATABASE GRE OPEN;
然后我切换到可插入数据库:
alter session set container = GRE;
select sys_context('USERENV', 'CON_NAME') from dual;
SYS_CONTEXT('USERENV','CON_NAME')
GRE
然后我创建了一个用户并分配了角色和权限:
-- USER SQL
CREATE USER "user1" IDENTIFIED BY "user1"
DEFAULT TABLESPACE "DATA"
TEMPORARY TABLESPACE "TEMP" container=current;
-- QUOTAS
ALTER USER "user1" QUOTA UNLIMITED ON "DATA";
-- ROLES
GRANT "CONNECT" TO "user1" ;
GRANT "RESOURCE" TO "user1" ;
ALTER USER "user1" DEFAULT ROLE "CONNECT","RESOURCE";
-- SYSTEM PRIVILEGES
GRANT DROP ANY MATERIALIZED VIEW TO "user1" ;
GRANT CREATE ANY SYNONYM TO "user1" ;
GRANT DROP ANY SYNONYM TO "user1" ;
GRANT DROP ANY VIEW TO "user1" ;
GRANT CREATE ANY VIEW TO "user1" ;
GRANT CREATE ANY MATERIALIZED VIEW TO "user1" ;
这是以下的输出lsnrctl status
:
Services Übersicht...
Dienst "541e76d5c7264140b887e5606a1a0486" hat 1 Instanzen.
Instanz "xe", Status READY, hat 2 Handler für diesen Dienst...
Dienst "CLRExtProc" hat 1 Instanzen.
Instanz "CLRExtProc", Status UNKNOWN, hat 1 Handler für diesen Dienst...
Dienst "XE" hat 1 Instanzen.
Instanz "xe", Status READY, hat 2 Handler für diesen Dienst...
Dienst "XEXDB" hat 1 Instanzen.
Instanz "xe", Status READY, hat 1 Handler für diesen Dienst...
Dienst "gre" hat 1 Instanzen.
Instanz "xe", Status READY, hat 2 Handler für diesen Dienst...
Der Befehl wurde erfolgreich ausgeführt.
可以看到PDBgre
是可用的。
当我尝试使用本地用户连接到 PDB 时,登录被拒绝并显示 ORA-01017。
我试图弄清楚如何处理 PDB 和本地用户,但我无法理解如何让它工作。也许我对这个概念的理解错误,我需要使用普通用户并首先连接到CDB,然后从那里切换到PDB?
这与多租户架构无关。
不幸的是,您使用双引号创建了具有区分大小写的用户名的用户。
SQL Developer 中的用户名应该
"user1"
代替user1
.