Oracle學習快速入門基礎教程

xsdan發表於2006-04-19
修改密碼方法:1.SQL>; grant connect to USRNAME identified by USRPWD ;2.SQL>; alter user USRNAME identified by USRPWD ;3.SQL>; password USRNAME ;更改 USRNMAE 的口令舊口令:××××××新口令:××××××重新鍵入新口令:××××××[@more@]修改成oracle認證方法:

1.修改引數檔案中remote_login_passwordfile=EXCLUSIVE 或SHARED 2.修改/home/network/admin/SQLNET.ORA 檔案增加 sqlnet.authentication_services=(NFS)

ORACLE_SID是作業系統級的引數INSTANCE_NAME是資料庫級的引數SPFILE 是伺服器引數檔案PFILE 是文字引數檔案create pfile='/oracle/test.ora' from spfile ;show parameter spfile ; 後如果VALUE值是零,則沒有使用spfile.啟動資料庫是可以指定是用pfile還是用spfile啟動 如下:startup pfile='/oracle/test.ora'

show parameter instance show parameter db

alter system set job_queue_processes=50 comment ='temporaty change on' scope = memory|spfile|both ;

alter session set

CONCAT('Good', 'String') GoodString SUBSTR('String',1,3) Str LENGTH('String') 6 INSTR('String', 'r') 3 LPAD(sal,10,'*') ******5000

union union all minus 第一個查詢減去第二個查詢intersect 交集

SQL>; select replace('itpub oracle','oracle','training') itpub from dual /

ITPUB

--------------

itpub training

Translate SQL>; select translate('This is second trianing of itpub in Beijing!','abcde','12345') itpub 2 from dual;

ITPUB

--------------------------------------------

This is s53on4 tri1ning of itpu2 in B5ijing!

Floor SQL>; select floor(4.55) from dual;

FLOOR(4.55)

-----------

4 Ceil SQL>; select ceil(4.55) from dual;CEIL(4.55)

----------

5

ROUND: 4舍5入到指定的小數位ROUND(45.926, 2) 45.93 TRUNC: 將值截斷到指定的小數位TRUNC(45.926, 2) 45.92 MOD: 返回相除後的餘數MOD(1600, 300) 100

select trunc(sysdate, 'D') - 3 from dual;

trunc(sysdate, 'D'), 擷取到本週的第一天(0:00)

trunc(sysdate, 'M'), 擷取到本月的第一天(0:00)

trunc(sysdate, 'DD'), 擷取到本日的0:00 trunc(sysdate,'yyyy')得到今年的第一天的0:00.

十進位制與十六進位制>; select to_char(2463,'xxxx') from dual;

TO_CH

-----

99f

已選擇 1 行。

十六進位制與十進位制>; select to_number('99f','xxxx') from dual;

TO_NUMBER('99F','XXXX')

-----------------------

2463

SQL>; select ename,sal,2 case job WHEN 'MANAGER' THEN 1.1*sal 3 WHEN 'ANALYST' THEN 1.2*SAL 4 WHEN 'CLERK' THEN 1.5*SAL 5 ELSE sal END "NEW_SAL" 6 from emp;

ENAME SAL NEW_SAL

---------- ---------- ----------

SMITH 800 1200 ALLEN 1600 1600 WARD 1250 1250 JONES 2975 3272.5 MARTIN 1250 1250 BLAKE 2850 3135 CLARK 2450 2695 SCOTT 3000 3600 KING 5000 5000 TURNER 1500 1500 ADAMS 1100 1650 JAMES 950 1425 FORD 3000 3600 MILLER 1300 1950

SQL>; SELECT job, sal,2 DECODE(job, 'ANALYST' SAL*1.1,3 'CLERK', SAL*1.15,4 'MANAGER', SAL*1.20,5 SAL)

6 REVISED_SALARY 7 FROM emp;JOB SAL REVISED_SALARY

--------- --------- --------------

PRESIDENT 5000 5000 MANAGER 2850 3420 MANAGER 2450 2940

將空值轉換為實際的值資料格式可以是日期,字元,數字資料型別必須匹配NVL(comm,0)

NVL(hiredate,'01-JAN-97')

NVL(job,'No Job Yet')

NVL2(expr1,expr2,expr3)

如果expr1不為Null,返回expr2,如果expr1為Null,返回expr3. expr1可以為任何資料型別

NULLIF(expr1,expr2)

比較兩個表示式,如果相等返回空值,如果不等返回第一個值。

COALESCE(expr1,expr2,……,exprn)

返回表示式列表裡的第一個非空表示式

錯誤:

在啟動資料庫時出現ORA-01157,ORA-01110或作業系統級錯誤例如ORA-07360,在關閉資料庫(使用shutdown normal或shutdown immediate) 時將導致錯誤ORA -01116,ORA-01110以及作業系統級錯誤ORA-07368

解決:

以下有兩種解決方案:

1.使用者的表空間可以被輕易地重建

即最近匯出的物件是可用的或表空間中的物件可以被輕易地重建等。在這種情況下,最簡單的方法是offline並刪除該資料檔案,刪除表空間並重建表空間以及所有的物件。

svrmgrl>; startup mount svrmgrl>; alter database datafile filename offline drop;svrmgrl>; alter database open;svrmgrl>; drop tablespace tablespace_name including contents;重建表空間及所有物件。

2.使用者的表空間不能夠被輕易地重建

在大多數情況下,重建表空間是不可能及太辛苦的工作。方法是倒備份及做介質恢復。如果您的系統執行在NOARCHIVELOG模式下,則只有丟失的資料在online redo log中方可被恢復。

步驟如下:

1)Restore the lost datafile from a backup 2)svrmgrl>; startup mount 3)svrmgrl>; select v1.group#,member,sequence#,first_change#

   >; from v$log v1,v$logfile v2
   >; where v1.group#=v2.group#;

4)如果資料庫執行在NOARCHIVELOG模式下則:svrmgrl>; select file#,change# from v$recover_file;如果 CHANGE# 大於最小的FIRST_CHANGE#則資料檔案可以被恢復。如果 CHANGE# 小於最小的FIRST_CHANGE#則資料檔案不可恢復。 恢復最近一次的全備份或採用方案一。

5)svrmgrl>; recover datafile filename;6)確認恢復成功7)svrmgrl>; alter database open resetlogs;

3.只讀表空間無需做介質恢復,只要將備份恢復即可。唯一的例外是:

表空間在最後一次備份後被改為read-write 模式表空間在最後一次備份後被改為read-only 模式在這種情況下,均需進行介質恢復

二、臨時表空間

臨時表空間並不包含真正的資料,恢復的方法是刪除臨時表空間並重建即可。

三、系統表空間

如果備份不可用,則只能採用重建資料庫的方法

四、回滾表空間

有兩種情況:

1、資料庫已經完全關閉(使用shutdown immediate或shutdown命令)

1) 確認資料庫完全關閉2) 修改init.ora檔案,註釋"rollback-segment" 3) svrmgrl>; startup restrict mount 4) svrmgrl>; alter database datafile filename offline drop;5) svrmgrl>; alter database open;基於出現的結果:"statement processed" 轉(7)

"ORA-00604,ORA-00376,ORA-01110"轉(6)

6) svrmgrl>; shutdown immediate修改init.ora檔案,增加如下一行:_corrupted_rollback_segments = (,……)

svrmgrl>; startup restrict 7) svrmgrl>; drop tablespace tablespace_name including contents;重建表空間及回滾段9) svrmgrl>; alter system disable restricted session;10) 修改init.ora檔案

2、資料庫未完全關閉(資料庫崩潰或使用shutdown abort命令關閉資料庫)

1) 恢復備份2) svrmgrl>; startup mount 3) svrmgrl>; select file#,name,status from v$datafile;svrmgrl>; alter database datafile filename online;4) svrmgrl>; select v1.group#,member,sequence#,first_change#

   >; from v$log v1,v$logfile v2
   >; where v1.group#=v2.group#;

5) svrmgrl>; select file#,change# from v$recover_file;見一方案2-4 6) svrmgrl>; recover datafile filename;7) svrmgrl>; alter database open;

3、資料庫處於開啟狀態

1) 刪除回滾段和表空間2) 重建表空間和回滾段

五、控制檔案恢復

1.所有的控制檔案均被破壞

將備份的控制檔案複製至原目錄下對於RAW DEVICE,則:dd if='con.bak' of='/dev/rdrd/drd1' seek=128

2.並非所有的控制檔案均被破壞用其他的控制檔案啟動資料庫。

3. 資料檔案上所儲存的表select a.segment_name from dba_extents a,dba_data_files b where a.file_id = b.file_id and b.file_name = '檔名全路徑' and a.segment_type = 'TABLE'

job不能自動執行check db parameters

job_queue_processes

if it set to 0 then set it larger than 0

job_queue_processes=1

問題描述

執行如下語句select session_id,object_name from v$locked_object a,dba_objects b where a.object_id=b.object_id

error: ora-03212 Temporary Segment cannt be cteated in locally-managed tablespace.

更改為sys 使用者 以dba登入,可以查詢。

SHUTDOWN IMMEDIATE;STARTUP MOUNT;RECOVER DATABASE;ALTER DATABASE OPEN;

檢視錶大小!

select segment_name,(bytes/1024)/1024||'M' 大小,((BLOCKS*DB_BLOCK_SIZE)/1024)/1024||'M'佔用空間from dba_segments where segment_name = ……

db_block_size 是引數

查詢未提交事務select username, SID||','|| SERIAL# ses, T.STATUS , START_TIME, RN.NAME, USED_UBLK, USED_UREC from v$transaction T, v$session S, v$rollstat RS, v$rollname RN where T.SES_ADDR = S.SADDR and T.XIDUSN = RS.USN and RN.USN = RS.USN order by USED_UBLK;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/262387/viewspace-828495/,如需轉載,請註明出處,否則將追究法律責任。

相關文章