image
DBMS_LOB.INSTR()函數,就是這次的主角。請看下面範例:CREATE TABLE X3
( CLOB_TEXT CLOB);
Insert into X3
(CLOB_TEXT)
Values
('測試一下);
Insert into X3
(CLOB_TEXT)
Values
('');
COMMIT;
select * from x3
where DBMS_LOB.INSTR(clob_text,'',1,1)>0;

味味A 發表在 痞客邦 留言(0) 人氣()

ORACLE 10G 有新版的IMP程式稱為IMPDP,但怎麼用?有那些新的指令?
發現Oracle offical 網站:Chapter 3, "Data Pump Import",介紹的很好,有新舊版指令對照,及一些參數的介紹跟範例,以下是自已截錄出來的重點,若有更詳細的還需要至上述網站查,不過都是原文的。 參數:TABLE_EXISTS_ACTION
這個參數當匯入時遇到table 已經存在了,該怎麼處理的參數,有四項:
TABLE_EXISTS_ACTION={SKIP | APPEND | TRUNCATE | REPLACE}
是舊版IGRONE的取代加強版,預設為SKIP
SKIP
若是Table存在,則不匯入,跳至下個需處理的物件去處理.
若有CONTENT=DATA_ONLY參數,則此參數是無效的

味味A 發表在 痞客邦 留言(0) 人氣()

列出前後版本語法差異(粗體字是之前常用指令)。

Original Export Parameter

Comparable Data Pump Export Parameter

BUFFER

A parameter comparable to BUFFER is not needed.

COMPRESS

A parameter comparable to COMPRESS is not needed.

CONSISTENT

A parameter comparable to CONSISTENT is not needed. Use FLASHBACK_SCN and FLASHBACK_TIME for this functionality.

CONSTRAINTS

EXCLUDE=CONSTRAINT

DIRECT

A parameter comparable to DIRECT is not needed. Data Pump Export automatically chooses the best method (direct path mode or external tables mode).

FEEDBACK

STATUS

FILE

DUMPFILE

FILESIZE

FILESIZE

FLASHBACK_SCN

FLASHBACK_SCN

FLASHBACK_TIME

FLASHBACK_TIME

FULL

FULL

GRANTS

EXCLUDE=GRANT

HELP

HELP

INDEXES

EXCLUDE=INDEX

LOG

LOGFILE

OBJECT_CONSISTENT

A parameter comparable to OBJECT_CONSISTENT is not needed.

OWNER

SCHEMAS

PARFILE

PARFILE

QUERY

QUERY

RECORDLENGTH

A parameter comparable to RECORDLENGTH is not needed because sizing is done automatically.

RESUMABLE

A parameter comparable to RESUMABLE is not needed. This functionality is automatically provided for privileged users.

RESUMABLE_NAME

A parameter comparable to RESUMABLE_NAME is not needed. This functionality is automatically provided for privileged users.

RESUMABLE_TIMEOUT

A parameter comparable to RESUMABLE_TIMEOUT is not needed. This functionality is automatically provided for privileged users.

ROWS=N

CONTENT=METADATA_ONLY

ROWS=Y

CONTENT=ALL

STATISTICS

A parameter comparable to STATISTICS is not needed. Statistics are always saved for tables.

TABLES

TABLES

TABLESPACES

TABLESPACES (Same parameter; slightly different behavior)

TRANSPORT_TABLESPACE

TRANSPORT_TABLESPACES (Same parameter; slightly different behavior)

TRIGGERS

EXCLUDE=TRIGGER

TTS_FULL_CHECK

TRANSPORT_FULL_CHECK

USERID

A parameter comparable to USERID is not needed. This information is supplied as the username/password when you invoke Export.

VOLSIZE

A parameter comparable to VOLSIZE is not needed.

味味A 發表在 痞客邦 留言(0) 人氣()

image
剛剛在toad執行了一個SQL insert into test (A1,A2,A3) values('11','22','http:\\1.1.1.1\do?aa=2&para=333'); 出現了一個視窗,很麻煩。 原因就是&在toad sql中是擔任著替代變數(substitution variable)的功能,碰到&就表示可以輸入替代的值。

味味A 發表在 痞客邦 留言(0) 人氣()

假設scott User想要建立一個view去select HR user的employees 某些欄位。 因為不只這個table要做成view,所以以Role的方式去設定權限給scott 。CREATE ROLE role1;
GRANT SELECT ON hr.employee to role1;
GRANT role1 to scott;

味味A 發表在 痞客邦 留言(0) 人氣()

前幾天有台oracle 10g in win2003 oracle不正常,shutdown 還出現下面的錯誤訊息 SQL>shutdown immediate;
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist

味味A 發表在 痞客邦 留言(0) 人氣()

假設有一個procedure,實作動態產生TEMPORARY TABLE的程式碼,compiler都ok 但是一執行就會有錯誤訊息。   ORA-01031: insufficient privileges  CREATE OR REPLACE PROCEDURE TEST2
IS
sql_stmt VARCHAR2 (4000);
BEGIN
sql_stmt :=
'CREATE GLOBAL TEMPORARY TABLE '
|| ' t10'
|| ' ON COMMIT PRESERVE ROWS AS (SELECT * FROM '
|| ' t9'
|| ' WHERE 1=2) ';
EXECUTE IMMEDIATE sql_stmt;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line (SQLERRM);
END;

味味A 發表在 痞客邦 留言(0) 人氣()

非常簡單的一個PROCEDURE,COMPILER 也OK,但是一執行就會有 錯誤 ORA-00903: invalid table name TABLE真的存在,為何說INVALID呢?CREATE OR REPLACE PROCEDURE TEST2
IS
sql_stmt VARCHAR2 (4000);
tablen varchar2(10);
BEGIN
tablen := 'test1';
sql_stmt := 'TRUNCATE TABLE :1';
EXECUTE IMMEDIATE sql_stmt USING tablen ;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line (SQLERRM);
END;

味味A 發表在 痞客邦 留言(0) 人氣()

image
        一般oracle都會設定排程定期備份等,但有時候只是想要做一台測試機(資料是正式機的),真的要把定期備份的資料還原回來,對很多人來說是很困惑不知道怎麼下手(IMP,IMPDP指令 參數怎麼下,RMAN指令 參數怎麼下…..)。         這個方法是Oracle考試試題中一直提醒的方法(哈哈 我的第六感覺得在提醒,可能有的人沒這種感覺…),試了之後發現一步一步地做像傻瓜相機一樣按下去就好了,非常適合一些非專職 DBA資訊室人員測試使用。   以下範例:
伺服器:windows server 2003,ORACLE 10G

味味A 發表在 痞客邦 留言(0) 人氣()

假設Table為Double_tab,Table內D01,D02為Primary key。 使用Temp Table方式
creat table Double_tab_tmp 
(select distinct* from Double_tab);
truncate table Double_tab;
insert into Double_tab select * from Double_tab_tmp;
這種方法很慢。

 


利用rowid
delete from Double_tab 
where rowid in (select a.rowid
from Double_tab a, Double_tab b
where a.rowid>b.rowid and a.D01=b.D01
and a.D02 = b.D02);
適用於每個key值重覆記錄不多的狀況。

 


利用max或min函數
Not in用法:
delete from Double_tab a 
where rowid not in (select max(b.rowid)
from Double_tab b
where a.D01=b.D01 and a.D02 = b.D02);

 


< 或是 >用法:
delete from Double_tab a 
where rowid <
(select max(b.rowid) from Double_tab b
where a.D01=b.D01 and a.D02 = b.D02);

 

若max換成min,需把<改為>
delete from Double_tab 
where rowid not in (select max(rowid)
from Double_tab t
group by t.D01, t.D02 );
註:使用了group by,提高效率。

味味A 發表在 痞客邦 留言(0) 人氣()

今天開啟oracle出現如下錯誤訊息,跟archive log有關係,紀錄解決的方法及過程。 SQL> startup
ORACLE 執行處理已啟動. Total System Global Area  612368384 bytes
Fixed Size                  1250452 bytes
Variable Size             180357996 bytes
Database Buffers          427819008 bytes
Redo Buffers                2940928 bytes
資料庫已掛載.
ORA-16038: 無法存檔日誌 1 序號 47
ORA-19809: 超過復原檔案限制
ORA-00312: 線上日誌 1 繫線 1:
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG'
ORA-00312: 線上日誌 1 繫線 1:
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01B.LOG'

味味A 發表在 痞客邦 留言(0) 人氣()

當一開始安裝ORACLE時,之前都是一併選擇「建立資料庫」,所以安裝完成後很順利,都可以使用SQL DEVELOPER 或是TOAD連上資料庫。 但是這次來嘗試一下不一樣的,安裝時選擇「僅安裝資料庫軟體」,等一下再自己建立資料庫,但這次的經驗發現,這樣的安裝方式LISTENER就不會自行建立,需要自行建立及啟用LISTENER,以下是整個設定及還原測試過程。 首先是安裝時,選擇的是「僅安裝資料庫軟體」 image 安裝完畢,要來建立資料庫,
如下圖執行『資料庫組態輔助程式』

味味A 發表在 痞客邦 留言(0) 人氣()

1 2
Blog Stats
⚠️

成人內容提醒

本部落格內容僅限年滿十八歲者瀏覽。
若您未滿十八歲,請立即離開。

已滿十八歲者,亦請勿將內容提供給未成年人士。