Oracle体系结构和用户管理实验

Posted on 2020-06-16 16:15  留不住的时间  阅读(208)  评论(0编辑  收藏  举报

一:体系结构的定义
1:什么是体系结构
是指数据库的组成、工作过程与原理,以及数据在数据库中的组织与管理机制。

2:体系结构中包含的组件
(1)实例
     系统全局区
     
(2)数据库
     数据库是数据的集合,指的是存储数据库信息的一组文件

3:oracle服务器
由实例和数据库文件组成

4:oracle存储结构
(1)物理结构
    主要文件:数据文件、重做日志文件、控制文件
    其他文件:参数文件、归档日志文件、密码文件
(2)逻辑结构
    表空间:永久表空间、临时表空间、撤销表空间
    段:数据段、索引段、回退段、临时段
    区:磁盘空间分配的最小单位
    块:数据库中需i小的数据组织单位
    模式:数据库对象的集合

5:oracle的内存结构
(1)系统全局区SGA
    共享池
    数据缓冲区
    重做日志缓冲区
    大池
    java池
(2)程序全局区PGA    
    不是实例的组成部分
    当用户连接到数据库并创建会话时系统自动分配的,保留每个与oracle连接的用户进程所需的内存。,会话结束,PGA释放

6:oracle进程结构
用户进程:在数据库用户请求连接oracle服务器是启动
服务器进程:用户简历会话并连接oracel实例时启动
后台进程:在oracel实例启动时启动。后台进程包括:进程监控进程、系统监控进程、数据写入进程、日志写入进程、检查点进程

二:用户管理
1:sys:oracle超级管理员,数据字典和视图保存在sys模式中
2:system:oracle默认的数据库管理员,有dba的权限,使用该账户管理其他用户的权限和存储等,但不建议用他创键用户表
3:scott:示范用户

 

三:设置表空间

[oracle@oracle root]$ sqlplus sys/aptech AS SYSDBA

1:创建表空间

SQL> CREATE TABLESPACE aaa

datafile '/u01/app/oracle/oradata/orcl/user01.dbf'

size 10M autoextend on;

2:重设表空间大小

SQL> alter database datafile

'/u01/app/oracle/oradata/orcl/user01.dbf'

resize 80M;

3:向表空间添加数据文件

SQL> alter tablespace aaa

add datafile

'/u01/app/oracle/oradata/orcl/user02.dbf' size 20M

autoextend on;

 

4:将表空间设置为只读

SQL> alter tablespace aaa read only;

将表空间设置为可读写

SQL> alter tablespace aaa read write;

 

四:CDB与PDB的基本操作

1:查询当前所在的容器

SQL> show con_name;

 

CON_NAME

------------------------------

CDB$ROOT

 

2:查询当前都有哪些可插拔数据库

SQL> show pdbs;

 

    CON_ID CON_NAME   OPEN MODE  RESTRICTED

---------- ------------------------------ ---------- ----------

 2 PDB$SEED   READ ONLY  NO

 3 ORCLPDB   READ WRITE NO

 

3:CDB下修改可插拔库orclpdb的打开状态

SQL> shutdown immediate;

SQL> startup

SQL> show pdbs;

 

    CON_ID CON_NAME   OPEN MODE  RESTRICTED

---------- ------------------------------ ---------- ----------

 2 PDB$SEED   READ ONLY  NO

 3 ORCLPDB   MOUNTED

SQL> alter pluggable database orclpdb open;

 

插接式数据库已变更。

 

SQL> show pdbs;

 

    CON_ID CON_NAME   OPEN MODE  RESTRICTED

---------- ------------------------------ ---------- ----------

 2 PDB$SEED   READ ONLY  NO

 3 ORCLPDB   READ WRITE NO

 

注释:

PDB$SEED为模板pdb数据库,为创建其他的pdb数据库提供模板

 

4:CDB下切换会话到PDB(orclpdb)中

SQL> alter session set container=orclpdb;

 

会话已更改。

 

SQL> show con_name;

 

CON_NAME

------------------------------

ORCLPDB

 

4:切换会话到CDB(CDB$ROOT)中

SQL> alter session set container=cdb$root;

 

会话已更改。

 

SQL> show con_name;

 

CON_NAME

------------------------------

CDB$ROOT

 

注释:

CDB就是orcle的一个大容器,可以包含最多个PDB,PDB是连接进CDB的小数据库,可单独对PDB进行开启可关闭,这样只影响此PDB,不影响oracle实例,也不影响其他PDB;也可对CDB进行开启或关闭,此时影响整个实例。

刚安装完oracle后,最好重启一下oracle实例,否则,使用show con_name命令查看当前数据库时,显示的是cbd@root,但是创建用户时,默认是向orclpdb中创建的,因此在找表空间时,会在orclpdb中找。所以,明明是在cbd中创建用户,而且表空间创建在了cbd中,可是系统会提示在orclpbd中找不到指定的表空间。此时可以重启一下oracle实例,再创建即可。

 

五:用户管理

1:在CDB中创建用户(在cdb$root中创建用户名)

此时创建的是公用用户

SQL> alter session set container=cdb$root;

SQL> shutdown immediate;

SQL> startup

 

SQL> CREATE TABLESPACE aaa

datafile '/u01/app/oracle/oradata/orcl/user01.dbf'

size 10M autoextend on;

 

SQL> create user c##zhangsan

identified by aptech

default tablespace aaa

temporary tablespace temp

quota unlimited on aaa

password expire;

 

修改用户口令

SQL> alter user c##zhangsan identified by benet;

 

2:在PDB中创建用户(在orclpdb中创建用户名)

此时创建的是本地用户

SQL> alter session set container=orclpdb;

 

SQL> CREATE TABLESPACE bbb

datafile '/u01/app/oracle/oradata/orcl/user02.dbf'

size 10M autoextend on;

 

SQL> create user lisi

identified by aptech

default tablespace bbb

temporary tablespace temp

quota unlimited on bbb

password expire;

 

修改用户口令

SQL> alter user lisi identified by benet;

 

3:用户权限的设置

SQL> grant connect,resource to lisi;

SQL> revoke connect,resource from lisi;

4:用新用户访问数据库

[oracle@oracle root]$ sqlplus lisi/aptech

 

六:导入数据库

1:sys身份登录oracle

 

2:创建测试账号scott

SQL> create user c##scott identified by scott default tablespace users temporary tablespace temp quota unlimited on users;

 

3:授权

SQL> grant connect,resource to c##scott;

 

4:导入脚本文件

SQL> @/opt/test.sql

 

5:切换到c##scott用户

SQL> conn c##scott/scott

 

6:显示当前用户

SQL> show user;

7:查询改用下的所有的表

SQL> col tname for a10; ##格式化输出,让一行中显示所有的列,调整tname列的宽度为10

SQL> select * from tab;

 

8:查询表的结构

SQL> desc emp;

 

9:查询表中的数据

SQL> col empno for 9999; ##格式化输出,empno列为数字,9999代表宽度为4

SQL> select * from emp;