oracle入門知識總結

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;
		}
	}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章