今天想在上次安装的Oracle 19c环境( https://www.modb.pro/db/394424 )上安装OGG For Oracle。
想创建一个oracle用户ogg,create user ogg identified by xxx;
结果报了以下错误:

那就启动数据库:startup

告诉我已经启动了,要先停掉:shutdown immediate

然后再startup:

张小白想起来,一开始创建了这个dbf,后来不用了。文件已经被删了。但是数据库配置中还没删掉。
到网上查找解决方案:https://blog.csdn.net/u010682330/article/details/90747880
照此办理:
shutdown immediate;

startup mount;

select file#,name,status from v$datafile;



确实,这个dbf对于oracle来说还是online状态。
于是将其drop offline试试:
alter database datafile '/home/oracle/oradata/zhanghui/zhanghui_data.dbf' offline drop;

怎么会drop不掉呢?再去查找解决方案:https://blog.csdn.net/weixin_34553907/article/details/116421335
原来这个dbf不在当前的container里面:
show con_name

而这个dbf好像是在pdb里面:
show pdbs;

我们切换container到ORCLPDB:
alter session set container=ORCLPDB;

然后再删除这个dbf:
alter database datafile '/home/oracle/oradata/zhanghui/zhanghui_data.dbf' offline drop;

我们再shutdown后再startup:

这回Oracle正常启动了。
再试一下创建用户:
create user ogg identified by ogg;

你会发现,ogg这个用户名是非法的。
因为在目前的container里面:

用户名必须是c##开头。(怪异吧。。。)
所以,我们这样建一下用户:
create user C##ogg identified by ogg;

这样才建成功。
我们登录试试:

不行,原来c##ogg用户没有权限。
再回到超级用户赋权限:
grant dba , connect, create session to c##ogg;

再登录试试:

终于可以成功登录。
(全文完,谢谢阅读)
评论
