文档库 最新最全的文档下载
当前位置:文档库 › Oracle权限与角色管理、备份与恢复

Oracle权限与角色管理、备份与恢复

Oracle权限与角色管理]

一、Oracle 权限管理
SQL> grant connect, resource, dba to acc01;

SQL> revoke connect, resource from acc01;

二、Oracle 角色管理(参考讲义)

SQL> Create Role
Identified by password/ Not Identified;

SQL> Alter Role ...

SQL> Grant to ;

SQL> Grant to

SQL> Set Role
All Except / None // 使角色生效或失效


[第七章 Oracle 数据库备份与恢复]

一、Oracle归档方式

确认数据库归档方式:

SVRMGR> archive log list;

SQL> select log_mode from v$database;


二、Oracle归档方式配置步骤:

1、启动自动归档进程ARCH
log_archive_start=true

2、确定归档日志文件存储目录
log_archive_dest=目录名

3、确定归档日志文件存储格式
log_archive_format=%t_%s.arc

4、确定归档日志文件镜像目录:
log_archive_duplex_dest=镜像目录名

5、以MOUNT方式启动数据库,修改数据库归档方式:
SVRMGR> connect internal
SVRMGR> startup mount
SVRMGR> alter database archivelog;
SVRMGR> alter database open;

// 前面1、2、3、4四个参数都在参数文件中。

[*]在Oracle8i以后,可以使用多个镜像目录:[8i最多是5个,9i是10个,与duplex方式不能混用]
log_archive_dest_1='location=d:\oracle\archive1'
log_archive_dest_2='location=d:\oracle\archive2'
log_archive_dest_3='location=d:\oracle\archive3'

[*]归档文件的格式为二进制,可以没有后缀。

实际操作:
1、在d:\oracle目录下建立archive1, archive2两个目录
2、修改init.ora文件,增加下面四行:
log_archive_start=true
log_archive_format=%t_%s.arc
log_archive_dest=d:\oracle\archive1
log_archive_duplex_dest=d:\oracle\archive2

3、进入svrmgrl
SVRMGR> connect internal/oracle
SVRMGR> shutdown immediate
SVRMGR> startup mount
SVRMGR> alter database archivelog;
SVRMGR> alter database open;

4、进入SQL*Plus
SQL> alter system switch logfile;

//检查d:\oracle\archive1及archive2目录下是否有归档的日志文件。

[*]在线启动或关闭归档方式
SQL> Alter system archive log start;
SQL> Alter system archive log stop;


三、数据库物理备份
[*]为了最大限度地进行恢复,应选择最合理的备份方法来防止介质失败导致的数据丢失。
(1)非归档的操作系统备份
(2)归档的操作系统备份
(3)Export工具备份
注释:
。用归档的操作系统备份的方法来恢复到介质失败后的失败点。
。用其它的恢复方法恢复到介质失败后的最后一次备份点。
。用Export工具创建一个直接的数据库备份文件,它不能与归档log文件组合使用。


1、完全数据库脱机备份:可以在归档及非归档两种模式下使用。
操作步骤:
(1)编写一个要备份的最新的文件列表。
(2)用SHUTDOWN命令关闭Oracl

e例程。
(3)用操作系统的备份工具,备份所有的数据文件、Redo Log文件、控制文件、参数文件。
(4)重启Oracle例程。

2、部分数据库联机备份:
备份步骤如下:
(1) 确认数据库运行在ARCHIVELOG下。
(2) 对于某一个表空间进行备份:
SQL> Alter tablespace 表空间名 begin backup;

(3) 操作系统备份相应数据文件

(4) 设置表空间备份结束标识:
SQL> Alter tablespace 表空间名 end backup;

恢复数据文件:
SVRMGR> Alter database RECOVER datafile '数据库文件名及路径';

<=等价=>

SVRMGR> RECOVER datafile '数据库文件名及路径';

3、部分数据库脱机备份:
备份步骤如下:
(1) 确认数据库运行在ARCHIVELOG下。
(2)将某一个表空间脱机:
SQL> Alter tablespace 表空间名 offline;

(3) 操作系统备份相应数据文件

(4) 将表空间联机:
SQL> Alter tablespace 表空间名 online;

恢复时也需要进行恢复数据文件:
SVRMGR> Alter database RECOVER datafile '数据库文件名及路径';

<=等价=>

SVRMGR> RECOVER datafile '数据库文件名及路径';

四、完全数据库恢复应用实例
[*]完全数据库恢复的语法:
在数据库关闭时,数据库恢复语法(可以Mount):

SVRMGR> Alter database recover datafile 'filespec';
SVRMGR> Alter database recover database;
SVRMGR> Recover datafile 'filespec';
SVRMGR> recover database;

第1、3及第2、4条命令分别等价。

在数据库运行时,数据库恢复语法(OPEN):
SVRMGR> recover tablespace 表空间名;
SVRMGR>recover datafile 'filespec';

1、数据库文件被删除,数据库关闭时,数据库恢复方法:
A、复制数据文件的备份文件
B、以mount方式启动数据库
C、恢复数据文件
SVRMGR> alter database recover datafile '数据文件名';
D、打开数据库
SVRMGR> alter database open;

2、数据库在运行时,数据文件被删除的数据库恢复方法:
A、将数据文件设置为offline:
SVRMGR> alter database datafile '数据文件名' offline;

B、复制数据文件的备份文件
C、恢复数据文件
SVRMGR> alter database recover datafile '数据文件名';

D、将数据文件设置为online:
SVRMGR> alter database datafile '数据文件名' online;


3、数据文件被删除,该数据文件没有备份,数据库恢复方法:
A、以mount方式启动数据库
B、运行以下命令:
SVRMGR> Alter database create datafile '被删除数据文件名及路径'
as '被删除数据文件名及路径';

C、恢复数据文件
SVRMGR> alter database recover datafile '数据文件名';

D、打开数据库
SVRMGR> alter database open;

五、不完全数据库恢复实例:

1、恢复一个被Dropped的基表:
A、关闭数据库
B、拷贝全部的数据文件(不拷贝日志及控制文件)
注:这些拷贝的数据文件是以前做的数据文件的备份

,现在拷贝回数据库数据文件所在目录,覆盖掉原来的。当然,最好在覆盖之前将现在的数据文件及归档日志做好备份。

C、实施基于时间的不完全数据库恢复
SVRMGR> Alter database recover database until time '2002-05-17:9:00:00';
D、打开数据库
SVRMGR> Alter database open RESETLOGS;
// 执行了resetlogs之后,文件同步号将从0开始,以前所有的归档日志全部失效。

2、恢复一个被Dropped的表空间:
A、查询跟踪文件,确定表空间删除时间
D:\oracle\admin\db_name\bdump\sidAlrt.log

B、关闭数据库,复制未删除表空间前的全部数据文件及控制文件,不复制日志文件。

C、实施基于时间的数据库恢复:
SVRMGR> Alter database recover database until time '2002-05-17:9:00:00' using backup controlfile;

D、打开数据库
SVRMGR> Alter database open RESETLOGS;

六、数据库逻辑备份:(Export/Import)

1、exp user01/user01 file=user01 // 用户方式:将user01用户的所有数据导出到user01.dmp文件中
2、exp user01/user01 file=user01_table tables=(emp,dept, pay, ...) // 表方式,将指定用户的指定表导出。
3、exp // 交互方式
4、卸出(导出)大表:
exp user/password file=filename direct=y ...
// 加上direct=y,表明用直接路径卸出数据,不通过内存,直接卸出到磁盘,效率高,节省内存。

4、全部数据库卸出:
exp system/manager file=fulldb full=y direct=y

// 加上full=y,表示将整个数据库全部卸出。

用户方式和表方式可以在NT 与 UNIX之间的Oracle进行数据传输,但整个数据库方式不能,因为包含了相关的数据文件信息。


七、卸出表空间:
1、检验表空间自包含性:检查表空间是不是与其它表空间有外键约束,有外键约束的不能卸出。
SQL> execute ...

2、将表空间设为只读

3、使用export卸出表空间
exp transport_tablespace=y tablespaces=mis file=expdat.dmp

4、使用Import装入表空间
imp transport_tablespace=y datafile='d:\oracle\oradata\x.dbf' tablespaces=mis file=expdat.dmp


八、Windows 计划任务备份数据文件
1、C:\> net start schedule //启动计划服务
net stop schedule //停止计划服务

2、AT命令安排计划:
C:\>at 22:00 /every:m,t,w,th, f, s, su d:\fullback.bat // 每周一到周日的晚上十点运行d:\fullback.bat批处理文件

C:\>at /delete /yes // 删除全部计划

3、fullback.bat
svrmgrl @d:\fullback.sql

4、fullback.sql
connect internal/oracle
shutdown immediate
host copy d:\oracle\oradata\ora8i\*.* e:\back
startup


还可以为数据库在线备份建立脚本通过AT调用执行,实现数据库的联机备份。

相关文档
相关文档 最新文档