Amazon Ads

顯示具有 Oracle 標籤的文章。 顯示所有文章
顯示具有 Oracle 標籤的文章。 顯示所有文章

2009年8月28日 星期五

查Oracel版本

要查版本,打下列指令之一即可:
  • select * from v$version

  • select * from product_component_version

2009年3月23日 星期一

修改Oracle資料表的Constraint和Index的效用

在寫入大量資料時,若資料表設有Constraint或Index,在寫入時會很費時間。因此在寫入前先把Constraint或Index改成無效,寫入後再改回來,可增加速度。

1.將primary key設成無效。
alter table table_name disable constraint PK_name;

2.將primary key回覆效用。
alter table table_name enable constraint PK_name;

3.將Index設成無效。
alter index IDX_NAME unusable;

4.回覆Index的效用。
alter index IDX_NAME rebuild online;

2009年2月18日 星期三

修改欄位名稱和長度的語法

alter table 資料表名稱 rename column 欄位名稱 to 新的欄位名稱;
alter table 資料表名稱 modify 欄位名稱 資料型態;

2008年6月30日 星期一

在oracle建table時,因為不同username建的table需要在table name前再加一個username.tablename才能做select動作,因此需加一段,但此時需用Sys Admin的帳號登入:
CREATE SYNONYM username1.tableName FOR username2.tableName;
用username1登入時就能直接接用select * from tablename來做查詢。

2008年6月27日 星期五

SQL *Loader的錯誤訊息-出現ORA-00947值不夠

當欄位數都對時,若出現ORA-00947值不夠的訊息時,表示可能在使用Oracle中的function時,少或多了小括號,或其中錯誤。

例如:
"decode(:aaa, null, 'aaa', :aaa))"
可能會因為多了一個小括號,SQL *Loader就會辨別錯誤。

2008年6月7日 星期六

Oracle 的特殊 Table DUAL

Oracle 的特殊 Table DUAL
前陣子有同事問我,dual這個table是要幹嘛的,先看看它的schema,

Name Type Nullable Default Comments
----- ----------- -------- ------- --------
DUMMY VARCHAR2(1) Y

當我們下select 'XXXXX' from dual;
回傳結果為:

xxxxx

那有什麼用呢?因為dual裡面永遠只有一筆資料,所以用這樣的方法,可以得只有一筆的字串等資料,它的好處用過才知道。

換環境時複製資料表的小撇步

換環境時, 要COPY資料表, 先利用pl/sql developer連到舊環境中, 選擇到匯出的TABLE, 點VIEW, 再點右下角的VIEW SQL, 會出現CREATE TABLE的語法, 再登出連到到匯入的DB去, 點選APPLY, 再CLOSE, 便完成匯出

如何連接 Oracle

  為了連接oracle,你要先知道組態檔的位置
  oracle 組態檔位置: # TNSNAMES.ORA Network Configuration File: 安裝根目錄\oracle\ora92\NETWORK\ADMIN\tnsnames.ora,然後打開編輯,加入:

連線名稱 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = IP)(PORT = 連接埠號))
)
(CONNECT_DATA =
(SERVICE_NAME = 服務名稱)
)
)
當然也有工具可以設定,點選[開始]-[所有程式]找到下面的選項:
點選進去後就可以按步設定連線。

2008年5月6日 星期二

在oracle中使用to_char函式對數字轉型

函式使用方式為to_char(var1, var2),若var2的格式不同時,會有不同的結果:
1.使用'99999',9的個數依所需位數而定:
ex.
select to_char(12345, '999999999') from dual;
所得結果為:
12345

2.使用'099999',9的個數依所需位數而定:
ex.
select to_char(12345, '0999999999') from dual;
所得結果為:
0000012345

3.使用'000000',0的個數依所需位數而定:
ex.
select to_char(12345, '0000000000') from dual;
所得結果為:
0000012345



4.使用'000000',再加一個s,0的個數依所需位數而定:
ex.
select to_char(12345, 's0000000000') from dual;
所得結果為:
+0000012345

5.使用'999999',再加一個s,9的個數依所需位數而定:
ex.
select to_char(12345, 's99999999999') from dual;
所得結果為:
+12345

2008年5月5日 星期一

在oracle要查index的狀態

可以從user_indexes (或是 all_indexes或 dba_indexes)這幾個 data dictionary view去查如下:

SELECT index_name, status FROM user_indexes;
就會跑出如下的結果:
INDEX_NAME STATUS
------------------------------ --------
IDX_INDEX1 VALID
IDX_INDEX2 VALID

2008年5月2日 星期五

【筆記】Oracle中的left join

在oracle 9i之前,在oracle使用left outer join是要在where條件中,在被join的table之欄位後面, 加一個(+)要做這件事。但從oracle 9i以後,就用iso99的SQL語法,使用left [outer] join來進行。

下面範例中可以看出兩種join的語法的差異: 在Oracle8i中的left outer join
select
last_name,
department_name
from
employees e,
departments d
where
e.department_id = d.department_id(+);
在Oracle9i中的left outer join
select
last_name,
department_name
from
employees e
left outer join
departments d
on
e.department_id = d.department_id;
參考網址