--01.创建表空间(SNFPLATFORM)
CREATE TABLESPACE SNFPLATFORM
LOGGING
DATAFILE 'D:\kong\SNFPLATFORM.DBF'
SIZE 32M
AUTOEXTEND ON
NEXT 32M MAXSIZE 2096M
EXTENT MANAGEMENT LOCAL;
新建用户(platform),密码(platform),默认表空间 SNFPLATFORM:
--02.创建用户
CREATE USER platform IDENTIFIED BY platform
DEFAULT TABLESPACE SNFPLATFORM;
--03.授权
grant dba TO platform;
GRANT
CREATE SESSION, CREATE ANY TABLE, CREATE ANY VIEW ,CREATE ANY INDEX, CREATE ANY PROCEDURE,
ALTER ANY TABLE, ALTER ANY PROCEDURE,
DROP ANY TABLE, DROP ANY VIEW, DROP ANY INDEX, DROP ANY PROCEDURE,
SELECT ANY TABLE, INSERT ANY TABLE, UPDATE ANY TABLE, DELETE ANY TABLE
TO platform;
数据库表的导入导出:
Oracle数据导入导出imp/exp
Oracle数据导入导出imp/exp
在cmd的dos命令提示符下执行,而不是在sqlplus里面,但是格式一定要类似于:
imp/exp 用户名/密码@service_name或oracle_sid full=y file=C:\导出文件名称.dmp ignore=y
imp 命令是在dos提示符下执行的,直接cmd后执行而不是在sql下执行的
数据导出:
1 将数据库完全导出,用户名wlj ,密码wlj 导出到D:exportoracle.dmp中
exp wlj/wlj@IP地址/orcl file=d:exportoracle.dmp full=y
exp wlj/wlj@ip地址/orcl file=d:exportoracle.dmp full=y
exp wlj/wlj@ip地址/orcl tables=表名 file=d:exportoracle.dmp full=y
--expdp导出数据
expdp CCENSE/CCENSE@OracleDB directory = "dpdata1" dumpfile ="oracleExpdp.dmp" logfile = oracleExpdp20161103.log
注意:
如果出现:
EXP-00056: 遇到 ORACLE 错误 12154
ORA-12154: TNS: 无法解析指定的连接标识符
EXP-00000: 导出终止失败
这个很明显是连接不上你的数据库,你可以查看一下你的net manager里面的服务名有没配置好
解决方法:1、不再服务端的话,在其它机器可能通过service_name或oracle_sid来访问数据库,注意service_name必须写正确,需要查看oracle net manager 中的数据库的tns配置实例名称(上面@后面的 orcl)是否与需要连接的一样,cmd中使用 tnsping orcl 可以ping同的话,就说明没有问题。
2、在服务端的话,在服务器本地导出文件时要用服务器本地的连接名,也就是说要查看服务器的tnsnames.ora文件中的服务名称,有的话就是使用相应的名称,若没有,则使用空,什么也不填写,如图2,大致目录D:\Softs\Oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN下面tnsnames.ora 如图1
图1
图2
2 将数据库中system用户与sys用户的表导出
exp wlj/wlj@orc file=d:exportoracle.dmp owner=(system,sys)
3 将数据库中的表inner_notify、notify_staff_relat导出
exp wlj/wlj@orcl file= d:exportoracle.dmp tables=(inner_notify,notify_staff_relat)
4 将数据库中的表table1中的字段filed1以"00"打头的数据导出
exp wlj/wlj@orcl file=d:exportoracle.dmp tables=(table1) query=" where filed1 like '00%'"
上面是常用的导出,对于压缩,既用winzip把dmp文件可以很好的压缩。
也可以在上面命令后面 加上 compress=y 来实现。
数据的导入
1 将d:exportoracle.dmp 中的数据导入 TEST数据库中。
imp wlj/wlj@orcl file=d:exportoracle.dmp
imp wlj/wlj@orcl full=y file=d:exportoracle.dmp ignore=y
--impdp导入数据
impdp CCENSE/CCENSE@OracleDB directory="dpdata1" dumpfile="oracleExpdp.dmp" logfile = oracleImpdp20161103.log FULL=y;
如果出现问题,可能是因为有的表已经存在,然后它就报错,对该表就不进行导入。
在后面加上 ignore=y 就可以了。
2 将d:exportoracle.dmp中的表table1 导入
imp wlj/wlj@orcl file=d:exportoracle.dmp tables=(table1)
注意:基本上上面的导入导出够用了。不少情况要先是将表彻底删除,然后导入。
注意:1、操作者要有足够的权限,权限不够它会提示。
2、数据库是可以连上的。可以用tnsping orcl 来获得数据库orcl能否连上。
当然,上面的方法在导出数据时可能会导出很大的包,那是因为你的用户可能在授权的时候授予了DBA的权限,所以可以采用下面方法来进行数据库备份:
数据库备份
建议系统过渡后,每周进行一次备份。或者在数据表发生重大改变前,对要改变的数据表进行备份。
执行以下步骤,进行备份。
在命令行里,敲入“cmd”,回车,进入命令行窗口。
在窗口中,输入:
exp mas/123456@mas
系统提示:输入数组提取缓冲区大小: 4096 >
可以直接回车;
www.2cto.com
系统提示:导出文件: EXPDAT.DMP>
此处输入导出文件的位置,其路径必须存在,Oracle在这里不会自动建立路径,但可以建立文件名。备份文件以dmp作为后缀。
输入内容如:e:\work\mas_db_090925v1.dmp 回车
系统提示: (1)E(完整的数据库),(2)U(用户) 或 (3)T(表): (2)U > u
此处可以输入u,也可以直接回车,因为系统此时默认的是U
系统提示:导出权限(yes/no):yes>回车
系统提示:导出表数据(yes/no):yes>回车
系统提示:压缩区(yes/no):yes>回车
系统提示:要导出的用户: (RETURN 以退出) > mas
系统提示:要导出的用户: (RETURN 以退出) > 回车
此时系统会自动进行备份.