Oracle-创建表空间和用户
1、创建临时表空间
create temporary tablespace dsjzx_temp tempfile '/data/oracledata/dsjzx_cdb_temp.dbf' size 100m autoextend on next 100m maxsize UNLIMITED extent management local;
注意:如果遇到报错:ORA-03206: maximum file size of (4194304) blocks in AUTOEXTEND clause is out of range。
因为db_block 8k 表空间的数据文件大小不能超过32G!如果空间存放的数据大小超过32GB,就需要给表空间额外添加数据文件。
可以查看后面第5节:解决表空间不足的情况。
2、创建数据表空间
create tablespace dsjzx_data logging datafile '/data/oracledata/dsjzx_cdb_data.dbf' size 2G autoextend on next 100m maxsize UNLIMITED extent management local Segment space management auto ;
注意:如果遇到报错:ORA-03206: maximum file size of (4194304) blocks in AUTOEXTEND clause is out of range。
因为db_block 8k 表空间的数据文件大小不能超过32G!如果空间存放的数据大小超过32GB,就需要给表空间额外添加数据文件。
可以查看后面第5节:解决表空间不足的情况。
3、创建用户并指定表空间
create user C##dsjzx identified by 123456 default tablespace dsjzx_data temporary tablespace dsjzx_temp;
--用户名: C##dsjzx , 密码: 123456
--当密码是数字+字母时,必须将密码用双引号引起来
注意:
(1)如果遇到报错:ORA-65096: invalid common user or role name。
原因: sqlplus / as sysdba命令默认登陆的是CDB数据库,而CDB数据库中要求所有新建用户用户名必须以c##
开头,否则就会报以上错误,在PDB内创建用户则没有此要求。
(2)如果遇到报错:ORA-65048: error encountered when processing the current DDL statement in pluggable database ORCLPDB1
ORA-00959: tablespace 'DSJZX_DATA' does not exist.
原因:在CDB内创建用户分配表空间时,所分配的表空间必须在PDB和CDB中同时存在,否则会报错。如果是在PDB与CDB有相同表空间的情况下给CDB用户分配表空间,则会分配CDB的表空间,给用户PDB的表空间并不受影响。所以要在PDB内创建相同的表空间,然后再回CDB创建用户。
解决步骤:
①、查询当前数据库名称
show con_name;
②、查询PDB数据库名称
select name,open_mode from v$pdbs;
③、切换数据库
alter session set container=ORCLPDB1;
④、在PDB中创建CDB相同名称的表空间(注意数据文件不能与之前的重名)。
--创建临时表空间 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 2G autoextend on next 100m maxsize UNLIMITED extent management local Segment space management auto ;
这里和CDB库唯一的区别就是:数据文件名称不一样。
⑤、切换回CDB数据库
alter session set container=CDB$ROOT;
⑥、此时再执行上面的语句,就可以正确创建用户了。
4、给用户授予权限
grant connect,resource,dba to C##dsjzx;
5、解决表空间不足的情况
当Oracle IMP出现【无法为表空间 XX 中的段创建 INITIAL 区】时,通常是由于表空间不足引起的,扩展一下表空间容量或改成表空间自动增长(表空间自动增张可能或导致磁盘涨满,处理起来比较麻烦) 。
具体如何操作还要分情况而定 :
情况1:表空间未设置自动增张,而表空间容量又达到了LimitedSize。
那么现找打表空间文件位置,然后设置自动增长,或 resize。
--1.设置数据文件自动扩展
select * from dba_data_files where TABLESPACE_NAME='XX'; alter database datafile '/opt/oracle/datafile/datafile01.dbf' autoextend on;
--2.修改数据文件大小
alter database datafile '/opt/oracle/datafile/datafile01.dbf' resize 1024M;
情况2:表空间自动增长,而表空间容量达到了MaxSize即(2147483645byte),这个时候表空间已经无法自动增长了,必须添加数据文件。
--查看表空间状态
select * from sys.dba_tablespaces where tablespace_name ='XX';
--为表空间xx添加数据文件
alter tablespace xx add datafile '/opt/oracle/datafile/datafile02.dbf' size 1024M autoextend on next 512M maxsize unlimited
补充:
赋予该用户登录数据库的权限
grant create session to tester;
赋予用户查看outpatient下的视图(或表)v_daily_charge的权限
grant select on outpatient.v_daily_charge to tester;
删除用户
drop user 用户名称 cascade;
查看数据库里面所有用户(前提是你是有dba权限的帐号,如sys,system)
select * from dba_users; (select * from dba_users where TO_CHAR(CREATED,'yyyy-MM-dd')='2018-08-14';)
查看当前用户能管理的所有用户
select * from all_users;
查看当前用户信息
select * from user_users;
创建视图
create or replace view view_name AS SELECT column_1,column_2 ... FROM tablename ;
本文来自博客园,作者:业余砖家,转载请注明原文链接:https://www.cnblogs.com/yeyuzhuanjia/p/16912281.html