为什么在Oracle中需要一个普通帐户?

用户名

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

尼克·克拉斯诺夫(Nick Krasnov)

为什么在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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在 numpy 中,为什么 .var() 是一个方法而 mean() 是一个普通函数?

为什么我的Ubuntu用户帐户需要一个强密码?

为什么需要一个DataHandler?

为什么在Ubuntu 16.04中的“锁定/切换”帐户选项中有一个“ libvirt qemu”帐户?

为什么在以下字符串中需要双{,但需要一个}?

Duby和Juby有什么区别?为什么我需要它们中的一个?

什么是狭窄的原型,为什么我需要一个?

一个CORS POST请求可以在普通JavaScript中工作,但是为什么不使用jQuery?

在ELF中,为什么标题需要在一个段中?

为什么我需要在数组中附加一个 NUL 字符?

为什么我们需要在React Hook中返回一个函数?

为什么在此正则表达式中需要一个空格?

为什么需要将intl.Message包装在一个封闭函数中?

playframework中的composeAction:采用一个参数,返回相同的值,为什么需要它?

为什么在 Coq 中,记录投影需要一个类型作为参数?

为什么grep在使用'$'的正则表达式中需要一个点?

为什么遵循控制结构条件的声明需要放在一个块中?

为什么需要让孩子获得$(“ body”)中的最后一个元素

为什么我的MSBuild文件中需要一个单独的项目?

为什么putInt在Android Java中需要一个字符串?

为什么我们需要一个接口来定义aem中的每个服务?

在Django中,为什么视图函数需要一个request参数?

为什么需要在angularjs中创建一个函数以返回加和数?

为什么需要在链接列表中存储下一个项目指针

为什么我们需要在堆中创建一个对象?

为什么C ++中的read()需要一个指向char的指针

为什么在std :: copy()中需要另一个迭代器作为参数?

为什么这里需要一个尾随逗号来传递 *args 参数中的列表?

为什么在一个模型中实例变量分配需要自我?