我们在做逻辑数据泵全库导出的时候,有两种流行的写法,一种是sys用户导出,一种是使用system用户导出。

现在想知道二者之间有什么区别?实验验证之前不妨先思考一下:

  • sys和system用户的权限区别;
  • 你之前习惯使用的是哪种?当时选择的原因是?

1.准备测试环境:

Oracle 10.2.0.5

使用《模拟业务最小测试用例02》初始化数据,另外手工在sys和system用户下各自创建一些表、索引、同义词等对象。

2.测试验证:

测试命令:

--创建directory
$ mkdir -p /public/xdump
SQL> create directory xdump as '/public/xdump'; --sys用户导出全库,sys导入指定sqlfile参数,生成脚本后续对比使用
$ expdp \'/ as sysdba\' directory=xdump dumpfile=full_sys_%U.dmp logfile=full_sys.log full=y parallel=2
$ impdp \'/ as sysdba\' directory=xdump dumpfile=full_sys_%U.dmp logfile=full_sys_impdp.log full =y sqlfile=full_sys.sql --system用户导出全库,system导入指定sqlfile参数,生成脚本后续对比使用
$ expdp system directory=xdump dumpfile=full_system_%U.dmp logfile=full_system.log full=y parallel=2
$ impdp system directory=xdump dumpfile=full_system_%U.dmp logfile=full_system_impdp.log full =y sqlfile=full_system.sql

生成的文件如下:

[oracle@rac1-server xdump]$ ls -lrth
total 801M
-rw-rw---- 1 501 1000 7.4M Jun 2 13:37 full_system_02.dmp
-rw-rw---- 1 501 1000 376M Jun 2 13:37 full_system_01.dmp
-rw-rw---- 1 501 1000 7.4M Jun 2 13:37 full_sys_02.dmp
-rw-rw---- 1 501 1000 376M Jun 2 13:37 full_sys_01.dmp
-rw-rw-rw- 1 501 1000 81K Jun 2 13:37 full_sys.log
-rw-rw-rw- 1 501 1000 81K Jun 2 13:37 full_system.log
-rw-rw-rw- 1 501 1000 18M Jun 2 13:40 full_sys.sql
-rw-rw-rw- 1 501 1000 4.9K Jun 2 13:40 full_sys_impdp.log
-rw-rw-rw- 1 501 1000 18M Jun 2 13:40 full_system.sql
-rw-rw-rw- 1 501 1000 5.0K Jun 2 13:40 full_system_impdp.log

可以通过diff命令对比full_sys.sql和full_system.sql两个文件内容:

发现创建的对象一致,文件内容不一样的都是owner本身的一些信息。

进一步通过手工创建的一些对象进行搜索,发现:

  • 使用sys和system导出都可以看到system下面的对象;
  • 使用sys和system导出都看不到sys下面都对象;

3.总结:

也就是说,使用sys或者system用户,二者导出全库的对象实际上本质没什么区别。

就算管理特别不规范,在SYS用户下创建了业务对象。那么使用SYSTEM和SYS两种方式默认都是导不出来的。

只是system导出一定需要输入密码,sys则不一定(本例中sys导出就没有使用密码)。

这时,有好奇的同学就会问了,那么如果想导出sys下的某些表怎么办呢?正好之前自己也遇到的一个案例:

附:本文中,手工在sys和system用户下各自创建一些表、索引、同义词等对象

#----sys 用户创建
--table&index
create table sys_test as select * from dba_objects;
create index idx_sys_test on sys_test(object_id); --table&trigger
create table sys_emp as select * from scott.emp; create table sys_aud_salary_history(
empno NUMBER(4),
old_sal NUMBER(7,2),
new_sal NUMBER(7,2),
change_time varchar2(50)
); create or replace trigger tri_sys_sal after update
on sys_emp
for each row
begin
insert into sys_aud_salary_history VALUES
(:OLD.empno, :OLD.sal, :NEW.sal, TO_CHAR(SYSDATE, 'yyyy-mm-dd hh24:mi:ss'));
end;
/
--这里发现sys用户无法创建owner为sys的触发器,忽略。 --synonym
create synonym sysemp for scott.emp;
--------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------
#----system 用户创建
conn system/oracle --table&index
create table system_test as select * from dba_objects;
create index idx_system_test on system_test(object_id); --table&trigger
create table system_emp as select * from scott.emp; create table system_aud_salary_history(
empno NUMBER(4),
old_sal NUMBER(7,2),
new_sal NUMBER(7,2),
change_time varchar2(50)
); create or replace trigger tri_system_sal after update
on system_emp
for each row
begin
insert into system_aud_salary_history VALUES
(:OLD.empno, :OLD.sal, :NEW.sal, TO_CHAR(SYSDATE, 'yyyy-mm-dd hh24:mi:ss'));
end;
/ --synonym
create synonym systememp for scott.emp;

实验验证sys和system用户全库导出的区别的更多相关文章

  1. Oracle sys和system用户、sysdba 和sysoper系统权限、sysdba和dba角色的区别

    sys和system用户区别 1)最重要的区别,存储的数据的重要性不同 sys所有oracle的数据字典的基表和视图都存放在sys用户中,这些基表和视图对于oracle的运行是至关重要的,由数据库自己 ...

  2. Oracle 修改SYS、system用户密码

    Oracle 修改SYS.system用户密码 by:授客 QQ:1033553122 概念 SYS用户是Oracle中权限最高的用户,而SYSTEM是一个用于数据库管理的用户.在数据库安装完之后,应 ...

  3. sys和system用户的权限区别

    http://blog.sina.com.cn/s/blog_869b0f460100uckp.html Oracle sys和system用户.sysdba 和sysoper系统权限.sysdba和 ...

  4. Oracle中sys和system用户的区别

    1.数据库的启动需要以SYSDBA/SYSOPER身份登录. 2.如果在同一主机上使用IPC连接到数据库使用操作系统授权,登录任何一个用户都可以拥有as sysdba和as sysoper. 3.sy ...

  5. Oracle数据库sys和system用户的默认密码及如何修改密码

    新安装好的Oracle数据库sys用户默认密码为change_on_install,system用户默认密码为manager. 以管理员身份登录的话,在命令行中输入 sqlplus sys/chang ...

  6. 【转】Oracle Sys和system用户、sysdba 和sysoper系统权

    一:最重要的区别,存储的数据的重要性不同 [sys]所有oracle的数据字典的基表和视图都存放在sys用户中,这些基表和视图对于oracle的运行是至关重要的,由数据库自己维护,任何用户都不能手动更 ...

  7. 禁止SYS和SYSTEM用户远程登录Oracle oracle的sys和system默认密码

    alter system set remote_login_passwordfile=none scope=spfile; system默认:manager sys默认:change_on_insta ...

  8. SYS与SYSTEM、DBA与SYSDBA的区别

    SYS与SYSTEM: 1. sys 的角色是sysdba system 的角色是sysoper 2. sys 具有create database的权限 system没有该权限 3. sys可以建数据 ...

  9. Oracle 12c 多租户 CDB 与 PDB 级别 expdb 与 impdb(表、用户、全库)

    Oracle 数据库 12 c 多租户下,如何在容器数据库 (CDB) 和可插拔数据库 (PDB) 中使用 expdb 与 impdp (数据泵) 呢? 我们一起探讨下PDB 下进行表级,用户级别,全 ...

随机推荐

  1. ado.net EF学习系列----深入理解查询延迟加载技术(转载)

    ado.net EF是微软的一个ORM框架,使用过EF的同学都知道EF有一个延迟加载的技术. 如果你是一个老鸟,你可能了解一些,如果下面的学习过程中哪些方面讲解的不对,欢迎批评指教.如果一个菜鸟,那我 ...

  2. [No0000147]深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing)理解堆与栈4/4

    前言   虽然在.Net Framework 中我们不必考虑内在管理和垃圾回收(GC),但是为了优化应用程序性能我们始终需要了解内存管理和垃圾回收(GC).另外,了解内存管理可以帮助我们理解在每一个程 ...

  3. [No0000CA]什么是“普瑞马法则”?以及 如何利用“普瑞马法则”,三步克服惰性

    一般在学习和生活中,我们都可能有这样的经验,就是当说想要作某件事情的时候,但过了好久发现还是没有做:或者觉得有力气使不出来:或者总觉得生活是灰色和抑郁的等等. 这类情况反映在生活中,就是生活好像总是被 ...

  4. tensorflow的ckpt文件总结

    1.TensorFlow的模型文件 --checkpoint_dir | |--checkpoint | |--MyModel.meta | |--MyModel.data-00000-of-0000 ...

  5. tensorflow的tile使用

    当你需要按照矩阵维度复制数据时候,可以使用tensorflow的tile函数 a1 = tf.tile(a, [2, 2]) 表示把a的第一个维度复制两次,第二个维度复制2次.注意使用tf.nn.so ...

  6. cocoa开发Mac小试笔记

    急需纠正自己的错误认识,Mac开发和iOS开发UI显示.事件交互.生命周期等存在极大的差距 首先点击事件NSButton和UIButton完全是两个不同的东西 列表UITableView和NSTabl ...

  7. int 存储大小 数组元素个数

    为了得到某个类型或某个变量在特定平台上的准确大小,您可以使用 sizeof 运算符.表达式 sizeof(type) 得到对象或类型的存储字节大小.下面的实例演示了获取 int 类型的大小: 实例 # ...

  8. set,env,export,set -x,set -e;

    set 用来显示本地变量 env 用来显示环境变量 export 用来显示和设置环境变量 set 显示当前shell的变量,包括当前用户的变量 env 显示当前用户的变量 export 显示当前导出成 ...

  9. Mac上安装使用MYSQL以及Navicat数据库管理和PHP服务器配置

    1.Apache服务器   Mac OS X内置Apache服务器,但默认没有启动 查看Apache版本: sudo apachectl -v 启动.关闭.重启Apache: sudo apachec ...

  10. JavaScript学习(六)

    这里要注意: 1.num为NaN(因为str的开头不是数字) 2.NaN和NaN是不等的 3.NaN也是number.