oracle--dba和表的备份与恢复
数据库管理员
每个oracle数据库应该至少有一名数据库管理员(dba),对于一个小的数据库,一个dba就够了,但是对于一个大的数据库可能需要多个dba分别担负不同的管理职责,那么一个数据库管理员的主要工作是什么呢?
dba的职责:
1、安装和升级oracle数据库
2、建库、表空间、表、视图、索引...
3、制定并实施备份与恢复计划
4、数据库权限管理,调优,故障排除
5、对于高级dba,要求能参与项目开发,会编写sql语句、存储过程、触发器、规则、约束、包
管理数据库的用户主要是sys和system
在前面我们已提到这两个用户,区别主要是:
1、最重要的区别,存储的数据重要性不同。
sys:所有oracle的数据字典的基表和视图都存放在sys用户中,这些基表和视图对于oracle的运行是至关重要的,由数据库自己维护,任何用户都不能手动更改。sys用户拥有dba(角色),sysdba(系统权限),sysoper(系统权限)角色或权限,是oracle权限最高的用户。
system:用于存放次一级的内部数据,如oracle的一些特性或工具的管理信息。system用户拥有dba,sysdba系统权限。
2、其次的区别,权限的不同。
sys用户必需以as sysdba或as sysoper形式登录,不能以normal方式登录数据库。
system如果正常登录,它其实就是一个普通的dba用户,但是如果以as sysdba登录,其结果实际上它是作为sys用户登录的,这一点类似linux里面的su的感觉,从登录信息里面我们可以看出来。
sysdba和sysoper权限区别
sysdba和sysoper具体的权限可以看下表:
系统权限 |
sysdba |
sysoper |
区别 |
startup(启动数据库) |
startup |
shutdown(关闭数据库) |
shutdown |
|
alter database open/mount/backup |
alter database open/mount/backup |
|
改变字符集 |
none |
|
create database(创建数据库) |
none不能创建数据库 |
|
drop database(删除数据库) |
none |
|
create spfile |
create spfile |
|
alter database archivelog(归档日志) |
alter database archivelog |
|
alter database recover(恢复数据库) |
只能完全恢复,不能执行不完全恢复 |
|
拥有restricted session(会话限制) |
拥有restricted session权限 |
|
可以让用户作为sys用户连接 |
可以进行一些基本的操作,但不能查看用户数据 |
|
登录之后用户是sys |
登录之后用户是public |
dba权限的用户
dba用户是指具有dba角色的数据库用户。特权用户可以执行启动实例,关闭实例等特殊操作,而dba用户只有启动数据库后才能执行各种管理工作。
数据库管理员--管理初始化参数
管理初始化参数
初始化参数用于设置实例或是数据库的特征,oracle10g提供了200多个初始化参数,并且每个初始化参数都有默认值。
显示初始化参数命令
show parameter
如何修改参数
需要说明的如果你希望修改这些初始化的参数,可以到文件:
盘符:\oracle目录\admin\数据库实例\pfile\init.ora文件中去修改。
数据库(表)的逻辑备份与恢复--介绍
逻辑备份是指使用工具export将数据对象的结构和数据导出到文件的过程;
逻辑恢复是指当数据库对象被误操作而损坏后使用工具import利用备份的文件把数据对象导入到数据库的过程。
物理备份即可在数据库open的状态下进行也可在关闭数据库后进行;
但是逻辑备份和恢复只能在open的状态下进行。
原理图(所有数据库一样,只是使用的工具不一样而以。)
数据库(表)的逻辑备份与恢复--导出
导出具体的分为:导出表、导出方案、导出数据库三种方式。
导出使用exp命令来完成的,该命令常用的选项有:
userid:用于指定执行导出操作的用户名、口令、连接字符串;
tables:用于指定执行导出操作的表;
owner:用于指定执行导出操作的方案;
full=y:用于指定执行导出操作的数据库;
inctype:用于指定执行导出操作的增量类型;
rows:用于指定执行导出操作是否要导出表中的数据;
file:用于指定导出文件名。
导出表
1、导出自己的表
exp userid=用户名/密码@数据库实例名 tables=(表名1,表名2,..) file=备份路径
例:exp userid=scott/tiger@orcl tables=(emp,dept) file=d:/scott_emp_dept.dmp
2、导出其它方案的表
如果用户要导出其它方案的表,则需要DBA的权限或是exp_full_database的权限,比如system就可以导出scott的表
exp useris=用户名/密码@数据库实例名 tables=(方案名.表名1,方案名.表名2,..) file=备份路径
例:exp userid=system/orcl@orcl tables=(scott.emp,scott.dept) file=d:/scott_emp_
dept2.dmp
特别说明:备份文件的后缀名一般是.dmp,但是这不是必须的。
3、导出表的结构
exp userid=用户名/密码@数据库实例名 tables(表名1,表名2,..) file=备份路径 rows=n
例:exp userid=system/orcl@orcl tables(scott.emp,scott.dept) file=d:/scott_em
p_dept.demp rows=n
4、使用直接导出方式
exp userid=用户名/密码@数据库实例名 tables(表名1,表名2,..) file=备份路径 direct=y
例:exp userid=system/orcl@orcl tables(scott.emp,scott.dept) file=d:/scott_em
p_dept.demp direct=y
这种方式比默认的常规方式速度要快,当数据量大时,可以考虑使用这样的方法。
这时需要数据库的字符集要与客户端字符集完全一致,否则会报错。
导出方案
导出方案是指使用export工具导出一个方案或是多个方案中的所有对象(表、索引、约束..)和数据,并存放到文件中。
1、导出自己的方案
exp 用户名/密码@数据库实例名 owner=所有者 file=备份路径
例:exp scott/tiger@orcl owner=scott file=d:/scott_owner.dmp
2、导出其它方案
如果用户要导出其它方案,则需要dba的权限或者exp_full_database的权限。例如system用户就可以导出任何方案
exp 用户名/密码@数据库实例名 owner=(所有者1,所有者2,..) file=备份路径
例:exp system/orcl@orcl owner=scott,system file=d:/system_scott_owner.dmp
特别注意:如果用户的权限够大,则可一次性导出多外用户的方案。比如system。
导出完整数据库
需要dba的权限或者exp_full_database的权限。
exp 用户名/密码@数据库实例名 full=y file=备份路径
例:exp system/orcl@orcl full=y file=d:/orcl_full.dmp
导入表
导入自身表
imp 用户名/密码@数据库实例名 file=备份路径 tables=(表名1,表名2,..)
例:imp scott/tiger@orcl file=d:/emp_dept.dmp
特别注意:如果目的地有相同的表,则导入不成功。
导入其它方案的表
需要有dba权限或者imp_full_database的权限。
imp 用户名/密码@数据库实例名 file=备份路径 tables=(表名1,表名2,..) fromuser=方案名 touser=system
例:imp system/orcl@orcl file=d:/scott_emp_dept.demp tables=emp,dept fromuser=scott touser=system
注意:提示成功,但警告,表示此对象有scott导出,而不是当前用户。
导入方案
导入自身方案
imp 用户名/密码@数据库实例名 file=备份路径
例:imp scott/tiger@orcl file=scott_owner.dmp
导入其它方案
需要有dba权限或者imp_full_database权限
imp 用户名/密码@数据库实例名 file=备份路径 fromuser=方案名 touser=system
例:imp system/orcl@orcl file=scott.dmp fromuser=scott touser=system
导入完整数据库
需要有dba权限或者imp_full_database权限
imp 用户名/密码@数据库实例名 file=备份路径 full=y
例:imp system/orcl@orcl file=orcl_full.dmp full=y