记录oracle的一些操作

一.oracle的用户密码

设置用户名和密码尽量不要带@符号,否则后期导入导出等各种操作会出问题。最笨的办法就是临时改个简单的密码,操作完再改回去。

二.导入导出操作

导出:按照用户导出,EXCLUDE是排除某张表的操作,单引号需要转义一下:

expdp user/"***" schemas=user dumpfile=mydir:user1.dmp logfile=mydir:user1.log EXCLUDE=TABLE:\"IN\'DM_CSSMC_OPR_VS_FIN_ADJ\'\" compression=all;

导出多个用户的对象,就需要用dba用户,schemas后面用逗号分隔。

expdp dbauser/"***" schemas=user1,user2,user3 dumpfile=mydir:user1.dmp logfile=mydir:user1.log compression=all;

导入:按照用户导入,把一个用户的数据导入到另一个用户中,table_exists_action:表存在则
impdp user2/"***" directory=mydmpdir  remap_schema=user1:user2 dumpfile=user1.dmp logfile=user1.log table_exists_action=replace;

参数说明:

1、remap_schema当你从A用户导出的数据,想要导入到B用户中去,就使用这个:remap_schema=A:B

2、remap_tablespace 重新映射表空间,如果数据库对象不在同一表空间,则需要指定两个表空间。如:remap_tablespace=tbs_a:tbs_b 结果是所有tbs_a中的对象都会建在tbs_b表空间中,前提是目标用户B和目标表空间tbs_b存在

4、 table_exists_action 表已经存在的动作 有效关键字: (SKIP), APPEND, REPLACE 和 TRUNCATE。

table_exists_action选项:{skip 是如果已存在表,则跳过并处理下一个对象;append是为表增加数据;truncate是截断表,然后为其增加新数据;replace是删除已存在表,重新建表并追加数据}

5、exclude=object_grant 跳过对象授权

三.oracle导入数据后,需要重建sequence

情况描述:oracle只导入数据后,需要重建sequence,否则sequence引起ORA-00001 违反唯一约束条件。

解决:根据生产库重建开发库的sequence

1、删除开发库的sequence

生成删除开发库的sequence的sql:

select 'drop sequence '||s.SEQUENCE_OWNER||'.'||s.SEQUENCE_NAME||';' from dba_sequences s where s.SEQUENCE_OWNER =UPPER('开发用户');

2、生成根据生产库来创建开发库的sequence的sql:

(以生产库的当前值为开发库的开始值)

select 'create sequence '||'开发用户'||'.'||s.SEQUENCE_NAME||' start with '||s.LAST_NUMBER||' increment by '||s.INCREMENT_BY||' minvalue '||s.MIN_VALUE||' maxvalue '||s.MAX_VALUE||' NOCACHE NOCYCLE NOORDER;' from dba_sequences s where s.SEQUENCE_OWNER =UPPER('生产用户');

四.通过时间恢复删除且已提交的数据

1、查询当前系统时间

   select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

2、查询删除数据的时间点的数据

   select * from 表名 as of timestamp to_timestamp('2013-05-29 15:29:00','yyyy-mm-dd hh24:mi:ss');  (如果不是,则继续缩小范围)

3、恢复删除且已提交的数据

    flashback table 表名 to timestamp to_timestamp('2013-05-29 15:29:00','yyyy-mm-dd hh24:mi:ss');

    注意:如果在执行上面的语句,出现错误。可以尝试执行 alter table 表名 enable row movement; //允许更改时间戳

   找出删除的数据:select * from 表名 as of timestamp to_timestamp('删除时间点','yyyy-mm-dd hh24:mi:ss')   

   把删除的数据重新插入原表: insert into 表名 (select * from 表名 as of timestamp to_timestamp('删除时间点','yyyy-mm-dd hh24:mi:ss')); 

  select * from t_xxx as of timestamp (systimestamp - interval '10' minute)

五:linux下的一些操作

1.linux下发送文件到另一台服务器文件夹下

scp xxx.log root@ip:/backup

scp -r /data/* root@172.24.5.50:/opt//data/

-r:循环递归所有文件夹

2.查看磁盘空间

df -h

3.查看文件目录大小:

du -h -x --max-depth=1

4.查看文件大小:

ls -lht


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值