一,sys用户和system用户的区别
当一个oracle实例创建了之后,会自动创建system和sys用户
区别:
对于两者之间的区别,就类似 sys用户是董事长,system用户是总经理
具体的区别如下:
·存储的数据的重要性不同
sys:所有的oracle的数据字典的基表和动态视图都存放在sys用户中,这些基表和视图对oracle来说是至关重要的,有数据库自己来维护,任何用户不能手动修改,sys用户是拥有最高权限的用户
system:存放的是一些次要级的数据,如oracle的一些特性或者工具的管理信息,拥有的权限也很高
·权限不同
sys:必须要用sysdba或者sysoper的身份才能登陆
system:可以使用sysdba的身份登陆,也可以使用normal的身份登陆,如果以sysdba身份登陆的话,那么就是相当于sys用户
sysdba 与 sysoper 身份的区别:
sysdba拥有最高的系统权限,登陆后是 sys
sysoper主要用来启动、关闭数据库,sysoper 登陆后用户是 public
sysdba和sysoper属于system privilege,也称为administrative privilege,拥有例如数据库开启关闭之类一些系统管理级别的权限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角色的数据库用户,特殊用户(sys)可以关闭和启动数据库,但是普的dba用户不能进行
二,数据库的备份
逻辑备份和物理备份
导出(逻辑备份):导出可以分为导出表,导出方案,导出数据三种,用exp命令来完成
,常用的选项有:
userid:用于指定执行导出操作的用户名,密码,连接字符串
tables: 用于指定导出操作的表
owner: 用于指定执行导出操作的方案
full: = y/n 用户指定导出操作的数据库
inctype: 用于指定导出操作的增量类型
rows: =y/n 用于指定执行导出操作是否要导出表中的数据
file: 用于指定导出的路径以及文件名
compress: 用于导出的时候压缩文件
要进行导出操作,可以在oracle的D:\oracle\ora92\bin下面建立一个.bat文件,把命令写在.bat文件里面,也可以在dos命令下面输入,但是要先进入到这个文件夹中;
·导出表
|- 导出自身的表
exp userid=scott/tiger@hwt tables=(emp) file=D:\scott_emp.dmp;
|- 导出其他方案的表
如果用户要导出其他的方案的表,则需要dba的角色或是exp_full_database的权限,比如system就可以导出scottt表
exp userid=system/manager@hwt tables=(scott.emp,scott.dept) file=d:\system_emp_dept.dmp;
|- 只导出表的结构
exp userid=scott/tiger@hwt tables=(emp) file=D:\scott_emp.dmp rows=n;
//rows=n 意思就是不导出数据,只是导出结构
|- 直接导出
exp userid=scott/tiger@hwt tables=(emp) file=D:\scott_emp.dmp direct=y;
直接导出的速度很快,尤其在导入大对象的时候速度很快
直接导出的限制 :1. 导出表空间必须使用传统模式。
2. 含有LOB对象的表不支持直接导出模式。
3. 直接导出不支持QUERY.
4. 直接导出模式使用RECORDLENGTH设置一次可以导出数据的量,传统模式使用buffer设置.
5. 低版本直接导出模式要求导出客户端和数据库字符集设置一致。
·导出方案
|- 导出自己的方案
exp userid=scott/tiger@hwt owner=scott file=D:\scott_shema.dmp;
|- 导出其他的方案
导出其他的方案必须具有dba的角色,或者具有exp_full_database的权限,如:system可以导出任何的方案
exp userid=system/manager@hwt owner=(system,scott) file=D:\scott_shema.dmp;
·导出数据库
导出数据库必须具有dba的角色或者是exp_full_database的权限,同时因为导出数据的时间很长,而且不容易成功完成整个数据库的导出,所以少用
|- exp userid=system/manager@hwt full=y inctype=complete file=d:\hwt.dmp
导入(逻辑恢复)
·导入表
|- 导入自己的表
imp userid=scott/tiger@hwt tables=(emp) file=D:\scott_emp.dmp;
|- 导入别人的表(需要dba角色或者exp_full_database的权限)
imp userid=system/manager@hwt tables=(emp) touser=hwt file=D:\scott_emp.dmp;
|- 导入表结构
imp userid=scott/tiger@hwt tables=(emp) rows=n file=D:\scott_emp.dmp;
|- 导入表的数据(如果表的结果存在,就只导入数据)
imp userid=scott/tiger@hwt tables=(emp) ignore=y file=D:\scott_emp.dmp;
注意的是,备份文件必须是自己这个用户导出的,要不就用dba权限来导入给别的方案
·导入方案
|- 导入自身的方案
imp userid=scott/tiger@hwt file=D:\scott_schema.dmp;
|- 导入其他的方案(需要有dba的权限)
imp userid=sytem/manger@hwt fromuser=system touser=scott file=D:\scott_schema.dmp;
·导入数据库
|- 导入数据库
在默认情况下,导入数据库会导入对象结构和数据
(前提是要有导出数据库的那个用户,这个用户要先存在)
imp userid=system/manager@hwt full=y file=D:\db_hwt.dmp;