ORACLE impdp导入数据
记录一次恢复数据库备份的操作
一、更改root密码和oracle sys密码
alter user system identified by "uatdba_2019"
二、查看数据库实例
select instance_name from v$instance;
三、配置oracle环境变量 主要是sid
su oracle
cd /home/oracle
vi .bash_profile
四、创建文件夹并给ORACLE用户权限(或者使用sql创建)
chown -R oracle:oinstall /oradata/backup
注意文件夹名称要和备份时的文件夹名称一致
五、sys用户下创建表空间
CREATE TABLESPACE "XSF_D" DATAFILE '/oradata/xsfuat/XSF_DB01.dbf' SIZE 104857600 AUTOEXTEND ON NEXT 21474836480 MAXSIZE 32767M, '/oradata/xsfuat/XSF_DB02.dbf' SIZE 32212254720 AUTOEXTEND ON NEXT 41943040 MAXSIZE 32767M LOGGING ONLINE PERMANENT BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL AUTOALLOCATE DEFAULT NOCOMPRESS SEGMENT SPACE MANAGEMENT AUTO;
创建表空间,设置文件自动增长空间大小等等
ALTER DATABASE DATAFILE '/oradata/xsfuat/XSF_DB01.dbf' RESIZE 34359721984;
ALTER DATABASE DATAFILE '/oradata/xsfuat/XSF_DB02.dbf' RESIZE 34351349760;
六、sys用户下创建用户
--创建用户:xsfuat/uatdba_2019
CREATE USER xsfuat IDENTIFIED BY uatdba_2019 DEFAULT TABLESPACE XSF_D TEMPORARY TABLESPACE TEMP;
七、sys用户下给用户赋予权限
GRANT CONNECT,RESOURCE TO xsfuat;
--给用户授予基础、开发权限
GRANT dba TO xsfuat;
--dba为最高级权限,可以创建数据库,表等。
八、创建目录并分配存放路径、给新建的用户分配directorie的权限
select * from dba_directories where DIRECTORY_NAME='BACKUPDIR';
create or replace directory BACKUPDIR as '/oradata/backup';
--和第四步类似
grant read,write on directory BACKUPDIR to xsfuat;
--将目录的读写权限授予用户
九、linux下重新启动oracle,利用plsql测试是否能够正常连接数据库
--①以Oracle帐户查看数据库监听器的状况:
lsnrctl status
--或者查看数据库端口是否被监听(默认1521)
netstat -ano | grep 1521
--②停止数据库监听器:
lsnrctl stop
--③以管理员身份连接并关闭数据库:
sqlplus /nolog
connect / as sysdba
shutdown immediate
--④退出SqlPlus:
exit或者quit
--⑤重新启动数据库监听:
lsnrctl start
lsnrctl status
--⑥重新以管理员启动数据库:
sqlplus /nolog
connect / as sysdba
startup
本次出现的问题:ORA 12170 :TNS:连接超时
可能的原因:
1、服务端listener.ora中配置的端口是否和本地tnsnames.ora文件的配置相符。
2、服务端防火墙对1521端口是否开放。
服务端开放1521端口的方法
①编辑iptables, 开放1521端口:
sudo vi /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 1521 -j ACCEPT
:wq
②重启防火墙
sudo service iptables restart
③保存配置,以便linux重启后依然有效
sudo service iptables save
④查看防火墙规则:
sudo iptables -L -n
经排查本次问题的原因是服务端listener.ora中的端口设置的为1531,后修改为1521,且防火墙没有开放1521端口。
十、impdp还原数据
impdp xsfuat/"uatdba_2019"@xsfuat directory=BACKUPDIR dumpfile=xsfuat_20200331.dmp remap_tablespace='CMSXSF':'XSF_D' remap_schema=xsfuat:xsfuat logfile=xsfuat_20200331.log;
需要解释的是:
impdp 用户名/“密码”@sid directory=目录 dumpfile=老数据库expdp得到的实例名.dmp remap_tablespace=老数据库空间名:新数据库空间名 remap_schema=老数据库用户名:新数据库用户名 logfile=impdb日志名.log transform=该参数可以去掉,应用于适用对象的元数据转换
需要强调的是:
问题1:如果你在操作的过程中忘记了自己建的目录,可以用命令(select * from dba_directories;)查询;
问题2:如果想删除新还原好的数据库实例,那么需要执行以下操作
1)、首先删除用户
-----drop USER xsfuat CASCADE;
2)、其次删除表空间包括表空间的内容和数据文件
-----drop tablespace XSF_D including contents and datafiles cascade constraints;
3)、最后删除目录
-----drop directory BACKUPDIR;