实验验证sys和system用户全库导出的区别
我们在做逻辑数据泵全库导出的时候,有两种流行的写法,一种是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用户全库导出的区别的更多相关文章
- Oracle sys和system用户、sysdba 和sysoper系统权限、sysdba和dba角色的区别
sys和system用户区别 1)最重要的区别,存储的数据的重要性不同 sys所有oracle的数据字典的基表和视图都存放在sys用户中,这些基表和视图对于oracle的运行是至关重要的,由数据库自己 ...
- Oracle 修改SYS、system用户密码
Oracle 修改SYS.system用户密码 by:授客 QQ:1033553122 概念 SYS用户是Oracle中权限最高的用户,而SYSTEM是一个用于数据库管理的用户.在数据库安装完之后,应 ...
- sys和system用户的权限区别
http://blog.sina.com.cn/s/blog_869b0f460100uckp.html Oracle sys和system用户.sysdba 和sysoper系统权限.sysdba和 ...
- Oracle中sys和system用户的区别
1.数据库的启动需要以SYSDBA/SYSOPER身份登录. 2.如果在同一主机上使用IPC连接到数据库使用操作系统授权,登录任何一个用户都可以拥有as sysdba和as sysoper. 3.sy ...
- Oracle数据库sys和system用户的默认密码及如何修改密码
新安装好的Oracle数据库sys用户默认密码为change_on_install,system用户默认密码为manager. 以管理员身份登录的话,在命令行中输入 sqlplus sys/chang ...
- 【转】Oracle Sys和system用户、sysdba 和sysoper系统权
一:最重要的区别,存储的数据的重要性不同 [sys]所有oracle的数据字典的基表和视图都存放在sys用户中,这些基表和视图对于oracle的运行是至关重要的,由数据库自己维护,任何用户都不能手动更 ...
- 禁止SYS和SYSTEM用户远程登录Oracle oracle的sys和system默认密码
alter system set remote_login_passwordfile=none scope=spfile; system默认:manager sys默认:change_on_insta ...
- SYS与SYSTEM、DBA与SYSDBA的区别
SYS与SYSTEM: 1. sys 的角色是sysdba system 的角色是sysoper 2. sys 具有create database的权限 system没有该权限 3. sys可以建数据 ...
- Oracle 12c 多租户 CDB 与 PDB 级别 expdb 与 impdb(表、用户、全库)
Oracle 数据库 12 c 多租户下,如何在容器数据库 (CDB) 和可插拔数据库 (PDB) 中使用 expdb 与 impdp (数据泵) 呢? 我们一起探讨下PDB 下进行表级,用户级别,全 ...
随机推荐
- background属性解释
如background: url(images/img1.jpg) no-repeat 0 0; 其中的 0 0,前一个是横坐标上的数,后一个表示纵坐标上的数,而很神奇的是,作为参考的坐标原点不是永远 ...
- 启用hive hwi方法
hive启动hwi: ./hive --service hwi ls: cannot access /opt/cdh-5.3.6/hive-0.13.1/lib/hive-hwi-*.war: No ...
- Exactly-Once 投递语义
小结: 1.Exactly-Once 是指发送到消息系统的消息只能被消费端处理且仅处理一次,即使生产端重试消息发送导致某消息重复投递,该消息也在消费端也只被消费一次. 消息队列 RocketMQ &g ...
- ionic使用cordova插件中的Screenshot截图分享功能
需要实现操作,考试完成后需要将成绩生成一张图片,分享出去, import { Screenshot } from '@ionic-native/screenshot'; constructor(pri ...
- JDBC---Mysql(2)
SQL注入攻击: 用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想知道的数据,这就是所谓的SQL注入攻击, 例如:判断username='a' or 'a'='a'; true从而为 ...
- iOS开发使用pdf切图
把pdf资源拖到Assets.xcassets里面, 打开最右边的按钮, scales选择single scale就可以像以前一样使用了: [UIImage imageName:@"xxx ...
- Appium环境配置(二)
一.使用Eclipse直接创建案例工程 1.打开Eclipse,[File]-->[New]-->[Project] 2.选择[Java Project]-->[Next] 3.输入 ...
- kmeans笔记
1.算法过程 a.随机选取k个初始点作为中心点 b.依次计算剩余所有点分别与哪个初始点距离较近,则该点属于哪个簇 c.移动中心点到现在的簇的中心 d.重复b,c两步,直到中心点不再变化算法结束 2.优 ...
- TensorFlow设置GPU占用量
默认开启Tensorflow的session之后,就会占用几乎所有的显存,进行如下设置即可: 指定GPU编号: import os os.environ["CUDA_VISIBLE_DEVI ...
- ES6面试题总结
1.说出至少5个ES6的新特性,并简述它们的作用.(简答题) 1.let关键字,用于声明只在块级作用域起作用的变量: 2.const关键字,用于声明一个常量: 3.结构赋值,一种新的变量赋值方式.常用 ...