系统环境:
操作系统:RedHat EL55
Oracle : Oracle 11.2.0.1.0
集群软件:Oracle GI 11.2.0.1.0
本案例采用的是通过数据的导入导出(EXPDP/IMPDP)的迁移方式
从单实例的库迁移数据到RAC环境,可以有多种方式,通过数据的导出和导入也可以,但前提是数据库采用相同的字符集。
1、数据库环境
单实例:
17:35:59 SYS@ test1>SELECT * FROM V$VERSION;
1
2
3
4
5
6
7
8
|
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release
11.2.
0.1.
0
- 64bit Production
PL/SQL Release
11.2.
0.1.
0
- Production
CORE
11.2.
0.1.
0
Production
TNS
for
Linux: Version
11.2.
0.1.
0
- Production
NLSRTL Version
11.2.
0.1.
0
- Production
Elapsed:
00
:
00
:
00.02
|
17:35:36 SYS@ test1>select userenv('LANGUAGE') FROM DUAL;
1
2
3
|
USERENV(
'LANGUAGE'
)
----------------------------------------------------
AMERICAN_AMERICA.ZHS16GBK
|
RAC 环境:
17:46:03 SYS@ prod1>SELECT * FROM V$VERSION;
1
2
3
4
5
6
7
8
|
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release
11.2.
0.1.
0
- Production
PL/SQL Release
11.2.
0.1.
0
- Production
CORE
11.2.
0.1.
0
Production
TNS
for
Linux: Version
11.2.
0.1.
0
- Production
NLSRTL Version
11.2.
0.1.
0
- Production
Elapsed:
00
:
00
:
00.16
|
17:46:29 SYS@ prod1>select instance_name,status from gv$instance;
1
2
3
4
|
INSTANCE_NAME STATUS
---------------- ------------
prod1 OPEN
prod2 OPEN
|
17:45:40 SYS@ prod1>select userenv('LANGUAGE') FROM DUAL;
1
2
3
|
USERENV(
'LANGUAGE'
)
----------------------------------------------------
AMERICAN_AMERICA.ZHS16GBK
|
2、建立测试环境
单实例:
17:38:26 SYS@ test1>create tablespace test01
17:41:40 2 datafile '/dsk1/oradata/test1/test01.dbf' size 100m;
Tablespace created.
17:43:49 SYS@ test1>create user test1 identified by test1
17:44:00 2 default tablespace test01
17:44:00 3 temporary tablespace tmpgp1
17:44:00 4 quota unlimited on test01
17:44:00 5 account unlock;
17:44:00 SYS@ test1>grant connect ,resource to test1;
Grant succeeded.
17:50:34 SYS@ test1>conn test1/test1
Connected.
17:50:41 TEST1@ test1>create table testtb1 tablespace test01 as select * from scott.emp;
Table created.
Elapsed: 00:00:00.25
17:50:52 TEST1@ test1>create index test_empno_ind on testtb1(empno) tablespace indx;
Index created.
Elapsed: 00:00:00.05
如果做表空间传输,需要对表空间做自包含检测:
17:51:15 SYS@ test1>EXECUTE DBMS_TTS.TRANSPORT_SET_CHECK('test01', TRUE);
PL/SQL procedure successfully completed.
Elapsed: 00:01:04.07
17:52:25 SYS@ test1>SELECT * FROM TRANSPORT_SET_VIOLATIONS;
no rows selected
Elapsed: 00:00:00.05
创建导出传输目录:
17:52:43 SYS@ test1>create directory exp_dir as '/home/oracle/exp';
Directory created.
Elapsed: 00:00:00.07
17:53:24 SYS@ test1>grant read,write on directory exp_dir to test1;
Grant succeeded.
Elapsed: 00:00:00.06
17:53:39 SYS@ test1>!mkdir ~/exp
导出schema:
[oracle@rh6 exp]$ expdp test1/test1 directory=exp_dir dumpfile=test.dmp logfile=test.log schemas=test1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
Export: Release
11.2.
0.1.
0
- Production
on
Thu Jul
10
17
:
59
:
05
2014
Copyright (c)
1982
,
2009
, Oracle
and
/
or
its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release
11.2.
0.1.
0
- 64bit Production
With the Partitioning, OLAP, Data Mining
and
Real Application Testing options
Starting
"TEST1"
.
"SYS_EXPORT_SCHEMA_02"
: test1/******** directory=exp_dir dumpfile=test.dmp logfile=test.log schemas=test1
Estimate
in
progress using BLOCKS method...
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method:
256
KB
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/COMMENT
. . exported
"TEST1"
.
"SYS_EXPORT_SCHEMA_01"
139.4
KB
1073
rows
. . exported
"TEST1"
.
"TESTTB1"
8.570
KB
14
rows
Master table
"TEST1"
.
"SYS_EXPORT_SCHEMA_02"
successfully loaded/unloaded
******************************************************************************
Dump file set
for
TEST1.SYS_EXPORT_SCHEMA_02 is:
/home/oracle/exp/test.dmp
Job
"TEST1"
.
"SYS_EXPORT_SCHEMA_02"
successfully completed
at
17
:
59
:
28
|
3、在RAC环境下导入数据:
从单实例传输dump文件到RAC环境下:
[oracle@rh6 exp]$ scp *.dmp 192.168.8.21:/u01/exp
1
2
3
4
5
6
|
The authenticity of host
'192.168.8.21 (192.168.8.21)'
can't be established.
RSA key fingerprint is
39
:
04
:
88
:3b:
54
:
34
:3c:
34
:d2:df:
74
:
37
:fe:5f:
92
:2d.
Are you sure you want to
continue
connecting (yes/no)? yes
Warning: Permanently added
'192.168.8.21'
(RSA) to the list of known hosts.
oracle@
192.168.
8.21
's password:
test.dmp
100
% 428KB
428.
0KB/s
00
:
00
|
在RAC下建立表空间和Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
18
:
16
:
28
SYS@ prod1>create tablespace test01;
Tablespace created.
Elapsed:
00
:
00
:
06.27
18
:
19
:
19
SYS@ prod1>create tablespace indx;
Tablespace created.
Elapsed:
00
:
00
:
05.81
18
:
19
:
36
SYS@ prod1>select file_name,file_id,tablespace_name,bytes/
1024
/
1024
from
dba_data_files;
FILE_NAME FILE_ID TABLESPACE_NAME BYTES/
1024
/
1024
-------------------------------------------------- ---------- ---------------------------
+DG1/prod/datafile/users
.259.852387481
4
USERS
5
+DG1/prod/datafile/undotbs1
.258.852292707
3
UNDOTBS1
105
+DG1/prod/datafile/sysaux
.257.852292707
2
SYSAUX
630
+DG1/prod/datafile/system
.256.852292703
1
SYSTEM
690
+DG1/prod/datafile/example
.264.852292891
5
EXAMPLE
103.125
+DG1/prod/datafile/undotbs2
.265.852293259
6
UNDOTBS2
50
+DG1/prod/datafile/tbs1
.269.852376681
7
TBS1
100
+DG1/prod/datafile/test01
.273.852574753
8
TEST01
100
+DG1/prod/datafile/indx
.274.852574771
9
INDX
100
9
rows selected.
|
1
2
3
4
5
6
7
8
9
10
|
18
:
14
:
34
SYS@ prod1>create user test1 identified by test1
18
:
14
:
49
2
default tablespace users
18
:
14
:
49
3
temporary tablespace temp
18
:
14
:
49
4
quota unlimited
on
users
18
:
14
:
49
5
account unlock;
User created.
Elapsed:
00
:
00
:
00.15
18
:
14
:
50
SYS@ prod1>
18
:
14
:
50
SYS@ prod1>grant connect,resource to test1;
Grant succeeded.
|
建立数据导入目录:
1
2
3
4
5
6
7
|
18
:
15
:
31
SYS@ prod1>create directory imp_dir
as
'/u01/exp'
;
Directory created.
18
:
16
:
08
SYS@ prod1>grant read,write
on
directory imp_dir to test1;
Grant succeeded.
Elapsed:
00
:
00
:
00.16
[root@node1 ~]# mkdir -p /u01/exp
[root@node1 ~]# chown -R oracle:dba /u01/exp
|
导入数据:
[root@node1 ~]# su - oracle
[oracle@node1 ~]$ cd /u01/exp
[oracle@node1 exp]$ ls
test.dmp
[oracle@node1 exp]$ impdp test1/test1 directory=imp_dir dumpfile=test.dmp logfile=test.log schemas=test1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
Import: Release
11.2.
0.1.
0
- Production
on
Thu Jul
10
18
:
21
:
05
2014
Copyright (c)
1982
,
2009
, Oracle
and
/
or
its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release
11.2.
0.1.
0
- Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining
and
Real Application Testing options
Master table
"TEST1"
.
"SYS_IMPORT_SCHEMA_01"
successfully loaded/unloaded
Starting
"TEST1"
.
"SYS_IMPORT_SCHEMA_01"
: test1/******** directory=imp_dir dumpfile=test.dmp logfile=test.log schemas=test1
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
. . imported
"TEST1"
.
"SYS_EXPORT_SCHEMA_01"
139.4
KB
1073
rows
. . imported
"TEST1"
.
"TESTTB1"
8.570
KB
14
rows
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/COMMENT
Job
"TEST1"
.
"SYS_IMPORT_SCHEMA_01"
successfully completed
at
18
:
21
:
42
|
数据导入成功!
4、验证:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
18
:
19
:
45
SYS@ prod1>conn test1/test1
Connected.
18
:
22
:
20
TEST1@ prod1>select *
from
tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
SYS_EXPORT_SCHEMA_01 TABLE
TESTTB1 TABLE
Elapsed:
00
:
00
:
00.08
18
:
22
:
24
TEST1@ prod1>select *
from
testtb1;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7369
SMITH CLERK
7902
17
-DEC
-80
800
20
7499
ALLEN SALESMAN
7698
20
-FEB
-81
1600
300
30
7521
WARD SALESMAN
7698
22
-FEB
-81
1250
500
30
7566
JONES MANAGER
7839
02
-APR
-81
2975
20
7654
MARTIN SALESMAN
7698
28
-SEP
-81
1250
1400
30
7698
BLAKE MANAGER
7839
01
-MAY
-81
2850
30
7782
CLARK MANAGER
7839
09
-JUN
-81
2450
10
7788
SCOTT ANALYST
7566
19
-APR
-87
3000
40
7839
KING PRESIDENT
17
-NOV
-81
5000
10
7844
TURNER SALESMAN
7698
08
-SEP
-81
1500
0
30
7876
ADAMS CLERK
7788
23
-MAY
-87
1100
20
7900
JAMES CLERK
7698
03
-DEC
-81
950
30
7902
FORD ANALYST
7566
03
-DEC
-81
3000
20
7934
MILLER CLERK
7782
23
-JAN
-82
1300
10
14
rows selected.
Elapsed:
00
:
00
:
00.02
18
:
22
:
34
TEST1@ prod1>
17
:
47
:
08
SYS@ prod2>conn test1/test1
Connected.
18
:
22
:
54
TEST1@ prod2>select *
from
testtb1;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7369
SMITH CLERK
7902
17
-DEC
-80
800
20
7499
ALLEN SALESMAN
7698
20
-FEB
-81
1600
300
30
7521
WARD SALESMAN
7698
22
-FEB
-81
1250
500
30
7566
JONES MANAGER
7839
02
-APR
-81
2975
20
7654
MARTIN SALESMAN
7698
28
-SEP
-81
1250
1400
30
7698
BLAKE MANAGER
7839
01
-MAY
-81
2850
30
7782
CLARK MANAGER
7839
09
-JUN
-81
2450
10
7788
SCOTT ANALYST
7566
19
-APR
-87
3000
40
7839
KING PRESIDENT
17
-NOV
-81
5000
10
7844
TURNER SALESMAN
7698
08
-SEP
-81
1500
0
30
7876
ADAMS CLERK
7788
23
-MAY
-87
1100
20
7900
JAMES CLERK
7698
03
-DEC
-81
950
30
7902
FORD ANALYST
7566
03
-DEC
-81
3000
20
7934
MILLER CLERK
7782
23
-JAN
-82
1300
10
14
rows selected.
Elapsed:
00
:
00
:
00.31
|
数据导入错误案例:
错误(1):
[oracle@rh6 ~]$ expdp test1/test1 directory=exp_dir dumpfile=~/exp/test.dmp logfile=~/exp/test.log schemas=test1
Export: Release 11.2.0.1.0 - Production on Thu Jul 10 17:55:21 2014
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORA-39002: invalid operation
ORA-39070: Unable to open the log file.
ORA-39088: file name cannot contain a path specification
在dumpfile和logfile指定的参数不能指定路径!
错误(2):
[oracle@rh6 ~]$ cd exp
[oracle@rh6 exp]$ expdp test1/test1 directory=exp_dir dumpfile=test.dmp logfile=test.log schemas=test1
Export: Release 11.2.0.1.0 - Production on Thu Jul 10 17:56:19 2014
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Starting "TEST1"."SYS_EXPORT_SCHEMA_01": test1/******** directory=exp_dir dumpfile=test.dmp logfile=test.log schemas=test1
Estimate in progress using BLOCKS method...
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 64 KB
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/COMMENT
UDE-04031: operation generated ORACLE error 4031
ORA-04031: unable to allocate 32 bytes of shared memory ("shared pool","SELECT job_id FROM v$datapum...","SQLA","tmp")
ORA-06512: at "SYS.KUPV$FT_INT", line 2904
ORA-06512: at "SYS.KUPC$QUE_INT", line 572
ORA-25254: time-out in LISTEN while waiting for a message
ORA-06512: at "SYS.DBMS_DATAPUMP", line 3263
ORA-06512: at "SYS.DBMS_DATAPUMP", line 4488
ORA-06512: at line 1
出现了ORA-04031错误,应该和share pool 有关系!
查看系统共享池:
17:57:59 SYS@ test1>show parameter shared
1
2
3
4
5
6
7
8
9
|
NAME TYPE VALUE
------------------------------------ -------------------------------- -------------------
hi_shared_memory_address integer
0
max_shared_servers integer
shared_memory_address integer
0
shared_pool_reserved_size big integer 12M
shared_pool_size big integer 112M
shared_server_sessions integer
shared_servers integer
0
|
调整share pool的size:
17:58:01 SYS@ test1>alter system set shared_pool_size=200m ;
System altered.
Elapsed: 00:00:00.65
调整后重新导出成功:
[oracle@rh6 exp]$ expdp test1/test1 directory=exp_dir dumpfile=test.dmp logfile=test.log schemas=test1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
Export: Release
11.2.
0.1.
0
- Production
on
Thu Jul
10
17
:
59
:
05
2014
Copyright (c)
1982
,
2009
, Oracle
and
/
or
its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release
11.2.
0.1.
0
- 64bit Production
With the Partitioning, OLAP, Data Mining
and
Real Application Testing options
Starting
"TEST1"
.
"SYS_EXPORT_SCHEMA_02"
: test1/******** directory=exp_dir dumpfile=test.dmp logfile=test.log schemas=test1
Estimate
in
progress using BLOCKS method...
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method:
256
KB
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/COMMENT
. . exported
"TEST1"
.
"SYS_EXPORT_SCHEMA_01"
139.4
KB
1073
rows
. . exported
"TEST1"
.
"TESTTB1"
8.570
KB
14
rows
Master table
"TEST1"
.
"SYS_EXPORT_SCHEMA_02"
successfully loaded/unloaded
******************************************************************************
Dump file set
for
TEST1.SYS_EXPORT_SCHEMA_02 is:
/home/oracle/exp/test.dmp
Job
"TEST1"
.
"SYS_EXPORT_SCHEMA_02"
successfully completed
at
17
:
59
:
28
|
@至此,数据迁移完成!