免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3269 | 回复: 0
打印 上一主题 下一主题

ORACLE 10G OCP DBA I 学习记录 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-21 08:43 |只看该作者 |倒序浏览
-------------------------------L1

ORACLE  数据库
ORACLE  APPLICATION SERVER
ORACLE  EBS
ORACLE  EXCHANGE SERVER
ORACLE  Developer Suite--SQL Developer,JDeveloper
ORACLE  服务
--support.oracle.com
全球网格论坛(GCF)
ORACLE 8i--ORACLE 9i--ORACLE 10g
网格计算--网格上多个节点组成一个逻辑单元,对外提供服务
RAC--Real Application Cluster 数据库网格
ASM--Automatic Storage Management  存储网格
OS--Oracle Streams  应用程序网格
EMGC--Enterprise Management Grid Control  网格控制

ORACLE 网格基础结构:
--低成本
--高服务质量
--易于管理

ORACLE 数据库体系结构
由ORACLE实例和ORACLE数据库组成--数据库文件+instance

数据库结构
--数据库文件
控制文件,数据文件,联机重做日志文件,参数文件,备份文件,归档日志文件,口令文件,预警和跟踪日志文件。
redo entry--重做条目
--实例

系统全局区(SGA)System Global Area
共享池--存放执行计划和SQL语句
Streams池
大型池
Java池--保存java的类
数据库缓冲区高速缓存--buffer cache缓存访问的数据。
重做日志缓冲区--log buffer

PGA--Process Global Area--进程全局区--按需分配的进程
用户进程:在数据库用户请求连接到Oracle服务器时启动
服务器进程:可以连接到Oracle实例,它在用户建立会话时启动
后台进程:在启动Oracle实例时启动
Server Process--服务进程

后台进程
SMON--系统监视器--从redo log文件中恢复实例,修复数据库
PMON--进程监视器--定期清理回收内存
DBWn--数据库写进程-->>数据文件
LGWR--日志写进程-->>重做日志文件
CKPT--检查点--每隔一段时间写入控制文件,记录当前实例一旦崩溃,需要哪些redoentry.
ARCn--归档进程-->>LGWR写满日志后,切换日志时,启动ARCn进程

--物理结构
数据文件
OS块

--逻辑结构
数据库-->表空间-->段-->区-->ORACLE数据库
      -->方案Schema--某一个用户下的所有对象的集合

段-->segment--就是表的存储单元
区-->extent
数据块--data block--2k,4k,8k,16k,32k


一个表空间可以存放多个物理文件,一个数据文件只能属于一个表空间
不需要关心物理文件的大小,只要管理表空间的大小

SYSTEM和SYSAUX表空间是必须存在的表空间
这些表空间是在创建数据库时创建的
这些表空间必须联机
SYSTEM 表空间用于核心功能
辅助的SYSAUX表空间用于附加的数据库组件

缓冲区状态:已连接、干净、空闲或未使用、脏数据



-------------------------------L2
1.确定数据库服务器硬件
2.安装ORACLE软件
3.制定数据库和安全策略的计划
4.创建、移植和打开数据库
5.备份数据库
6.登记系统用户和制定用户访问ORACLE NETWORK的计划
7.实施数据库设计
8.从数据库故障中进行恢复
9.监视数据库性能

用于管理oracle数据库的工具
Oracle Universal Installer
Database Configuration Assistant
Database Upgrade Assistant
Oracle Net Manager
Oracle Enterprise Manager
SQL*Plus和iSQL*Plus
Recovery Manager
Oracle Secure Backup
数据泵
SQL*Loader--文本文件加载到数据库的表中
命令行工具

emctl
lsnrctl
isqlplusctl
--内存要求
1GB用于Database Control实例
--磁盘空间要求
1.5GB的交换分区
在/tmp目录保留400MB的磁盘空间
1.5GB至3.5GB用于Oracle文件
1.2GB用于预配置数据库
2.4GB用于快速恢复区

xhost+
任何客户端都有权限访问服务器端的图形界面
--灵活体系结构(OFA)--命名规范
mount point
/u01,/u02,/u03
/d01,/d02,/d03

ORACLE_BASE--OFA的ORACLE目录结构基础
/u01/app/oracle

ORACLE_HOME--包含ORACLE软件的目录
$ORACLE_BASE/product/9.2.0/db_1
$ORACLE_BASE/product/10.2.0/db_1
$ORACLE_BASE/product/11.1.0/db_1

ORACLE_SID--初始实例名称(默认为orcl)
$ORACLE_BASE/oradata/orcl
$ORACLE_BASE/oradata/prod

control file:control01.ctl,control02.ctl...
log file:redo01.log,redolog02.log,redo03.log...
data file:users01.dbf,users02.dbf,users03.dbf...

NLS_LANG--语言、地区和客户机的字符集设置

oraInventory--信息库目录,记录当前主机上安装了哪些ORACLE产品。
.bash_profile

--数据库存储选项
文件系统
自动存储管理
裸设备
--数据管理选项
Enterprise Manager Grid Control
Enterprise Manager Data Control

installActions.log 文件查看安装验证

NLS_LANG 设置语言

orainstRoot.sh --creates the Inventory pointer file

Optimal Flexible Architecture

-----------------------------L3
--DBA计划
数据库的逻辑存储结构及其物理实施
整体数据库设计
数据库备份策略

数据仓库
事务处理数据库
通用数据库

使用DBCA建立数据库
.bash_profile

客户定制数据库--不包含数据文件
事务处理类型
推荐类型
数据仓库

Global Database Name
SID

是否使用图形界面管理数据库
Grid Control
Database Control

为用户设置密码

使用文件系统管理数据库文件
以组为单位进行日志切换

保存数据库创建为模板,可以生成数据库脚本

管理模板
从一个新的模板修改为自己需要的模板
从一个存在的数据库数据结构创建新的模板
从一个存在的数据库数据结构创建新的模板,并包含数据

ifconfig
cat /etc/hosts

-------------------------------L4

数据库实例
监听程序
管理界面
--Database Control
--Grid Control

emctl status dbconsole--查看
emctl stop dbconsole--停止
emctl start dbconsole--启动

netmgr--网络配置
lnsrctl start--启动监听器

SQL*Plus和iSQL*Plus
SQL*Plus主要用于管理
iSQL*Plus用于查询

alter user hr identified by hr account unlock;

isqlplusctl start--启动iSQL*Plus

SYSDBA连接到iSQL*Plus要在OC4J用户管理器中设置该用户
1.创建一个用户
2.给该用户授予webDba角色

vi emp.sql--建立一个脚本
sqlplus hr/hr @emp.sql--启动sqlplus的时候执行一个脚本

--初始化参数文件
文本文件--pfile
二进制文件--spfile
$ORACLE_HOME/dbs/init.ora   spfileorcl.ora

从pfile创建spfile
create spfile='/home/oracle/spfiletemp.ora' from pfile='/home/oracle/inittemp.ora';

--查看和修改初始化参数
用了spfile以后,就不能用文本编辑器去修改初始化参数的值
用图形界面进管理页面

show parameter open_cursors
alter system set open_cursors=300 scope=both

show parameter processes
alter system set processes=200 scope=spfile
当前内存的processes还是150,要重启数据库才可以

关闭数据库
shutdown abort--下次重启时,需要进行数据库恢复
shutdown immediate--当前事务强制回滚,当前连接的session全部kill掉,建立CKPT点,内存中的数据写入数据库
shutdown transactional--等到当前事务结束再结束。
shutdown normal--等待事务结束,等待连接的用户退出后才可以关闭数据库

发出shutdown语句,任何新的连接都不可能建立了。

ps -ef|grep smon 查看数据库进程


启动数据库的阶段

startup nomount
1.到$ORACLE_HOME/dbs下找初始化参数文件:
spfile<SID>.ora
spfile.ora
init<SID>.ora
init.ora
2.启动实例
3.启动后台进程
4.打开告警日志文件,alter_<SID>.log
为何要进入到nomount阶段?
--为了重建控制文件

startup nomount
1.根据control_files这个初始化参数文件,去找到所有的控制文件
2.打开所有的控制文件。
为何要进入到mount阶段?
--备份,恢复数据库,设置归档模式,设置闪回模式,转移数据文件的路径,转移联机日志文件的路径

alter database open
1.根据控制文件里所记录的数据文件的路径和名称找到所有的数据文件,并打开数据文件
2.根据控制文件里所记录的联机日志文件的路径和名称找到所有的联机日志文件,并打开联机日志文件


启动ORACLE数据库实例
SHUTDOWN


动态性能视图--以表结构的形式把内存的活动表现出来。
select sql_text,executions from v$sql where cpu_time > 20000;

select * from v$session where machine='EDRSR9P1' and logon_time > SYSDATE - 1;

select sid,ctime from v$lock where block > 0;

这些视图由SYS用户拥有
不同的启动阶段可以使用不同的视图
--实例已加载时
--数据库已装载
--数据库已打开
通过查询V$FIXED_TABLE可以查看所有视图名称
这些视图又称为'V$视图'
 数据是动态的,因此这些视图不保证读取一致性。


LOG_BUFFER is a static parameter

V$PARAMETER displays the currently in effect parameter values

MOUNT --renaming of data files  --configuring the database in ARCHIVELOG mode


 -------------------------------L5
存储结构
1.物理结构
OS块,OS文件


2.逻辑结构
数据库
表空间


ORACLE数据块--块头,空闲空间,行数据

表空间:
--只能属于一个数据库
--包括一个或多个数据文件
--可进一步划分为逻辑存储单元

数据文件
--只能属于一个表空间和一个数据库
--是存储方案对象数据的资料档案库

ORACLE 管理文件 OMF
参数
DB_CREATE_FILE_DEST--定义数据文件和临时文件的默认文件系统目录的位置
DB_CREATE_ONLINE_LOG_DEST_n--定义重做日志文件和控制文件的创建位置
DB_RECOVERY_FILE_DEST--定义RMAN备份位置

SHOW PARAMETER DB_CREATE
ALTER SYSTEM SET DB_CREATE_FILE_DEST='/u01/oradata'
CREATE TABLESPACE tbs_1

表空间中的空间管理

本地管理的表空间
--在表空间中管理空闲区
--使用位图记录空闲区
--每一位对应一个块或一组块
--位值指示空闲区或占用区
--建议使用本地管理的表空间

字典管理的表空间
--由数据字典管理空闲区
--分配或取消分配区后会更新相应的表
--支持这些表空间仅仅是为了向后兼容

desc fet$--可用的连续空间
desc uet$--已经使用的连续空间

数据文件头,分为8个块,前2个数据块用来放数据文件的源信息,后6个用来放BITMAP比特位
show parameter db_block_size
每个比特位对应64K的空间,用0和1来组成BITMAP

select * from dba_tablespaces
select * from v$tablespace

创建,修改,删除表空间

扩大数据库
--创建新表空间
--将数据文件添加到现有表空间
--增加数据文件的大小
--动态扩展数据文件

自动存储管理
--是可移植的高性能集群文件系统
--可管理ORACLE数据库文件
--可将数据分布到各个磁盘中以平衡负载
--可镜像数据
--解决存储管理的许多问题

逻辑卷管理器管理硬盘
将几个硬盘组成一个磁盘组,在磁盘组中划分为几个逻辑卷,在逻辑卷上创建文件系统,在文件系统上建立MOUNT点,/u01,/u02

RAW--性能高
FS--易管理
ASM--结合了RAW和FS的优点,又克服了各自的缺点

ASM优点
--条带化文件而不是逻辑卷
--提供联机磁盘重新配置和动态重新平衡功能
--允许调整重新平衡速度
--以每个文件为基础提供冗余
--仅支持ORACLE数据库文件
--可识别集群
--可自动安装

ASM概念
--ASM磁盘组
--ASM文件
--ASM磁盘
--分配单元AU 1M
--物理块 512byte

------------------------------------L6
每一个数据库用户帐户包括:

唯一的用户名
验证方法
默认表空间
临时表空间
用户概要文件
使用者组--CONSUMER GROUP
锁定状态

SYS帐户
--授予DBA角色
--具有ADMIN OPTION的所有权限
--执行启动,关闭和某些命令时需要使用的帐户
--用户数据字典
--拥有自动工作量资料档案库(AWR)

SYSTEM帐户授予了DBA角色
这两个帐户不在例行程序操作中使用

认证方式
--密码认证
--外部认证--由操作系统来认证
show parameter os_authent_prefix
ops$
connect /
--Globle认证--由OID服务器专门用来管理用户身份

CREATE USER "TRAIN" PROFILE "DEFAULT" IDENTIFIED BY "ORACLE" ACCOUNT UNLOCK GRANT "CONNECT" TO "TRAIN";

CONNNECT --创建sesison的权限

管理员验证
操作系统安全性
--DBA必须具有创建或删除文件的操作系统权限
--普通数据库用户不应有创建或删除数据库文件的操作系统权限

管理员安全性
通过口令文件或操作系统SYSDBA和SYSOPER连接
--口令文件验证会按名称记录DBA用户
--操作系统验证并不记录具体用户
--对于SYSDBA和SYSOPER,操作系统验证有限于口令文件验证。

sqlplus / as sysdba;
show user;
id;

查看密码文件
orapw+sid  orapwdorcl

ALTER USER "TRAIN" ACCOUNT LOCK;--锁定帐户

权限
用户权限有两类
--系统权限:允许用户在数据库中执行特定的操作
--对象权限:允许用户访问和操纵特定的对象

SELECT * FROM SYSTEM_PRIVILIEGE_MAP ORDER BY 2;
GRANT CREATE TABLE TO "TRAIN" WITH ADMIN OPTION;
ALTER USER "TRAIN" QUOTA 1M ON "USERS";

要授予对象权限,请执行以下任务:
--选择对象类型
--选择对象
--选择权限

GRANT SELECT ON "HR.EMPLOYEES" TO "TRAIN";

REVOKE CREATE TABLE FROM JEFF;

系统权限没有连带权限
对象权限有连带权限


角色的作用
--简化了权限的管理
--动态进行权限管理
--有选择地使用权限

预定义角色
--CONNECT
--RESOURCE
--SCHEDULER-ADMIN
--DBA
--SELECT_CATALOG_ROLE

CREATE ROLE "R1";--R1连接权限
CREATE ROLE "R2" IDENTIFIED BY "ORACLE";--R2建表权限

SET ROLE R2 IDENTIFIED BY ORACLE;

--默认为R1角色权限,启用R2的角色才可以创建表

PROFILE--现在主要用来管理密码

提供的口令验证函数:VERIFY_FUNCTION
使用提供的口令验证函数可强制是指一下口令限制:
--最小长度是四个字符
--口令不能与用户名相同
--口令必须至少包含一个字母,一个数字和一个特殊字符
--口令与前一口令必须有三个字母不相同
提示:使用此函数作为模板可以创建自己的自定义验证


---------------------------L7

命名数据库对象
名称长度必须为1-30个字节,但以下情况例外
--数据库名称限制为8个字节
--数据库连接名最长为128个字节
不带引号的名称不能是ORALCE保留字
不带引号的名称必须以数据库字符集中的字母字符为开头
不建议使用带引号的名称

公用数据类型
CHAR--固长字符
VARCHAR--变长字符
DATE
NUMBER

五种约束
--NOT NULL
--UNIQUE
--PRIMARY KEY=NOT NULL+UNIQUE KEY
--FORENGN KEY
--CHECK

违反约束条件
--插入重复的主键值
--删除引用完整性约束条件中的子行的父行
--更新列值后超过了检查约束条件的范围

约束条件状态
--DISABLE NOVALIDATE--等于没创建这个约束
--DISABLE VALIDATE--矛盾状态,不能进行DML
--ENABLE NOVALIDATE--不对数据进行校验
--ENABLE VALIDATE--默认状态


检查约束条件的时机
--若是非延迟约束条件,在执行语句时
--若是延迟约束条件,在发出COMMIT时

ALTER TABLE T11 ADD CONSTRAINT CHECK_T11 CHECK(QTY>0);
ROLLBACK;
ALTER TABLE T11 DROP CONSTRAINT CHECK_T11;

ALTER TABLE T11 ADD CONSTRAINT CHECK_T11 CHECK(QTY>0)
DEFERRABLE INITIALLY DEFERRED;--延迟校验约束
延迟校验记录在提交时才进行验证

删除一个表将会删除
--数据
--表结构
--数据库触发器
--相应的索引
--关联的对象权限

DROP TABLE 语句的可选子句

--CASCADE CONSTRAINTS:相关的引用完整性约束条件
--PRUGE:无法闪回
10g版本开始删除一个表,只是把一个表改了名字而已,实际并没有删除
DROP TABLE hr.employees PURGE;--彻底删除了这个表,无法在闪回区找回

TRUNCATE TABLE hr.employees
--截断表会使表的行数据不可用,而且可选择释放占用空间
--会截断相应的索引
--是DDL操作,速度很快,只是修改数据字典的内容

索引
表中每一条记录都有一个固定的ROWID--指定了数据的物理位置

索引类型
--B树索引采用二进制树的形式,它是默认的索引类型
索引条目头
键列长度
键列值
ROWID

B树--平衡树
每个叶子节点到根节点的距离是一致的。

--在位图索引中,每一个建立索引的独特值都有一个位图,每一行的位置表示一行,
其中可能包含(也可能不包含)索引值。
对于低基数列而言,这是最佳结构。--BITMAP

  键   开始ROWID    结束ROWID     位图
<BLUE  10.0.3       12.8.3        1000100100010010100>

主要用于数据仓库
缺点--不能支持并发的DML

索引选项
--唯一索引可以确保每一个索引值是唯一的
--索引可按升序排列或降序排列存储其键值
--反向关键字索引以反向顺序存储其键值字节  REVERSE KEY INDEX
--组合索引是基于所列的索引
--基于函数的索引是以函数返回值为基础的索引
--压缩索引会删除重复的关键字值

CREATE INDEX IDX_EMP ON HR.EMPLOYEES(LAST_NAME,FIRST_NAME);

CREATE VIEW V_LC AS
SELECT LOCATION_ID ,COUNTRY_NAME
FROM LOCATION L,COUNTRIES C
WHERE L.COUNTRY_ID=C.COUNTRY_ID AND C.COUNTRY_ID IN ('AU','BR');

使用视图降低复杂性

序列是按照某种模式自动生产整数的一种机制
--序列具有名称,指出了请求下一个值时引用序列的方式
--序列不与任何特定的表和列相关联
--增加方式可为升序,,也可为降序
--达到限额时,序列可循环

临时表
--会话或事务处理结束时会自动清楚存储数据
--为每个会话提供专用数据存储
--可供所有会话使用,而不影响各个会话的专门数据


CREATE GLOBAL TEMPORARY TABLE employees_temp
ON COMMIT PRESERVE ROWS
AS SELECT * FROM employees;

CREATE GLOBAL TEMPORARY TABLE employees_temp
ON COMMIT DELETE ROWS
AS SELECT * FROM employees;

--在COMMIT或断开SESSION时临时表会被删除

使用TRUNCATE TABLE 命令删除表内容
在临时表中可创建下列项
--索引
--视图
--触发器

--查看临时表
SELECT TABLE_NAME,TEMPORARY,DURATION
FROM USER_TABLES
WHERE TABLE_NAME LIKE '%TEMP';

数据字典:概述
SELECT * FROM dictionary;

数据字典视图

名称        谁可以查询    内容            下列项的子集    注
DBA_        DBA        一切对象        无        可能有其他权限DBA使用的列    
ALL_        每个用户    用户有权查看的一切对象    DBA_视图    包括用户拥有的对象
USER_        每个用户    用户拥有的一切对象    ALL_视图    除了缺少OWNER列,通常与ALL_相同,某些视图有像PUBLIC别名一样的简称

desc all_tables;
desc dba_tables;
desc user_tables;


---------------------L8

使用MERGE命令可以通过单个命令同时INSERT和UPDATE数据

管理PL/SQL对象
--找出存在问题的PL/SQL对象
--建议适当的PL/SQL用法
--将PL/SQL对象装入到数据库中
--协助PL/SQL开发人员诊断故障

PL/SQL对象
--程序包
--程序包体
--类型主体
--过程
--函数
--触发器

内置程序包
ORACLE数据库带有350多个内置PL/SQL程序包,可用于
--管理和维护实用程序
--扩展功能

desc dbms_output;

触发器
DML--INSERT,UPDATE,DELETE
DDL--CREATE,DROP,ALTER,GRANT,REVOKE,RENAME
数据库--LOGON,LOGOFF,STARTUP,SHUTDOWN,SERVERERROR

锁定
--使用锁定可防止多个会话同时更改同一数据
--锁定是在指定语句的最低可能级别自动获取的
--锁定不会升级

--锁的模式
共享锁
排他锁

--锁的类型
行级别锁
表级别锁

锁定机制

高级数据并发处理
--执行插入更新和删除时使用行级锁定
--查询不需要任何锁定
自动队列管理
在事务处理(使用COMMIT或ROLLBACK操作)结束之前一直持有锁定


每个DML事务处理必须获取两个锁定
--针对正在更新的一行或多行的EXCLUSIVE行锁定
--针对包含这些行的表的ROW EXCLUSIVE表级锁定

入队机制用于跟踪
--等待锁定的会话
--请求的锁定模式
--请求锁定的会话的顺序

锁定冲突的可能原因
--未提交更改
--长时间运行事务处理
--不必要的高锁定级别

--检测锁定冲突
select sid,type,lmode,request from  v$enqueue_lock;--查看锁定的等待队列

select sid,type,lmode,request from  v$lock;--查看已获得锁的Session

--使用SQL解决锁定冲突
SELECT SID,SERIAL#,USERNAME
FROM V$SESSION
WHERE SID IN(SELECT BLOCKING_SESSION FROM V$SESSION);

ALTER SYSTEM KILL SESSION '144,8982' IMMEDIATE;



--------------------------L9

--数据操纵语言DML
INSERT
UPDATE
DELETE
MERGE
--DML始终作为事务处理的一部分执行,它可以:
回退,使用ROLLBACK命令
提交,使用COMMIT命令

还原数据是:
--原始的,修改前的数据副本
--为更改数据的每个事务处理而捕获
--至少保留到事务处理结束
--用于支持:
回退操作
读取一致性和闪回查询
从失败事务处理中恢复

UPDATE T SET C1='A' WHERE C1='B';
1.找到包含C1='B'的数据块,假设10#,20#
2.找到一个可用的undo block,假设3#,200#
3.把改变前的旧值‘B’放入undolock里
4.由于修改了数据块,所以要产生redo entry来描述这个变化
redo_addr SCN file# block# operation
5.把改变前的新值‘A’放入数据块10#,120#
6.由于修改了数据块,所以要产生redo entry来描述这个变化

Interest Transaction List (ITL)

ITL_NBR      Tran_id       SCN           flag     undo_block_addr
1         XXX         9:00     -U-        10#,20#

每个进程在执行SQL的时候都会记录执行SQL时候的SCN号

其他的进程在执行的时候会比较其他的进程执行时候的SCN号

事务处理和还原数据
--每个事务处理只分配给一个还原段
--一个还原段可以用时 服务多个事务处理

还原信息存储在还原段中,还原段又存储在还原表空间中。
还原表空间:
--仅用于还原段
--包含特殊的恢复注意事项
--只能与单个实例相关联
--要求在任意指定时间,一个给定的实例只能有一个是当前可写还原表空间。

SHOW PARAMETER UNDO_;
还原数据与重做数据
        还原UNDO            重做REDO
记录        如何还原更改            如何重新生成更改
用于        回退,读取一致性        向前滚动数据库更改
存储于        还原段                重做日志文件
避免        在多用户系统中读取不一致    数据丢失

还原通常不需要管理,要监视的范围包括:
--还原表空间中的空闲空间
--“快照太旧”错误

管理还原应包括防止:

--在还原表空间中出现空间错误
正确调整还原表空间的大小
确保定期提交大型事务处理
--"快照太旧"错误
配置适当的还原保留间隔
正确调整还原表空间的大小
考虑确保还原保留期

使用自动还原管理:
UNDO_MANAGEMENT=AUTO
UNDO_TABLESPACE=UNDOTBS1

配置还原保留期
UNDO_RETENTION    INTEGER   900
UNDO_RETENTION指定要保留的已提交还原信息量(秒数)
必须设置这个参数的最合适情况是:
--还原表空间启用了AUTOEXTEND选项
--要设置LOB的还原保留期
--要确保保留期

--------------------------L10

责任分离
必须信任具有DBA权限的用户.请考虑一下两个因素:
--滥用信任
--审计线索保护受信任的职位
必须共同分担DBA责任
一定不能共享帐户
DBA和系统管理员必须由不同人员担任
分离操作员与DBA的责任

安全系统可确保所包含的数据的机密性。安全性包括以下几个方面
--限制对数据和服务的访问
--验证用户
--监视可疑活动

最小权限原则
--只在计算机上安装所需软件
--只在计算机上激活所需服务
--只允许需要访问的用户访问操作系统和数据库
--限制对ROOT或管理员帐户的访问
--限制对SYSDBA和SYSOPER帐户的访问
--只允许用户访问完成工作所需的数据库对象

应用最小权限原则
保护数据字典
07_DICTIONARY_ACCESSIBILITY=FALSE
从PUBLIC撤销不必要的权限
REVOKE EXECUTE ON UTL_STMP,UTL_TCP,UTL_HTTP,UTL_FILE FROM PUBLIC;
限制用户可访问的目录
限制具有管理权限的用户
限制远程数据库的验证
REMOTE_OS_AUTHENT=FALSE

SHOW PARAMETER AUTHENT;

监控可疑活动

监视或审计是安全过程的一部分。请复查下列各项
强制性审计--STARTUP,SHUTDOWN,以SYSDBA连接到数据库
SHOW PARAMETER AUDIT;
标准数据库审计
基于值审计
细粒度审计(FGA)
DBA审计


标准数据库审计
SHOW PARAMETER AUDIT_TRAIL;
alter system set audit_trail=db scope=spfile;
1.启用数据库审计
2.指定审计选项--审计选项
3.复查审计信息--审计线索
4.维护审计线索

使用AUDIT_TRAIL启用数据库审计
AUDIT_TRAIL=DB,EXTEND--->DBA_AUDIT_TRAIL视图
STATEMENTID,ENTRYID--->DBA_FGA_AUDIT_TRAIL视图

审计SQL语句
AUDIT table;
审计系统权限
AUDIT select any table,create any tergger;--用户访问了别人的表才会生成审计信息
AUDIT select any table BY hr BY SESSION;

审计对象权限
AUDIT ALL on hr.employees;
AUDIT UPDATE,DELETE ON hr.employees BY ACCESS;

关闭审计
NOAUDIT DELETE ON HR.JOBS;

SHUTDOWN IMMIDEATE;
ALTER SYSTEM SET AUDIT_TRAIL=NONE SCOPE=SPFILE;
STARTUP OPEN;

基于值的审计
用户进行了更改--触发器触发--触发器创建了审计记录--在审计线索表中插入审计记录


细粒度审计
根据内容监视数据访问
审计SELECT,INSERT,UPDATE,DELETE和MERGE
可链接到表和视图,也可链接到一列或多列
可能会触发过程
使用DBMS_FGA程序包进行管理

FGA策略
定义:
--审计标准
--审计操作
使用DBMS_FGA.ADD_POLICY创建的

begin
dbms_fga.add_policy(
object_schema=>'HR',
object_name=>'EMPLOYEES',
policy_name=>'audit_emps_salary',
audit_condition=>'department_id=10',
audit_column=>'SALARY',
handler_schema='secure',
handler_module=>'log_emps_salary',
enable=>TRUE,
statement_types=>'SELECT');
end;

关闭FGA审计
begin
dbms_fga.drop_policy(
object_schema=>'HR',
object_name=>'EMPLOYEES',
policy_name=>'audit_emps_salary',
);
end;


审计的DML语句:注意事项
--如果满足FGA谓词并且引用了相关列,则会审计记录
--不管指定列是什么,都会审计DELETE语句
会审计MERGE语句以及基础INSERT或UPDATE生成语句

FGA准则
--要审计所有的语句,请使用null条件
--策略名必须唯一
--创建策略时,审计的表或视图必须已经存在
--如果审计条件语法无效,则访问审计对象时会发生ORA-28112错误
--如果表中不存在审计的列,则不会审计任何行
--如果时间处理程序不存在,则不会返回任何错误但仍会创建审计记录

DBA审计
具有SYSDBA或SYSOPER权限的用户可在关闭数据库时进行连接
--审计线索必须存储在数据库外部
--总是审计以SYSDBA或SYSOPER身份进行的连接
--可使用AUDIT_SYS_OPERATIONS启用SYSDBA或SYSOPER操作的附加审计
--可使用AUDIT_FILE_DEST控制审计线索

ALTER SYSTEM SET AUDIT_SYS_OPERATIONS=TRUE SCOPE=SPFILE;
ALTER SYSTEM SET TRACEFILE_IDENTIFIER=TRAIN SCOPE=SPFILE;--在生成审计文件前加上TRAIN的标记
关闭DBA审计
ALTER SYSTEM SET AUDIT_SYS_OPERATIONS=FALSE SCOPE=SPFILE;
ALTER SYSTEM SET TRACEFILE_IDENTIFIER='' SCOPE=SPFILE;

维护审计线索
应该维护审计线索。遵循下列最佳方案准则
--复查和存储旧记录
--避免出现存储问题
--避免记录丢失



-------------------------L11

ORACLE NET SERVICES
应用程序ORACLE NET<------监听程序----->数据库服务器

<ORACLE_HOME>/network/admin/listener.ora

要建立客户机或中间层连接,oracle net要求客户机了解下列事件
--运行监听程序的主机
--监听程序监视的端口
--监听程序使用的协议
--监听程序处理的服务名

用户进程---------->服务器进程PGA------------->数据库

配置和管理ORACLE NETWORK的工具
--ENTERPRISE MANAGER的NET SERVICES ADMINISTRATION页
--ORACLE NET MANAGER
--由ORACLE UNIVERSAL INSTALLER 启动的ORACLE NET CONFIGURATION ASSISTANT(NETCA)
--命令行

lsnrctl start;
lsnrctl stop;
lsnrctl status;

alter system resgiter;--动态注册服务

数据库服务注册

SHOW PARAMETER SERVICE_NAMES;
ALTER SYSTEM SET SERVICE_NAMES='SALES,PUR,FIN,HR';--由PMON进程动态注册
SHOW PARAMETER DOMAIN;

静态注册
编辑listener.ora

命名方法
ORACLE NET支持多重解析连接信息的方法
--简便连接命令:使用TCP/IP连接字符串
--本地命名:使用本地配置文件
--目录命名:使用符合LDAP的集中式目录服务器
--外部命名:使用支持的非ORACLE命名服务

简便连接
--默认情况下已启动
--不需要进行客户机配置
--仅支持TCP/IP(无SSL)
--不支持高级连接选项,如:
连接时故障转移
源路由
负载均衡

connect hr/hr@book.oracle.com:1521/hr.oracle.com

本地命名
tnsnames.ora


测试ORACLE NET 连接性

tnsping使用程序用于测试oracle net服务别名
--确保客户机与oracle net监听程序之间的连接性
--不验证所请求的服务是够可用
--支持简便连接名称解析
tnsping book.oracle.com:1521/hr.oracle.com
--支持本地和目录命名
tnsping orcl

用户会话:专用服务器





--------------------------L12

PROACTIVE MAINTENANCE
自动工作负载信息库

每隔一个小时对数据进行一次快照
抓取每个小时的数据库运行情况。

AWR:AUTOMATIC WORKLOAD REPOSITORY

BASELINE

METRIC:累计统计信息的变化速率

STATISTICS:数据库的活动情况

THRESHOLD:设定一个上限

优化器统计信息

--静态的.
--10g开始自动创建一个JOB,去收集每个表的优化统计信息
--自动收集

参数:STATISTICS_LEVEL   值:BASIC,TYPICAL,ALL
控制整个数据库的自动化功能,缺省为TYPICAL

视图:V$STATISTICS_LEVEL
DESC V$STATISTICS_LEVEL
SELECT STATISTICS_NAME,ACTIVATION_LEVEL FROM V$STATISTICS_LEVEL ORDER BY 2;

AWR:每隔一个小时对数据库进行一个快照
SGA----MMON----AWR
快照管理7天

AWR SNAPSHOT SETS:AWR快照生成
DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE(
    start_snap_id IN NUMBER,
    end_snap_id IN NUMBER,
    baseline_name IN VARCHAR2);

MMON进程,DBMS_WORKLOAD_REPOSITORY包,200多张表三部分组成

exec DBMS_WORKLOAD_REPOSITORY.create_snapshot;

ADDM:AUTOMATIC DATABASE DIAGNOSTIC MONITOR
自动数据库诊断监控进程
--在每次收集完快照后自动运行
--监控实例,诊断性能问题
--存储结果在AWR的表中


分析最近两个快照之间的性能问题,是否有性能瓶颈,有的话会把这个瓶颈交给ADVISORS去调整。
如果ADVISORS有优化方案的话。就会执行优化,放入AWR的表中

ADDM 建议

Advisory Framework 顾问框架

--SQL TUNING ADVISOR--优化SQL语句
--MENORY--内存管理
PGA,SGA
--SQL ACCESS ADVISOR--优化DML
--SPACE--表空间
UNDO ADVISOR,SEGMENT ADVISOR
--BACKUP--备份恢复
MTTR ADVISOR

DBMS_ADVISOR 包

CREATE_TASK,
SET_TASK_PARAMETER,
EXECUTE_TASK,
GET_TASK_REPORT,
......

SERVER-GENERATED ALERTS
表空间利用率告警

设置告警上限

自动维护任务
--数据库创建完后自动生产一些JOB



-------------------------L13

性能管理

FAST_START_MTTR_TARGET to 0  ---Automatic tuning of checkpoint would be disabled.





-------------------L14

管理员的职责
--尽量便面数据库出现故障
--提高平均故障间隔时间MTBF
--减少平均恢复时间MTTR
--最大程度减少丢失数据

故障类别
--语句错误
典型问题            可能的解决办法
尝试在表中输入无效的数据    与用户合作来验证
尝试在权限不足时执行操作    提供适当的对象或系统权限
尝试分配未成成功的空间        1.启用可恢复的空间分配2.增加所有者限额3.增加表空间的空间
应用程序中的逻辑错误        与开发人员合作来更正程序错误

--用户进程错误
典型问题            可能的解决办法
用户执行了异常断开连接操作    通常不需要DBA操作就可以解决
用户会话已异常终止        
用户遇到了终止会话的程序错误    观察变化趋势

--网络故障
典型问题            可能的解决办法
监听程序失败            配置备份监听程序和连接时故障转移
网络接口卡(NIC)故障        配置多个网卡
网络连接失败            配置备份网络连接

--用户错误
典型问题            可能的解决办法
用户无意中删除或修改了数据    回退或使用闪回查询进行恢复
用户删除了表            从回收站恢复表

--实例错误
典型问题            可能的解决办法
断电                使用STARTUP命令重新启动实例,从实例错误中恢复时是自动执行的,其中包括前滚重做日志中的更改和回退任何未提交的事务处理。
硬件故障
有一个后台进程出现错误        通过使用预警日志,跟踪文件和ENTERPRISE MANAGER调查出现错误的原因。
紧急关闭进程

--后台进程和恢复:检查点CKPT
CKPT负责:
在检查点上发出DBWn信号
使用检查点信息更新数据文件头
使用检查点信息更新控制文件

--后台进程和恢复:重做日志文件和LOGWRITER
重做日志文件
-记录数据库的更改
-应多路复用以避免文件丢失
LogWriter何时执行写入
-提交时
-达到三分之一满度时
-每隔三秒
-DBWn执行写入之前

--后台进程和恢复:归档程序ARCn
归档程序ARCn
-是一个可选的后台进程
-在为数据库设置了ARCHIVELOG模式后自动归档练级重做日志文件
-保留对数据库进行的所有更改的记录

实例恢复或崩溃恢复
--原因是尝试打开的数据库中的文件在关闭时不同步
--是自动执行的
--使用重做日志组中存储的信息来同步文件
--设计到两个不同的操作
-前滚:数据文件还原到出现实例错误之前所处的状态
-回退:已执行但尚未提交的更改会返回到初始状态

实例恢复的阶段
1.数据文件不同步
2.前滚(重做)
3.文件中的提交和未提交数据
4.回退(还原)
5.文件中的提交数据

优化实例恢复
--在实例恢复期间,必须将检查点为孩子与重做日志末尾之间的事务处理应用到数据文件。
--通过控制检查点位置与重做日志末尾之间的差异可优化实例恢复。

检查点位置----实例恢复-----重做日志末尾


使用MTTR指导
--以秒或分钟为单位指定所需要的事件
--默认值为0(禁用)
--最大值为3600秒

show parameter fast_mttr_target
show parameter fast_start_mttr_targrt
alter system set fast_start_mttr_target=30;

--介质故障
典型问题            可能的解决办法
磁盘驱动器故障            1.从备份中还原受影响的文件
磁盘控制器故障            2.如果需要,通知数据库关于新文件的位置
删除或损坏了数据库文件        3.如果需要,通过应用重做信息来恢复文件

配置可恢复性
要配置数据库的最大可恢复性,必须:
--计划常规备份
--多路复用控制文件
--多路复用重做日志组
--保留重做日志的归档副本

控制文件
通过多路复用控制文件来避免出现数据库故障,建议数据库满足一下条件:
--至少有控制文件的两个副本。
--每个磁盘上一个副本
--至少在单独的磁盘控制器上有一个副本

--重做日志文件
多路复用重做日志组可避免介质故障和数据丢失。建议重做日志组满足以下条件
--每个组至少有两个成员(文件)
--在每个磁盘驱动器上有一个成员
--在每个磁盘控制器上有一个成员
注:由于不能在事务处理信息写入日志之前完成提交,写入重做日志会严重影响性能。

归档日志文件
要保留重做信息,请通过执行一下步骤,创建重做日志文件的归档副本
1.指定归档日志命名惯例
2.指定一个或多个归档日志文件的信息
3.将数据库切换到ARCHIVELOG模式

ARCHIVELOG模式
--将数据库置于ARCHIVELOG模式下,请执行以下步骤:
1.选中ARCHIVELOG MODE复选框
2.单击APPLY,只能在MOUNT状态下将数据库设置为ARCHIVELOG模式
3.询问是否需要启动数据库时,单击YES
4.备份数据库
--处于ARCHIVELOG模式下的数据库可访问所有备份和恢复选项



-------------------------L15  数据库备份

使用以下各项可执行备份:
--Recovery Manager
--Oracle Secure Backup
--用户惯例的方案

ORACLE SECURE BACKUP
--ORACLE SECURE BACKUP 和RMAN一起为ORACLE环境提供了端到端备份解决方案
-对文件系统数据和ORACLE数据库使用集中式磁带备份管理
-对RMAN备份使用最合理集成的介质管理层
-可备份网络任何位置的任何数据
--在整个解决方案中只使用一种技术支持资源可加速问题的解决
--确保在成本和复杂性比较低时提供可靠的数据保护

用户惯例的备份
用户惯例的方案
--指通过手动过程来跟踪备份需求和状态
--需要DBA来编写脚本
--需要为了备份将数据库文件置于正确的模式
--依赖操作系统命令来备份数据

术语
--备份策略可包括
-整个数据库(整体备份)
-部分数据库(部分备份)
--备份类型可指示包含:
-所有数据文件中的所有信息 (完全备份)
-只限自以前某次备份依赖更改过的信息(增量备份)
--备份模式可分为:
-脱机(一致备份或冷备份)
-联机(非一致备份或热备份)

备份可存储为:
--映像副本
--备份集

RMAN
--在ENTERPRISE MANAGER中使用RECOVERY MANAGER(RMAN)执行备份和恢复操作
--RMAN
-是可提供高级功能的命令行客户机
-具有功能强大的操作控制能力和脚本编写语言
-具有公布的,可通过接口与多数常用备份软件链接的API
-可备份数据,控制文件,归档日志文件和服务器参数文件
-可将文件备份到磁盘和磁带






----------------------------L16  执行数据库恢复

更改实例状态
使用DATABASE CONTROL更改实例状态
start the database
mount the database
open the database

使数据库保持打开状态
打开实例后,实例在丢失以下项时会失效
--任何控制文件
--属于系统或还原表空间的数据文件
--整个重做日志组。只要组中至少有一个成员可用,实例就会保持打开状态

丢失了控制文件
如果丢失或损坏了控制文件,实例通常会中止,此时必须执行以下步骤
1.关闭实例
2.通过复制现有控制文件还原确实的控制文件。
3.启动实例

丢失了重做日志文件
如果丢失了重做日志文件组中的某个成员,只要组中至少还有一个成员,那么:
1.不会影响实例的正常操作
2.预警日志中会收到一条信息,通知您无法找到某个成员。
3.通过从同一组中止一个剩余文件可还原缺失的日志文件

在NOARCHIVELOG模式下丢失了数据文件
如果数据库处于NOARCHIVELOG模式下,并且丢失了任何数据文件。请执行以下任务:
1.关闭实例
2.从备份中还原整个数据库,包括所有数据和控制文件
3.打开数据库
4.让用户重新输入自从上一次备份依赖做的所有更改

在ARCHIVELOG模式下丢失了非关键数据文件
如果丢失或损坏了某个数据文件,且改文件不属于SYSTEM或UNDO表空间,则只还原并恢复缺省的数据文件

在ARCHIVELOG模式下丢失了系统关键数据文件
如果丢失或损坏了某个数据文件,且该文件属于SYSTEM或UNDO表空间,请执行以下操作
1.实例不一定是自动关闭了,如果没有关闭,请使用SHUTDOWN ABORT关闭实例
2.装载数据库
3.还原并恢复缺失的数据文件
4.打开数据库




-----------------------L17  闪回

闪回技术:优点
--闪回技术是恢复技术的革新性的进步
--传统的恢复技术速度比较慢
-必须还原整个数据库或文件
-必须检查数据库日志的每项更改
--闪回技术的速度比较快
-执行和事务处理对更改建立了索引
-只还原更改数据
--闪回命令易于操作
--不涉及复杂的多步骤过程

何时使用闪回技术
对象层次    方案示例            闪回技术    使用        影响数据
数据库        截断表:发生了以外多表更改事件    数据库        闪回日志    是
表        删除表                删除        回收站        是
        使用了错误的where子句进行了更新    表        还原数据    是
        将当前数据与过去数据进行比较    查询        还原数据    否
        比较行版本            版本        还原数据    否
TX        查看数据的一些历史状态        事务处理    还原数据    否


闪回任何错误(逻辑错误)
--闪回数据库通过还原自先前某个时间点以来做的所有更改,将数据库恢复到较早的时间点
--闪回表可将表恢复到过去的某个时间点,而不必从备份中还原
--闪回删除可还原以外删除的表

闪回数据库操作:
--作用类似于数据库的倒回按钮
--可在用户造成了逻辑数据损坏的情况下使用

闪回数据库:注意事项
--闪回数据库操作完成后,必须使用以下一种方式打开数据库
-在只读模式下检验是否使用了正确的目标时间或SCN
-使用RESETLOGS参数才允许进行更新
--闪回对应的是恢复

闪回数据库:限制
--不能在下列情况下使用闪回数据库
-已还原或重新创建了控制文件
-已删除了表空间
-已收缩了数据文件

SHOW PARAMETER FLASHBACK;
ALTER DATABASE FLASHBACK ON;

SELECT FLASHBACK_ON FROM V$DATABASE;

ALTER DATABASE OPEN;

--在mount状态才能进行闪回
STARTUP MOUNT;
FLASHBACK DATABASE TO TIMESTAMP TO_DATE('2010-06-04 10:33:54','yyyy-mm-dd hh24:m1:ss');


闪回表:概述
--闪回表可将表恢复到特定的时间点
--闪回表是一个原位操作
--数据库保持联机

闪回表
--使用闪回表,可将一个或多个表恢复到特定的时间点,而不需要还原备份
--从还原表空间检索数据后可执行闪回表操作
--执行闪回表操作需要FLASHBACK TABLE权限
--必须对要执行闪回操作的表启用行移动

alter table empnew ENABLE ROW MOVEMENT;

FLASHBACK TABLE EMPNEW TO TIMESTAMP TO_DATE('2010-06-04 10:33:54','yyyy-mm-dd hh24:m1:ss');


闪回表:注意事项
--FLASHBACK TABLE命令可作为单个事务处理执行,从而可获取DML互斥锁
--不闪回统计信息
--保留当前缩影和相关对象
--闪回表操作
-不能对系统表操作
-不能跨DDL操作
-会写入预警日志文件
-会生成还原和重做数据

DROP TABLE EMPNEW;

SHOW RECYCLEBIN;--查看被删除的表的名字

FLASHBACK TABLE HR."BIN$0ihnfc79Reqh2XpVBu26eQ==$0" TO BEFORE DROP

flashback table empnew to before drop;--闪回到删除前的状态

闪回删除:注意事项
--闪回删除不适于:
-驻留在SYSTEM表空间中的表
-使用细粒度审计或虚拟专用数据库的表
-驻留在字典管理表空间中的表
-已清除的表,无论是手动清楚的,还是在空间压力下自动清楚的
以下相关对象不受保护
-位图联接索引
-实体化视图日志
-引用完整性约束条件
-在删除表前删除的索引

闪回时间浏览
--闪回查询
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
2010-08-08 11:08:32

select count(1) from empnew where department_id=60;

delete from empnew where department_id=60;

select * from hr.empnew as of timestamp to_date('2010-08-08 10:01:04','yyyy-mm-dd hh24:mi:ss') where department_id=60;

update employees set salary=(
select salary from employees
as of timestamp to_timestamp
('2010-08-08 10:01:04','yyyy-mm-dd hh24:mi:ss')
where employee_id=200)
where employee_id=200;

--闪回一部分的记录
insert into hr.empnew
select * from hr.empnew as of timestamp to_date('2010-08-08 10:01:04','yyyy-mm-dd hh24:mi:ss') where department_id=60;

闪回版本查询:概述
select version_xid,salary from employees
VERSIONS BETWEEN TIMESTAMP t1 and t2
where employee_id=200;

闪回版本查询:注意事项
VERSIONS子句不能用于查询
--外部表
--临时表
--固定表
--视图
VERSIONS子句不能跨DDL命令使用
段收缩操作已过滤掉


闪回事务处理查询:概述
FLASHBACK_TRANSACTION_QUERY

闪回事务查询:注意事项
--DDL被视为字典更新
--删除对象显示为对象编号
--删除用户显示为用户表示符



-------------------------L18 移动数据
移动数据:一般体系结构
SQL*Loader
expdp
impdp
其他客户端

SQL*Loader:概述
输入数据文件,控制文件,SQL*Loader字段处理,记录选择,
放弃文件(可选),坏文件,

SQL*Loader的文件都是文本文件
SQL*Loader 控制文件通知SQL*Loader以下信息
--要加载数据的位置
--数据格式
--配置详细信息
-内存管理
-记录拒绝
-中断的加载处理详细信息
--数据操纵详细资料

加载方法

常规加载                直接路径加载
使用COMMIT                使用数据保存(操作速度更快)
始终生成重做项                只在特定条件下生成重做项
强制所有约束条件            只强制PRIMARY KEY,UNIQUE和NOT NULL
触发INSERT触发器            不触发INSERT触发器
可加载到集簇表中            不加载到簇表中
允许其他用户在加载操作过程中修改表    阻止其他用户在加载操作过程中更改表

数据泵:概述
数据泵作为一个基于服务器的,可用于告诉移动数据与元数据的设备:
--是通过DBMS_DATAPUMP调用的
--可提供以下工具:
-expdp
-impdp
-基于web的界面
--可提供以下数据访问方式
-直接路径
-外部表
--可与长时间运行的作业分离后重新挂接
--可重新启动数据泵作业

数据泵:优点
--细粒度级对象和数据的选择
--显式指定数据库版本
--并行执行
--估计到处作业占用的空间
--分布式环境中的网络模式
--导入过程中的重新映射功能
--数据取样率和元数据压缩

数据泵实用程序:接口与模式
--数据泵导出和导入接口
-命令行
-参数文件
-交互式命令行
-database control
--数据泵导出和导入模式
-完成
-方案
-表
-表空间
-可移动表空间
expdp help=y

vi exp.par

userid=system/gull
directory=mydir
dumpfile=emptest.dmp
#tables=(hr.emptest)
schemas=(hr)
logfile=exptest.log
job_name=exptest

expdp parfile=exp.par


数据泵导入:转换
您可以:
--实用REMAP_DATAFILE重新映射数据文件
--实用REMAP_TABLESPACE重新映射表空间
--实用REMAP_SCHEMA重新映射方案

REMAP_DATAFILE='C:\oradata、tbs6.f':'/u1/tbs6.f'

create user hsj identfied by oracle;
grant dba to hsj;

vi imp.par
userid=system/gull
directory=mydir
dumpfile=emptest.dmp
#tables=(emptest)
schemas=(hr)
remap_schema=hr:hsj
logfile=imptest.log
job_name=imptest

impdp parfile=imp.par

drop table emptest purge;--PURGE绕过回收站,直接物理删除

数据泵导入:转换
实用TRANSFROM,还可以:
--从表和索引中:
-排除STORAGE和TABLESPACE子句
-只排除STORAGE子句
--重新创建抽象数据类型的对象标示符
--更改区分配和文件大小
TRANSFROM=
SEGMENT_ATTRIBUTES|STORAGE|OID|PCTSPACE:{y|n|v}[:objecttype]

数据泵:性能注意事项
实用PARALLEL参数最大化作业性能
expdp hr/hr FULL=y
DUMPFILE=dp_dir1:full1%U.dmp,dp_dir2:full2%U.dmp
FILESIZE=2G PARALLEL=3
LOGFILE=dp_dir1:expfull.log JOB_NAME=expfull

性能初始化参数
--以下设置会影响数据泵性能
DISK_ASYNCH_IO=TRUE
DB_BLOCK_CHECKING=FALSE
DB_BLOCK_CHECKSUM=FALSE
--以下参数应设置得更大些才能实现最大并行度:
PROCESSES
SESSIONS
PARALLEL_MAX_SERVERS
--应大幅度调整以下参数的大小
SHARED_POLL_SIZE
UNDO_TABLESPACE

数据泵访问路径:注意事项
数据泵会自动选择以下其中一种访问路径:
--直接路径
--外部表,如果数据包括:
加密列
集簇表
卸载和加载时的不同分区,以及其他条件

外部表填充
--实用ORACLE_DATAPUMP访问驱动程序将数据卸载到外部文件
--不修改外部表

将数据插入到外部表中,拷贝数据文件到目标主机,再进行导入

CREATE TABLE emp_ext
(first_name,last_name,department_name)
ORGANIZATION EXTERNAL
(
TYPE ORACLE_DATAPUMP
DEFAULT DIRECTORY mydir
LOCATION ('emp1.exp','emp2.exp','emp3.exp')
)
PARALLEL
AS
SELECT e.first_name,e.last_name,e.department_name
FROM employees e,departments d
WHERE e.department_id=d.department_id
AND d.department_name in('Marketing','Purchasing');


到目标主机

CREATE TABLE imp_ext
(first_name varchar(30),last_name varchar(30),department_name varchar(30))
ORGANIZATION EXTERNAL
(
TYPE ORACLE_DATAPUMP
DEFAULT DIRECTORY targetdir
LOCATION ('emp1.exp')
);

--将导入的外部表的数据插入到正常的表中
create table emp as select * from imp_ext;

实用ORACLE_LOADER填充外部表

CREATE TABLE extab_employees
(emp_id NUMBER(4),
first_name VARCHAR(30),
last_name VARCHAR(30),
hire_date DATE)
ORGANIZATION EXTERNAL
(
TYPE ORACLE_LOADER DEFAULT DIRECTORY extab_dat_dir
ACCESS PARAMETERS
(records delimited by newline
 badfile extab_bad_dir:'empxt%a_%p.bad'
 logfile extab_log_dir:'empxt%a_%p.log'
 fields terminated by ','
 missing field values are null
(employee_id,first_name,last_name,
hire_date char date_format date mask "dd-mon-yyyy"))
LOCATION ('empxt1.dat','empxt2.dat'))
PARALLEL REJECT LIMIT UNLIMITED;


数据字典
在以下位置查看关于外部表的信息:
--[DBA|ALL|USER]_EXTERNAL_TABLES
--[DBA|ALL|USER]_EXTERNAL_LOCATIONS
--[DBA|ALL|USER]_TABLES,以及其他位置

暂停导出
ctrl+C
输入stop_job

重新启动导出
expdp attach=exptest
再输入用户名和密码就可以恢复导出工作
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP