为什么在Oracle 12c中需要一个普通帐户?普通是指一个CDB
帐户。当我使用Enterprise Manager Express创建帐户时,它只是在创建普通帐户。我可以在那里创建一个非普通帐户吗?普通用户还会出现在我切换/连接到的每个容器中。这个普通帐户访问所有这些可插入数据库的目的是什么?
为什么在Oracle 12c中需要一个普通帐户?这个普通帐户访问所有这些可插入数据库的目的是什么?
您需要一个公共帐户(普通用户)来对CDB(容器数据库)执行管理操作,例如更改可插拔数据库的状态,插入和拔出可插拔数据库(PDB)等,而本地用户则无法执行此操作。好吧,实际上,本地用户也可以更改可插拔数据库的状态,但只能以sysdba或sysoper的身份连接到它的PDB。
我可以在那里(在CDB中)创建一个非公共帐户吗?
不可以,不能在根目录中创建非公共帐户(本地用户)-只能在可插入数据库(PDB)中创建和运行该帐户,并且无法访问CDB或其他PDB(您不能使用它登录)。
了解有关通用性以及普通用户和本地用户的更多信息。
编辑
CDB$ROOT
是根容器。PDB$SEED
只是创建可插入数据库所需的模板。您不能在其中创建或修改对象。PDBORCL
是一个可插入的数据库,您应该在开发中使用它。
ORA-01033
如果您尝试以非sysdba用户身份连接到封闭的PDB,则Oracle将引发错误。通常,PDB数据库在默认情况下不会打开,而只是挂载(除非您通过创建触发器使该过程自动化,例如,在启动CDB时将为您完成该过程),并且您需要在连接普通时显式打开它用户(SYS或其他有权启动/更改可插入数据库的普通用户)并发出:
SQL> alter pluggable database <<name_of_PDB>> open;
or
SQL> startup pluggable database <<name_of_PDB>>
之后,您应该能够以普通用户或本地用户连接到PDB。当然,他们必须具有适当的privileges(create session
)才能这样做。
编辑#2使用系统事件(after startup on database
)触发器在CDB启动时自动启动可插拔数据库。不幸的是,没有自动启动PD的本地方法。
SQL> conn / as sysdba
Connected.
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 NKRASNOV READ WRITE NO
此特定触发器将打开一个可插入数据库。如果您有多个PD,并且要全部打开它们,则可以按以下方式修改alter语句ALTER PLUGGABLE DATABASE ALL OPEN;
SQL> create or replace trigger open_pdb
2 after startup on database
3 begin
4 execute immediate 'alter pluggable database nkrasnov open';
5 end;
6 /
Trigger created.
SQL> shutdown
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Database mounted.
Database opened.
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 NKRASNOV READ WRITE NO
SQL> conn hr/hr@nkrasnov_pdb
Connected.
SQL> spool off;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句