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.首先,我们确认下目前在哪个数据库容器中操作:执行语句: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/123select con_id,dbid,NAME,OPEN_MODE from v$pdbs;alter session set container=PDBORCL;select sys_context ('USERENV', 'CON_NAME') from dual;