关于PLSQL中的数据库的备份和还原
背景:主机上已安装oracle客户端和服务端,备份还原PLSQL中的DB,使其能连接到本地DB,博主使用oracle11g。
一、备份
使用命令:exp username/password@客户端服务名 file=path(路径)
可能报错:无法连接目标主机
原因:oracle服务端未配置服务名。
解决方法:
1.打开服务端的tnsnames.ora(路径:\dbhome_1\NETWORK\ADMIN),加入客户端tnsnames.ora的服务名。例如:我的客户端服务名配置
LOLO =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.35)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
将上如=述代码copy到服务端。
2.打开服务端的Net Manager,对加入的服务名LOLO进行连接测试,用PLSQL的username和passwd。
3.测试成功后,在cmd运行备份code。(注意:前述命令备份的是整个方案,包括表结构、索引等等,若有其他它需要,请自行百度)
二、还原
使用命令:imp username/password@服务端服务名 full=y file=(备份path)
可能报错:无法连接到目标主机
此时我们去服务端的Net Manager测试
可能报错:ORA-12514,监听程序无法识别当前服务。
解决方法:
(以下配置若无特殊说明,均在服务端进行)
1.进入tnsnames.ora所在目录,可能会看到一个名为listener.ora的文件,若有,建议删除。
2.打开Net Configuration Assiant,配置监听服务。
监听程序配置->添加->监听程序名(默认)–>选定的协议(TCP)–>使用标准端口号 1521->是否配置另一监听程序 否->完成
3.此时\dbhome_1\NETWORK\ADMIN会增加一个文件listener.ora,用记事本打开,修改内容如下:
在SID_LIST=后加入code:
(SID_DESC=
(GLOBAL_DBNAME=ORCL)
(ORACLE_HOME=F:\app\Administrator\product\11.2.0\dbhome_1)
(SID_NAME=orcl)
)
其中GLOBAL_DBNAME可在sqlplus中键入select name from V$database;
查询得到,ORACLE_HOME修改为自己的path,SID_NAME即tnsnames.ora中的SERVICE_NAME。
3.在cmd测试监听是否配置成功。
键入命令:lsnrctl start
若显示已经启动,键入:
lsnrctl
lsnrctl stop
lsnrctl start
重启监听服务。
4.在Net Manager 中进行连接测试。
5.登录sqlplus,用create user username identified by passwd;
用户名密码可以和备份时一样,方便记忆。成功创建用户后grant dba to username;
授予dba权限。
6.在cmd执行还原命令。
三、PLSQL连接
可能报错:连接超时等,也就是连接不上。
解决方法:
1.在Net Configuration Assiant 中配置本地网络服务名,或直接在tnsnames写入配置文件,这里默认大家都会。当然也可以使用tnsnames.ora中已经存在的服务名,毕竟之前我们已经测试成功了,但是建议新建一个服务名以便区分。
2.Net Manager中进行连接测试。
3.将tnsnames.ora 中新增的服务名配置加入到客户端的tnsnames.ora中,注意,不做修改。
4.PLSQL连接时选择该服务名。
至此,PLSQL可连接到本地DB。