一.EXP操作
exp作业会影响DB Server日常操作,因此在非高峰期进行操作。
1.为了保证汇出的资料不出现乱码,因此我们要保证client的编码和DB server端保持一致。我们要查询server端NLS_LANG 和NLS_NCHAR_CHARACTERSET,具体sql代码如下:
SELECT a.VALUE || '_' || b.VALUE || '.' || c.VALUE AS NLS_LANG,
d.VALUE AS NLS_NCHAR_CHARACTERSET
FROM (SELECT VALUE
FROM NLS_DATABASE_PARAMETERS
WHERE parameter = 'NLS_LANGUAGE') a,
(SELECT VALUE
FROM NLS_DATABASE_PARAMETERS
WHERE parameter = 'NLS_TERRITORY') b,
(SELECT VALUE
FROM NLS_DATABASE_PARAMETERS
WHERE parameter = 'NLS_CHARACTERSET') c,
(SELECT VALUE
FROM NLS_DATABASE_PARAMETERS
WHERE parameter = 'NLS_NCHAR_CHARACTERSET') d
得到:NLS_LANG 和NLS_NCHAR_CHARACTERSET的server值。
2.在本机DOS命令环境下,设置上面查询的结果。
cmd->cd\->set NLS_LANG =''->set NLS_NCHAR_CHARACTERSET=''.
3.export server DB资料
C:\>exp 账户/密码@severDB OWNER=用户 file=d:\名字.dump log=d:\explogs.log
检查log是否正常.
二.imp操作
导入本机时候要确认网络连接是否后server无关后在import到本机DB资料
1.利用上面的sql确定本机db NLS_LANG和NLS_NCHAR_CHARACTERSET是否与Server端一致
2.C:\>imp 账户/密码@clientDB fromuser=用户 touser=用户 file=d:\名字.dump log=d:\implogs.log
3.检查log是否正常
三.检查是否有invalid,虽然log无异常,不代表汇入动作完全没有异常
1.刚汇入的时候执行下面的sql
begin
DBMS_UTILITY.compile_schema(‘tooling’,true);
end;
/
2.检查invalid的方法
SELECT object_name,object_type,
LAST_DDL_TIME,object_id
FROM user_objects
WHERE status <> 'VALID'
UNION
SELECT
object_name,object_type,
LAST_DDL_TIME,object_id
FROM user_objects
WHERE object_type = 'INDEX'
AND object_name IN
(SELECT index_name
FROM user_indexes
WHERE status = 'UNUSABLE'
UNION
SELECT index_name
FROM user_ind_partitions
WHERE status = 'UNUSABLE'
UNION
SELECT index_name
FROM user_ind_subpartitions
WHERE status = 'UNUSABLE')