一:体系结构的定义
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;