实验五 oracle安全管理及备份恢复.docx
《实验五 oracle安全管理及备份恢复.docx》由会员分享,可在线阅读,更多相关《实验五 oracle安全管理及备份恢复.docx(44页珍藏版)》请在冰点文库上搜索。
实验五oracle安全管理及备份恢复
实验五oracle安全管理及备份恢复
一、实验目的及要求
掌握Oracle的安全管理方法。
掌握oracle数据库常用的备份和恢复方法。
二、实验主要内容
(1)概要文件的建立、修改、查看、删除操作。
(2)用户的建立、修改、查看、删除操作。
(3)权限的建立、修改、查看、删除操作。
(4)角色的建立、修改、查看、删除操作。
(5)数据备份与恢复的方法
(6)Oracle备份方案的制定
三、实验仪器设备
在局域网环境下,有一台服务器和若干台客户机。
服务器成功安装Oracle10g数据库服务器(企业版),客户机成功安装Oracle10g客户端软件,网络服务配置正确,数据库和客户端正常工作。
四、实验步骤
1、安全管理
(1)创建概要文件。
①利用企业管理器创建概要文件“ygbx+学号_pro”,要求在此概要文件中CPU/会话为1000,读取数/会话为2000,登录失败次数为3,锁定天数为10。
②利用SQL*Plus或iSQL*Plus,创建概要文件“ygbx+学号_pro_sql”,其结构与“ygbx+学号_pro”一致。
(2)查看概要文件。
①利用企业管理器查看概要文件“ygbx+学号_pro”的信息。
②利用SQL*Plus或iSQL*Plus,从DBA_PROFILES数据字典中查看“ygbx+学号_pro_sql”概要文件的资源名称和资源值等信息。
③利用SQL*Plus或iSQL*Plus,从查看“ygbx+学号_pro_sql”概要文件中锁定天数的值。
(3)修改概要文件。
①利用企业管理器,修改“ygbx+学号_pro”概要文件,将CPU/会话改为4000,连接时间为60。
②利用SQL*Plus或iSQL*Plus,修改“ygbx+学号_pro_sql”概要文件,将并行会话设为20,读取数/会话设为DEFAULT。
(4)创建用户。
①利用企业管理器,创建“ygbxuser+学号”用户,密码为“user+学号”,默认表空间为“ygbx_tbs”。
②利用SQL*Plus或iSQL*Plus,创建“ygbxuser+学号_sql”用户,密码为“user+学号+sql”,该用户处于锁状态。
③利用SQL*Plus或iSQL*Plus,将“ygbx+学号_pro”概要文件赋予“ygbxuser+学号”用户。
④利用SQL*Plus或iSQL*Plus,将“ygbx+学号_pro_sql”概要文件赋予“ygbxuser+学号_sql”用户。
(5)查看用户。
①利用企业管理器,查看“ygbxuser+学号”用户的信息。
②利用SQL*Plus或iSQL*Plus,查看“ygbxuser+学号_sql”用户的信息,并查看该用户验证的方式。
③利用SQL*Plus或iSQL*Plus,从DBA_USERS数据字典中查看“ygbxuser+学号_sql”用户的默认表空间和临时表空间的信息。
(6)修改用户。
①利用企业管理器,修改“ygbxuser+学号”用户,验证方式为外部。
②利用SQL*Plus或iSQL*Plus,修改“ygbxuser+学号_sql”用户,将该用户解锁,并将密码改为“sql+学号+user”。
(7)权限管理。
①利用企业管理器,授予“ygbxuser+学号”用户“CREATEANYTABLE”、“CREATEANYINDEX”、“ALTERANYTABLE”、“ALTERANYINDEX”、“DROPANYTABLE”和“DROPANYINDEX”系统权限。
②利用SQL*Plus或iSQL*Plus,授予“ygbxuser+学号_sql”用户“SYSOPER”系统权限。
③利用企业管理器,将“ygbxuser+学号”用户增加到“SYSTEM”方案中对“help”表的查看、修改、删除等对象权限。
④利用SQL*Plus或iSQL*Plus,收回“ygbxuser+学号_sql”用户在“SYSTEM”方案中对“help”表的查看、修改、删除等对象权限。
⑤利用SQL*Plus或iSQL*Plus,收回“ygbxuser+学号_sql”用户的“SYSOPER”系统权限。
(8)创建角色。
①利用企业管理器,创建“ygbxrole+学号”角色,赋予该角色能对表、索引、存储过程、序列、同义词进行基本操作的权限。
②利用SQL*Plus或iSQL*Plus,创建“ygbxrole+学号_sql”角色,该角色具有“SYSDBA”系统权限,并将该角色赋予“ygbxuser+学号_sql”用户。
(9)查看角色。
①利用企业管理器,查看“ygbxrole+学号”角色所具有的所有权限。
②利用SQL*Plus或iSQL*Plus,查看“ygbxrole+学号_sql”角色所具有的所有权限。
(10)修改角色。
①利用企业管理器,修改“ygbxrole+学号”角色,增加对角色的基本操作,并收回存储过程和序列的操作权限。
②利用SQL*Plus或iSQL*Plus,修改“ygbxrole+学号_sql”角色,收回“SYSDBA”系统,而授予“SELECTANYTABLE”系统权限。
(11)删除角色。
①利用企业管理器,删除“ygbxrole+学号”角色。
②利用SQL*Plus或iSQL*Plus,删除“ygbxrole+学号_sql”角色。
(12)删除概要文件。
①利用企业管理器,删除“ygbx+学号_pro”概要文件,查看“ygbxuser+学号”用户的概要文件。
②利用SQL*Plus或iSQL*Plus,删除“ygbx+学号_pro_sql”概要文件,查看“ygbxuser+学号_sql”用户的概要文件。
(13)删除用户。
①利用企业管理器,删除“ygbxuser+学号”用户。
②利用SQL*Plus或iSQL*Plus,删除“ygbxuser+学号_sql”用户。
2、数据库备份与恢复
1)Oracle物理备份与恢复
.0.准备工作:
(1)查看数据库是否运行于归档模式下:
请给出查询的结果:
(2)干净的关闭数据库,做一个完全的冷备份。
提示:
a.使用showdown命令;b.复制数据文件、日志文件和控制文件到安全地方
(3)把数据库改为归档模式
SQL>startupmount
SQL>alterdatabasearchivelog;
SQL>alterdatabaseopen;
设置成自动归档
SQL>altersystemsetlog_archive_start=truescope=spfile;
注意:
本实验中的很多命令路径参数需根据自己的实现环境作出修改!
!
1.实验1:
数据库系统数据文件和回退段遭破坏的情况下的恢复。
此时数据库的状态是关闭的。
(1)先启动数据库,用scott用户建立test表,并插入两条数据。
SQL>createtable (idint);
表已创建。
SQL>insertintovalues
(1);
已创建1行。
SQL>insertintovalues
(2);
已创建1行。
SQL>commit;
提交完成。
(2)模拟数据库遭意外被迫关闭,并且系统数据文件丢失。
SQL>shutdownabort
把oracle服务停掉,移除和文件(即将这两个文件移到其他文件夹下)。
(3)启动服务,启动数据库,提示如下错误
a.启动服务
b.启动数据库
SQL>startup
请给执行结果:
(4)把备份的和文件复制回去
a.执行以下命令:
请给执行结果:
然后就可以打开数据库,查看scott用户的test表。
SQL>alterdatabaseopen;
SQL>select*from;
请给执行结果:
实验2:
数据库是打开的,这时损坏的文件是用户的数据文件而不是system和undo文件。
(1)用scott用户在users表空间建立test1表
SQL>createtable(idint)
2 tablespaceusers;
表已创建。
(2)插入两条数据
SQL>insertintovalues
(1);
已创建1行。
SQL>insertintovalues
(2);
已创建1行。
SQL>commit;
提交完成。
(3)当前日志归档
SQL>altersystemarchivelogcurrent;
系统已更改。
(4)现在破坏users表空间,使其离线,然后移除到一个指定文件夹(备份)
SQL>altertablespaceusersoffline;
表空间已更改。
执行:
SQL>altertablespaceusersonline;
请给执行结果:
此时出现错误,users表空间不能在线了。
这时把备份的还原回去。
然后,执行:
SQL>recovertablespaceusers;
(5)完成介质恢复。
SQL>altertablespaceusersonline;
表空间已更改。
SQL>select*from;
请给执行结果:
实验3:
数据文件没有备份(不能使system和undo文件)的恢复。
(1)创建表空间testspace
在SQLPlus中依次执行以下语句,给出最后的执行结果:
SQL>createtablespacetestspacedatafile'C:
\oracle\product\10.1.0\db_1\TestDB\'size10m;
SQL>createtable(idint)
tablespacetestspace;
SQL>commit;
SQL>altersystemswitchlogfile;
SQL>insertintovalues
(1);
SQL>commit;
SQL>altertablespacetestspaceoffline;
SQL>select*from;
请给执行结果:
(2)由于没有备份数据文件,需重新创建一个
SQL>alterdatabasecreatedatafile
'C:
\oracle\product\10.1.0\db_1\TestDB\';
SQL>recovertablespacetestspace;
(3)完成恢复
SQL>altertablespacetestspaceonline;
表空间已更改。
SQL>select*from;
请给执行结果:
2)逻辑备份:
导入导出实验
实验4:
模式的导入导出
案例:
将scott/tiger用户对应的模式导出,通过导出文件将其导入到Test用户(为一个空用户)对应的模式中,包括该模式中的所有对象的定义和数据。
1.准备工作
(1)创建用户:
Createusertest
Identifiedbytest;
(2)授权:
注:
这儿做了简化处理,实际工作中,尽量不要授DBA权限给一般用户。
2.数据的导出与导入
(1)数据准备
以scott身份登录:
connscott/tiger
创建测试用表:
createtablejobs(
namevarchar2(20),
jobvarchar2(40),
salesnumber);
加入数据:
insertintojobsvalues('IT_Test','softwaretesting',3000);
提交:
commit;
创建测试用表scott_test
createtablescott_test(
namevarchar2(10),
agenumber);
加入数据:
insertintoscott_testvalues('manager','40');
(2)以管理员身份登录:
connassysdba;
altersystemenablerestrictedsession;
(3)导出数据库:
在DOS提示符下执行:
expsystem/testdbfull=yfile=
执行时,会要求输入system的口令,请根据实际情况输入。
(4)恢复数据库运行状态
connassysdba;
altersystemdisablerestrictedsession;
(5)进行数据库的导入:
以下是一示例:
impsystem/testdbfromuser=scotttouser=testtables=(scott_test,jobs)file=ignore=y;
请给执行结果:
3.结果检验
对导入的数据进行查询,以确定导入是否成功,给出结果截图:
(1)以test身份登录到数据库
(2)查询刚才导出(导入)表中的某个表(如Jobs):
请给执行结果:
3)RMAN使用基础
测试说明
测试目的
验证RMAN备份与恢复全过程。
记录整个过程的操作细节。
利用RMAN的备份与恢复可完成如下工作:
(1)数据库备份/恢复;
(2)同一主机,不同磁盘阵列,相同数据存储路径(模式)的数据迁移;(在恢复过程中改变数据存储路径/模式过程待验证)
(3)不同主机,相同操作系统、同一数据库版本之间的的数据库迁移。
(不同数据库版本之间是否可利用RMAN备份与恢复进行数据迁移待验证。
)
测试环境说明
OS:
WindowsXP
ORACLEVERSION:
OracleDatabase10gEnterpriseEditionRelease10.1.0.–Prod
ORACLE运行模式:
归档模式
ORACLE数据存储:
文件系统,存储于D:
\oracle\product\10.1.0\oradata\orcl
数据备份过程
1.连接本地数据库:
rmantarget/
通过rman连接本地数据库非常简单,进入到命令提示符界面:
数据库全备份
rmannocatalogtarget/
run
{
allocatechannelc1typedisk;
allocatechannelc2typedisk;
allocatechannelc3typedisk;
backupdatabaseformat'C:
\db_full_%U'includecurrentcontrolfile;
sql'altersystemarchivelogcurrent';
#crosscheckarchivelogall;
backupformat'c:
\arch_full_%U'archivelogalldeleteinput;
releasechannelc1;
releasechannelc2;
releasechannelc3;
}
【注意】
RMAN采用无恢复目录模式
备份数据库过程包含当前控制文件备份
数据库处于归档模式,备份过程包含所有归档日志的备份
数据库必须处于mount或者open状态,才能进行数据库备份
3.数据库在数据全备份后继续操作
(1)在RMAN全备份后继续数据库的操作。
即在测试表中插入数据。
SQL>connkfzjd/kfzjd
已连接。
SQL>insertintotvalues(100);
已创建1行。
SQL>insertintotvalues(200);
已创建1行。
SQL>insertintotvalues(300);
已创建1行。
SQL>insertintotvalues(400);
已创建1行。
SQL>commit;
提交完成。
SQL>select*fromt;
ID
----------
1
2
3
100
200
300
400
已选择7行。
(2)正常关闭数据库。
并删除原数据库所有文件,包括:
控制文件、数据文件、日志文件。
以模拟更换磁盘阵列或者文件丢失的情况。
SQL>conn/assysdba
已连接。
SQL>shutdownimmediate
数据库已经关闭。
已经卸载数据库。
ORACLE例程已经关闭。
SQL>hostmoveD:
\oracle\product\10.1.0\oradata\orclD:
\oracle\product\
【注意】
删除文件过程,将以更目录名称的方式,用以模拟新盘阵上的文件存储路径与原系统不同。
此时,重新启动数据库过程必然失败。
SQL>conn/assysdba
已连接。
SQL>startup
ORACLEinstancestarted.
TotalSystemGlobalArea4bytes
FixedSize787988bytes
VariableSize8bytes
DatabaseBuffersbytes
RedoBuffers262144bytes
ORA-00205:
,
【注意】此时由于实例存在,但是database全部丢失,则INSTANCE启动成功,但是database启动失败。
即可,NOMOUNT状态(只启动INSTANCE)成功;进入MOUNT状态时,由于控制文件丢失,MOUNT失败。
数据库启动过程不能继续。
数据库恢复过程
当前情况下,所有的控制文件、数据库文件、联机日志文件均全部丢失。
按照数据库恢复/启动过程,应按照先恢复数据库控制文件,再恢复数据文件的步骤进行。
1.从RMAN备份中恢复控制文件
在本例子中,RMAN备份脚本进行了控制文件的备份。
所以,控制文件的恢复过程可以利用RMAN的备份完成。
此时,也存在两种情况。
RMAN设置了控制文件自动备份。
RMAN未设置控制文件自动备份,而由RMAN脚本进行控制文件备份。
如本例所示。
对于此两种情况,分别说明如下。
(1)RMAN未设置控制文件自动备份
C:
\>rmannocatalogtarget/
恢复管理器:
版本10.1.0.-Production
Copyright(c)1995,2004,Oracle.Allrightsreserved.
连接到目标数据库:
ORCL(DBID=46)
正在使用目标数据库控制文件替代恢复目录
RMAN>showall;
RMAN配置参数为:
CONFIGURERETENTIONPOLICYTOREDUNDANCY1;#default
CONFIGUREBACKUPOPTIMIZATIONOFF;#default
CONFIGUREDEFAULTDEVICETYPETODISK;#default
CONFIGURECONTROLFILEAUTOBACKUPOFF;
CONFIGURECONTROLFILEAUTOBACKUPFORMATFORDEVICETYPEDISKTO'%F';#default
CONFIGUREDEVICETYPEDISKPARALLELISM1BACKUPTYPETOBACKUPSET;#default
CONFIGUREDATAFILEBACKUPCOPIESFORDEVICETYPEDISKTO1;#default
CONFIGUREARCHIVELOGBACKUPCOPIESFORDEVICETYPEDISKTO1;#default
CONFIGUREMAXSETSIZETOUNLIMITED;#default
CONFIGUREARCHIVELOGDELETIONPOLICYTONONE;#default
CONFIGURESNAPSHOTCONTROLFILENAMETO'D:
\ORACLE\PRODUCT\10.1.0\DB_1\DATABASE\S
';#default
【注意】RMAN未设置控制文件自动备份。
此时如果RMAN的直接恢复将不成功。
如下所示。
RMAN>startupnomount;
Oracle例程已启动
系统全局区域总计4字节
FixedSize787988字节
VariableSize8字节
DatabaseBuffers字节
RedoBuffers262144字节
RMAN>restorecontrolfilefromautobackup;(由于没有设置自动备份控制文件所以出错)
启动restore于15-8月-07
分配的通道:
ORA_DISK_1
通道ORA_DISK_1:
sid=160devtype=DISK
恢复区域目标:
D:
\oracle\product\10.1.0\flash_recovery_area
用于搜索的数据库名(或锁定名称空间):
ORCL
通道ORA_DISK_1:
在恢复区域中找到自动备份
通道ORA_DISK_1:
已找到的自动备份:
D:
\ORACLE\PRODUCT\10.1.0\FLASH_RECOVERY_AREA\
ORCL\AUTOBACKUP\2007_08_14\
RMAN-00571:
===========================================================
RMAN-00569:
===============ERRORMESSAGESTACKFOLLOWS===============
RMAN-00571:
===========================================================
RMAN-03002:
failureofrestorecommandat08/15/200709:
54:
16
ORA-19504:
无法创建文件"D:
\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\"
ORA-27040:
文件创建错误,无法创建文件
OSD-04002:
无法打开文件
O/S-Error:
(OS3)系统找不到指定的路径。
RMAN>restorecontrolfile;(语法就错误了)
启动restore于15-8月-07
使用通道ORA_DISK_1
RMAN-00571:
==============================================