Oracle12c,CDB和PDB创建表空间和用户,以及Pl/SQL连接PDB

 今天上午刚安装的12c,用来一下午的时间总结出来的,不保猜测的对错,但保证SQL能执行成功。

CDB给用户授权表空间的SQL是从别出整理过来的,因为我是在PDB中创建,没测试过下面代码是否可用。

alter user C##truedata quota unlimited on TRUEDATA; 

这层目录应该是CDB,圈住的是PDB,他们都有各自的表空间。

下面这段话是看到一个大神的话,他应该看了不少oracle相关的书。

  oracle启动的时候,读取ctl文件(叫控制文件),这个控制文件里记录的内容告诉oracle目前这个数据库都是由哪些dbf组成的。然后读取所有的dbf文件,看这些dbf文件的最后修改时间是否和控制文件中记录的一样(同事还要比对日志文件中记录的最后修改时间),如果这些文件的最后修改时间都一致,那么说明oracle上次关闭是正常的,假如不一致,则利用日志文件重现之前的操作(日志文件里记录oracle的所有操作),最终时所有类型的文件的最后修改时间一致,然后打开,相信你已经看出来了,如果ctl文件坏了的话,你的数据实际上全都无法读取,因为oracle已经不知道自己的结构了。因此oracle默认将控制文件复制3份保存,足见其重要性。
因为估计你没有看过书,所以我用了浅显易懂的词来描述,他们在oracle中应该叫:
最后修改时间: SCN(System Change Number)
日志文件:redo log(可能还涉及到Archive 归档文件)
重现操作:roll forward (前滚)(实际上发生SCN不一致时需要进行恢复,在前滚后还要回滚)


用system用户操作选择PDB要选择ORCLPDB,PDB$SEED的模式是只读,无法创建表空间:ORA-00604, ORA-16000: 打开数据库以进行只读访问

--查看CDB容器中包含的PDB容器
select con_id,dbid,guid,name,open_mode from v$pdbs;
--CDB和PDC切换
alter session set container=ORCLPDB;
alter session set container=CDB$ROOT;
show con_name   --查看当前容器

--创建临时表空间
create temporary tablespace TRUEDATA_TEMP
tempfile 'D:\Tools\Oracle_12C\oradata\mhyorcl\orclpdb\TRUEDATA_TEMP.DBF'
size 32m 
autoextend on 
next 32m maxsize 2048m 
extent management local; 
--创建表空间
create tablespace TRUEDATA
logging 
datafile 'D:\Tools\Oracle_12C\oradata\mhyorcl\orclpdb\TRUEDATA.DBF'
size 32m 
autoextend on 
next 32m maxsize 2048m 
extent management local; 

--CDB中给用户授权表空间 CDB创建用户需加上c##(c大小写无所谓)
create user C##truedata identified by 1234;
alter user C##truedata quota unlimited on TRUEDATA; 

--PDB创建用户并指定表空间     
create user truedata identified by 1234
default tablespace TRUEDATA
temporary tablespace TRUEDATA_TEMP;

--给用户授予权限 
grant connect,resource to truedata; 

--删除表空间包括物理
drop tablespace truedata_temp including contents and datafiles;
drop tablespace truedata including contents and datafiles;

用plsql连接,还需要配置D:\Tools\Oracle_12C\product\12.2.0\dbhome_1\network\admin\tnsnames.ora,新建ORCPDB。

猜你喜欢

转载自www.cnblogs.com/mcalm/p/9805456.html