《oracle数据库课件.ppt》由会员分享,可在线阅读,更多相关《oracle数据库课件.ppt(55页珍藏版)》请在第壹文秘上搜索。
1、8.1OracleOracle数据库数据库8.2备份与恢复概述备份与恢复概述u备份与恢复备份与恢复n Oracle数据库备份分为物理备份和逻辑备份。物理备份是数据数据库备份分为物理备份和逻辑备份。物理备份是数据库文件拷贝的备份,根据备份时数据所处状态的不同,物理备库文件拷贝的备份,根据备份时数据所处状态的不同,物理备份又可分为冷备份与热备份。导出份又可分为冷备份与热备份。导出/导入导入(export/import)工具用工具用于进行逻辑备份。于进行逻辑备份。n冷备份冷备份(也称作离线备份也称作离线备份)是在数据库被正常关闭之后进行的数是在数据库被正常关闭之后进行的数据文件的物理备份。据文件的物
2、理备份。n热备份热备份(也称作在线备份也称作在线备份)是在数据库运行于归档日志模式,在是在数据库运行于归档日志模式,在打开的情况下做数据的物理备份,可以恢复到任一时间点。打开的情况下做数据的物理备份,可以恢复到任一时间点。8.3数据库(表)的逻辑备份与恢复u逻辑备份是指使用工具export将数据对象的结构和数据导出到文件的过程,逻辑恢复是指当数据库对象被误操作而损坏后使用工具import利用备份的文件把数据对象导入到数据库的过程。 u物理备份即可在数据库open的状态下进行也可在关闭数据库后进行,但是逻辑备份和恢复只能在open的状态下进行。 8.4导出u导出具体的分为:导出表,导出方案,导出
3、数据库三种方式。 u导出使用exp命令来完成的,该命令常用的选项有: userid: 用于指定执行导出操作的用户名,口令,连接字符串 tables: 用于指定执行导出操作的表 owner: 用于指定执行导出操作的方案 full=y: 用于指定全库导出模式 inctype:用于指定执行导出操作的增量类型 rows: 用于指定执行导出操作是否要导出表中的数据 file: 用于指定导出文件名 8.5u在导入和导出的时候,要到oracle目录的bin 目录下。Cmd 进入命令格式:E:oracleproduct10.2.0db_1BINu导出表导出表 1.导出自己的表 Exp userid=scott
4、/hxhtest tables=(dept) file=d:dept.dmp 2.导出其它方案的表 如果用户要导出其它方案的表,则需要dba的权限或是exp_full_database的权限,比如system就可以导出scott的表 E:oracleproduct10.2.0db_1BIN exp userid=system/hxhtest tables=(scott.emp) file=d:e2.dmp8.6u3. 导出表的结构 exp userid=scott/hxhtest tables=(emp) file=d:e3.dmp rows=Nu4. 使用直接导出方式 exp userid=
5、scott/hxhtest tables=(emp) file=d:e4.dmp direct=Y这种方式比默认的常规方式速度要快,当数据量大时,可以考虑使用这样的方法。 这时需要数据库的字符集要与客户端字符集完全一致,否则会报错. 8.7u导出方案 导出方案是指使用export工具导出一个方案或是多个方案中的所有对象(表,索引,约束.)和数据。并存放到文件中。 u1. 导出自己的方案 exp userid=scott/hxhtest owner=scott file=d:scott.dmp u2. 导出其它方案 如果用户要导出其它方案,则需要dba的权限或是exp_full_database
6、的权限,比如system用户就可以导出任何方案 exp userid=system/hxhtest owner=(scott) file=d:system.dmp 8.8u导出数据库 导出数据库是指利用export导出所有数据库中的对象及数据,要求该用户具有dba的权限或者是exp_full_database权限 增量备份exp userid=system/hxhtest full=Y inctype=complete file=d:all.dmp 8.9导入u导入就是使用工具import将文件中的对象和数据导入到数据库中,但是导入要使用的文件必须是export所导出的文件。与导出相似,导入也
7、分为导入表,导入方案,导入数据库三种方式。 imp常用的选项有 userid: 用于指定执行导入操作的用户名,口令,连接字符串 tables: 用于指定执行导入操作的表 formuser: 用于指定源用户 touser: 用于指定目标用户 file: 用于指定导入文件名 full=y: 用于指定执行导入整个文件 inctype: 用于指定执行导入操作的增量类型 rows: 指定是否要导入表行(数据) ignore: 如果表存在,则只导入数据 8.10导入u导入表 u1. 导入自己的表 imp userid=scott/hxhtest tables=(emp) file=d:emp.dmp2.
8、导入表到其它用户 要求该用户具有dba的权限,或是imp_full_database imp userid=system/hxhtest tables=(emp) file=d:xx.dmp touser=scott8.11导入u3. 导入表的结构只导入表的结构而不导入数据 imp userid=scott/tigermyorcl tables=(emp) file=d:xx.dmp rows=n u4. 导入数据 如果对象(如比表)已经存在可以只导入表的数据 imp userid=scott/tigermyorcl tables=(emp) file=d:xx.dmp ignore=y 8.
9、12导入u导入方案 导入方案是指使用import工具将文件中的对象和数据导入到一个或是多个方案中。如果要导入其它方案,要求该用户具有dba的权限,或者imp_full_database u1 导入自身的方案 imp userid=scott/tiger file=d:xxx.dmp u2 导入其它方案 要求该用户具有dba的权限 imp userid=system/manager file=d:xxx.dmp fromuser=system touser=scott 8.13导入u导入数据库 在默认情况下,当导入数据库时,会导入所有对象结构和数据,案例如下: imp userid=system
10、/manager full=y file=d:xxx.dmp 8.14数据字典 u数据字典记录了数据库的系统信息,它是只读表和视图的集合,数据字典的所有者为sys用户。 u用户只能在数据字典上执行查询操作(select语句),而其维护和修改是由系统自动完成的。 u这里我们谈谈数据字典的组成:数据字典包括数据字典基表和数据字典视图,其中基表存储数据库的基本信息,普通用户不能直接访问数据字典的基表。数据字典视图是基于数据字典基表所建立的视图,普通用户可以通过查询数据字典视图取得系统信息。数据字典视图主要包括user_xxx,all_xxx,dba_xxx三种类型。 8.15数据字典uuser_ta
11、bles; 用于显示当前用户所拥有的所有表,它只返回用户所对应方案的所有表 比如:select table_name from user_tables; u all_tables; 用于显示当前用户可以访问的所有表,它不仅会返回当前用户方案的所有表,还会返回当前用户可以访问的其它方案的表: 比如:select table_name from all_tables; udba_tables; 它会显示所有方案拥有的数据库表。但是查询这种数据库字典视图,要求用户必须是dba角色或是有select any table系统权限。 例如:当用system用户查询数据字典视图dba_tables时,会返回
12、system,sys,scott.方案所对应的数据库表。 8.16用户名,权限,角色 u在建立用户时,oracle会把用户的信息存放到数据字典中,当给用户授予权限或是角色时,oracle会将权限和角色的信息存放到数据字典。 通过查询dba_users可以显示所有数据库用户的详细信息;通过查询数据字典视图dba_sys_privs,可以显示用户所具有的系统权限 通过查询数据字典视图dba_tab_privs,可以显示用户具有的对象权限; 通过查询数据字典视图dba_col_privs可以显示用户具有的列权限; 通过查询数据库字典视图dba_role_privs可以显示用户所具有的角色。 8.17
13、用户名,权限,角色u这里给大家再讲讲角色和权限的关系。例如:要查看scott具有的角色,可查询dba_role_privs; SQL select * from dba_role_privs where grantee=SCOTT; u/查询orale中所有的系统权限,一般是dba select * from system_privilege_map order by name; u/查询oracle中所有对象权限,一般是dba select distinct privilege from dba_tab_privs; u/查询oracle中所有的角色,一般是dba select * from
14、 dba_roles; u/查询数据库的表空间 select tablespace_name from dba_tablespaces; 8.18u问题1:如何查询一个角色包括的权限? u问题2:oracle究竟有多少种角色? u问题3:如何查看某个用户,具有什么样的角色? 8.19约束 u数据的完整性用于确保数据库数据遵从一定的商业和逻辑规则,在oracle中,数据完整性可以使用约束、触发器、应用程序(过程、函数)三种方法来实现,在这三种方法中,因为约束易于维护,并且具有最好的性能,所以作为维护数据完整性的首选。 u约束用于确保数据库数据满足特定的商业规则。在oracle中,约束包括:not
15、 null、 unique, primary key, foreign key,和check五种。 8.20约束u使用 unot null(非空) 如果在列上定义了not null,那么当插入数据时,必须为列提供数据。 uunique(唯一) 当定义了唯一约束后,该列值是不能重复的,但是可以为null。 uprimary key(主键) 用于唯一的标示表行的数据,当定义主键约束后,该列不但不能重复而且不能为null。 需要说明的是:一张表最多只能有一个主键,但是可以有多个unqiue约束。 8.21约束uforeign key(外键) 用于定义主表和从表之间的关系。外键约束要定义在从表上,主表
16、则必须具有主键约束或是unique约束,当定义外键约束后,要求外键列数据必须在主表的主键列存在。 ucheck 用于强制行数据必须满足的条件,假定在sal列上定义了check约束,并要求sal列值在1000-2000之间如果不在1000-2000之间就会提示出错。 商店售货系统表设计案例 现有一个商店的数据库,记录客户及其购物况,由下面三个表组成:商品goods(商品号goodsId,商品名 goodsName,单价 unitprice,商品类别category,供应商provider); 客户customer(客户号customerId,姓名name,住在address,电邮email,性别sex,身份证cardId); 8.22约束购买purchase(客户号customerId,商品号goodsId,购买数量nums); 请用SQL语言完成下列功能: 1. 建表,在定义中要求声明: (1). 每个表的主外键; (2). 客户的姓名不能为空值; (3). 单价必须大于0,购买数量必须在1到30之间; (4). 电邮不能够重复; (5). 客户的性别必须是 男 或者 女,默认是男;