web项目是发布在服务器上的,数据库也是安装在服务器上的。所以平时都是本地电脑安装oracle的客户端来操作数据库的。整片文章基于远程访问数据库为前提,本地导入导出不说明。
安装:win32_11gR2_client(oracle客户端)
配置:因为不是连接本地的oracle,所以需要配置TNS
①Oracle Net Manager
②在oracle安装包下找到tnsname.ora进行手动配置
路径:$ORACLE_HOME/network/admin/tnsnames.ora
ORCL:就是一个连接的名称,叫什么都可以
HOST:数据库服务器所在机器的ip
PORT:默认是1521,Oracle数据库服务器端口
SERVICE_NAME:想要连接的数据库实例名称
配置好了之后就可以连接服务器的数据库进行操作了,可以使用Toad等软件或者直接cmd。(Toad等不作说明)
一、连接Oracle数据库
网上好多详细的说明,此处不赘述。
如果远程连接数据库命令如下:
>sqlplus 用户名/密码@想访问的IP/实例名
eg:>sqlplus devuser/[email protected]/orcl
之后连接到数据库就可以操作数据库了,注意sql语句必须以;结尾。
二、创建用户
--创建用户名和密码 create user 用户名 identified by 密码 --指定表空间 [default tablespace 表空间] [temporary tablespace 临时表空间] --表空间配额,用户可以使用的表空间字节数 [quote xxxM on 表空间] --将口令设成过期状态,用户再登录前必须修改口令 [password expire];
用户创建完需要分配权限
--给用户分配权限,根据需要选择 grant dba,connect,resource to 用户名
三、数据库的导入导出
两种方法:①exp/imp 传统方式
②expdp/impdp 数据泵
区别请百度,我只知道数据泵比较快。
1、exp/imp
有三种模式:
a.用户模式
b.表模式
c.全部模式
数据的迁移,不要在连接到某个数据库下进行操作,在cmd下就可以,并且命令结尾不能写分号,不然会有问题。
用户导出>exp user/password@host/sid file=D:\owner.dmp owner=user
全部导出>exp user/password@host/sid file=D:\full.dmp full=y
表导出>exp user/password@host/sid file=D:\tables.dmp tables=(table1,table2)
从A用户导入到B用户:注意:A、B两个用户必须有相同的表空间。
>imp userB/password@host/sid file=D:\owner.dmp fromuser=userA touser=userB
可以参考http://www.cnblogs.com/mfryf/archive/2013/06/16/3138466.html
说的十分详细。
exp/imp命令可以将远程的数据库数据导出到本地电脑中,数据泵是服务器端的操作。
2、expdp/impdp数据泵
expdp是对服务器端的操作,所以导出时候必须指定转储文件和日志文件所在的目录。
导出模式:
a.按表模式导出:
b.按查询条件导出:
c.按表空间导出:
d.导出方案
e.导出整个数据库:
导出步骤:
--创建DIRECTORY create directory 名称[dir_dp] as 'D:/oracle/dir_dp'; --授权 Grant read,write on directory 名称[dir_dp] to 用户名[userB]; --查看目录及权限 SELECT privilege, directory_name, DIRECTORY_PATH FROM user_tab_privs t, all_directories d WHERE t.table_name(+) = d.directory_name ORDER BY 2, 1;
导出方案>expdp user/password@host/sid schemas=userA directory=dir_dp dumpfile =expdp.dmp logfile=expdp.log
导入方案>impdp userB/password@host/sid directory=dir_dp dumpfile=expdp.dmp remap_schema=userA:userB
从方案userA导入用户B
相关命令有一些特定的名词解释,可以百度,整个都是自己用到的总结。就酱。