oracle exp导出/imp导入
exp导出部份表
exp 用户名/密码@数据库 file=E:\zysp.dmp tables=(用户.table1,用户.table2)
exp导出用户下所有表
exp 用户名/密码@数据库 file=E:\zysp.dmp owner=用户
exp导出整个数据库
exp 用户名/密码@数据库 file=E:\zysp.dmp full=y
仅导出表结构 加rows=n
exp 用户名/密码@数据库 file=E:\zysp.dmp tables=(table1,table2) rows=n
imp导入指定用户
imp 用户名/密码@数据库 file=E:\zysp.dmp fromuser=导出用户名 touser=导入用户名
imp导入整个数据库
imp 用户/密码@数据库 file=文件路径 full=y ignore=y
imp导入部份表
imp 用户/密码@数据库 file=文件路径 tables=(table1)
full=y 是导入文件中全部内容
ignore=y相当于,如果没有的表,创建并倒入数据,如果已经有的表,忽略创建的,但不忽略倒入
创建临时表空间
create temporary tablespace TBS_SP_TEMP
tempfile 'D:\ORADATA\ORCL\TBS_SP_TEMP.DBF'
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;
创建用户、表空间、赋权
create tablespace pascty datafile 'E:\oracletablespace\pascty.dbf' size 80M autoextend on;
create user pascty identified by pascty default tablespace pascty temporary tablespace temp;
grant create session,create table,create view,create sequence,unlimited tablespace to pascty;
grant connect to pascty;
grant resource to pascty;
grant dba to pascty;
删除用户、表空间
drop user pascty cascade
drop tablespace pascty including contents and datafiles cascade constraint
误删数据恢复办法
1.通过SCN号
SELECT timestamp_to_scn(to_timestamp('2019-4-29 19:00:00','yyyy-mm-dd hh24:mi:ss')) SCN FROM hdw.ST_PAS_ICU_PATINET_INFO;--根据正确数据时间查找SCN号
alter table pas_index_link_config enable row movement;--开启行移动功能
FLASHBACK TABLE hdw.ST_PAS_ICU_PATINET_INFO TO SCN 14265559392689;--通过SCN号闪回数据
alter table pas_index_link_config disable row movement;--关闭行移动功能
2.通过时间
alter table pas_index_link_config enable row movement;--开启行移动功能
flashback table pas_index_link_config to timestamp to_timestamp('2019-4-29 19:00:00','yyyy-mm-dd hh24:mi:ss');--通过正确数据时间闪回数据
alter table pas_index_link_config disable row movement;--关闭行移动功能
表空间使用率
SELECT TABLESPACE_NAME "表空间",
To_char(Round(BYTES / 1024, 2), '99990.00')
|| '' "实有",
To_char(Round(FREE / 1024, 2), '99990.00')
|| 'G' "现有",
To_char(Round(( BYTES - FREE ) / 1024, 2), '99990.00')
|| 'G' "使用",
To_char(Round(10000 * USED / BYTES) / 100, '99990.00')
|| '%' "比例"
FROM (SELECT A.TABLESPACE_NAME TABLESPACE_NAME,
Floor(A.BYTES / ( 1024 * 1024 )) BYTES,
Floor(B.FREE / ( 1024 * 1024 )) FREE,
Floor(( A.BYTES - B.FREE ) / ( 1024 * 1024 )) USED
FROM (SELECT TABLESPACE_NAME TABLESPACE_NAME,
Sum(BYTES) BYTES
FROM DBA_DATA_FILES
GROUP BY TABLESPACE_NAME) A,
(SELECT TABLESPACE_NAME TABLESPACE_NAME,
Sum(BYTES) FREE
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) B
WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME)
--WHERE TABLESPACE_NAME LIKE 'CDR%' --这一句用于指定表空间名称
ORDER BY Floor(10000 * USED / BYTES) DESC;
表空间使用率含临时表空间
SELECT d.tablespace_name "Name", d.status "Status",
TO_CHAR (NVL (a.BYTES / 1024 / 1024, 0), '99,999,990.90') "Size (M)",
TO_CHAR (NVL (a.BYTES - NVL (f.BYTES, 0), 0) / 1024 / 1024,
'99999999.99'
) USE,
TO_CHAR (NVL ((a.BYTES - NVL (f.BYTES, 0)) / a.BYTES * 100, 0),
'990.00'
) "Used %"
FROM SYS.dba_tablespaces d,
(SELECT tablespace_name, SUM (BYTES) BYTES
FROM dba_data_files
GROUP BY tablespace_name) a,
(SELECT tablespace_name, SUM (BYTES) BYTES
FROM dba_free_space
GROUP BY tablespace_name) f
WHERE d.tablespace_name = a.tablespace_name(+)
AND d.tablespace_name = f.tablespace_name(+)
AND NOT (d.extent_management LIKE 'LOCAL' AND d.CONTENTS LIKE 'TEMPORARY')
UNION ALL
SELECT d.tablespace_name "Name", d.status "Status",
TO_CHAR (NVL (a.BYTES / 1024 / 1024, 0), '99,999,990.90') "Size (M)",
TO_CHAR (NVL (t.BYTES, 0) / 1024 / 1024, '99999999.99') USE,
TO_CHAR (NVL (t.BYTES / a.BYTES * 100, 0), '990.00') "Used %"
FROM SYS.dba_tablespaces d,
(SELECT tablespace_name, SUM (BYTES) BYTES
FROM dba_temp_files
GROUP BY tablespace_name) a,
(SELECT tablespace_name, SUM (bytes_cached) BYTES
FROM v$temp_extent_pool
GROUP BY tablespace_name) t
WHERE d.tablespace_name = a.tablespace_name(+)
AND d.tablespace_name = t.tablespace_name(+)
AND d.extent_management LIKE 'LOCAL'
AND d.CONTENTS LIKE 'TEMPORARY';
表空间物理位置
select b.file_id 文件ID,
b.tablespace_name 表空间,
b.file_name 物理文件名,
b.bytes 总字节数,
(b.bytes-sum(nvl(a.bytes,0))) 已使用,
sum(nvl(a.bytes,0)) 剩余,
sum(nvl(a.bytes,0))/(b.bytes)*100 剩余百分比
from dba_free_space a,dba_data_files b
where a.file_id=b.file_id
group by b.tablespace_name,b.file_name,b.file_id,b.bytes
order by b.tablespace_name
查询临时表空间物理位置
SELECT TABLESPACE_NAME, FILE_ID, FILE_NAME, BYTES/1024/1024 AS "SPACE(M)"
FROM DBA_TEMP_FILES
用户所在表空间
select * from dba_users a where a.username = 'PASCTY'
表空间扩容
alter database datafile 'E:\ORACLETABLESPACE\PASCTY.DBF' resize 1G
exp 用户名/密码@数据库 owner=用户名 file=文件存储路径(如:F:\abcd.dmp)
exp ZM/sql123@127.0.0.1/ORCL owner=ZM file=F\abcd.dmp
imp 用户名/密码@数据库 fromuser=用户名 touser=用户名 file=d:\cu.dmp ignore=y
imp ZM/sql123@127.0.0.1/ORCL fromuser=ZM touser=SZZM file=F:\test.dmp ignore=y
将dmp文件导入到oracle数据库中
1、首先,我们可以先建立自己的一个用户表空间,创建表空间的格式如下:
CREATE TABLESPACE certification(表空间的名字)
DATAFILE 'E:\Oracle_11g\app\Administrator\oradata\orcl\certification.dbf' (这边可以写成oracle的某个路径下)
SIZE 20M(初始大小)
AUTOEXTEND ON;(自动扩展)
2、接下来,我们可以创建一个自己的用户,创建格式如下:
CREATE USER certification(用户名)
IDENTIFIED BY certification(密码)
DEFAULT TABLESPACE certification(上面创建的表空间)
TEMPORARY TABLESPACE temp;(临时表空间就写temp即可)
3、然后,我们需要给自己的用户赋予权限来管理自己的表空间
GRANT CREATE SESSION,CREATE TABLE,CREATE VIEW,CREATE SEQUENCE,UNLIMITED TABLESPACE TO certification;
GRANT CONNECT TO certification;
GRANT RESOURCE TO certification;
GRANT DBA TO certification;
4、接下来我们就可以将我们的dmp文件导入到我们自己的表空间中了,导入方式
打开cmd,执行下面语句:
imp usename/password@localhost/orcl(表示SID) file= E:\Oracle_11g\app\Administrator\product\11.2.0\dbhome_1\database\xxxx.dmp full=y
如果导入过程中遇到:IMP-00013: 只有 DBA 才能导入由其他 DBA 导出的文件
解决方法:alter user certification default role DBA;
使用数据泵导入/导出数据(expdp/impdp)
https://blog.csdn.net/mr_awei/article/details/81089259