Ora01017、Ora00604

2023年 9月 26日 65.6k 0

Ora-01017

Ora-00604

Ora-16000

ORA-65096

第一步:创建表空间

创建用户时,需要给用户指定表空间。如果没有表空间,需要先创建。

执行语句:

create tablespace [表空间名] datafile '[数据文件路径]' size [文件大小];

create tablespace wangwang datafile '/home/oracle/app/oracle/oradata/qjorcl/wangwang.dbf' size 100M;

这时候可能会有如下报错ORA-16000: database open for read-only.

首先,我们确认下目前在哪个数据库容器中操作:

执行语句:

select sys_context ('USERENV', 'CON_NAME') from dual;

返回结果:

我们用这个语句查下各个数据库容器的权限:

select con_id,dbid,NAME,OPEN_MODE from v$pdbs;

我们可以看到,我们目前所在的数据库容器的状态为只读状态。为了能创建表空间,我们尝试把该数据库容器的状态改为读写,执行语句:

alter pluggable database PDB$SEED open;

返回报错:ORA-65017.我也不知道啥原因。

我想到一个办法绕过。我们的目的是创建表空间。既然PDB$SEED数据库容器的状态改不了,也不知道啥原因,那我们不死磕。我们跑到PDBORCL数据库容器去创建表空间,请仔细看上图,PDBORCL数据库容器的状态是读写都开了。

我们切换到PDBORCL数据库容器中,执行语句:

alter session set container=PDBORCL;

返回成功:

我们再确认下切换后在哪个数据库容器中,执行上面说过的命令:

select sys_context ('USERENV', 'CON_NAME') from dual;

确认成功,成功切换到了PDBORCL数据库容器中。

执行建表空间的语句:

create tablespace wangwang datafile '/home/oracle/app/oracle/oradata/qjorcl/wangwang.dbf' size 100M;

返回:表空间创建成功。

历经磨难与挫败,凭借机智和知识,创建表空间成功~。~下一步,新建用户!

第二步:新建用户

为了说明在oracle12c新建用户常见的报错:“ORA-65096: invalid common user or role name”,我们把目前所在的数据库容器切换到最初的PDB$SEED,并确认切换成功。执行:

alter session set container=PDB$SEED;

select sys_context ('USERENV', 'CON_NAME') from dual;

返回成功:

切换好了,执行新建用户语句:

create user 【用户名】identified by 【密码】 default tablespace 【表空间】;

create user qiujane identified by 123 default tablespace wangwang;

返回;

ORA-16000.(…我不是想展示这个报错,想展示ORA-65096: invalid common user or role name)

但是没关系,ORA-65096: invalid common user or role name这个报错,和ORA-16000的解决方法是一样的。我们把所在的数据库容器切换到PDBORCL中,并确认。执行命令

alter session set container=PDBORCL;

select sys_context ('USERENV', 'CON_NAME') from dual;

执行执行新建用户语句:

create user qiujane identified by 123 default tablespace wangwang;

这时候返回成功:

之后赋予权限,这个简单,执行语句:

grant connect, resource to qiujane;

返回成功:

第二步,创建用户并赋予权限我们就完成了,下面进入用户登录(还是会有坑的…)

第三步:用户登录

用户登录不是很简单么,执行语句:

Sqlplus 【用户名】/【密码】

sqlplus qiujane/123 (请注意,这是在退出sqlplus的状态执行这个命令,打开sqlplus并登录)

报错:ORA-01017:invalidusername/password;logondenied

为什么报错呢,因为权限不够,赋权的时候执行的这个语句:

grant connect, resource to qiujane;

其实我也不知道这connect和resource是啥权限,但是可以肯定的是,不包含登录权限。我们把DBA的权限赋予给用户,就能登录了。执行语句:

grant dba to qiujane;(请注意,用sys用户登录,并切换到PDBORC数据库容器执行)

再执行登录命令

sqlplus qiujane/123 as sysdba(注意,赋予dba权限后,qiujane就是管理员了,登录得加上 as dba)

大功告成,谢谢阅读。如果帮助到你了,记得评论鼓励一波哦 ~.~

附:命令总结:

create tablespace [表空间名] datafile '[数据文件路径]' size [文件大小];

create user 【用户名】identified by 【密码】 default tablespace 【表空间】;

sqlplus qiujane/123

select con_id,dbid,NAME,OPEN_MODE from v$pdbs;

alter session set container=PDBORCL;

select sys_context ('USERENV', 'CON_NAME') from dual;1)创建表空间

2)创建用户,并赋予权限3)登录解决的报错有:Ora-01017Ora-00604Ora-16000ORA-65096第一步:创建表空间创建用户时,需要给用户指定表空间。如果没有表空间,需要先创建。执行语句:create tablespace [表空间名] datafile '[数据文件路径]' size [文件大小];create tablespace wangwang datafile '/home/oracle/app/oracle/oradata/qjorcl/wangwang.dbf' size 100M;这时候可能会有如下报错ORA-16000: database open for read-only.Ora-01017、Ora-00604-1首先,我们确认下目前在哪个数据库容器中操作:执行语句:select sys_context ('USERENV', 'CON_NAME') from dual;返回结果:Ora-01017、Ora-00604-2我们用这个语句查下各个数据库容器的权限:select con_id,dbid,NAME,OPEN_MODE from v$pdbs;Ora-01017、Ora-00604-3我们可以看到,我们目前所在的数据库容器的状态为只读状态。为了能创建表空间,我们尝试把该数据库容器的状态改为读写,执行语句:alter pluggable database PDB$SEED open;返回报错:ORA-65017.我也不知道啥原因。Ora-01017、Ora-00604-4我想到一个办法绕过。我们的目的是创建表空间。既然PDB$SEED数据库容器的状态改不了,也不知道啥原因,那我们不死磕。我们跑到PDBORCL数据库容器去创建表空间,请仔细看上图,PDBORCL数据库容器的状态是读写都开了。我们切换到PDBORCL数据库容器中,执行语句:alter session set container=PDBORCL;返回成功:Ora-01017、Ora-00604-5我们再确认下切换后在哪个数据库容器中,执行上面说过的命令:select sys_context ('USERENV', 'CON_NAME') from dual;Ora-01017、Ora-00604-6确认成功,成功切换到了PDBORCL数据库容器中。执行建表空间的语句:create tablespace wangwang datafile '/home/oracle/app/oracle/oradata/qjorcl/wangwang.dbf' size 100M;返回:表空间创建成功。Ora-01017、Ora-00604-7历经磨难与挫败,凭借机智和知识,创建表空间成功~。~下一步,新建用户!第二步:新建用户为了说明在oracle12c新建用户常见的报错:“ORA-65096: invalid common user or role name”,我们把目前所在的数据库容器切换到最初的PDB$SEED,并确认切换成功。执行:alter session set container=PDB$SEED;select sys_context ('USERENV', 'CON_NAME') from dual;返回成功:Ora-01017、Ora-00604-8切换好了,执行新建用户语句:create user 【用户名】identified by 【密码】 default tablespace 【表空间】;create user qiujane identified by 123 default tablespace wangwang;返回;ORA-16000.(…我不是想展示这个报错,想展示ORA-65096: invalid common user or role name)Ora-01017、Ora-00604-9但是没关系,ORA-65096: invalid common user or role name这个报错,和ORA-16000的解决方法是一样的。我们把所在的数据库容器切换到PDBORCL中,并确认。执行命令alter session set container=PDBORCL;select sys_context ('USERENV', 'CON_NAME') from dual;Ora-01017、Ora-00604-10执行执行新建用户语句:create user qiujane identified by 123 default tablespace wangwang;这时候返回成功:Ora-01017、Ora-00604-11之后赋予权限,这个简单,执行语句:grant connect, resource to qiujane;返回成功:Ora-01017、Ora-00604-12第二步,创建用户并赋予权限我们就完成了,下面进入用户登录(还是会有坑的…)第三步:用户登录用户登录不是很简单么,执行语句:Sqlplus 【用户名】/【密码】sqlplus qiujane/123 (请注意,这是在退出sqlplus的状态执行这个命令,打开sqlplus并登录)报错:ORA-01017:invalidusername/password;logondeniedOra-01017、Ora-00604-13为什么报错呢,因为权限不够,赋权的时候执行的这个语句:grant connect, resource to qiujane;其实我也不知道这connect和resource是啥权限,但是可以肯定的是,不包含登录权限。我们把DBA的权限赋予给用户,就能登录了。执行语句:grant dba to qiujane;(请注意,用sys用户登录,并切换到PDBORC数据库容器执行)Ora-01017、Ora-00604-14再执行登录命令sqlplus qiujane/123 as sysdba(注意,赋予dba权限后,qiujane就是管理员了,登录得加上 as dba)Ora-01017、Ora-00604-15大功告成,谢谢阅读。如果帮助到你了,记得评论鼓励一波哦 ~.~附:命令总结:create tablespace [表空间名] datafile '[数据文件路径]' size [文件大小];create user 【用户名】identified by 【密码】 default tablespace 【表空间】;sqlplus qiujane/123select con_id,dbid,NAME,OPEN_MODE from v$pdbs;alter session set container=PDBORCL;select sys_context ('USERENV', 'CON_NAME') from dual;

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论