oracle 12c创建用户错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 12c创建用户错误相关的知识,希望对你有一定的参考价值。
我安装了oracle 12c 之后,在sqlplus中创建用户的时候会报
”ORA-65096:公用用户名或角色名无效“的错误。我用的用户名都是a 或者 b之类的我确信没有用到关键字。这是啥问题?
创建用户错误一般是语法错误造成,可通过如下方法创建。
如:要创建一个shopping的用户,密码为123456,可用如下语句:
创建后,需要对用户进行赋予相应的权限,如,给shopping赋予connect,resource,dba的权限,可用如下语句:
grant connect,resource,dba to shopping; 参考技术A 12c都用上了,真牛看看这段:
当我们在CDB中使用传统方式创建用户会遇到错误
sys@LUOCS12C> create user luocs identified by oracle default tablespace luocs;
create user luocs identified by oracle default tablespace luocs
*
ERROR at line 1:
ORA-65096: invalid common user or role name
sys@LUOCS12C> !oerr ora 65096
65096, 00000, "invalid common user or role name"
// *Cause: An attempt was made to create a common user or role with a name
// that wass not valid for common users or roles. In addition to
// the usual rules for user and role names, common user and role
// names must start with C## or c## and consist only of ASCII
// characters.
// *Action: Specify a valid common user or role name.
//
根据错误提示了解,在CDB中用户得以C##开头,如下:
sys@LUOCS12C> create user c##luocs identified by oracle default tablespace luocs;
User created.本回答被提问者和网友采纳 参考技术B 数据库安装时,在典型安装步骤中,勾选了‘创建为容器数据库(I)’导致创建用户的时候必须在前面加是C##,比如你要创建用户123,那么用户名只能位‘C##123’
Oracle
Oracle建表(create table)
- Oracle表是Oracle数据库的核心,是存储数据的逻辑基础。
- Oracle表是一个二维的数据结构,有列字段和对应列的数据构成一个数据存储的结构。可以看错行和列的二维表,列代表着Oracle字段(column),行代表着一行数据(即一条数据记录)。
Oracle字段数据类型
VARCHAR2(length)
:字符串类型:存储可变的长度的字符串,length:是字符串的最大长度,默认不填的时候是1,最大长度不超过4000。CHAR(length)
:字符串类型:存储固定长度的字符串,length:字符串的固定长度大小,默认是1,最大长度不超过2000。NUMBER(a,b)
:数值类型:存储数值类型,可以存整数,也可以存浮点型
a代表数值的最大位数:包含小数位和小数点,b代表小数的位数DATA
时间类型:存储的是日期和时间,包括年、月、日、时、分、秒TIMESTAMP
:时间类型:存储的不仅是日期和时间,还包含了时区CLOB
:大字段类型:存储的是大的文本,比如:非结构化的txt文本,字段大于4000长度的字符串。BLOB
:二进制类型:存储的是二进制对象,比如图片、视频、声音等转换过来的二进制对象
create table语句
- Oracle数据库建表是通过create table命令来执行的
- 在student用户下创建一个stuinfo(学生信息表)来讲解create table 命令的使用。
create table STUDENT.stuinfo
(
stuid varchar2(11) not null,--学号:'S'+班号(7位数)+学生序号(3位数)(1)
stuname varchar2(50) not null,--学生姓名
sex char(1) not null,--性别
age number(2) not null,--年龄
classno varchar2(7) not null,--班号:'C'+年级(4位数)+班级序号(2位数)
stuaddress varchar2(100) default '地址未录入',--地址 (2)
grade char(4) not null,--年级
enroldate date,--入学时间
idnumber varchar2(18) default '身份证未采集' not null--身份证
)
Oracle查询(select)
- Oracle表数据进行查询是数据查询语言(DQL),利用SELECT命令从表中进行提取数据
select 命令格式
:select *|列名|表达式 from 表名 where 条件 order by 列名
Oracle插入(insert into)
- insert 命令结构:
insert into 表名(列名1,列名2,列名3.....)values(值1,值2,值3.....);
- 列名可以省略,当列名不填时,默认的是表中的所有列,列的顺序是按照建表的顺序进行排列的。
- 列名的数量和值的数量要一致,并且值的类型要和列的类型一一对应。
- 当表当中某些字段设置了某些约束的情况下,必须按照字段的约束来进行该值的插入
Oracle更新(update)
- Oracle对表数据的更新是使用update命令来执行的。
- update命令结构:
update 表名 set 列名1=值1,列名2=值2,列名3=值3..... where 条件
Oracle删除(delete)
- Oracle中对表数据的删除是利用delete命令进行的
- delete命令结构:
delete from 表名 where 条件
- 当delete from不加where条件时,表示是把表中的数据全部删除。
truncate命令
:truncate命令也是数据删除命令,truncate命令
是直接把Oracle表数据一次删除的命令,truncate命令是一个DDL命令,不同于delete是DML命令。- truncate命令结构:truncate table 表名;
truncate和delete都能删除表中的数据,他们的区别:
- TRUNCATE 是 DDL 命令,命令执行完就提交,删除的数据不能恢复; DELETE 命令是 DML 命令,命令执行完需提交后才能生效,删除后的数据可以通过日志文件恢复。
- 如果表中的数据量较大,TRUNCATE的速度比DELETE速度快很多。
- truncate删除将重新设置表索引的初始大小,而delete不能。
- delete能够触发表上相关的delete触发器,而truncate则不会触发。
- delete删除的原理是一次一条从表中删除数据,并将删除操作当做事物记录在数据库的日志当中,以便进行数据回滚。而truncate是一次性进行数据页的删除,因此执行速度快,但是不能回滚。
- truncate命令是属于DDL命令,一次性删除表中所有数据,并且数据不能恢复,truncate命令慎用。
以上是关于oracle 12c创建用户错误的主要内容,如果未能解决你的问题,请参考以下文章
oracle12c创建用户提示ORA-65096:公用用户名或角色无效