今天在没有别人的帮助下终于把数据库的迁移搞定了,还是有点成就感的,呵呵。
下面就说下步骤供大家参考参考:
比如你要把A机器上的数据库迁移到B机器上,首先在机器B上安装oracle,安装地址也一样最好,呵呵,建一个跟A机器上数据库一样的数据库,包括数据库名,SID,这样的话即使你没有保留oracle/admin也可以迁移过来。
把A机器上oracle/admin/test文件夹下的内容都复制到B机器上(先把B机器上这两个文件夹里的东西备份下),随后修改目录下的 init.ora 文件
D:\oracle\admin\test\pfile\init.ora
下面是需要修改的内容(即db_name instance_name 以及相应的路径)
# 其他
###########################################
compatible=""
db_name=test
# 文件配置
###########################################
control_files=("D:\oracle\oradata\test\control01.ctl","D:\oracle\oradata\test\control02.ctl", "D:\oracle\oradata\test\control03.ctl")
# 网络注册
###########################################
instance_name=test
###########################################
# 诊断和统计
###########################################
background_dump_dest=D:\oracle\admin\cj\bdump
core_dump_dest=D:\oracle\admin\cj\cdump
timed_statistics=TRUE
user_dump_dest=D:\oracle\admin\cj\udump
(2) 配置监听服务,需要关心的文件主要有两个,分别是$ORACLE\network\admin\下的listener.ora、tnsnames.ora,
A、 对于listener.ora文件: 添加
(SID_DESC =
(GLOBAL_DBNAME = test)
(ORACLE_HOME = h:\oracle\ora92)
(SID_NAME = test)
)
修改后如下
# LISTENER.ORA Network Configuration File: D:\oracle\ora92\network\admin\listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = ecidh-firegrass)(PORT = 1521))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = test)
(ORACLE_HOME = D:\oracle\ora92)
(SID_NAME = test)
)
(SID_DESC =
(GLOBAL_DBNAME = test)
(ORACLE_HOME = D:\oracle\ora92)
(SID_NAME = test)
)
B、 对于tnsnames.ora文件:同样添加修改
####################################
# TNSNAMES.ORA Configuration File:D:\oracle\ora92\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle Enterprise Manager V2
# Date..........: Tue Aug 09 09:17:21 CST 2005
####################################
ORA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = ecidh-firegrass)(PORT = 1521))
)
(CONNECT_DATA = (SERVICE_NAME = test))
)
test =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = ecidh-firegrass)(PORT = 1521))
)
(CONNECT_DATA = (SERVICE_NAME = test))
)
2、 复制A机上的数据库物理文件。
1. 通过网络或移动存储设备将A机上的数据库文件(oracle/oradata/test/)拷贝至B机D:\oracle\oradata\test下
在同事A机上执行
SQL>alter database backup controlfile to trace得到位于 D:\oracle\admin\ora\udump目录下的 trace文件拷贝至本机桌面吧
主要内容如下
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "TEST" NORESETLOGS NOARCHIVELOG
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXDATAFILES 100
MAXINSTANCES 1
MAXLOGHISTORY 113
LOGFILE
GROUP 1 'D:\ORACLE\ORADATA\TEST\REDO01.LOG' SIZE 10M,
GROUP 2 'D:\ORACLE\ORADATA\TEST\REDO02.LOG' SIZE 20M,
GROUP 3 'D:\ORACLE\ORADATA\TEST\REDO03.LOG' SIZE 10M
# STANDBY LOGFILE
DATAFILE
'D:\ORACLE\ORADATA\TEST\SYSTEM01.DBF',
'D:\ORACLE\ORADATA\TEST\UNDOTBS01.DBF',
'D:\ORACLE\ORADATA\TEST\INDX01.DBF',
'D:\ORACLE\ORADATA\TEST\TOOLS01.DBF',
'D:\ORACLE\ORADATA\TEST\USERS01.DBF'
CHARACTER SET ZHS16GBK
;
# Recovery is required if any of the datafiles are restored backups,
# or if the last shutdown was not normal or immediate.
RECOVER DATABASE
# Database can now be opened normally.
ALTER DATABASE OPEN;
# Commands to add tempfiles to temporary tablespaces.
# Online tempfiles have complete space information.
# Other tempfiles may require adjustment.
ALTER TABLESPACE TEMP ADD TEMPFILE 'D:\ORACLE\ORADATA\TEST\TEMP01.DBF' REUSE;
# End of tempfile additions.
#
2、 启动B机上的数据库。
经过上面的操作,现在B机上实际上已经有了一个完整的数据库了。现在我们来启动B机上的数据库。看看是否能成功运行:
(1)启动监听服务:
c:\>lsnrctl start
(2)启动数据库:
c:\>sqlplusw /nolog
SQL>conn sys/manager@test as sysdba ——这里sys的密码与A机上sys账户密码相同
——因为都是使用的同一个密码文件。
修改上面得到的trace文件如下所示 并执行
SQL>
STARTUP NOMOUNT
CREATE CONTROLFILE SET DATABASE "TEST" RESETLOGS NOARCHIVELOG
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXDATAFILES 100
MAXINSTANCES 1
MAXLOGHISTORY 113
LOGFILE
GROUP 1 'D:\ORACLE\ORADATA\TEST\REDO01.LOG' SIZE 10M,
GROUP 2 'D:\ORACLE\ORADATA\TEST\REDO02.LOG' SIZE 20M,
GROUP 3 'D:\ORACLE\ORADATA\TEST\REDO03.LOG' SIZE 10M
# STANDBY LOGFILE
DATAFILE
'D:\ORACLE\ORADATA\TEST\SYSTEM01.DBF',
'D:\ORACLE\ORADATA\TEST\UNDOTBS01.DBF',
'D:\ORACLE\ORADATA\TEST\INDX01.DBF',
'D:\ORACLE\ORADATA\TEST\TOOLS01.DBF',
'D:\ORACLE\ORADATA\TEST\USERS01.DBF'
CHARACTER SET ZHS16GBK
;
SQL>alter database open resetlogs;
这样在本机就得到了和A机一样的数据库
SQL> conn sys/manager@test as sysdba
已连接。
SQL> select * from v$database;
SQL> alter database open;
数据库打开,这样就OK了。
正如开始所说,如果你的安装路径,数据库名,SID都一样,那么前面的都不要做,只要把oracle/admin/test和oracle/oradata/test(以及oracle\ora92\database下的PWDtest.ora和SPFILETEST.ORA文件,如果没有就只能重新生成,或则每次开机的时候执行下面的命令)下的都复制到B机器上对应的目录下,甚至连oracle/admin/test都不用复制,从前面就可以看出,只要执行下面一句:
SQL> alter database open;
就OK了,简单啊,费了我半天时间
浙公网安备 33010602011771号