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

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

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

1.准备测试环境:

Oracle 10.2.0.5

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

2.测试验证:

测试命令:

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

生成的文件如下:

  1. [oracle@rac1-server xdump]$ ls -lrth
  2. total 801M
  3. -rw-rw---- 1 501 1000 7.4M Jun 2 13:37 full_system_02.dmp
  4. -rw-rw---- 1 501 1000 376M Jun 2 13:37 full_system_01.dmp
  5. -rw-rw---- 1 501 1000 7.4M Jun 2 13:37 full_sys_02.dmp
  6. -rw-rw---- 1 501 1000 376M Jun 2 13:37 full_sys_01.dmp
  7. -rw-rw-rw- 1 501 1000 81K Jun 2 13:37 full_sys.log
  8. -rw-rw-rw- 1 501 1000 81K Jun 2 13:37 full_system.log
  9. -rw-rw-rw- 1 501 1000 18M Jun 2 13:40 full_sys.sql
  10. -rw-rw-rw- 1 501 1000 4.9K Jun 2 13:40 full_sys_impdp.log
  11. -rw-rw-rw- 1 501 1000 18M Jun 2 13:40 full_system.sql
  12. -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用户下各自创建一些表、索引、同义词等对象

  1. #----sys 用户创建
  2. --table&index
  3. create table sys_test as select * from dba_objects;
  4. create index idx_sys_test on sys_test(object_id);
  5. --table&trigger
  6. create table sys_emp as select * from scott.emp;
  7. create table sys_aud_salary_history(
  8. empno NUMBER(4),
  9. old_sal NUMBER(7,2),
  10. new_sal NUMBER(7,2),
  11. change_time varchar2(50)
  12. );
  13. create or replace trigger tri_sys_sal after update
  14. on sys_emp
  15. for each row
  16. begin
  17. insert into sys_aud_salary_history VALUES
  18. (:OLD.empno, :OLD.sal, :NEW.sal, TO_CHAR(SYSDATE, 'yyyy-mm-dd hh24:mi:ss'));
  19. end;
  20. /
  21. --这里发现sys用户无法创建ownersys的触发器,忽略。
  22. --synonym
  23. create synonym sysemp for scott.emp;
  24. --------------------------------------------------------------------------------------------
  25. --------------------------------------------------------------------------------------------
  26. #----system 用户创建
  27. conn system/oracle
  28. --table&index
  29. create table system_test as select * from dba_objects;
  30. create index idx_system_test on system_test(object_id);
  31. --table&trigger
  32. create table system_emp as select * from scott.emp;
  33. create table system_aud_salary_history(
  34. empno NUMBER(4),
  35. old_sal NUMBER(7,2),
  36. new_sal NUMBER(7,2),
  37. change_time varchar2(50)
  38. );
  39. create or replace trigger tri_system_sal after update
  40. on system_emp
  41. for each row
  42. begin
  43. insert into system_aud_salary_history VALUES
  44. (:OLD.empno, :OLD.sal, :NEW.sal, TO_CHAR(SYSDATE, 'yyyy-mm-dd hh24:mi:ss'));
  45. end;
  46. /
  47. --synonym
  48. 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. ubuntu16.04下安装配置pl-svo

    Semi-direct Visual Odometry(SVO)安装配置 https://blog.csdn.net/seymour163/article/details/53947764 http: ...

  2. hive优化之开启压缩功能

    1.开启hive作业mapreduce任务中间压缩功能: 对于数据进行压缩可以减少job中map和reduce task间的数据传输量.对于中间数据压缩,选择一个低cpu开销编/解码器要不选择一个压缩 ...

  3. Android Studio自动排版的两种方法

    Android Studio这样的集成开发环境虽然代码自动化程度很高,但是自动化程度高导致人的自主性就下降了,而且总是依赖编辑器的功能也会搞得代码排版很别扭. 最难受的是你在Android Studi ...

  4. ios开发dismiss所有控制器

    -(void)dismissToRootViewController { UIViewController *vc = self; while (vc.presentingViewController ...

  5. RMAN.DBMS_RCVCAT 版本错误处理

    登录新装的catalog库准备注册数据库时报版本问题 rman target / catalog rman11g/rman2010#@rman Recovery Manager:Release 11. ...

  6. selenium如何定位同级节点

    场景:当定位某个元素时,发现所需要的元素在同级节点,可以用/following-sibling::*  方法(定位同级的第二位)    当定位统计节点的第二个定位相邻节点. 可以用/preceding ...

  7. SQL Server 无法连接数据库

    1.打开SQL server 配置管理器-->SQL server 网络配置-->实例名的协议 2.保证SQLEXPRESS协议中的Named Pipes和 TCP/IP启用. 3.点击S ...

  8. tomcat去掉项目名称

    进入tomcat的conf目录,查看server.xml,找到<Host></Host>,在里面添加<Context path="" docBase= ...

  9. es的timeout机制

    GET /_search?timeout=10ms默认情况下,es的timeout机制是关闭的.比如,如果你的搜索特别慢,每个shard都要花好几分钟才能查询出来所有的数据,那么你的搜索请求也会等待好 ...

  10. SSLv3存在严重设计缺陷漏洞(CVE-2014-3566)

    SSLv3存在严重设计缺陷漏洞(CVE-2014-3566) 1.引发问题的原因 SSLv3漏洞(CVE-2014-3566),该漏洞贯穿于所有的SSLv3版本中,利用该漏洞,黑客可以通过中间人攻击等 ...