给同为.NET开发者普及一点Oracle数据库经验

时间:2021-10-23 21:44:54

前段时间,因为要给自己开发的搜易站内搜索引擎增加Oracle数据库的支持,所以学习了下Oracle的基础知识,发现使用方式跟MYSQL,MSSQL等数据库的思维有很大的不同,总结一下几点不同,希望给初学者一点经验,减少学习的时间:

一,Oracle数据没有数据库的概念

我们使用MSSQL等数据,习惯的思维是先有数据库,然后有表,然后有个用户可以访问这个数据库,但是Oracle是没有数据库这个概念的,他的用户就等于数据库,用户下面有表,这个是很大的不同,这个思维习惯要转变,要不然无法理解。

二,链接字符串和链接方式也有些不同

我摸索了一下,发现Oracle的链接字符串呢,写法有两种:

2.1,简洁模式
 Data Source=XE;User ID=user;Password=pwd;
 这种字符串很简介,但先需要在tnsnames.ora(在Oracle安装目录搜索一下可以找到)文件里配置如下:
XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = mypc)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )

这种链接方式,对本地和远程数据库都有用,假如我有一个远程Oracle数据库,基本信息如下:
 IP : 33.33.33.33
 端口:1521
 服务名orcl
 账号:u
 密码:p
 
 那么先在tnsnames.ora里增加一段代码如下:
 ycdb =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 33.33.33.33)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )
 然后,链接字符串就可以写成:
 Data Source=ycdb;User ID=u;Password=p;

对比一下,应该很好理解。

2.2,长模式
 沿用上面的远程数据库例子,只是这种情况无需配置tnsnames.ora了,链接字符串就如下:
 Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=33.33.33.33)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)));Password=p;User ID=u;

对比一下,其实就是把tnsnames.ora的里代码全部写入到链接字符串了。
至于那种方式比较方便,因人而已吧。我个人比较喜欢第一种写法,简洁,看着舒服。

感觉Oracle也没那么难,当然要精通估计会遇到不少坑。