Skip to main content
1.基础概念
- 数据库
- 存放数据的仓库
- 数据库管理系统
- 科学的组织和存储数据、高效的获取和维护数据
- 数据库系统的组成
- 数据库、dbms、应用系统、数据库管理员
- 硬件要求
- CPU速度、内存大小、IO效率、硬盘容量、网络效率
- DBA要求
- 参与数据库设计的全过程、通过权限管理和完整性约束保证安全、监控数据库运行(发生故障后及时恢复)、定期备份
- 数据模型
- 数据结构ddl、数据操纵dml、数据控制dcl
- 完整性约束
- 实体完整性(PK)、参照完整性(FK)、域完整性(UNIQUE、NULL、CHECK)
- SQL语言
- 访问数据库的接口
2.元数据
- 数据字典
- 由dbms自动生成、并维护的一组表和视图
- 控制文件
- 支撑数据库的运行
- 日志文件
- 记录数据和数据结构的修改
- 数据文件
- 物理划分,存储表空间的内容
3.数据库结构
- 表空间(逻辑)
- 数据库对象在逻辑上划分的容器 (默认创建3个:SYSTEM SYSTEMAUX TEMP)
- 段(逻辑)
- 每个数据库对象,在逻辑上的存储单位(分类:数据段、索引段、临时段、回滚段)
- 区(物理)
- 组成段的基本物理单位
- 块(物理)
- 读写的最小物理单位
- 组成关系
- 数据库 > 表空间 > 数据库对象 > 区 > 块
1.数据定义
CREATE DROP ALTER(定义、删除、修改数据库对象)
2.数据操纵
INSERT DELETE/TRUNCATE UPDATE MERGE(插入、删除、修改库中的数据)
3.数据查询
SELECT(执行顺序:FROM WHERE SELECT)
4.数据控制
5.完整性约束
1.概述
- 本质
- 在SQL语言上扩展的程序设计语言
- 使用
- 下载PL/SQL客户端和oracle客户端,配置PL/SQL客户端,使它连接到oracle客户端上
2.重要元素
- 逻辑单元
- PL/Sql程序块,可独立编译并存储在数据库中,以四种形式存储:函数、过程、包、触发器
- 函数
- 输入参数:任意,返回值:1个;调用:与其它语言一样
- 过程
- 输入参数:任意,返回值:无;调用:直接调用 / execute 过程名
- 包
- 一组相关的【过程、函数、类型、变量】的集合
- 触发器
- 输入参数:无,返回值:无;调用:事件引发
- 记录
- 当成结构体来用,有2种定义方式:显示和隐式
- 集合
- 当成数组来用
- 游标
- 指向集合的指针,作用是遍历集合 %FOUND有记录 %NOTFOUND没有记录 %ROWCOUNT当前记录数 %ISOPEN游标开启
3.语法说明
1.表空间操作
2.各种情况
- 建立数据库时
- 初始化表空间大小
- 表空间充足时
- 动态空间监视:SELECT * FROM DBA_FREE_SPACE 增加数据文件
- 表空间不足时
- 修改数据文件大小 创建新表空间 增加数据文件
- 合理利用存储空间
- 为字段设置合适的数据类型和长度
- 删除无用的对象和表空间
- 删除数据文件
- 归档历史数据并回收相应空间
3.总结
- 主要玩的是表空间、数据文件、数据对象;表空间是房屋格局,数据文件是占地面积,数据对象是屋里的家具;完全看dba怎么分隔,怎么摆放
1.安装Oracle服务端
- 下载(11g)
- http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html 两个文件都下载
- 安装
- 两个文件解压到同一个目录,双击 setup.exe
- 删除
- 安装目录\product\11.2.0\dbhome_1\deinstall, 双击 deinstall.bat
- 注意
- win8下出现很多奇怪的错误,多数情况下右键.exe文件,选择兼容模式和管理员身份
- ORACLE_HOME
- F:\oracle\product\10.2.0\db_1
- 开启两个重要的服务
- xxxListener允许客户端连接 xxxORCL 支持服务端运行
2.安装Oracle客户端
- 下载(32位)
- http://www.oracle.com/technetwork/topics/winsoft-085727.html (由于PL/Sql Developer是32位的,要保持一致)
- 安装
- 直接解压,并创建 \NETWORK\ADMIN\ 目录,放置tnsnames.ora文件
- ORACLE_HOME
- C:\instantclient_10_2
- TNS_ADMIN
- C:\instantclient_10_2\NETWORK\ADMIN\
- NLS_LANG
- SIMPLIFIED CHINESE_CHINA.ZHS16GBK
- 配置tnsnames.ora
- 指定各个数据库的连接字符串
3.相关工具
- 管理
- Oracle Universal Installer 安装卸载数据库管理系统
Database Configuration Assistant 创建/配置/删除数据库
Net Configuration Assistant 网络配置
- 开发
- Sql Plus
Sql Developer
PL/Sql Developer
TOAD
4.安装PL/Sql Developer
- 下载(破解版)
- http://gd.ddooo.com:8081/uuauth/PLSQLDeveloper_13356.rar
- 配置
- Tools\Preferences ...\Connection, Oracle Home:与环境变量一致, OCI Library:指向oci.dll
1.系统用户
- 概念
- 把Oracle比作公司,用户就是它的员工
- 默认用户
- sys as sysdba/sysoper system, sysman as normal
- 登录
- connect 用户名/密码 @服务器地址 as normal/sysdba/sysoper
- 查看登录用户
- show user
- 创建用户
- create user 用户名 identified by 密码
- 启用用户
- alter user 用户名 account unlock
- dba_users / user_users
- 用户相关的信息
- 给用户授权
- grant 权限名 to 用户名
- 撤销用户权限
- revoke 权限名 to 用户名
- dba_sys_privs / user_sys_privs
- 权限相关的信息
- 通常给用户授予两个角色
- grant connect, resource to 用户
2.表空间
- 概念
- 把Oracle比作公司,表空间就是员工的办公区域
- 永久表空间
- 表、视图、存储过程等
- 临时表空间
- 执行时的中间过程,执行完删除
- undo表空间
- 为事务服务,保存修改前的数据
- dba_tablespaces / user_tablespaces
- 表空间相关的信息
- dba_data_files / user_data_files
- 数据文件相关的信息
- 修改默认表空间
- alter user 用户名 default tablespace 表空间
- 创建表空间
- create tablespace 表空间 datafile 'xxx.dbf' size 10m;
- 删除表空间
- drop tablespace 表空间 including contents;
- 增加数据文件
- alter tablespace 表空间 add datafile 'xxx.dbf' size 10m;
- 删除数据文件
- alter tablespace 表空间 drop datafile 'xxx.dbf';
3.表
- 概念
- 二维结构的基本存储单位
- 数据类型
- 字符型 char(n)/nchar(n), varchar2(n)/nvarchar2(n) 数值型 number(有效数字,小数位数), float(n) 日期型 date, timestamp 大对象 blob【二进制存储】, clob【字符串存储】
- 约束
- 非空约束 not null 主键约束 primary key / constraint 【约束名】 primary key(【字段1,2...】) 外键约束 reference 【主表】(【字段】) / constraint 【约束名】 foreign key(【从表字段】) references 【主表】(【主表字段】) on delete cascade 唯一约束 unique / constraint 【约束名】 unique(【字段】) 检查约束 check(【条件】) / constraint 【约束名】 check(【条件】)
- 约束的数据字典
- user_constraints
4.导入/导出
- 概念
- 可以实现数据库的备份/还原,也可以在数据库间传递数据
- 命令行导出
- exp \"用户名/密码@服务名\" file=导出文件.dmp full=y compress=N owner=(用户1,用户2) tables=(表1,表2) query=\"where 过滤条件\"
- 命令行导出表结构(不要数据)
- exp \"用户名/密码@服务名\" file=导出文件.dmp full=y compress=n rows=n
- 命令行导入
- imp \"用户名/密码@服务名\" file=导入文件.dmp ignore=y tables=(表1,表2)
- 导入可能出的问题
- 1)主外键约束: a.先导入主表,再导入子表 b.disable主外键约束,导入后再enable 2)权限不够: 赋予imp_full_database权限 3)imp和exp字符集不同: 修改注册表中的 NLS_LANG 4)数据库连接不上: tnsping 服务名
5.DBA常态步骤
- 创建表空间
- create tablespace 表空间 datafile 'xxx.dbf' size 10m;
- 为应用创建用户
- create user 用户名 identified by 密码 default tablespace 表空间;
- 为用户授权
- grant connect, resource to 用户名; revoke unlimited tablespace from 用户名; alter user 用户名 quota unlimited on 表空间;