我刚安装了oracle11g,它缺少Scott架构.所以我想自己生成它.我得到了"Scott"架构的sql脚本,但是当我尝试运行查询"创建由老虎识别的用户Scott"时 它显示以下错误:
ORA-65096:oracle中的公共用户或角色名称无效.
基本上它不允许我创建用户"Scott".为什么会这样,我该如何解决我的问题呢?
小智 252
在创建用户运行之前:
alter session set "_ORACLE_SCRIPT"=true;
Run Code Online (Sandbox Code Playgroud)
Lal*_*r B 35
我刚刚安装了oracle11g
ORA-65096:oracle中的公共用户或角色名称无效
不,您已安装Oracle 12c.该错误只能打开12c,不能打开11g.
始终检查最多4个小数位的数据库版本:
SELECT banner FROM v$version WHERE ROWNUM = 1;
Run Code Online (Sandbox Code Playgroud)
您必须已将数据库创建为容器数据库.虽然,您尝试在容器中创建用户,即CDB $ ROOT,但是,您应该在PLUGGABLE数据库中创建用户.
您不应该在容器中创建对象,容器包含可插拔数据库的元数据.您应该使用可插拔数据库进行常规数据库操作.否则,不要将其创建为容器,也不要使用多租户.
最有可能的是,示例模式可能已经安装过,您只需要在可插拔数据库中解锁它们.
例如,如果您创建了可插拔数据库pdborcl:
sqlplus SYS/password@PDBORCL AS SYSDBA
SQL> ALTER USER scott ACCOUNT UNLOCK IDENTIFIED BY tiger;
sqlplus scott/tiger@pdborcl
SQL> show user;
USER is "SCOTT"
Run Code Online (Sandbox Code Playgroud)
我建议阅读,Oracle 12c Post Installation强制步骤
小智 26
在oracle 12c及更高版本中,我们有两种类型的数据库:
容器(CDB)
可插拔数据库(PDB).
如果要创建用户,您有两种可能:
普通用户属于CBD以及当前和未来的PDB.这意味着它可以根据分配的权限在Container或Pluggable中执行操作.
create user c##username identified by password;
本地用户纯粹是仅属于单个PDB的数据库.此用户可能具有管理权限,但这仅属于该PDB.为此,你应该像这样连接到可插拔数据
alter session set container = nameofyourpluggabledatabase;
在那里,你可以像往常一样创建用户
create user username identified by password;
别忘了提及表空间,它在输入时很有用.有关它的更多信息,请参阅此处https://docs.oracle.com/database/121/SQLRF/statements_8003.htm#SQLRF01503
Pad*_*ado 16
如果您的目标是创建一个 Oracle 用户,然后用它来处理您的数据库,您可能需要考虑这样做:
接下来的内容假设您正在本地主机中使用数据库,如果不是,只需将“localhost”更改为您的数据库 uri。
以 sysdba 身份登录:
$ sqlplus sys/<your_admin_pws>@localhost as sysdba
Run Code Online (Sandbox Code Playgroud)
然后执行这个:
create pluggable database MYDATABASE
admin user Scott identified by tiger;
file_name_convert = ('/pdbseed/', '/mydatabase/')
;
alter pluggable database MYDATABASE open;
Run Code Online (Sandbox Code Playgroud)
那么您可能想向用户 Scott 授予一些权限:从 @localhost 注销并以 sysdba 身份重新登录到您的新数据库
$ sqlplus sys/<your_admin_pws>@localhost/MYDATABASE as sysdba
Run Code Online (Sandbox Code Playgroud)
并授予斯科特任何你想要的许可,例如
grant connect to Scott;
grant create view to Scott;
grant create table to Scott;
grant create trigger to Scott;
Run Code Online (Sandbox Code Playgroud)
现在您可以开始了:您有一个空的数据库实例和一个用户。只需通过执行以下操作即可登录
$ sqlplus Scott/tiger@localhost/MYDATABASE
Run Code Online (Sandbox Code Playgroud)
之后我遇到了表空间和配额问题。登录sqlplus sys/<your_admin_pws>@localhost/MYDATABASE as sysdba
您可以列出所有表空间
SELECT TABLESPACE_NAME, STATUS, CONTENTS FROM USER_TABLESPACES;
Run Code Online (Sandbox Code Playgroud)
您可以使用以下命令创建一个新表空间
CREATE TABLESPACE TABLESPACENAME DATAFILE 'tablespace_datafile.dat' SIZE 10M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE 200M;
Run Code Online (Sandbox Code Playgroud)
您可以使用以下命令删除损坏的表空间
Drop tablespace TABLESPACENAME including contents and datafiles;
Run Code Online (Sandbox Code Playgroud)
您可以向 Scott 授予对表空间的“访问”权限
alter user Scott quota unlimited on TABLESPACENAME;
Run Code Online (Sandbox Code Playgroud)
注意quota unlimited可能是一个不好的做法,请检查 oracle 文档以了解如何限制用户的配额
小智 13
SQL> alter session set "_ORACLE_SCRIPT"=true;
SQL> create user sec_admin identified by "Chutinhbk123@!";
Run Code Online (Sandbox Code Playgroud)
小智 9
如果您遇到完全相同的错误,请执行以下操作:
1)打开CMD类型sqlplus并按Enter
2)从系统登录连接
3)运行命令: alter session set“ _ORACLE_SCRIPT” = true;
4)创建另一个用户运行命令: CREATE USER username IDENTIFIED BY password;
然后,您可以添加用户和角色。
在multinant oracle版本12或更高版本下,有两种类型的用户:
c##username identified by passwod;如果您使用可插入数据库(PDBS),请执行以下操作来解决您的问题:
create user c##Scott identified by tiger;
Run Code Online (Sandbox Code Playgroud)
注意:您必须在用户名前添加c## 。
这部分可能会解决您的问题。
更改会话集“_oracle_script”=true;
按照这个:
> sqlplus /nolog
> connect sys / as sysdba
> alter session set "_oracle_script"=true;
> create user user1 identified by 1;
Run Code Online (Sandbox Code Playgroud)
并且用户已创建..