Oracle-创建用户不带C##(Oracle 19c)
由于oracle从12c开始引入了容器(PDB和CDB)、租户的概念。直接连接sysdba用户创建新用户时,会默认在CDB中创建公有用户,用户名需要以“C##”或“c##”开头。
如果用户名开头不想使用“C##”或“c##”,则需要做如下操作。
(1)使用sysdba管理员用户登录
sqlplus / as sysdba
(2)查看数据库是否为 CDB
select CDB from v$database;
说明:
如果得到的结果为YES,那么就是CDB的数据库,否则,则不是。
在CDB容器中创建用户时,前面必须添加C## ,而PDB数据库不需要加前缀。
(3)查看数据库存在容器
show pdbs ;
(3)启动PDB数据库
alter pluggable database ORCLPDB1 open;
如果出现上面的错误提示,说明PDB已经打开。
(4)切换到ORCLPDB容器
alter session set container=ORCLPDB1;
(5)查看当前使用容器
select sys_context ('USERENV', 'CON_NAME') from dual;
(6)创建用户
CREATE USER dsjzx IDENTIFIED BY "Dsjzx123" ;
用户名:dsjzx 密码: Dsjzx123
注意:密码需要使用双引号包裹起来,避免一些异常错误。
使用单引号会报错: ORA-00988: missing or invalid password(s)
不使用双引号报错:ORA-00922: missing or invalid option
(7)给用户授权
GRANT CONNECT,RESOURCE,UNLIMITED TABLESPACE TO dsjzx CONTAINER=current ;
(8)设置表空间
ALTER USER dsjzx DEFAULT TABLESPACE dsjzx_data ;
ALTER USER dsjzx TEMPORARY TABLESPACE dsjzx_temp ;
如果没有表空间和临时表空间,可以使用下面的语句进行创建:
--创建临时表空间 create temporary tablespace dsjzx_temp tempfile '/data/oracledata/dsjzx_pdb_temp.dbf' size 100m autoextend on next 100m maxsize UNLIMITED extent management local; --创建表空间 create tablespace dsjzx_data logging datafile '/data/oracledata/dsjzx_pdb_data.dbf' size 1G autoextend on next 100m maxsize UNLIMITED extent management local Segment space management auto ;
(9)提交
COMMIT;
(10)编辑tnsnames.ora 文件
cd /opt/oracle/product/19c/dbhome_1/network/admin/
vi tnsnames.ora
添加如下内容:
ORCLPDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = hadoop04)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCLPDB1)
)
)
注意:HOST 后面主机名,需要根据自己的主机进行修改
SERVICE_NAME为PDB的名称,根据自己PDB名称修改。
(11)使用普通用户进行登录
sqlplus /nolog
connect dsjzx@orclpdb1/Dsjzx123
说明: conn <username>@<pdbname>/<password>;
(12)查看当前用户的所有表
--查看当前用户的所有表
SELECT table_name FROM user_tables;
--查看所有表
SELECT table_name FROM all_tables;
--例如: 查看用户dsjzx的所有表
SELECT table_name FROM all_tables WHERE owner = 'DSJZX';
注意:用户名区分大小写,默认为大写。
--查看所有用户的表,普通用户可能没有权限
SELECT table_name FROM dba_tables;
--例如: 查看用户dsjzx的所有表
SELECT table_name FROM dba_tables WHERE owner = 'DSJZX';
本文来自博客园,作者:业余砖家,转载请注明原文链接:https://www.cnblogs.com/yeyuzhuanjia/p/18009795