国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > Oracle > 正文

Oracle快速入門

2024-08-29 13:43:52
字體:
來源:轉載
供稿:網(wǎng)友

  Oracle快速入門 轉自chinaunixcom 修改密碼方法:
1.SQL> grant connect to USRNAME identified by USRPWD ;
2.SQL> alter user USRNAME identified by USRPWD ;
3.SQL> passWord USRNAME ;
 更改 USRNMAE 的口令
 舊口令:××××××
 新口令:××××××
 重新鍵入新口令:××××××

修改成oracle認證方法:

1.修改參數(shù)文件中
 remote_login_passwordfile=EXCLUSIVE 或SHARED
2.修改/home/network/admin/SQLNET.ORA 文件
 增加 sqlnet.authentication_services=(NFS)

ORACLE_SID是操作系統(tǒng)級的參數(shù)
INSTANCE_NAME是數(shù)據(jù)庫級的參數(shù)
SPFILE 是服務器參數(shù)文件
PFILE 是文本參數(shù)文件
create pfile='/oracle/test.ora' from spfile ;
show parameter spfile ; 后假如VALUE值是零,則沒有使用spfile。
啟動數(shù)據(jù)庫是可以指定是用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 = memoryspfileboth ;


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入到指定的小數(shù)位
ROUND(45.926, 2) 45.93
TRUNC: 將值截斷到指定的小數(shù)位
TRUNC(45.926, 2)   45.92
MOD: 返回相除后的余數(shù)
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.

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

TO_CH
-----
 99f

已選擇 1 行。
十六進制與十進制
EYGLE@vilen> 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


將空值轉換為實際的值
數(shù)據(jù)格式可以是日期,字符,數(shù)字
數(shù)據(jù)類型必須匹配
NVL(comm,0)
NVL(hiredate,'01-JAN-97')
NVL(job,'No Job Yet')

NVL2(eXPr1,expr2,expr3)

假如expr1不為Null,返回expr2,假如expr1為Null,返回expr3。
expr1可以為任何數(shù)據(jù)類型

NULLIF(expr1,expr2)
比較兩個表達式,假如相等返回空值,假如不等返回第一個值。

COALESCE(expr1,expr2,...,exprn)
返回表達式列表里的第一個非空表達式



錯誤:

在啟動數(shù)據(jù)庫時出現(xiàn)ORA-01157,ORA-01110或操作系統(tǒng)級錯誤例如ORA-07360,
  在關閉數(shù)據(jù)庫(使用shutdown normal或shutdown immediate) 時將導致錯誤ORA
  -01116,ORA-01110以及操作系統(tǒng)級錯誤ORA-07368

解決:

以下有兩種解決方案:

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

即最近導出的對象是可用的或表空間中的對象可以被輕易地重建等.在這種情況下,最簡單的方法是offline并刪除該數(shù)據(jù)文件,刪除表空間并重建表空間以及所有的對象.

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

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

在大多數(shù)情況下,重建表空間是不可能及太辛勞的工作.方法是倒備份及做介質(zhì)恢復.假如您的系統(tǒng)運行在NOARCHIVELOG模式下,則只有丟失的數(shù)據(jù)在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)假如數(shù)據(jù)庫運行在NOARCHIVELOG模式下則:
   svrmgrl> select file#,change# from v$recover_file;
   假如 CHANGE# 大于最小的FIRST_CHANGE#則數(shù)據(jù)文件可以被恢復。假如 CHANGE# 小于最小的FIRST_CHANGE#則數(shù)據(jù)文件不可恢復。 恢復最近一次的全備份或采用方案一.
  5)svrmgrl> recover datafile filename;
  6)確認恢復成功
  7)svrmgrl> alter database open resetlogs;

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

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

二、臨時表空間

臨時表空間并不包含真正的數(shù)據(jù),恢復的方法是刪除臨時表空間并重建即可.

三、系統(tǒng)表空間

假如備份不可用,則只能采用重建數(shù)據(jù)庫的方法

四、回滾表空間

有兩種情況:

1、數(shù)據(jù)庫已經(jīng)完全關閉(使用shutdown immediate或shutdown命令)

1) 確認數(shù)據(jù)庫完全關閉
  2) 修改init.ora文件,注釋"rollback-segment"
  3) svrmgrl> startup restrict mount
  4) svrmgrl> alter database datafile filename offline drop;
  5) svrmgrl> alter database open;
   基于出現(xiàn)的結果:
   "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、數(shù)據(jù)庫未完全關閉(數(shù)據(jù)庫崩潰或使用shutdown abort命令關閉數(shù)據(jù)庫)

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、數(shù)據(jù)庫處于打開狀態(tài)

1) 刪除回滾段和表空間
  2) 重建表空間和回滾段
五、控制文件恢復                      

1.所有的控制文件均被破壞

將備份的控制文件拷貝至原目錄下
  對于RAW DEVICE,則:

  dd if='con.bak' of='/dev/rdrd/drd1' seek=128

2.并非所有的控制文件均被破壞用其他的控制文件啟動數(shù)據(jù)庫。

3. 數(shù)據(jù)文件上所存儲的表
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

問題描述

執(zhí)行如下語句
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 是參數(shù)

查詢未提交事務
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;


如何將數(shù)據(jù)庫中被鎖表解鎖
作者:  來自:  閱讀次數(shù): 18 [大 中 小]
--------------------------------------------------------------------------------

 我們在操作數(shù)據(jù)庫的時候,有時候會由于操作不當引起數(shù)據(jù)庫表被鎖定,這么我們經(jīng)常不知所措,不知怎么給這些表解鎖,在pl/sql Developer工具的的菜單“tools”里面的“sessions”可以查詢現(xiàn)在存在的會話,但是我們很難找到那個會話被鎖定了,想找到所以被鎖的會話就更難了,下面這叫查詢語句可以查詢出所以被鎖的會話。如下:

SELECT   sn.username, m.SID,sn.SERIAL#, m.TYPE,
        DECODE (m.lmode,
                0, 'None',
                1, 'Null',
                2, 'Row Share',
                3, 'Row Excl.',
                4, 'Share',
                5, 'S/Row Excl.',
                6, 'Exclusive',
                lmode, LTRIM (TO_CHAR (lmode, '990'))
               ) lmode,
        DECODE (m.request,
                0, 'None',
                1, 'Null',
                2, 'Row Share',
                3, 'Row Excl.',
                4, 'Share',
                5, 'S/Row Excl.',
                6, 'Exclusive',
                request, LTRIM (TO_CHAR (m.request, '990'))
               ) request,
        m.id1, m.id2
   FROM v$session sn, v$lock m
  WHERE (sn.SID = m.SID AND m.request != 0)         --存在鎖請求,即被阻塞
     OR (    sn.SID = m.SID                         --不存在鎖請求,但是鎖定的對象被其他會話請求鎖定
         AND m.request = 0
         AND lmode != 4
         AND (id1, id2) IN (
                       SELECT s.id1, s.id2
                         FROM v$lock s
                        WHERE request != 0 AND s.id1 = m.id1
                              AND s.id2 = m.id2)
        )
ORDER BY id1, id2, m.request;

通過以上查詢知道了sid和 SERIAL#就可以開殺了
  alter system kill session 'sid,SERIAL#';

在SQLPLUS里:
1.不顯示 行頭
set heading off pages 0

2.不顯示行數(shù)信息
set feedback off

3。
不在屏幕上顯示結果
set termout off








1.由于該問題由oarcle工程師定位為無法恢復,并在網(wǎng)上進行了求助也每人能解決,所以
我可以方下包袱,去大膽的嘗試新辦法,按照我對數(shù)據(jù)庫的框架理解去尋求辦法。
2.因為無法聯(lián)機的表空空間為用戶表空間,所以不影響數(shù)據(jù)庫系統(tǒng)的啟動,所以
通過 :SQL>startup mount;
      SQL>alter database open;啟動數(shù)據(jù)庫
3.我查看了sys.col#,sys.obj#表,想從表中得到關于datafile0016的信息,但沒有能找
到我認為需要的信息;
4.后來我查看了sys.file#,發(fā)現(xiàn)了所有數(shù)據(jù)文件的記錄,然后我找到對應的file0016的記錄
,想通過刪除該記錄來屏蔽表空間啟動時的數(shù)據(jù)文件的完整性檢測,于是現(xiàn)對sys.file#進
行了備份,然后刪除了file0016對應的記錄。
5.此時執(zhí)行SQL>alter database tablespace ts_user online;
提示數(shù)據(jù)庫已被修改,我驚喜的發(fā)現(xiàn)表空間被聯(lián)機成功了。

由于相應的數(shù)據(jù)文件在這之前已經(jīng)損壞,而且該數(shù)據(jù)文件已經(jīng)被設置成了offline,并且局方在數(shù)據(jù)庫關閉后,在mount狀態(tài)下直接對該文件所在表空間進行了offline操作,所以現(xiàn)在假如再通過“alter database datafile filename offline drop”已經(jīng)不起作用,因為此時的表空間默認的狀態(tài)為offline,該數(shù)據(jù)文件與其所在表空間(聯(lián)機或脫機)具有一致性。所以此時假如想啟動該表空間,只能通過屏蔽數(shù)據(jù)文件的完整性檢查!   數(shù)據(jù)庫業(yè)務表空間聯(lián)機失敗   數(shù)據(jù)庫業(yè)務表空間聯(lián)機失敗




1.由于該問題由oarcle工程師定位為無法恢復,并在網(wǎng)上進行了求助也每人能解決,所以我可以方下包袱,去大膽的嘗試新辦法,按照我對數(shù)據(jù)庫的框架理解去尋求辦法。2.因為無法聯(lián)機的表空空間為用戶表空間,所以不影響數(shù)據(jù)庫系統(tǒng)的啟動,所以通過 :SQL>startup mount;SQL>alter database open;啟動數(shù)據(jù)庫3.我查看了sys.col#,sys.obj#表,想從表中得到關于datafile0016的信息,但沒有能找到我認為需要的信息;4.后來我查看了sys.file#,發(fā)現(xiàn)了所有數(shù)據(jù)文件的記錄,然后我找到對應的file0016的記錄,想通過刪除該記錄來屏蔽表空間啟動時的數(shù)據(jù)文件的完整性檢測,于是現(xiàn)對sys.file#進行了備份,然后刪除了file0016對應的記錄。5.此時執(zhí)行SQL>alter database tablespace ts_user online;提示數(shù)據(jù)庫已被修改,我驚喜的發(fā)現(xiàn)表空間被聯(lián)機成功了。
"/dev/rlvdata0016"文件需要介質(zhì)恢復,表空間聯(lián)機失敗!



發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 洛川县| 芦山县| 夹江县| 东源县| 长乐市| 弥渡县| 沧源| 沁水县| 乌苏市| 洛阳市| 六盘水市| 安新县| 盘山县| 开原市| 霍州市| 通州市| 浙江省| 承德市| 朝阳区| 曲水县| 百色市| 新民市| 弥勒县| 米泉市| 南宫市| 布拖县| 柳林县| 德保县| 马公市| 民权县| 江油市| 视频| 闸北区| 株洲县| 上林县| 策勒县| 宜丰县| 大埔区| 扬州市| 百色市| 丰都县|