Archive

文章標籤 ‘oracle’

Oracle 9i 搬移資料庫

2009年8月25日 尚無評論

因為專案關係,客戶提供了資料庫實體檔案給我們,並非提供備份檔,所以這就麻煩多了;因此先問過待在Oracle的好同學,再加上自己亂搞總算弄起來啦~~,以下是設定的步驟,有需要的人加減看一下吧!!

Oracle的好同學提醒要注意的事項: (感恩喔!!  友情真正好呀!)

1.不能只拿到dbf檔案,是要拿整個database 存放資料實體的目錄 ,預設路徑是在c:\oracle\oradata
2.除了實體資料的檔案外,還要拿參數檔才行 ,預設路徑是在c:\oracle\admin\pfile\init.ora.xxxxxxxx
3.還有資料庫的版本要一樣才行,連patch 也要一樣才行!!

照著方法建立後,啟動資料庫還是發生了 ORA-01219:數據庫未打開:僅允許在固定表/視圖中查詢 的錯誤訊息
再來就是自己亂搞的了,上網查一下資料:

如是刪掉了DBF文件出現ORA-01219,用以下方法解決:

以sysdba登錄:
C:\>sqlplus “/ as sysdba”
SQL> alter database datafile 'DBF文件所在的路徑' offline drop;
數據庫已更改。
SQL> alter database open;
數據庫已更改。

而小弟則是:

sqlplus /nolog
connect / as sysdba
alter database open;
資料庫已更改。

然後重啟Oracle 服務,再利用 Oracle enterprise management 進入查看….
哈~~哈~~大功告成!!  下課!!

Categories: Database Tags:

Oracle 排序欄位 有NULL值處理方法

2007年11月2日 尚無評論

 
Oracle在Order by 時會預設認為null是最大值,所以如果是ASC升序則排在最後,DESC降序則排在最前

有幾種方式可以處理排序欄位有 null 值,大致如下:

1.使用nulls first 或者nulls last 語法

Nulls first和nulls last是Oracle Order by支援的語法 (mysql 不支援 ,但此為  SQL 99 standard 語法)

如果Order by 中指定了運算式 Nulls first則表示null值的記錄將排在最前(不管是asc 還是 desc)
反之  Nulls last則表示null值的記錄將排在最後 (不管是asc 還是 desc)
使用語法如下:

–將nulls始終放在最後
select * from products order by order_date desc nulls last

2、使用nvl函數

nvl函數可以將輸入參數為空時轉換為一特定值,如
nvl(employee_name,’張三’)表示當employee_name為空時則返回’張三’,如果不為空則返回employee_name
通過這個函數可以定制null的排序位置。

3、使用decode函數

decode函數比nvl函數更強大,同樣它也可以將輸入參數為空時轉換為一特定值,如
decode(employee_name,null,’張三’, employee_name)表示當employee_name為空時則返回’張三’,如果不為空則返回employee_name
通過這個函數可以定制null的排序位置。

4、使用case 語法

Case語法是Oracle 9i後開始支援的,是一個比較靈活的語法,同樣在排序中也可以應用
如:
select *
from employee
order by  (case employee_name
           when null then
            '張三'
           else
            employee_name
         end)
表示當employee_name為空時則返回’張三’,如果不為空則返回employee_name
通過case語法同樣可以定制null的排序位置。

文章出處 :http://211.147.225.34/gate/big5/oracle.chinaitlab.com/induction/727571.html

Categories: Database Tags: , , ,