这里大多数能很快搜到的就不多叙述了
大致分为两大类数据库在用、数据库没在用。
数据库没有使用了(一般是为了迁移数据或着保留备份)
下面是以按用户导为例
nohup expdp \'/ as sysdba\' schemas=xxx DIRECTORY=xxx dumpfile=实例名_日期_%U.dmp logfile=实例名_日期.log EXCLUDE=SYSTEM_GRANT,DB_LINK,TABLE_STATISTICS,INDEX_STATISTICS PARALLEL=4 COMPRESSION=ALL cluster=no &
此处可以将schemas替换成parfile将所需要导入的对象放入文件中格式网上都有讲随便翻翻就有
PARALLEL= 4
这里并行数量根据lscpu查看
COMPRESSION=ALL
根据情况选择是否开启压缩
cluster=no
这个选项一般情况下尽量带着否则会报错
table_exists_action=replace 用前要申请(工作也要学会保护自己)
注意:EXCLUDE这个选项不只可以选择数据,可以预演导入导出操作,查看把不需要的去掉可以减少很多无效报错。
多对一时
REMAP_TABLESPACE=%:(目标名称大写)
REMAP_SCHEMA=同理
一对一
REMAP_TABLESPACE=XXX:(目标名称大写)
REMAP_SCHEMA=同理
多实例可以通过flashback_scn保证唯一性
数据库在有使用(生产)
这里提供一个流程,相关sql需要根据业务情况改写。能进行生产迁移的查询sql应该还是有一定积累的这里就不多说明了。
1.通知业务记录老库序列值
2. 通知业务停应用
3. 确认没有应用连接
上面操作主要是为了保证自己操作是有效的
4.杀掉相关会话
select s.username,'alter system kill session ' || '''' || s.sid || ',' || s.serial# || ',@' || s.inst_id||'''' || ' immediate;' kill_sql
from gv$session s, gv$process p
where s.inst_id=p.inst_id
and s.paddr = p.addr
and s.username is not null
and s.username not in ()
order by s.username;
5.锁用户
6.锁job
7.检查有无新建对象
8.导出导入数据
9.编译无效对象
10.检查对象数量及状态
11.核对表行数
12.收集统计信息
搞完也别急,记得让业务核对数据。
有什么问题了单独导一下自己根据情况解决。
写的都是我不成熟的理解,希望大佬们看了可以指正!
刚入坑的话还是可以看看少走点弯路