0

为什么我需要在 Oracle 12c 中使用公共帐户?一个共同的意思是一个CDB帐户。当我使用 Enterprise Manager Express 创建帐户时,它只创建普通帐户。我可以在那里创建一个非普通帐户吗?我曾经切换/连接到的每个容器中也会出现一个普通用户。这个通用帐户访问所有这些可插拔数据库的目的是什么?

4

1 回答 1

1

为什么我需要在 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。当然,他们必须拥有适当的特权(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;
于 2013-10-18T20:03:42.243 回答