您的位置:首页 > 数据库 > Oracle

oracle安装,远程连接,快速导入导出

2016-04-30 22:49 567 查看
这两天在找oracle的安装方法和远程连接方法,主要是为了使用sqlloader功能,特地做些笔记。

这里oracle版本选择oracle11gXE的版本,Oracle 11g XE 是 Oracle 数据库的免费版本,支持标准版的大部分功能,做为免费的 Oracle 数据库版本,XE 的限制是:

最大数据库大小为 11 GB

可使用的最大内存是 1G

一台机器上只能安装一个 XE 实例

XE 只能使用单 CPU,无法在多CPU上进行分布处理。

当然对于学习数据的人来说是没有问题的。

1.下载安装oracle11gXE

下载地址是:http://www.oracle.com/technetwork/database/database-technologies/express-edition/downloads/index.html

安装的过程中一切默认即可,要求输入密码作为system和sys或sysdba的密码时输入:abc123,简单好记。

打开命令行窗口,输入:
sqlplus


使用DBA角色登陆: 用户名
system
,密码
abc123


查看有哪些用户
select username from all_users;


先对hr用户解锁(使用hr作为日常数据库使用的用户,而不是sysDBA )
alter user hr account unlock;


对hr用户修改密码为abc123:
alter user hr identified by abc123;


2.安装instantclient客户端

连接远程oracle需要安装instantclient客户端,安装了instantclient也可以访问本地的oracle数据库,建议安装,因为python,R等其他程序访问oracle也是需要instantclient的。

下载地址是: http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

下载后解压到D盘根目录,比如 D:\instantclient_11_2 ,并添加如下环境变量:

NLS_LANG :SIMPLIFIED CHINESE_CHINA.ZHS16GBK

TNS_ADMIN :D:\instantclient_11_2

PATH :D:\instantclient_11_2

在instantclient_11_2目录下,新建监听文件tnsnames.ora,内容如下:

your_tns =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)


HOST是oracle主机地址,如果是本地就是127.0.0.1,如果是远程地址就写远程地址,SERVICE_NAME 是oracle的实例,oracleXE的默认实例是XE,完全版的默认实例是 ORCL。

3.使用PLSQL Developer连接本地oracle

刚才已经安装了oracleXE,也安装了instantclient客户端,接下来是用PLSQL 连接了。

为了方便,修改oracleXE的监听文件:

C:\oraclexe\app\oracle\product\11.2.0\server\network\ADMIN\tnsnames.ora,内容和刚才的监听文件一样:

your_tns =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)


配置PLSQL

工具 –> oracle连接 –>

oracle主目录名:

D:\instantclient_11_2


OCI库:

D:\instantclient_11_2\oci.dll


保存后重启PLSQL ,输入账号密码,连接选择XE,normal方式。

4.使用PLSQL Developer连接远程oracle

连接远程oracle,只需要在instantclient_11_2客户端的tnsnames.ora里面增加新的连接参数即可。

your_tns =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 你的远程IP)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = 实例名)
)
)


5. 快速导入数据到oracle

使用sqlloader的前提是,本地安装有oracle数据库,可以安装oracleXE版本,安装方法参考前面的内容。

load.ctl 文件,内容如下:

OPTIONS (skip=1,rows=1000) -- sqlldr 命令显示的选项可以写到这里边来,skip=1 用来跳过数据中的第一行,rows表示每次提交的记录数
LOAD DATA INFILE ' D:\sqlldr\data_file.txt'  --数据文件的位置
BADFILE 'c:\sqlldr\bad.txt'  --坏文件的位置,导入失败的记录放在这里
TRUNCATE --操作类型,用 truncate table 来清除表中原有记录
INTO TABLE table_name -- 要插入记录的表
FIELDS TERMINATEd BY ',' -- 数据中记录用 "," 分隔
TRAILING NULLCOLS --表的字段,没有对应的值时允许为空
(
user_nbr           --插入表对应的字段
,    cust_id
,    is_low_tm
,    mob_stat
,    nbr_cnt
,    prod_kd_nbr
,    cust_name
)


将数据文件也放到D:\sqlldr目录下,然后在cmd命令行执行

sqlldr userid=用户/密码@数据库名 control=D:\sqlldr\load.ctl log=D:\sqlldr\load.out


数据库名即 tnsnames.ora 文件中的 your_tns 。

也就是说,需要配置好 instantclient 客户端才能使用。更多详细参数说明请自行百度,网上很多。

6. 快速导出数据

快速导出数据需要用到sqluldr2,这是基于oci8接口编写的小工具,但是效果奇好,在全世界很多数据库使用人员都在使用。

首先创建123.sql文件,内容是查询sql语句。

select * from jobs


然后在cmd中执行

sqluldr2.exe USER=hr/abc123@XE  sql=123.sql head=yes FILE=D:\out_data.txt


hr,abc123@xe:分别是数据库用户,密码,和监听端口。

sqluldr2的使用方法可以通过cmd中输入sqluldr2查看。

默认是用逗号作为分隔符。有些帖子说可以对特殊字符转移,比如回车,逗号什么的,但是我没有成功。所以只能通过在sql语句中使用

REPLACE(REPLACE(REPLACE(COL,','),CHR(10)),CHR(13))


来处理。

如果有什么朋友成功了,记得转告啊。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: