轉:oracle筆記

來源:互聯網
上載者:User

標籤:style   http   io   os   使用   ar   java   for   檔案   

oracle筆記
1 卸載oracle developer server的方法:

1-1 oracle卸載工具中卸載對應的oracleds項目;
在註冊表中搜尋ORACLEDS HOME對應的別名,刪除對應的項;
重新啟動電腦;
刪除對應的ORACLEDS的安裝目錄;

2jinitiator的相關問題:

2-1 jinitiator是oracle自己的applet viewer工具;

2-2 在第一次開啟web應用程式時會自動提示安裝該程式,如果不安裝則無法開啟程式;

2-3 jinitiator是在client端運行

3 OC4J的常用配置:

3-1 更改OC4J的連接埠
開啟%Oracle_Home%\J2ee\Home\Config\Http-Web-Site.Xml檔案
修改其中:中
“8888:設定項(OC4J預設的連接埠號碼是8888)

3-2 修改OC4J預設網頁檔案
在%Oracle_Home%\J2ee\Home\Default-Web-App目錄下,有多種方法設定OC4J的預設網頁檔案:
(1)找到Intex.Html檔案,替換該檔案;
(2)刪除Intex.Html檔案,建立Default.Jsp檔案
(3)刪除Intex.Html檔案,建立Intex.Jsp檔案
註:OC4J可視同為一個完整的WEB伺服器,該伺服器可以執行*.jsp檔案。
當在瀏覽器的地址欄內輸入IP地址:連接埠號碼後,OC4J將根據設定自動尋找預設的網頁檔案。

3-3 修改OC4J預設網頁檔案設定
開啟%Oracle_Home%\J2ee\Home\Config\global-web-application.xml檔案
修改其中:      
 
    index.html
    default.jsp
 
的檔案名稱和順序
註:該配置項位於檔案末端的地方
另:根據相關文檔,在此處配置即可實現修改預設網頁檔案設定,但我試過好象沒有成功,不知為何。

3-4  新增表徵圖檔案
在Forms9i中,表徵圖檔案應為GIF檔案,預設情況下,存放於固定的目錄中。
該目錄為:%Oracle_Home%\CGENF61\Admin\Icons\Pc

3-5  修改OC4J預設的表徵圖檔案尾碼名和存放目錄
開啟%Oracle_Home%\Forms90\Java\Forms\Registry\Registry.Dat檔案
修改其中:
  #
  # The Application Level icon files are relative to the DOCUMENTBASE
  #   example: icons/
  # or an absolute URL.
  #   example: http://www.forms.net/~luser/d2k_project/ 
  #
  default.icons.iconpath=
  default.icons.iconextension=GIF
註:該配置項位於檔案末端

3-6  配置虛擬路徑
在實現使用者需求過程中,經常需要將伺服器的文檔顯示給使用者或提供使用者下載。
此時:可能會用到Web.Show_Document(‘http://Oracle_Home:8888/PathName/xxxx.xls‘,‘_Blank‘);,
此時PathName不指伺服器端的實際路徑,而是OC4J的虛擬路徑。
開啟%Oracle_Home%\J2ee\OracleDS\Application-Deployments\Defaults\DefaultWebApp\Orion-Web.xml
新增或修改其中:
即可實現修改或設定OC4J虛擬路徑
註:也可以開啟%Oracle_Home%\J2ee\OracleDS\Application-Deployments\Forms\Forms90Web\Orion-Web.xml,
區別在於在此處設定的檔案連結則為:http://Oracle_Home:8888/forms/xxxx.xls

3-7  報表檔案存放目錄
OracleDeveloper的報表,均需產生RDF檔案存放於伺服器端,
預設的目錄在%Oracle_Home%\reports\integ目錄下,
容易與系統檔案產生混淆,修改REPORT目錄的方法如下:
開啟%Oracle_Home%\reports\conf\rwservlet.properties
修改 Reports_path=選項<若沒有,則可追加。該選項也可在系統註冊表中追加>

3-8  IE視窗中上方的ORACLE標識去除
設定%Oracle_Home%\Forms90\Server\FormsWeb.cfg檔案中,Logo=False

3-9  修改IE視窗中的Applet的視窗大小
設定%Oracle_Home%\Forms90\Server\FormsWeb.cfg檔案中,Width=800 / Height=600

3-10 修改預設的FORMS檔案
設定%Oracle_Home%\Forms90\Server\FormsWeb.cfg檔案中,Forms=xxx.fmx

3-11 修改預設的資料庫連接串
設定%Oracle_Home%\Forms90\Server\FormsWeb.cfg檔案中,User=xxx/[email protected]

3-12 將forms9i的程式置於JAVA視窗運行<一般情況下,置於IE視窗的SERLET內運行>
設定%Oracle_Home%\Forms90\Server\FormsWeb.cfg檔案中,
separateFrame=False<一般情況下,separateFrame=True>

3-13 修改Forms9i應用程式背景圖<原先的背景圖為Oracle Forms Sevices>
設定%Oracle_Home%\Forms90\Server\FormsWeb.cfg檔案中,BackGround=VirualPath/xxx.gif
註:VirualPath是在6設定的虛擬路徑

4 文字文件(txt)的操作:

4-1 文法 

4-1-1 擷取控制代碼,並開啟檔案
L_MyFile:= Text_IO.Fopen(FileName, L_Mode);
其中,L_Mode為“W”時,寫入資料;L_Mode為“R”時,讀取資料。

4-1-2 寫入資料
Text_IO.PUTF(MYFILE,‘xxx‘);

4-1-3 讀出資料
Text_IO.GetLine(MYFILE,L_Str);

4-1-4 前進一行
TEXT_IO.NEW_LINE; 

4-1-5 關閉檔案
Text_IO.FClose

註:在寫入檔案過程中,分行符號是Chr(10)

4-2 執行個體

4-2-1 寫入Text文檔
Declare
  L_MyFile  Text_IO.File_Type;
  Filename Varchar2(100):=‘c:\TestText.Txt‘;
Begin
  --建立檔案
  Myfile := Text_IO.Fopen(Filename, ‘W‘);   
  --寫入字元
  Text_IO.PUTF(Myfile, ‘111Test‘);       
  Text_IO.PUTF(Myfile, CHR(10)); 
  Text_IO.PUTF(Myfile, ‘222Test‘);       
  Text_IO.PUTF(Myfile, CHR(10)); 
  --關閉檔案
  Text_IO.Fclose(Myfile);
End;

4-2-2 讀取文檔
DECLARE
   L_MyFile text_io.file_type; 
  Filename Varchar2(100):=‘c:\TestText.Txt‘ ;
  L_Str VarChar2(500);
BEGIN 
  --開啟檔案   
  L_MyFile:=Text_IO.Fopen(filename,‘R‘); 
  --迴圈讀出檔案內容
  Loop 
    <>
        Begin 
        --讀取一行文字
        Text_IO.Get_Line(L_MyFile,L_Str); 
        --顯示讀取的內容
        Message(L_Str);
        --前進一行
        TEXT_IO.NEW_LINE; 
        --檔案讀取完畢響應
        Exception 
          When No_Data_Found Then 
            Exit; 
        END StartReadText; 
    end loop; 
  --關閉檔案
  Text_io.Fclose(L_MyFile);
END;
5 自動保持網卡啟用:

5-1 說明:對於稍新的網卡,w2k下有一個預設設定:
當網線斷開時,網站的IP自動取消。這可能會導致某些運行TCP/IP的 service 出錯。
本文介紹: 即使沒有插上網線,也讓網卡保持IP地址。

5-2 操作:參數:建立雙位元組字(DWord) DisableDHCPMediaSense  (注意大小寫),
設為十六進位1 (路徑:HEY_LOCAL_MACHINE\SYSTEM\CURRENTCONTROLSET\SERVICES\TCPIP\PARAMENTERS)
如果不進行以上配置,網線斷開時,在Dos下使用 route print,不能看到以下多行:(只能看到兩行) 

 

6 正確刪除ORACLE

6-1 經常發現運行setup.exe的方法卸載並不可行。經常提示一大堆這樣那樣的錯誤。

6-2 自動+手工刪除的辦法:

6-2-1 控制台/管理工具/服務上停掉所有關於oracle的service.

6-2-2 刪除c:/oracle及c:/programfiles/oracle

6-2-3 運行regedit, 將HKEY-LOCAL-MACHINE/SOFTWARE/ 及
HKEY-LOCAL-SYSTEM/CurrentControlSet/Services/關於oracle的內容全部刪除

6-2-4 重啟電腦。

7 plsql中單引號“‘”的問題

7-1 單引號的在使用中是字串的分割符號,如果需要直接引用單引號就需要用兩種方式:

7-1-1 第一種常用方式:在ORACLE中有這樣的申明:兩個單引號連續使用表示對單個單引號的文本引用;
例如:select ‘I‘‘m chinese‘ from dual
結果是:I‘m chinese

7-1-2 另一種方式:使用ASCII碼中的字元對應的數值,然後使用CHR()ASCII字元轉換函式進行引用;
例如:select ‘test:‘ || chr(38) || chr(39) from dual;
結果是:test:&‘
在實際應用中可以使用:select ascii(‘a‘) from dual;
結果是:97

8 ORACLE中文日期格式和英文日期格式的問題解決方案(二種):

8-1 使用TO_DATE (‘2002-jan-26‘, ‘YYYY-mon-dd‘, ‘NLS_DATE_LANGUAGE = American‘)
例如:
select * from emp
where hiredate

8-2 使用
ALTER SESSION SET NLS_LANGUAGE = AMERICAN;
ALTER SESSION SET NLS_DATE_FORMAT=‘DD-MON-YYYY‘
改變當前的字元集和日期格式;

9 使用‘#’和copy()來實現select語句的動態複合條件查詢

9-1 思路:在資料區塊查詢之前將"# =(或者like )‘條件值‘",然後使用COPY賦值給資料區塊中相應的資料項目,
FORM將通過判斷#號來進行條件的組合,並且將#號省略;
例如
copy(‘# =‘||:BLK_QUERY.EMPNO,‘BLK_EMP.EMPNO‘);

10 SQLPLUS小計

10-1 常用的SQLPLUS命令:
select * from tab;
--顯示目前使用者的所有對象;
select * from allusers;
--查詢系統擁有的所有使用者
create user test identified by test;
grant connect,resource to test;
drop user test;
--建立,授權,刪除使用者;
(a)append
--添加到行尾
(c)change
--替換或刪除
(i)input
--添加一行
(l)ist
--列出緩衝區中的行
(r)un
--執行緩衝區中的行
@檔案名稱(.sql)
--執行“檔案名稱.sql”的指令檔
@@檔案名稱(.sql)
--在一個檔案中執行另一個“檔案名稱.sql”的指令檔
save
--將緩衝區的資料存檔
get
--將檔案中的命令調到緩衝區
start
--執行調入緩衝區中的命令
spool
spool 檔案名稱
spool off
--假離線檔案(各種操作及執行結果存檔到磁碟檔案上,預設副檔名為.lst)
set feedback off
--預設on,去除結尾的總計資訊
set pagesize 50
--預設14,一次返回的記錄數
set timing on
--預設off,顯示執行時間
set sqlprompt "SQL> "
--設定預設提示符,預設值就是"SQL> "
set autocommit ON
--設定是否自動認可,預設為OFF
set pause on
--預設為OFF,設定暫停,會使螢幕顯示停止,等待按下ENTER鍵,再顯示下一頁
define a = ‘‘‘20000101 12:01:01‘‘‘
--定義局部變數,如果想用一個類似在各種顯示中所包括的斷行符號那樣的常量,
例如:
SQL> select &a from dual;
SQL> select ‘20000101 12:01:01‘ from dual
--
any()
--把一個值與表中的每一個值進行比較,有一個關係成立,返回true
例如:
SQL> Select * from emp Where sal = any(select sal from emp where deptno = 20)
--
UNION
--集合的並,不包含重複行
Union all
--集合的並,包含重複行
Intersect
--集合的交,不包含重複行
minus
--集合的差,不包含重複行

11 DBA小計

11-1 建立SYSTEM資料表空間的目的是盡量將目的相同的表存放在一起,以提高使用效率,只應存放資料字典

11-2 資料庫<-資料表空間<-資料檔案<-ORACLE塊

11-3 一個段segment只能屬於一個資料表空間,但可以屬於多個資料檔案

11-4 一個區extent只能屬於一個資料檔案,即區間(extent)不能跨越資料檔案

11-5 單獨一個事務不能跨越多個復原段

11-6 索引表不含ROWID值

11-7 擁有不同大小的復原段沒有任何益處

11-8 一個事務即使不被提交,也會被寫入到重做日誌中。

12 EXP/IMP小計

12-1 備份一個或多個使用者
D:\>exp scott/tiger file=匯出檔案
D:\>exp system/manager owner=(使用者1,使用者2,…,使用者n) file=匯出檔案

12-2備份一個或多個表
D:\>exp 使用者/密碼 tables=表
D:\>exp 使用者/密碼 tables=(表1,…,表2)
D:\>exp system/manager tables=(使用者.表)
D:\>exp system/manager tables=(使用者1.表1,使用者2.表2)

12-3 匯入指定表
D:\>exp scott/tiger file=a.dmp
D:\>imp test/test fromuser=scott tables=emp file=a.dmp
D:\>imp test/test tables=dept file=a.dmp
 
12-4 記錄LOG資訊
D:\>imp80 username/[email protected] file=impfile.dmp log=mylog.log
D:\>exp80 username/[email protected] file=expfile.dmp log=mylog.log
運行後,mylog.log裡記錄著所有的LOG資訊

12-5 說明:
--如果匯出使用者沒有DBA許可權,則匯入使用者可以不用指定fromuser、touser參數
--如果匯出使用者擁有DBA許可權,則匯入使用者也必須擁有DBA許可權

13 對CLOB對象的全文檢索索引

13-1 如果使用LIKE關鍵詞將發生錯誤;

13-2 應使用如下方法:
SQL> create table a(a clob);

SQL> insert into a values(‘1234‘);
 
SQL> insert into a values(‘5648‘);
 
SQL> SELECT * FROM A WHERE dbms_lob.instr(a.a,‘12‘,1,1)>0;
 
1234
 
 
SQL> SELECT * FROM A WHERE dbms_lob.instr(a.a,‘5‘,1,1)>0;
 
5648


14 對目前使用者下的各種對象的查看
14-1 表:
  select * from cat;
  select * from tab;
  select table_name from user_tables;
14-2 視圖:
  select text from user_views where view_name=upper(‘&view_name‘);
14-3 索引:
  select index_name,table_owner,table_name,tablespace_name,status from user_indexes order by table_name;
14-4 觸發器:
  select trigger_name,trigger_type,table_owner,table_name,status from user_triggers;
14-5 快照:
  select owner,name,master,table_name,last_refresh,next from user_snapshots order by owner,next;
14-6 同義字:
  select * from syn;
14-7 序列:
  select * from seq;
14-8 資料庫鏈路:
  select * from user_db_links;
14-9 約束限制:
  select TABLE_NAME,CONSTRAINT_NAME,SEARCH_CONDITION,STATUS from user_constraints;
14-10 本使用者讀取其他使用者物件的許可權:
  select * from user_tab_privs;
14-11 本使用者所擁有的系統許可權:
  select * from user_sys_privs;
14-12 使用者:
  select * from all_users order by user_id;
14-13 資料表空間剩餘自由空間情況:
  select tablespace_name,sum(bytes) 總位元組數,max(bytes),count(*) from dba_free_space group by tablespace_name;
14-14 資料字典:
  select table_name from dict order by table_name;
14-15鎖及資源資訊:
  select * from v$lock;不包括DDL鎖
14-16 資料庫字元集:
  select name,value$ from props$ where name=‘NLS_CHARACTERSET‘;
14-17 inin.ora參數:
  select name,value from v$parameter order by name;
14-18 SQL共用池:
  select sql_text from v$sqlarea;
14-19 資料庫:
  select * from v$database
14-20 控制檔案:
  select * from V$controlfile;
14-21 重做記錄檔資訊:
  select * from V$logfile;
14-22 來自控制檔案中的記錄檔資訊:
  select * from V$log;
14-23 來自控制檔案中的資料檔案資訊:
  select * from V$datafile;
14-24 NLS參數當前值:
  select * from V$nls_parameters;
14-25 ORACLE版本資訊:
  select * from v$version;
14-26 描述後台進程:
  select * from v$bgprocess;
14-27 查看版本資訊:
  select * from product_component_version;

15 使用SELECT 的for update子句在查詢時給記錄加鎖
--建立實驗表1
create table a(a number);
insert into a values(1);
commit;
 
select * from a for update;
--或
select * from a for update of a.a;(a表的a列)
 
--新開啟一個SQL*Plus視窗
conn test/test(test使用者上的第二個會話)
delete from a;
 
--此時,系統停頓狀態,等待解鎖,
--只要在第一個視窗發出roll;或commit;命令,即可解除鎖定狀態


16 SELECT中串連的問題,JOIN的使用;

16-1 交叉串連(笛卡兒積)

SELECT * FROM TABLE1,TABLE2;

--結果返回包含TABLE1,TABLE2的所有可能組合

16-2 等值串連(使用WHERE子句)

SELECT O.Item,O.PrintNo,A.Yds as Yds FROM Proll O,Proll_use2001 A ;
WHERE O.Item=A.Item

--結果返回第二張表中的包含第一張表中的資料,相當於交集

16-3

 


17 form path路徑的設定,目的是讓oracle develop認到項目的路徑,
使項目的諸如附加的子程式庫會自動被oracel develop認到

17-1 方法:修改註冊表中"\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME1"中追加

18 修改ORACEL9i的啟動參數

18-1 與8i不同9i預設是從spfile.ora檔案啟動,而8i是從pfile檔案啟動,
8i修改參數後必須重新啟動資料庫後才會生效,9i引入spfile,它是一個二進位檔案,
不能直接進行修改,但是可以使用ALTER SYSTEM或ALTER SESSION來動態修改參數,
並且所有更改可以立即生效。

18-2 spfile 是一個二進位檔案,可以使用RMAN進行備份,第一次資料庫啟動需要用
PFILE來建立SPFILE,WINNT預設目錄在${oracle_home}\datebase下,init${ORACELSID}.ora在
A${oracle_home}\admin\db_nam\pfile\下,oracle資料啟動是從spfile${oracle_sid}.ora->
spfile.ora->init${oraclesid}.ora的順序來尋找啟動參數檔案。

18-3
create spfile from pfile 命令建立spfile檔案;

startup pfile=‘e:\oracle\admin\eyglen\pfile\int.ora‘ 使用pfile檔案啟動;

startup 使用spfile檔案啟動;

18-4 可以在pfile中設定spfile的檔案路徑更改:spfile=‘e:\oracle\spfiletest.ora‘

18-5 alter system set log_archive_start=false scope=spfile 該命令就可以直接修改spfile

18-6 scope的三個選擇性參數:
MEMORY:改變當前執行個體
spfile:改變spfile
both:改變執行個體和spfile

18-7 可以在shutdown immediate後修改SPFILE檔案

18-8 show parameter spfile命令來判斷spfile檔案是否被使用


19 在ORACLE中的約束條件中增加對欄位的約束,如主鍵,唯一性,外鍵等結合用戶端的更新檢查和錯誤控制,
可以達到在遠程視圖中對資料檢查的控制的目的。

20 刪除表中存在的重複記錄,從重複記錄表中建立一個唯一性的新表

20-1 重複資料刪除記錄
delete from test where rowid!=(
select max(rowid) from test b
where test.id=b.id)

21-2 唯一性的新表
create table miyu_new as
select distinct id,title,text from miyu;

21 CREATE SEQUENCE 的用法

21-1 CREATE SEQUENCE DDL語句不能使用在where或pl/sql的過程子句中

21-2 偽列NEXTVAL,CURRVAL和CREATE SEQUENCE一起使用,但是CURRVAL必須是至少使用過一次NEXTVAL後才能使用

22 ROWNUM 的用法注意

22-1 一般來說rownum不能用>或=號來寫條件(只用<號是可以的)
/*錯誤*/
select * from (select * from fesco.ssk order by ssbh ) where rownum<200 and rownum>=100;
/*正確*/
select * from (select rownum rownum1 ,a.* from fesco.ssk a order by ssbh ) where rownum1<200 and rownum1>=100;

22-2 使用rownum進行類似排序後取前3的操作

/*錯誤,這樣的操作不一定是得到排序後的前N個記錄,因為rownum在排序之前賦值給每行*/
select sal form emp where rownum<=3 order by sal
/*正確*/
返回工資最少的前3名:
select sal from (select sal from emp order by sal) where rownum<=3;

23 動態SQL的使用

23-1 使用“EXECUTE IMMEDIATE”語句引用非查詢語句(DML,DDL)

/*執行個體1,DDL語句*/
EXECUTE IMMEDIATE
  ‘CREATE TABLE testtable (col1 varchr(10))‘;
/*執行個體2,匿名PL/SQL語句塊*/
v_PLSQLBLOCK :=
   ‘BEGIN
     FOR v_Rec IN (SELECT * FROM execute_table) LOOP
       DBMS_OUTPUT.PUT_LINE(v_Rec.col1);
     END LOOP;
   END;‘;
EXECUTE IMMEDIATE v_PLSQLBLOCK;

 

轉:oracle筆記

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.