现在的位置: 首页 > 综合 > 正文

oracle入门知识总结

2014年02月07日 ⁄ 综合 ⁄ 共 3366字 ⁄ 字号 评论关闭

1.oracle的数据库和实例

数据库是物理操作系统文件或磁盘(disk)的集合,这些文件集合包括数据文件、临时文件、重做日志文件和控制文件。

实例(instance,也有叫例程的):一组Oracle后台进程/线程以及一个共享内存区,是用来管理数据库的一个实体。实例在其整个生存期中只能装载和打开一个数据库,一个数据库可以由多个实例同时访问。SID就是用于识别同一个ORACLE数据库的不同实例。

oracle数据库启动步骤是:启动实例  -》 装载数据库 -》打开数据库。oracle中打开一个数据库后执行create database语句创建数据库是不行的,它应该在启动实例后创建然后再装载打开。

2.表空间(tablespace)

表空间是一种逻辑结构,是一个或多个数据文件(物理文件)的集合,所有的数据对象都被逻辑地存放在指定的表空间中。

oracle中数据库概念有别于sql server或mysql中数据库概念,通常的做法是一个oracle中建一个数据库和一个实例,数据库下分不同的用户和表空间,用户对应不同表空间。

用户的表、视图等分属在自己的表空间内。表空间似乎倒更像mysql中的数据库概念了。

每个数据库通常包括system、sysaux和temp三个默认表空间,一个或多个临时表空间,一个撤销表空间和几个应用程序专用表空间。

表空间可以有“只读”,“读写”,“脱机”三种状态。

以下为创建名称为myts的表空间的命令示例:

create tablespace myts
datafile 'd:\myts.dbf' size 50m autoextend on next 10m maxsize unlimited
logging;

参数

datafile  指定数据文件,可以是多个

size 空间大小

autoextend on  表示打开自动扩展空间文件,此时需指定next值下次分配的空间大小,maxsize最大空间大小,如果是unlimited表示不限

logging  记录日志,nologging表示不记录

3.创建用户

创建用户并指定表空间

create user username identified by password  
default tablespace myts;  
 
/*给用户授予权限  */
grant connect,resource,dba to username;

4.oracle管理工具

开发时使用的是免费版oracle express,这个就没有那么多自带的管理功能了。oracle命令行工具是sqlplus,另外目前所有版本都带了一个web版的管理工具。但个人还是不喜欢web版的工具,速度和体验实在不咋滴。express版的装上后有桌面有个oracle入门的快捷方式,找开即可,这个http服务占用的是8080端,与tomcat冲突

,修改端口在打开sqlplus以sys身份登录,输入以下命令:

>begin
>dbms_xdb.sethttpport('8081');
>end;
>/

修改下快捷方式对应的URL,重启下oracle服务即可;

图形界面工具最流行的是PL/SQL Developer(收费),nvaicat for oracle(收费),Oracle SQL Developer(免费),三个工具功能差不多看个人喜好了。

5.oracle数据类型

char           定长字符型,默认长度为1,最大2000,布尔型可表示为char(1);

varchar2    可变长字符串,最大长度4000;

nchar,nvarchar2   与上两个类型不同的是这两个类型使用时必须指定字符集;

numbmer(precision, scale)   数字型,precision表示数字中的有效位。如果没有指定precision的话,Oracle将使用38作为精度。 scale表示数字小数点右边的位数,scale默认设置为0;

date             日期型, Oracle标准日期格式为:DD-MON-YY  HH:MI:SS  通过修改实例的参数NLS_DATE_FORMAT,函数sysdate获取当前时间;

LOB      (大型对象)数据类型可以保存4GB的信息。LOB有以下3种类型:CLOB只能存储字符数据、NCLOB保存本地语言字符集数据、BLOB以二进制信息保存数据;

RAW和LONG RAW RAW和LONG RAW数据类型主要用于对数据库进行解释。指定这两种类型时,Oracle以位的形式来存储数据。RAW数据类型一般用于存储有特定格式的对象,如位图。 RAW数据类型可占用2KB的空间,而LONG RAW数据类型则可以占用2GB大小。

ROWID  伪列(pseudocolumn),ROWID表示行的地址,ROWID与磁盘驱动的特定位置有关,因此ROWID是获得行的最快方法。ROWID伪列用ROWID数据类型定义。ROWID伪列在SQL
SELECT语句中可以像普通列那样被访问。Oracle数据库中每行都有一个伪列。

6.远程连接oracle数据库

首先要确定服务器oracle开启了监听服务,在命令行下键入:“tnsping 服务端IP地址”可查看结果。oracle的监听端口默认是1521。

在企业版中可以找到"Net Configuration Assistant" 工具添加“选择ORACLE数据库或服务”,使用比较简单不详述了

在oracle express版本上比较麻烦了,找到oracle目录下的tnsnames.ora文件,该文件路径在“oracle安装目录\app\oracle\product\11.2.0\server\network\ADMIN”下。

在文件末添加以下内容:

远程数据库的名字随意取 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 远程ip)(PORT = 远程端口oracle的))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = 远程服务的名字)
    )
  )

然后再使用客户端登录

 a. sqlplus中登录:  sqlplus 用户名/密码@IP地址

 b. 以下是使用oracle sql developer建立连接的截图:

7.Java连接oracle

使用JDBC连接(你也可以使用ODBC),驱动可以在oracle安装目录下的jdbc文件夹下找到,比如我的是:C:\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib。

里面ojdbc5.jar对应jdk1.5,ojdbc6.jar对应jdk1.6的。以下是示例:

static void oracleTest()
	{
		String dbUrl = "jdbc:oracle:thin:@localhost:1521:xe";	//"jdbc:oracle:thin:@ip:端口:SID"
		String dbuser = "charles";
		String dbpassword = "jqncc";
		Connection conn = null;
		Statement stat = null;
		ResultSet rs = null;
		try
		{
			Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
			conn = DriverManager.getConnection(dbUrl, dbuser, dbpassword);
			stat = conn.createStatement();
			rs = stat.executeQuery("select id,username,birthday from userinfo");
			while (rs.next())
			{
				System.out.println(String.format("ID:%1$d,UserName:%2$s,Birthday:%3$tD",rs.getInt(1),rs.getString(2),rs.getDate(3)));
			}
			rs.close();
			stat.close();
			conn.close();
		} catch (Exception e)
		{
			e.printStackTrace();
		}
		finally
		{
			if (conn != null)
				conn = null;
		}
	}

抱歉!评论已关闭.