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用户登录的。
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用户只有启动数据库后才能执行各种管理工作。
管理初始化参数
初始化参数用于设置实例或是数据库的特征,oracle11g提供了300多个初始化参数,并且每个初始化参数都有默认值。
显示初始化参数命令
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
一、备份数据库(exp)
1、完全备份
exp demo/demo@orcl buffer=1024 file=d:\back.dmp full=y
demo:用户名、密码
buffer: 缓存大小
file: 具体的备份文件地址
full: 是否导出全部文件
ignore: 忽略错误,如果表已经存在,则也是覆盖
2、将数据库中system用户与sys用户的表导出
exp demo/demo@orcl file=d:\backup\1.dmp owner=(system,sys)
3、导出指定的表
exp demo/demo@orcl file=d:\backup2.dmp tables=(teachers,students)
4、按过滤条件,导出
exp demo/demo@orcl file=d:\back.dmp tables=(table1) query=\" where filed1 like 'fg%'\"
导出时可以进行压缩:
命令后面 加上 compress=y
如果需要日志,后面: log=d:\log.txt
5、备份远程服务器的数据库
exp 用户名/密码@远程的IP:端口/实例 file=存放的位置:\文件名称.dmp full=y
二、还原数据库
打开cmd直接执行如下命令,不用再登陆sqlplus。
1、完整还原
imp demo/demo@orcl file=d:\back.dmp full=y ignore=y log=D:\implog.txt
指定log很重要,便于分析错误进行补救。
2、导入指定表:
imp demo/demo@orcl file=d:\backup2.dmp tables=(teachers,students)
3、还原到远程服务器
imp 用户名/密码@远程的IP:端口/实例 file=存放的位置:\文件名称.dmp full=y