一本大道香蕉久在线播放29,欧美视频一区二区三区,中文字幕精品—区二区http://www.aygfsteel.com/wangxinsh55/category/33868.htmlzh-cnThu, 21 Jul 2011 07:40:43 GMTThu, 21 Jul 2011 07:40:43 GMT60Oracle 10g備份時(shí)主機(jī)身份證明驗(yàn)證不通過http://www.aygfsteel.com/wangxinsh55/archive/2011/07/21/354786.htmlSIMONESIMONEThu, 21 Jul 2011 07:10:00 GMThttp://www.aygfsteel.com/wangxinsh55/archive/2011/07/21/354786.htmlhttp://www.aygfsteel.com/wangxinsh55/comments/354786.htmlhttp://www.aygfsteel.com/wangxinsh55/archive/2011/07/21/354786.html#Feedback0http://www.aygfsteel.com/wangxinsh55/comments/commentRss/354786.htmlhttp://www.aygfsteel.com/wangxinsh55/services/trackbacks/354786.html在Oracle EM中執(zhí)行備份操作時(shí),需要提供主機(jī)身份證明以用于訪問目標(biāo)數(shù)據(jù)庫的操作系統(tǒng)。但是我們在保證用戶名密碼爭取的情況下,可能仍然報(bào)錯(cuò)。這個(gè)錯(cuò)誤可能是:以用戶Administrator 的身份連接主機(jī)失敗。Error:Wrong password for user.



這個(gè)錯(cuò)誤會(huì)很讓人費(fèi)解,因?yàn)槲覀円呀?jīng)確保用戶名密碼輸入正確了。產(chǎn)生這個(gè)問題的原因是需要在Windows系統(tǒng)中將該用戶設(shè)置為作為批處理作業(yè)登錄。即打開【本地安全策略】,在【本地策略】-【用戶權(quán)限分配】下,將連接主機(jī)的用戶添加到“作為批處理作業(yè)登錄”中。


SIMONE 2011-07-21 15:10 發(fā)表評論
]]>
詳解:數(shù)據(jù)庫名、實(shí)例名、ORACLE_SID、數(shù)據(jù)庫域名、全局?jǐn)?shù)據(jù)庫名、服務(wù)名 http://www.aygfsteel.com/wangxinsh55/archive/2011/04/14/348311.htmlSIMONESIMONEThu, 14 Apr 2011 11:16:00 GMThttp://www.aygfsteel.com/wangxinsh55/archive/2011/04/14/348311.htmlhttp://www.aygfsteel.com/wangxinsh55/comments/348311.htmlhttp://www.aygfsteel.com/wangxinsh55/archive/2011/04/14/348311.html#Feedback0http://www.aygfsteel.com/wangxinsh55/comments/commentRss/348311.htmlhttp://www.aygfsteel.com/wangxinsh55/services/trackbacks/348311.html數(shù)據(jù)庫名、實(shí)例名、數(shù)據(jù)庫域名、全局?jǐn)?shù)據(jù)庫名、服務(wù)名,
這是幾個(gè)令很多初學(xué)者容易混淆的概念。相信很多初學(xué)者都與我一樣被標(biāo)題上這些個(gè)概念搞得一頭霧水。我們現(xiàn)在就來把它們弄個(gè)明白。

一、數(shù)據(jù)庫名
什么是數(shù)據(jù)庫名?

數(shù)據(jù)庫名就是一個(gè)數(shù)據(jù)庫的標(biāo)識,就像人的身份證號一樣。他用參數(shù)DB_NAME表示,如果一臺機(jī)器上裝了多全數(shù)據(jù)庫,那么每一個(gè)數(shù)據(jù)庫都有一個(gè)數(shù)據(jù)庫名。在數(shù)據(jù)庫安裝或創(chuàng)建完成之后,參數(shù)DB_NAME被寫入?yún)?shù)文件之中。格式如下:
DB_NAME=myorcl
...
在創(chuàng)建數(shù)據(jù)庫時(shí)就應(yīng)考慮好數(shù)據(jù)庫名,并且在創(chuàng)建完數(shù)據(jù)庫之后,數(shù)據(jù)庫名不宜修改,即使要修改也會(huì)很麻煩。因?yàn)椋瑪?shù)據(jù)庫名還被寫入控制文件中,控制文件是以二進(jìn)制型式存儲的,用戶無法修改控制文件的內(nèi)容。假設(shè)用戶修改了參數(shù)文件中的數(shù)據(jù)庫名,即修改DB_NAME的值。但是在Oracle啟動(dòng)時(shí),由于參數(shù)文件中的DB_NAME與控制文件中的數(shù)據(jù)庫名不一致,導(dǎo)致數(shù)據(jù)庫啟動(dòng)失敗,將返回ORA-01103錯(cuò)誤。

數(shù)據(jù)庫名的作用
數(shù)據(jù)庫名是在安裝數(shù)據(jù)庫、創(chuàng)建新的數(shù)據(jù)庫、創(chuàng)建數(shù)據(jù)庫控制文件、修改數(shù)據(jù)結(jié)構(gòu)、備份與恢復(fù)數(shù)據(jù)庫時(shí)都需要使用到的。
有很多Oracle安裝文件目錄是與數(shù)據(jù)庫名相關(guān)的,如:
winnt: d:\oracle\product\10.1.0\oradata\DB_NAME\...
Unix: /home/app/oracle/product/10.1.0/oradata/DB_NAME/...
pfile:
winnt: d:\oracle\product\10.1.0\admin\DB_NAME\pfile\ini.ora
Unix: /home/app/oracle/product/10.1.0/admin/DB_NAME/pfile/init$ORACLE_SID.ora
跟蹤文件目錄:
winnt: /home/app/oracle/product/10.1.0/admin/DB_NAME/bdump/...
另外,在創(chuàng)建數(shù)據(jù)時(shí),careate database命令中的數(shù)據(jù)庫名也要與參數(shù)文件中DB_NAME參數(shù)的值一致,否則將產(chǎn)生錯(cuò)誤。
同樣,修改數(shù)據(jù)庫結(jié)構(gòu)的語句alter database,當(dāng)然也要指出要修改的數(shù)據(jù)庫的名稱。
如果控制文件損壞或丟失,數(shù)據(jù)庫將不能加載,這時(shí)要重新創(chuàng)建控制文件,方法是以nomount方式啟動(dòng)實(shí)例,然后以create controlfile命令創(chuàng)建控制文件,當(dāng)然這個(gè)命令中也是指指DB_NAME。
還有在備份或恢復(fù)數(shù)據(jù)庫時(shí),都需要用到數(shù)據(jù)庫名。
總之,數(shù)據(jù)庫名很重要,要準(zhǔn)確理解它的作用。

查詢當(dāng)前數(shù)據(jù)名
方法一:select name from v$database;
方法二:show parameter db
方法三:查看參數(shù)文件。

修改數(shù)據(jù)庫名
前面建議:應(yīng)在創(chuàng)建數(shù)據(jù)庫時(shí)就確定好數(shù)據(jù)庫名,數(shù)據(jù)庫名不應(yīng)作修改,因?yàn)樾薷臄?shù)據(jù)庫名是一件比較復(fù)雜的事情。那么現(xiàn)在就來說明一下,如何在已創(chuàng)建數(shù)據(jù)之后,修改數(shù)據(jù)庫名。步驟如下:
1.關(guān)閉數(shù)據(jù)庫。
2.修改數(shù)據(jù)庫參數(shù)文件中的DB_NAME參數(shù)的值為新的數(shù)據(jù)庫名。
3.以NOMOUNT方式啟動(dòng)實(shí)例,修建控制文件(有關(guān)創(chuàng)建控制文件的命令語法,請參考oracle文檔)

二、數(shù)據(jù)庫實(shí)例名
什么是數(shù)據(jù)庫實(shí)例名
數(shù)據(jù)庫實(shí)例名是用于和操作系統(tǒng)進(jìn)行聯(lián)系的標(biāo)識,就是說數(shù)據(jù)庫和操作系統(tǒng)之間的交互用的是數(shù)據(jù)庫實(shí)例名。實(shí)例名也被寫入?yún)?shù)文件中,該參數(shù)為instance_name,在winnt平臺中,實(shí)例名同時(shí)也被寫入注冊表。
數(shù)據(jù)庫名和實(shí)例名可以相同也可以不同。
在一般情況下,數(shù)據(jù)庫名和實(shí)例名是一對一的關(guān)系,但如果在oracle并行服務(wù)器架構(gòu)(即oracle實(shí)時(shí)應(yīng)用集群)中,數(shù)據(jù)庫名和實(shí)例名是一對多的關(guān)系。這一點(diǎn)在第一篇中已有圖例說明。

查詢當(dāng)前數(shù)據(jù)庫實(shí)例名
方法一:select instance_name from v$instance;
方法二:show parameter instance
方法三:在參數(shù)文件中查詢。

數(shù)據(jù)庫實(shí)例名ORACLE_SID
雖然兩者都表是oracle實(shí)例,但兩者是有區(qū)別的。instance_name是oracle數(shù)據(jù)庫參數(shù)。而ORACLE_SID是操作系統(tǒng)的環(huán)境變量。ORACLD_SID用于與操作系統(tǒng)交互,也就是說,從操作系統(tǒng)的角度訪問實(shí)例名,必須通過ORACLE_SID。在winnt不臺,ORACLE_SID還需存在于注冊表中。
ORACLE_SID必須與instance_name的值一致,否則,你將會(huì)收到一個(gè)錯(cuò)誤,在unix平臺,是“ORACLE not available”,在winnt平臺,是“TNS:協(xié)議適配器錯(cuò)誤”。

數(shù)據(jù)庫實(shí)例名與網(wǎng)絡(luò)連接
數(shù)據(jù)庫實(shí)例名除了與操作系統(tǒng)交互外,還用于網(wǎng)絡(luò)連接的oracle服務(wù)器標(biāo)識。當(dāng)你配置oracle主機(jī)連接串的時(shí)候,就需要指定實(shí)例名。當(dāng)然8i以后版本的網(wǎng)絡(luò)組件要求使用的是服務(wù)名SERVICE_NAME。這個(gè)概念接下來說明。

三、數(shù)據(jù)庫域名
什么是數(shù)據(jù)庫域名?

在分布工數(shù)據(jù)庫系統(tǒng)中,不同版本的數(shù)據(jù)庫服務(wù)器之間,不論運(yùn)行的操作系統(tǒng)是unix或是windows,各服務(wù)器之間都可以通過數(shù)據(jù)庫鏈路進(jìn)行遠(yuǎn)程復(fù)制,數(shù)據(jù)庫域名主要用于oracle分布式環(huán)境中的復(fù)制。舉例說明如:
全國交通運(yùn)政系統(tǒng)的分布式數(shù)據(jù)庫,其中:
福建節(jié)點(diǎn): fj.jtyz
福建廈門節(jié)點(diǎn): xm.fj.jtyz
江西: jx.jtyz
江西上饒:sr.jx.jtyz
這就是數(shù)據(jù)庫域名。
數(shù)據(jù)庫域名在存在于參數(shù)文件中,他的參數(shù)是db_domain.

查詢數(shù)據(jù)庫域名
方法一:select value from v$parameter where name = 'db_domain';
方法二:show parameter domain
方法三:在參數(shù)文件中查詢。

全局?jǐn)?shù)據(jù)庫名
全局?jǐn)?shù)據(jù)庫名=數(shù)據(jù)庫名+數(shù)據(jù)庫域名,如前述福建節(jié)點(diǎn)的全局?jǐn)?shù)據(jù)庫名是:oradb.fj.jtyz

四、數(shù)據(jù)庫服務(wù)名
什么是數(shù)據(jù)庫服務(wù)名?
oracle9i版本開始,引入了一個(gè)新的參數(shù),即數(shù)據(jù)庫服務(wù)名。參數(shù)名是SERVICE_NAME。
如果數(shù)據(jù)庫有域名,則數(shù)據(jù)庫服務(wù)名就是全局?jǐn)?shù)據(jù)庫名;否則,數(shù)據(jù)庫服務(wù)名與數(shù)據(jù)庫名相同。

查詢數(shù)據(jù)庫服務(wù)名
方法一:select value from v$parameter where name = 'service_name';
方法二:show parameter service_name
方法三:在參數(shù)文件中查詢。

數(shù)據(jù)庫服務(wù)名與網(wǎng)絡(luò)連接
oracle8i開如的oracle網(wǎng)絡(luò)組件,數(shù)據(jù)庫與客戶端的連接主機(jī)串使用數(shù)據(jù)庫服務(wù)名。之前用的是ORACLE_SID,即數(shù)據(jù)庫實(shí)例名



SIMONE 2011-04-14 19:16 發(fā)表評論
]]>
ORA-01033: ORACLE 正在初始化或關(guān)閉http://www.aygfsteel.com/wangxinsh55/archive/2011/04/14/348310.htmlSIMONESIMONEThu, 14 Apr 2011 11:15:00 GMThttp://www.aygfsteel.com/wangxinsh55/archive/2011/04/14/348310.htmlhttp://www.aygfsteel.com/wangxinsh55/comments/348310.htmlhttp://www.aygfsteel.com/wangxinsh55/archive/2011/04/14/348310.html#Feedback0http://www.aygfsteel.com/wangxinsh55/comments/commentRss/348310.htmlhttp://www.aygfsteel.com/wangxinsh55/services/trackbacks/348310.htmlC:\Documents and Settings\Administrator>sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 7月 5 09:50:36 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

SQL> conn /as sysdba
已連接。
SQL> shutdown normal
ORA-01109: 數(shù)據(jù)庫未打開


已經(jīng)卸載數(shù)據(jù)庫。
ORACLE 例程已經(jīng)關(guān)閉。
SQL> startup mount
ORACLE 例程已經(jīng)啟動(dòng)。

Total System Global Area  289406976 bytes
Fixed Size                  1248576 bytes
Variable Size              83886784 bytes
Database Buffers          197132288 bytes
Redo Buffers                7139328 bytes
數(shù)據(jù)庫裝載完畢。
SQL> alter database open
  2  ;
alter database open
*
第 1 行出現(xiàn)錯(cuò)誤:
ORA-00600: 內(nèi)部錯(cuò)誤代碼, 參數(shù): [kcratr1_lastbwr], [], [], [], [], [], [], []


SQL> alter database noarchivelog;

數(shù)據(jù)庫已更改。

SQL> alter database open;
alter database open
*
第 1 行出現(xiàn)錯(cuò)誤:
ORA-00600: 內(nèi)部錯(cuò)誤代碼, 參數(shù): [kcratr1_lastbwr], [], [], [], [], [], [], []


SQL> shutdown immediate
ORA-01109: 數(shù)據(jù)庫未打開


已經(jīng)卸載數(shù)據(jù)庫。
ORACLE 例程已經(jīng)關(guān)閉。
SQL> startup mount
ORACLE 例程已經(jīng)啟動(dòng)。

Total System Global Area  289406976 bytes
Fixed Size                  1248576 bytes
Variable Size              83886784 bytes
Database Buffers          197132288 bytes
Redo Buffers                7139328 bytes
數(shù)據(jù)庫裝載完畢。
SQL> recover database;
完成介質(zhì)恢復(fù)。
SQL> alter database open;

數(shù)據(jù)庫已更改。

SQL> exit



SIMONE 2011-04-14 19:15 發(fā)表評論
]]>
Oracle如何附加數(shù)據(jù)庫http://www.aygfsteel.com/wangxinsh55/archive/2011/04/11/348072.htmlSIMONESIMONEMon, 11 Apr 2011 08:28:00 GMThttp://www.aygfsteel.com/wangxinsh55/archive/2011/04/11/348072.htmlhttp://www.aygfsteel.com/wangxinsh55/comments/348072.htmlhttp://www.aygfsteel.com/wangxinsh55/archive/2011/04/11/348072.html#Feedback0http://www.aygfsteel.com/wangxinsh55/comments/commentRss/348072.htmlhttp://www.aygfsteel.com/wangxinsh55/services/trackbacks/348072.html 目的:把數(shù)據(jù)庫里面的數(shù)據(jù)附加到本地?cái)?shù)據(jù)庫,從而可以查看數(shù)據(jù)庫中的數(shù)據(jù),取之應(yīng)用.
必須了解信息:
原數(shù)據(jù)庫全局?jǐn)?shù)據(jù)庫名稱:oracle,SID:ORCL.
原數(shù)據(jù)庫存放路徑:E:\oracle\oracdata\
本地?cái)?shù)據(jù)庫的安裝路徑是D:\oracle\

實(shí)現(xiàn)步驟:
一、把數(shù)據(jù)庫相關(guān)文件copy到本地E:\oracle\oracdata\下面,(確保文件不能缺少).

二、修改初始化文件init.ora,路徑在D:\oracle\admin\oracle\pfile\init.ora
查找control_files = ("D:\oracle\oradata\oracle\control01.ctl", "D:\oracle\oradata\oracle\control02.ctl", "D:\oracle\oradata\oracle\control03.ctl")

修改為:
control_files = ("E:\oracle\oradata\oracle\control01.ctl", "E:\oracle\oradata\oracle\control02.ctl", "E:\oracle\oradata\oracle\control03.ctl")

三、重新啟動(dòng)實(shí)例.觀察E:\oracle\oradata\oracle\下面的控制文件時(shí)間是否改變,如如果改變,說明控制文件已經(jīng)附加成功.

四、修改字符集.
打開注冊表查找: [HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0]修改
"NLS_LANG"="AMERICAN_AMERICA.US7ASCII",原來"NLS_LANG"="SIMPLIFIED CHINESE_CHINA.ZHS16GBK",
目的是為了避免中文在數(shù)據(jù)庫里面出現(xiàn)亂碼的現(xiàn)象.

五、啟動(dòng)svrmgrl.
Svrmgrl>shutdown immediate;
重新啟動(dòng)實(shí)例.

六、改變數(shù)據(jù)庫文件.
 引用內(nèi)容
SVRMGR> alter database rename file 'D:\oracle\oradata\oracle\INDX01.DBF' to 'E:\oracle\oradata\oracle\INDX01.DBF’;
SVRMGR> alter database rename file 'D:\oracle\oradata\oracle\DR01.DBF' to 'E:\oracle\oradata\oracle\ DR01.DBF’;

SVRMGR> alter database rename file 'D:\oracle\oradata\oracle\RBS01.DBF' to 'E:\oracle\oradata\oracle\ RBS01.DBF’;

SVRMGR> alter database rename file 'D:\oracle\oradata\oracle\SYSTEM01.DBF' to 'E:\oracle\oradata\oracle\ SYSTEM01.DBF’;

SVRMGR> alter database rename file 'D:\oracle\oradata\oracle\TEMP01.DBF' to 'E:\oracle\oradata\oracle\ TEMP01.DBF’;

SVRMGR> alter database rename file 'D:\oracle\oradata\oracle\USERS01.DBF' to 'E:\oracle\oradata\oracle\ USERS01.DBF’;

SVRMGR> alter database rename file 'D:\oracle\oradata\oracle\TOOLS01.DBF' to 'E:\oracle\oradata\oracle\ TOOLS01.DBF’;

SVRMGR> alter database rename file 'D:\oracle\oradata\oracle\REDO01.LOGF' to 'E:\oracle\oradata\oracle\ REDO01.LOG’;

SVRMGR> alter database rename file 'D:\oracle\oradata\oracle\REDO02.LOGF' to 'E:\oracle\oradata\oracle\ REDO02.LOG’;

SVRMGR> alter database rename file 'D:\oracle\oradata\oracle\REDO02.LOGF' to 'E:\oracle\oradata\oracle\ REDO02.LOG’;


七、重新啟動(dòng)數(shù)據(jù)庫實(shí)例.
八、修改密碼文件.pwdorcl.ora(文件名根據(jù)SID名稱改變),路徑D:\oracle\ora81\database.
一般先備份一下密碼文件.然后把改文件刪除.
然后用orapwd命令重新生成密碼文件.
C:\>orapwd file= D:\oracle\ora81\database\pwdorcl.ora password=oracle entries=5;
說明:file是生成的密碼文件的完整的路徑名稱.password是新密碼.

九、重新啟動(dòng)數(shù)據(jù)庫.檢查是否可以正常運(yùn)行,如果運(yùn)行失敗,檢查步驟是否全部符合.

SIMONE 2011-04-11 16:28 發(fā)表評論
]]>
Oracle的幾種啟動(dòng)方式 http://www.aygfsteel.com/wangxinsh55/archive/2011/04/07/347812.htmlSIMONESIMONEThu, 07 Apr 2011 09:08:00 GMThttp://www.aygfsteel.com/wangxinsh55/archive/2011/04/07/347812.htmlhttp://www.aygfsteel.com/wangxinsh55/comments/347812.htmlhttp://www.aygfsteel.com/wangxinsh55/archive/2011/04/07/347812.html#Feedback0http://www.aygfsteel.com/wangxinsh55/comments/commentRss/347812.htmlhttp://www.aygfsteel.com/wangxinsh55/services/trackbacks/347812.html
1、startup nomount

  非安裝啟動(dòng),這種方式啟動(dòng)下可執(zhí)行:重建控制文件、重建數(shù)據(jù)庫。

  讀取init.ora文件,啟動(dòng)instance,即啟動(dòng)SGA和后臺進(jìn)程,這種啟動(dòng)只需要init.ora文件。

2、startup mount dbname

  安裝啟動(dòng),這種方式啟動(dòng)下可執(zhí)行:數(shù)據(jù)庫日志歸檔、數(shù)據(jù)庫介質(zhì)恢復(fù)、使數(shù)據(jù)文件聯(lián)機(jī)或脫機(jī)、重新定位數(shù)據(jù)文件、重做日志文件。

  執(zhí)行“nomount”,然后打開控制文件,確認(rèn)數(shù)據(jù)文件和聯(lián)機(jī)日志文件的位置,但此時(shí)不對數(shù)據(jù)文件和日志文件進(jìn)行校驗(yàn)檢查。

3、startup open dbname

  先執(zhí)行“nomount”,然后執(zhí)行“mount”,再打開包括Redo log文件在內(nèi)的所有數(shù)據(jù)庫文件,這種方式下可訪問數(shù)據(jù)庫中的數(shù)據(jù)。

4、startup,等于以下三個(gè)命令

  startup nomount

  alter database mount

  alter database open

SIMONE 2011-04-07 17:08 發(fā)表評論
]]>
ALTER DATABASE 與 ALTER TABLESPACE OFFLINE的區(qū)別 http://www.aygfsteel.com/wangxinsh55/archive/2011/04/07/347792.htmlSIMONESIMONEThu, 07 Apr 2011 07:35:00 GMThttp://www.aygfsteel.com/wangxinsh55/archive/2011/04/07/347792.htmlhttp://www.aygfsteel.com/wangxinsh55/comments/347792.htmlhttp://www.aygfsteel.com/wangxinsh55/archive/2011/04/07/347792.html#Feedback0http://www.aygfsteel.com/wangxinsh55/comments/commentRss/347792.htmlhttp://www.aygfsteel.com/wangxinsh55/services/trackbacks/347792.html閱讀全文

SIMONE 2011-04-07 15:35 發(fā)表評論
]]>
Oracle 移動(dòng)數(shù)據(jù)文件的操作方法 http://www.aygfsteel.com/wangxinsh55/archive/2011/04/07/347791.htmlSIMONESIMONEThu, 07 Apr 2011 07:34:00 GMThttp://www.aygfsteel.com/wangxinsh55/archive/2011/04/07/347791.htmlhttp://www.aygfsteel.com/wangxinsh55/comments/347791.htmlhttp://www.aygfsteel.com/wangxinsh55/archive/2011/04/07/347791.html#Feedback0http://www.aygfsteel.com/wangxinsh55/comments/commentRss/347791.htmlhttp://www.aygfsteel.com/wangxinsh55/services/trackbacks/347791.html

將表空間和數(shù)據(jù)文件從一個(gè)位置移動(dòng)到另一個(gè)位置的操作方法

一. OFFLINE

OFFLINE 分為ALTER DATABASE 與 ALTER TABLESPACE OFFLINE

他們的區(qū)別參看bloghttp://blog.csdn.net/tianlesoftware/archive/2009/11/29/4898800.aspx

按數(shù)據(jù)文件來:

1.先將相應(yīng)的數(shù)據(jù)文件 offline  

ALTER DATABASE DATAFILE 'D:\ORACLE\ORADATA\DBA\TEST01.DBF' OFFLINE;
2.把數(shù)據(jù)文件 copy 到新位置
3. alter database rename file 'D:\ORACLE\ORADATA\DBA\TEST01.DBF' to 'D:\TEST01.DBF';

4. 介質(zhì)恢復(fù)(offline 數(shù)據(jù)文件必須要介質(zhì)恢復(fù))

recover datafile 'D:\TEST01.DBF'
5. 將相應(yīng)的數(shù)據(jù)文件 online 

SQL>ALTER DATABASE DATAFILE 'D:\TEST01.DBF' ONLINE;

按表空間來:

1.先將相應(yīng)的表空間 offline  

SQL>alter tablespace test offline;  

2.把數(shù)據(jù)文件 copy 到新位置
3. alter tablespace TEST  rename datafile 'D:\TEST01.DBF' to 'D:\ORACLE\ORADATA\DBA\TEST01.DBF'

4. 將表空間 online 

SQL>alter tablespace test online;   

 

二. Shutdown 數(shù)據(jù)庫

1. 關(guān)閉數(shù)據(jù)庫 

C:>set ORACLE_SID=DBA

C:>sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 11月 29 11:14:02 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

SQL> conn sys/admin as sysdba

已連接。

SQL> shutdown immediate

數(shù)據(jù)庫已經(jīng)關(guān)閉。

已經(jīng)卸載數(shù)據(jù)庫。

ORACLE 例程已經(jīng)關(guān)閉。

SQL>


2. 把數(shù)據(jù)文件 copy 到新位置

3. rename datafile

SQL> startup mount

ORACLE 例程已經(jīng)啟動(dòng)。

Total System Global Area  289406976 bytes

Fixed Size                  1248576 bytes

Variable Size              71303872 bytes

Database Buffers          209715200 bytes

Redo Buffers                7139328 bytes

數(shù)據(jù)庫裝載完畢。

SQL> alter database rename file 'D:\ORACLE\ORADATA\DBA\TEST01.DBF' to 'D:\TEST01

.DBF';

數(shù)據(jù)庫已更改。

SQL> alter database open;

數(shù)據(jù)庫已更改。

SQL> select file#,name,status from v$datafile;

 FILE# NAME                                STATUS

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

   1  D:\ORACLE\ORADATA\DBA\SYSTEM01  SYSTEM

   2  D:\ORACLE\ORADATA\DBA\UNDOTBS0  ONLINE

   3  D:\ORACLE\ORADATA\DBA\SYSAUX01  ONLINE

   4  D:\ORACLE\ORADATA\DBA\USERS01.   ONLINE

   5  D:\TEST01.DBF                              ONLINE



SIMONE 2011-04-07 15:34 發(fā)表評論
]]>
oracle數(shù)據(jù)庫備份刪除操作http://www.aygfsteel.com/wangxinsh55/archive/2010/11/05/337300.htmlSIMONESIMONEFri, 05 Nov 2010 03:08:00 GMThttp://www.aygfsteel.com/wangxinsh55/archive/2010/11/05/337300.htmlhttp://www.aygfsteel.com/wangxinsh55/comments/337300.htmlhttp://www.aygfsteel.com/wangxinsh55/archive/2010/11/05/337300.html#Feedback0http://www.aygfsteel.com/wangxinsh55/comments/commentRss/337300.htmlhttp://www.aygfsteel.com/wangxinsh55/services/trackbacks/337300.html 

1、刪除多余的歸檔日志

在ORACLE10G中,默認(rèn)的歸檔路徑為$ORACLE_BASE/flash_recovery_area。對于這個(gè)路徑,ORACLE有一個(gè)限制,就是默認(rèn)只能有2G的空間給歸檔日志使用,可以使用下面兩個(gè)SQL語句去查看它的限制:
1. select * from v$recovery_file_dest;
2. show parameter db_recovery_file_dest(這個(gè)更友好直觀一些)
當(dāng)歸檔日志數(shù)量大于2G時(shí),那么就會(huì)由于沒有更多的空間去容納更多的歸檔日志會(huì)報(bào)無法繼續(xù)歸檔的錯(cuò)誤。
如:“RA-19809: limit exceeded for recovery files
ORA-19804: cannot reclaim 10017792 bytes disk space from 2147483648 limit
ARC0: Error 19809 Creating archive log file to '/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_04_30/o1_mf_1_220_0_.arc' ”這時(shí)我們可以修改它的默認(rèn)限制,比如說將它增加到5G或更多,也可以將歸檔路徑重新置到別的路徑,就不會(huì)有這個(gè)限制了。

  更改限制語句如下:
alter system set db_recovery_file_dest_size=5368709102  (這里為5G 5x1024x1024x1024=5G)
alter system set db_recovery_file_dest_size=10737418240



進(jìn)入

rman target username/password@database

 

執(zhí)行下邊的交叉校驗(yàn)

crosscheck archivelog all;

此時(shí)可能會(huì)提示校驗(yàn)失敗,類似下邊的提示:

RMAN> crosscheck archivelog all;

釋放的通道: ORA_DISK_1

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=14 devtype=DISK

對歸檔日志的驗(yàn)證失敗

…………….

這時(shí),需要執(zhí)行exit退出rman

在命令提示符窗口下執(zhí)行下邊的字符集設(shè)置

C:>set nls_lang=american_america.zhs16gbk

然后再進(jìn)入rman  ,再執(zhí)行crosscheck archivelog all;一般不會(huì)再出現(xiàn)這樣的問題了。

 

在命令窗口里面執(zhí)行

DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';

說明

SYSDATA-7,表明當(dāng)前的系統(tǒng)時(shí)間7天前,before關(guān)鍵字表示在7天前的歸檔日志,如果使用了閃回功能,也會(huì)刪除閃回的數(shù)據(jù)。

同樣道理,也可以刪除從7天前到現(xiàn)在的全部日志,不過這個(gè)命令要考慮清楚,做完這個(gè)刪除,最好馬上進(jìn)行全備份數(shù)據(jù)庫

DELETE ARCHIVELOG FROM TIME 'SYSDATE-7';

 

UNIX/LINUX下也可以通過FIND找到7天前的歸檔數(shù)據(jù),使用EXEC子操作刪除

find /oraarchive -xdev -mtime +7 -name "*.dbf" -exec rm -f {} ;

這樣做仍然會(huì)在RMAN里留下未管理的歸檔文件

仍需要在RMAN里執(zhí)行下面2條命令

crosscheck archivelog all;

delete expired archivelog all;

所以還不如上面的方法好用,不過用FIND的好處就是,可以在條件上,和EXEC子項(xiàng)上做很多操作,實(shí)現(xiàn)更復(fù)雜的功能

 

2report obsoletedelete obsolete刪除過期備份命令

使用report obsolete命令報(bào)告過期備份

RMAN> report obsolete;

RMAN retention policy will be applied to the command

RMAN retention policy is set to redundancy 1

Report of obsolete backups and copies

Type                 Key    Completion Time    Filename/Handle

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

Backup Set           125    01-NOV-04

Backup Piece       125    01-NOV-04          /data1/oracle/orabak/full_1_541045804

Backup Set           131    04-NOV-04

Backup Piece       131    04-NOV-04          /data1/oracle/orabak/full_AVATAR2_20041104_131

....

 

使用delete obsolete命令刪除過期備份:

RMAN> delete obsolete;

RMAN retention policy will be applied to the command

RMAN retention policy is set to redundancy 1

using channel ORA_DISK_1

Deleting the following obsolete backups and copies:

Type                 Key    Completion Time    Filename/Handle

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

Backup Set           125    01-NOV-04

Backup Piece       125    01-NOV-04          /data1/oracle/orabak/full_1_541045804

....

Archive Log          2704   17-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2716.dbf

Archive Log          2703   17-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2715.dbf

Archive Log          2702   17-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2714.dbf

Do you really want to delete the above objects (enter YES or NO)? yes

deleted backup piece

backup piece handle=/data1/oracle/orabak/full_AVATAR2_20041206_173 recid=173 stamp=544156241

.....

 

注:在執(zhí)行刪除的時(shí)候,可能會(huì)提示下邊的報(bào)錯(cuò)信息:

ORA-19554: 配置設(shè)備時(shí)出錯(cuò), 設(shè)備類型: SBT_TAPE, 設(shè)備名稱:

ORA-27211: 未能加載介質(zhì)管理庫

 

解決方法,運(yùn)行下邊的命令:

RMAN> allocate channel for maintenance type disk;

RMAN> crosscheck archivelog all;

RMAN> delete obsolete;

 

 

3Oracle RMANshow,list,crosscheck,delete

 

Oracle RMANshow,list,crosscheck,delete 命令整理

1SHOW命令:

   顯示rman配置: RMAN> show all;

2REPORT命令:

   2.1RMAN> report schema                        報(bào)告目標(biāo)數(shù)據(jù)庫的物理結(jié)構(gòu);

   2.2RMAN>report need backup days=3;            報(bào)告最近3天沒有被備份的數(shù)據(jù)文件;

   2.3RMAN> report need backup days 3 tablespace users;   USERS表空間上3天未備份的數(shù)據(jù)文件;

   2.4RMAN> report need backup incremental 3;    報(bào)告恢復(fù)數(shù)據(jù)文件需要的增量備份個(gè)數(shù)超過3次的數(shù)據(jù)文件;

   2.5RMAN> report need backup redundancy 2 database;           報(bào)告?zhèn)浞菸募陀?/span>2份的所有數(shù)據(jù)文件;

        RMAN>report need backup redundancy=2;

   2.6RMAN> report need backup recovery window of 6 days;    報(bào)告文件報(bào)表的恢復(fù)需要超過6天的歸檔日志的數(shù)據(jù)文件;

   2.7RMAN> report unrecoverable;      報(bào)告數(shù)據(jù)庫所有不可恢復(fù)的數(shù)據(jù)文件;

   2.8RMAN> report obsolete redunndancy 2; 報(bào)告?zhèn)浞荽螖?shù)超過2次的陳舊備份;

   2.9RMAN>report obsolete;          報(bào)告多余的備份;

3LIST命令:列出備份信息

   3.1、列出數(shù)據(jù)文件備份集

        RMAN>list backup         列出詳細(xì)備份;

        RMAN>list expired backup     列出過期備份;

        RMAN> list backup of database;     列出所有數(shù)據(jù)文件的備份集;

        RMAN> list backup of tablespace user01; 列出特定表空間的所有數(shù)據(jù)文件備份集;

   3.2RMAN> list backup of controlfile     列出控制文件備份集;

   3.3RMAN> list backup of archivelog all      列出歸檔日志備份集詳細(xì)信息;

        RMAN>list archivelog all;      列出歸檔日志備份集簡要信息

   3.4RMAN> list backup of spfile              列出SPFILE備份集;

   3.5RMAN> list copy of datafile 5        列出數(shù)據(jù)文件映像副本;

   3.6RMAN> list copy of controlfile           列出控制文件映像副本;

   3.7RMAN> list copy of archivelog all    列出歸檔日志映像副本;

   3.8RMAN> list incarnation of database       列出對應(yīng)物/列出數(shù)據(jù)庫副本;

   3.9RMAN>list backup summary;    概述可用的備份;

                B表示backup

                F表示FULL

                A表示archive log

                0 1表示incremental backup

                S說明備份狀態(tài)(A AVAILABLE   X EXPIRED )

    

   3.10RMAN>list backup by file    按備份類型列出備份;

                    按照數(shù)據(jù)文件備份,歸檔日志備份,控制文件備份,服務(wù)器參數(shù)文件備份 列出

4CROSSCHECK命令:校驗(yàn)備份信息

   4.1RMAN> crosscheck backup             核對所有備份集;  

   4.2RMAN> crosscheck backup of database      核對所有數(shù)據(jù)文件的備份集;  

   4.3RMAN> crosscheck backup of tablespace users      核對特定表空間的備份集;  

   4.4RMAN> crosscheck backup of datafile 4    核對特定數(shù)據(jù)文件的備份集;  

   4.5RMAN> crosscheck backup of controlfile   核對控制文件的備份集;  

   4.6RMAN> crosscheck backup of spfile    核對SPFILE的備份集;  

   4.7RMAN> crosscheck backup of archivelog sequence 3 核對歸檔日志的備份集;  

   4.8RMAN> crosscheck copy               核對所有映像副本;  

   4.9RMAN> crosscheck copy of database       核對所有數(shù)據(jù)文件的映像副本;  

   4.10RMAN> crosscheck copy of tablespace users       核對特定表空間的映像副本;  

   4.11RMAN> crosscheck copy of datafile 6        核對特定數(shù)據(jù)文件的映像副本;  

   4.12RMAN> crosscheck copy of archivelog sequence 4  核對歸檔日志的映像副本;  

   4.13RMAN> crosscheck copy of controlfile       核對控制文件的映像副本; 

   4.14RMAN> crosscheck backup tag='SAT_BACKUP';

   4.15RMAN> crosscheck backup completed after 'sysdate - 2'

   4.16RMAN> crosscheck backup completed between 'sysdate - 5' and 'sysdate -2 '

   4.17RMAN> crosscheck backup device type sBT;

   4.18RMAN> crosscheck archivelog all;

   4.19RMAN> crosscheck archivelog like '%ARC00012.001'

   4.20RMAN> crosscheck archivelog from sequence 12;

   4.21RMAN> crosscheck archivelog until sequence 522;

5DELETE:刪除備份

   5.1RMAN> delete obsolete;      刪除陳舊備份;

   5.2RMAN> delete expired backup; 刪除EXPIRED備份    

   5.3RMAN> delete expired copy;   刪除EXPIRED副本;

   5.4RMAN> delete backupset 19;   刪除特定備份集;

   5.5RMAN> delete backuppiece ''d:\backup\DEMO_19.bak''   刪除特定備份片;

   5.6RMAN> delete backup      刪除所有備份集;

   5.7RMAN> delete datafilecopy ''d:\backup\DEMO_19.bak''  刪除特定映像副本;

   5.8RMAN> delete copy   刪除所有映像副本;

   5.9RMAN> delete archivelog all delete input;

        RMAN> delete backupset 22 format = ''d:\backup\%u.bak'' delete input

                       在備份后刪除輸入對象;

   5.10RMAN> delete backupset id;

 

 

4em控制臺對備份的操作

使用sys用戶的sysdba權(quán)限進(jìn)入em控制臺

在“維護(hù)”模塊下,點(diǎn)擊進(jìn)入到“管理當(dāng)前備份”操作選項(xiàng)。

 在“管理當(dāng)前備份”選項(xiàng)中可以列出所有的備份集

如果要?jiǎng)h除備份,可以在下邊的列表中選中要?jiǎng)h除的備份集,執(zhí)行“刪除”命令,這時(shí)會(huì)有一個(gè)確認(rèn)提示的頁面:

點(diǎn)擊“是”按鈕,進(jìn)行刪除操作。如果提示操作“刪除”失敗,可以將上一步要執(zhí)行的命令在命令提示符下使用rman命令來執(zhí)行。

 

5、小結(jié)

像歸檔日志之類的備份,備份的文件夾是在一個(gè)叫flash_recovery_area的目錄下邊。

1、歸檔日志備份在ARCHIVELOG 這個(gè)文件夾下邊,上邊對歸檔日志的操作基本上是對這個(gè)文件夾下的文件進(jìn)行操作。

2obsolete刪除操作基本上是對AUTOBACKUP這個(gè)文件夾下的文件進(jìn)行操作。(不是十分的確定)

3delete backup操作基本上是對BACKUPSET文件夾和DATAFILE文件夾的內(nèi)容進(jìn)行操作的。

4、在em管理后臺,最下邊有一個(gè)“相關(guān)鏈接”模塊,下有“作業(yè)”選項(xiàng)鏈接,可以看到所有數(shù)據(jù)庫備份操作歷史作業(yè)記錄,在此可以對相應(yīng)的備份作業(yè)進(jìn)行修改操作。

另外如果要添加備份操作作業(yè)時(shí),需要在“維護(hù)”模塊下找到“調(diào)試備份”鏈接,推薦使用“Oracle 建議的備份”來添加備份操作作業(yè)。


Linux下查看文件夾大小的命令du -sh docname

 



SIMONE 2010-11-05 11:08 發(fā)表評論
]]>
修改計(jì)算機(jī)名稱導(dǎo)致Oracle的em不能用http://www.aygfsteel.com/wangxinsh55/archive/2010/11/04/337225.htmlSIMONESIMONEThu, 04 Nov 2010 06:19:00 GMThttp://www.aygfsteel.com/wangxinsh55/archive/2010/11/04/337225.htmlhttp://www.aygfsteel.com/wangxinsh55/comments/337225.htmlhttp://www.aygfsteel.com/wangxinsh55/archive/2010/11/04/337225.html#Feedback0http://www.aygfsteel.com/wangxinsh55/comments/commentRss/337225.htmlhttp://www.aygfsteel.com/wangxinsh55/services/trackbacks/337225.html 




我是因?yàn)樾薷挠?jì)算機(jī)名稱導(dǎo)致Oracle不能用,進(jìn)行了以下的配置,之后就好了。希望對你有用




Oracle 安裝好后 hostname是不能亂改的.

How to change the Hostname of the Windows when the10Gwith ASM being used  
Solution  
When changing the Hostname, 4 files would be affected.  
1) Tnsnames.ora  
2) listener.ora  
3) Oraclecsservice  
4) Enterprise Manager 





1、D:\oracle\product\10.2.0\db_1目錄下的 原計(jì)算機(jī)名.orcl------>修改后的計(jì)算機(jī)名.orcl

2、D:\oracle\product\10.2.0\db_1\oc4j\j2ee目錄下的 OC4J_DBConsole_原計(jì)算機(jī)名_orcl----->OC4J_DBConsole_修改后的計(jì)算機(jī)名_orcl

3、D:\oracle\product\10.2.0\db_1\NETWORK\ADMIN目錄下的 listener.ora、sqlnet.ora、tnsnames.ora文件中的local名稱

4、配置em


/*重新配置dbcosole
emca -repos drop
emca -repos create
emca -config dbcontrol db
emctl start dbconsole
*/   基本上是刪不干凈的,所以使用下面的方法

當(dāng)安裝oracle的機(jī)器變了機(jī)器名,或者變了ip地址。那么原來的dbconsole就起不來了。當(dāng)在dos下運(yùn)行:emctl start dbconsole 的時(shí)候報(bào)錯(cuò)。
解決辦法
 
同樣適用于windows,unix,linux其他原因?qū)е翫BCONSOLE無法正常啟動(dòng)。

1,修改DBSNMP密碼:
重新配置DBCONSOLE,需要輸入DBSNMP密碼,但任何密碼都會(huì)顯示錯(cuò)誤,需要預(yù)先修改。
sql>alter user dbsnmp identified by xxx;

2,刪除早期DBCONSOLE創(chuàng)建的用戶:

sql>drop role MGMT_USER;
sql>drop user MGMT_VIEW cascade;
sql>drop user sysman cascade;

3,刪除早期DBCONSOLE創(chuàng)建的對象:
sql>drop PUBLIC SYNONYM MGMT_TARGET_BLACKOUTS;
sql>drop public synonym SETEMVIEWUSERCONTEXT;
4.C:Documents and SettingsAdministrator>emca -config dbcontrol db -repos recreat
e -HOST wanglibo
 
具體步驟如下:
Microsoft Windows XP [版本 5.1.2600]
(C) 版權(quán)所有 1985-2001 Microsoft Corp.
C:Documents and SettingsAdministrator>emca -config dbcontrol db -repos recreat
e -HOST wanglibo
EMCA 開始于 2009-11-28 12:21:41
EM Configuration Assistant 10.2.0.1.0 正式版
版權(quán)所有 (c) 2003, 2005, Oracle。保留所有權(quán)利。
輸入以下信息:
數(shù)據(jù)庫 SID: breezyOr
監(jiān)聽程序端口號: 1521
SYS 用戶的口令:
DBSNMP 用戶的口令:
SYSMAN 用戶的口令:
通知的電子郵件地址 (可選):
通知的發(fā)件 (SMTP) 服務(wù)器 (可選):
-----------------------------------------------------------------
已指定以下設(shè)置
數(shù)據(jù)庫 ORACLE_HOME . D:oracleproduct10.2.0db_2
數(shù)據(jù)庫主機(jī)名 . WANGLIBO
監(jiān)聽程序端口號 . 1521
數(shù)據(jù)庫 SID . breezyOr
通知的電子郵件地址 
通知的發(fā)件 (SMTP) 服務(wù)器 
-----------------------------------------------------------------
是否繼續(xù)? [yes(Y)/no(N)]: y
2009-11-28 12:26:21 oracle.sysman.emcp.EMConfig perform
信息: 正在將此操作記錄到 D:oracleproduct10.2.0db_2cfgtoollogsemcabreezyOr
acleemca_2009-11-28_12-21-41-下午.log。
2009-11-28 12:28:00 oracle.sysman.emcp.EMReposConfig dropRepository
信息: 正在刪除 EM 資料檔案庫 (此操作可能需要一段時(shí)間)
2009-11-28 12:28:02 oracle.sysman.emcp.EMReposConfig invoke
信息: 已成功刪除資料檔案庫
2009-11-28 12:28:02 oracle.sysman.emcp.EMReposConfig createRepository
信息: 正在創(chuàng)建 EM 資料檔案庫 (此操作可能需要一段時(shí)間)
2009-11-28 12:29:59 oracle.sysman.emcp.EMReposConfig invoke
信息: 已成功創(chuàng)建資料檔案庫
2009-11-28 12:32:40 oracle.sysman.emcp.util.DBControlUtil startOMS
信息: 正在啟動(dòng) Database Control (此操作可能需要一段時(shí)間)
2009-11-28 12:34:40 oracle.sysman.emcp.EMDBPostConfig performConfiguration
信息: 已成功啟動(dòng) Database Control
2009-11-28 12:35:08 oracle.sysman.emcp.EMDBPostConfig performConfiguration
警告: 無法創(chuàng)建 Database Control 快捷方式
2009-11-28 12:35:22 oracle.sysman.emcp.EMDBPostConfig performConfiguration
信息: >>>>>>>>>>> Database Control URL 為 http://WANGLIBO:1158/em 
<<<<<<<<<<<
已成功完成 Enterprise 
Manager 的配置
EMCA 結(jié)束于 2009-11-28 12:35:22
C:Documents and SettingsAdministrator
>





SIMONE 2010-11-04 14:19 發(fā)表評論
]]>
oracle數(shù)據(jù)庫遷移http://www.aygfsteel.com/wangxinsh55/archive/2010/11/04/337214.htmlSIMONESIMONEThu, 04 Nov 2010 04:09:00 GMThttp://www.aygfsteel.com/wangxinsh55/archive/2010/11/04/337214.htmlhttp://www.aygfsteel.com/wangxinsh55/comments/337214.htmlhttp://www.aygfsteel.com/wangxinsh55/archive/2010/11/04/337214.html#Feedback0http://www.aygfsteel.com/wangxinsh55/comments/commentRss/337214.htmlhttp://www.aygfsteel.com/wangxinsh55/services/trackbacks/337214.html之前做了一個(gè)項(xiàng)目,使用的是oracle數(shù)據(jù)庫,數(shù)據(jù)庫是建在本地測試服務(wù)器上的;現(xiàn)需要將整個(gè)數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)放到正式服務(wù)器上,現(xiàn)將整個(gè)移動(dòng)過程做一下記錄,以做備用。
1、首先需要在正式數(shù)據(jù)庫上創(chuàng)建和測試數(shù)據(jù)庫相同名稱的庫名CSSP,創(chuàng)建之后可以到$ORACLE_HOME$\product\10.2.0\db_1\network\admin\tnsnames.ora這個(gè)文件下看到CSSP庫的端口號。
2、打開瀏覽器進(jìn)入http://localhost:1158/em 此處的端口可以到$ORACLE_HOME$\product\10.2.0\db_1\install\portlist.ini 下邊查看。使用sys用戶的超級管理員權(quán)限進(jìn)入em管理,在“管理”模塊下的“表空間”處創(chuàng)建測試服務(wù)器上相同的表空間名稱,這里創(chuàng)建了 CSSPSPACE。
3、在客戶端機(jī)器上使用oracle的客戶端工具“Net Configuration Assistant”創(chuàng)建CSSP連接。
4、安裝PL/SQL工具。
5、通過PL/SQL工具使用sys用戶的sysdba權(quán)限連接CSSP數(shù)據(jù)庫,找到user模塊,創(chuàng)建用戶duxiu,并給予connect和resource權(quán)限,退出PL/SQL程序。
6、使用PL/SQL連接測試服務(wù)器的數(shù)據(jù)庫,在“Tools”-》“export user objects ”選項(xiàng)中,導(dǎo)出所有創(chuàng)建表,索引,主鍵,自增長序列,函數(shù),存儲過程,作業(yè)等sql命令。
7、使用PL/SQL連接正式數(shù)據(jù)庫,在“file”-》“open”-》“command file”中將上一步導(dǎo)出的腳本導(dǎo)入,并執(zhí)行;這樣數(shù)據(jù)庫的結(jié)構(gòu)都已創(chuàng)建成功了。接下來需要導(dǎo)一些數(shù)據(jù)進(jìn)來。
8、使用PL/SQL連接測試服務(wù)器的數(shù)據(jù)庫,在“Tools”-》“export tables”下,選中要導(dǎo)出數(shù)據(jù)的表,下邊導(dǎo)出選項(xiàng)中選擇“PL/SQL Developer”(“Oracle Export”導(dǎo)出選項(xiàng)試過不知道為什么導(dǎo)出之后,無法將導(dǎo)出的數(shù)據(jù)再導(dǎo)入進(jìn)去,也沒報(bào)任何錯(cuò)誤提示;“SQL Inserts”只是生了插入的sql語句,導(dǎo)出效率等操作太差不推薦使用)。“compress file”,“include storage”,“include privileges”也都選中,在“Output file”中選中要導(dǎo)出的文件,點(diǎn)擊“Export”進(jìn)行導(dǎo)出。
9、使用PL/SQL連接正式服務(wù)器的數(shù)據(jù)庫,在“Tools”-》“Import tables”選項(xiàng)中找到“PL/SQL Developer”選項(xiàng),在這里只用勾選“Disable triggers”和“Disable foreign key constraints”,在“Import file”選項(xiàng)中找到剛才導(dǎo)出的數(shù)據(jù)文件,點(diǎn)擊“Import”按鈕將數(shù)據(jù)導(dǎo)入。

到此整個(gè)遷移過程已完成。


SIMONE 2010-11-04 12:09 發(fā)表評論
]]>
查看oracle 用戶執(zhí)行的sql語句歷史記錄http://www.aygfsteel.com/wangxinsh55/archive/2010/10/18/335420.htmlSIMONESIMONEMon, 18 Oct 2010 02:50:00 GMThttp://www.aygfsteel.com/wangxinsh55/archive/2010/10/18/335420.htmlhttp://www.aygfsteel.com/wangxinsh55/comments/335420.htmlhttp://www.aygfsteel.com/wangxinsh55/archive/2010/10/18/335420.html#Feedback0http://www.aygfsteel.com/wangxinsh55/comments/commentRss/335420.htmlhttp://www.aygfsteel.com/wangxinsh55/services/trackbacks/335420.html

select * from v$sqlarea t order by t.LAST_ACTIVE_TIME desc

注意 :執(zhí)行此語句等等一些相關(guān)的語句 必須具有DBA 的權(quán)限 雖然這條語句很普通 但是需要的時(shí)候很管用 能夠及時(shí)查出一個(gè)人執(zhí)行sql語句情況

-------oracle 查看已經(jīng)執(zhí)行過的sql 這些是存在共享池中的 --------->
select * from v$sqlarea t order by t.LAST_ACTIVE_TIME desc

-----------查看oracle會(huì)話----------------------------》

select * from v$session   t order by t.LAST_ACTIVE_TIME desc

-------------查看oracle的權(quán)限角色------------------------------>
select   *   from   dba_role_privs;    授予用戶和其他角色的角色  
select   *   from   dba_sys_privs;     授予用戶和其他角色的系統(tǒng)權(quán)限  
select   *   from   dba_tab_privs;     數(shù)據(jù)庫中對象的所有授權(quán)
select * from user_role_privs;         查看當(dāng)前用戶的角色



SIMONE 2010-10-18 10:50 發(fā)表評論
]]>
Oracle數(shù)據(jù)庫熱備份文件過大收縮方法http://www.aygfsteel.com/wangxinsh55/archive/2010/04/21/319007.htmlSIMONESIMONEWed, 21 Apr 2010 09:36:00 GMThttp://www.aygfsteel.com/wangxinsh55/archive/2010/04/21/319007.htmlhttp://www.aygfsteel.com/wangxinsh55/comments/319007.htmlhttp://www.aygfsteel.com/wangxinsh55/archive/2010/04/21/319007.html#Feedback0http://www.aygfsteel.com/wangxinsh55/comments/commentRss/319007.htmlhttp://www.aygfsteel.com/wangxinsh55/services/trackbacks/319007.html

http://hi.baidu.com/taojia/blog/item/7d5656b5af5165c637d3ca55.html

ORA-00257: archiver error. Connect internal only, until freed.

Oracle 10g數(shù)據(jù)庫物理空間管理方式與以前Oracle發(fā)生了變化,對歸檔日志所在的Flash_Recovery_Area空間進(jìn)行了另外限制

Flash_Recovery_Area空間缺省安裝時(shí)比較小,只有2GB,容易用完

解決過程

  根據(jù)數(shù)據(jù)庫目前可用存儲空間情況、FLASH_RECOVERY_AREA空間為2GB的實(shí)際情況,把FLASH_RECOVERY_AREA的空間修改為20GB()

SQL> alter system set DB_RECOVERY_FILE_DEST_SIZE=20g;

系統(tǒng)已更改。

(其實(shí)問題的本質(zhì)是歸檔日志的使用已經(jīng)達(dá)到了spfile等啟動(dòng)參數(shù)文件中指定的最大值。oracle 10g中歸檔日志默認(rèn)的存放地是閃回目錄,即%ORACLE_BASE%/flash_recovery_area的相應(yīng)實(shí)例名下面,這個(gè)位置的大小在參數(shù)文件中有個(gè)限制,解決空間不足的問題可以通過兩種方式來實(shí)現(xiàn),一個(gè)修改這個(gè)大小限制,還有一個(gè)就是修改歸檔日志存放位置。)

如果不要這些archivelog的話,可以刪除一些

rman>DELETE NOPROMPT ARCHIVELOG UNTIL TIME 'SYSDATE-3'; 直接運(yùn)行這條 這樣會(huì)只保留三天的歸檔

sql> select * from v$flash_recovery_area_usage;

FILE_TYPE                PERCENT_SPACE_USED    PERCENT_SPACE_RECLAIMABLE   NUMBER_OF_FILES

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

CONTROLFILE                    0                                                           0                                        0

ONLINELOG                        0                                                          0                                        0

ARCHIVELOG                 6.11                                                          0                                        3

BACKUPPIECE                   0                                                          0                                        0

IMAGECOPY                     0                                                         0                                         0

FLASHBACKLOG                0                                                        0                                         0

還可參考:http://www.eygle.com/archives/2004/12/rman_crosscheck.html

Rman Crosscheck刪除失效歸檔

當(dāng)手工刪除了歸檔日志以后,Rman備份會(huì)檢測到日志缺失,從而無法進(jìn)一步繼續(xù)執(zhí)行。

所以此時(shí)需要手工執(zhí)行crosscheck過程,之后Rman備份可以恢復(fù)正常。

1.Crosscheck日志

    $ rman target /

    Recovery Manager: Release 9.2.0.4.0 - 64bit Production

    Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.

    connected to target database: AVATAR2 (DBID=2480694409)

    RMAN> crosscheck archivelog all;

    using target database controlfile instead of recovery catalog

    allocated channel: ORA_DISK_1

    channel ORA_DISK_1: sid=25 devtype=DISK

    validation failed for archived log

    archive log filename=/opt/oracle/oradata/avatar2/archive/1_2714.dbf recid=2702 stamp=545107659

    validation failed for archived log

   archive log filename=/opt/oracle/oradata/avatar2/archive/1_2715.dbf recid=2703 stamp=545108268

    ...........

    validation failed for archived log

    archive log filename=/opt/oracle/oradata/avatar2/archive/1_2985.dbf recid=2973 stamp=545399327

    validation succeeded for archived log

    archive log filename=/opt/oracle/oradata/avatar2/archive/1_2986.dbf recid=2974 stamp=545400820

    validation succeeded for archived log

    archive log filename=/opt/oracle/oradata/avatar2/archive/1_2987.dbf recid=2975 stamp=545401757

    validation succeeded for archived log

    archive log filename=/opt/oracle/oradata/avatar2/archive/1_2988.dbf recid=2976 stamp=545402716

    validation succeeded for archived log

    archive log filename=/opt/oracle/oradata/avatar2/archive/1_2989.dbf recid=2977 stamp=545403661

    validation succeeded for archived log

    archive log filename=/opt/oracle/oradata/avatar2/archive/1_2990.dbf recid=2978 stamp=545404946

    validation succeeded for archived log

    archive log filename=/opt/oracle/oradata/avatar2/archive/1_2991.dbf recid=2979 stamp=545406220

    Crosschecked 278 objects

    RMAN>

2.使用delete expired archivelog all 命令刪除所有過期歸檔日志:

    RMAN> delete expired archivelog all;

    released channel: ORA_DISK_1

    allocated channel: ORA_DISK_1

    channel ORA_DISK_1: sid=12 devtype=DISK

    List of Archived Log Copies

    Key    Thrd Seq    S Low Time Name

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

   376    1    2714    X 23-NOV-04 =/opt/oracle/oradata/avatar2/archive/1_2714.dbf

    .....

3.簡要介紹一下report obsolete命令

使用report obsolete命令報(bào)告過期備份

    RMAN> report obsolete;

    RMAN retention policy will be applied to the command

    RMAN retention policy is set to redundancy 1

    Report of obsolete backups and copies

    Type                Key    Completion Time    Filename/Handle

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

    Backup Set          125    01-NOV-04      

      Backup Piece      125    01-NOV-04          /data1/oracle/orabak/full_1_541045804

    Backup Set          131    04-NOV-04      

      Backup Piece      131    04-NOV-04          /data1/oracle/orabak/full_AVATAR2_20041104_131

   ....

    Backup Set          173    06-DEC-04      

      Backup Piece      173    06-DEC-04          /data1/oracle/orabak/full_AVATAR2_20041206_173

    Backup Set          179    11-DEC-04      

      Backup Piece      179    11-DEC-04          /data1/oracle/orabak/arch544588206.arc

    .....

      Backup Piece      189    17-DEC-04          /data1/oracle/orabak/arch545106606.arc

    Backup Set          190    17-DEC-04      

      Backup Piece      190    17-DEC-04          /data1/oracle/orabak/arch545106665.arc

    Backup Set          191    20-DEC-04      

      Backup Piece      191    20-DEC-04          /data1/oracle/orabak/arch_AVATAR2_20041220_194

    Archive Log          2973 20-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2985.dbf

    Archive Log          2971 20-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2984.dbf

    .....

    Archive Log          2705 17-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2717.dbf

    Archive Log          2704 17-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2716.dbf

    Archive Log          2703 17-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2715.dbf

    Archive Log          2702 17-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2714.dbf

4.使用delete obsolete命令刪除過期備份:

    RMAN> delete obsolete;

    RMAN retention policy will be applied to the command

    RMAN retention policy is set to redundancy 1

    using channel ORA_DISK_1

    Deleting the following obsolete backups and copies:

    Type                Key    Completion Time    Filename/Handle

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

    Backup Set          125    01-NOV-04      

      Backup Piece      125    01-NOV-04          /data1/oracle/orabak/full_1_541045804

    ....

    Archive Log          2704 17-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2716.dbf

    Archive Log          2703 17-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2715.dbf

    Archive Log          2702 17-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2714.dbf

    Do you really want to delete the above objects (enter YES or NO)? yes

    deleted backup piece

    backup piece handle=/data1/oracle/orabak/full_AVATAR2_20041206_173 recid=173 stamp=544156241

    .....

    deleted archive log

    archive log filename=/opt/oracle/oradata/avatar2/archive/1_2715.dbf recid=2703 stamp=545108268

    deleted archive log

    archive log filename=/opt/oracle/oradata/avatar2/archive/1_2714.dbf recid=2702 stamp=545107659

    Deleted 286 objects

    RMAN> crosscheck archivelog all;

    released channel: ORA_DISK_1

    allocated channel: ORA_DISK_1

    channel ORA_DISK_1: sid=19 devtype=DISK

    specification does not match any archive log in the recovery catalog

-The End-



SIMONE 2010-04-21 17:36 發(fā)表評論
]]>
Oracle歸檔日志刪除http://www.aygfsteel.com/wangxinsh55/archive/2010/04/21/318986.htmlSIMONESIMONEWed, 21 Apr 2010 07:14:00 GMThttp://www.aygfsteel.com/wangxinsh55/archive/2010/04/21/318986.htmlhttp://www.aygfsteel.com/wangxinsh55/comments/318986.htmlhttp://www.aygfsteel.com/wangxinsh55/archive/2010/04/21/318986.html#Feedback0http://www.aygfsteel.com/wangxinsh55/comments/commentRss/318986.htmlhttp://www.aygfsteel.com/wangxinsh55/services/trackbacks/318986.html
我們都都知道在controlfile中記錄著每一個(gè)archivelog的相關(guān)信息,當(dāng)然們在OS下把這些物理文件delete掉后,在我們的

controlfile中仍然記錄著這些archivelog的信息,在oracle的OEM管理器中有可視化的日志展現(xiàn)出,當(dāng)我們手工清除 archive目錄下的文件后,這些記錄并沒有被我們從controlfile中清除掉,也就是oracle并不知道這些文件已經(jīng)不存在了!這時(shí)候我們要 做手工的清除的話,下面我經(jīng)過實(shí)驗(yàn),可以嘗試這種方法:

1. 進(jìn)入rman 

2. connect target /

3. crosscheck archivelog all;

4. delete expired archivelog all;

這時(shí)候我們再去OEM中看就一定看不到,如果你的從來沒有做過這個(gè)動(dòng)作的話,我們可以比較從這個(gè)動(dòng)作前的controlfile后動(dòng)作后的 controlfile的大小!

ORACLE正確刪除歸檔并回收空間的方法

ORACLE正確刪除歸檔并回收空間的方法

一個(gè)ORACLE歸檔日志經(jīng)常滿,表現(xiàn)為/oraarchive 這個(gè)文件空間占用100%大家一定抱怨ORACLE為何沒有歸檔維護(hù)工具,很多人直接刪除了事,錯(cuò)了,ORACLE有,而且很智能,可以正確的刪除歸檔和 FLASHBACK,不過切記,ORACLE歸檔日志對于ORACLE的數(shù)據(jù)恢復(fù)和備份非常重要,不到萬不得已不要?jiǎng)h除歸檔日志。

刪除歸檔日志的過程

以O(shè)RACLE用戶身份登錄到數(shù)據(jù)庫服務(wù)器主機(jī)或通過網(wǎng)絡(luò)連接

進(jìn)入ORACLE數(shù)據(jù)備份工具

rman target/

或rman target/@orcl

在命令窗口里面執(zhí)行

DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';

說明

SYSDATA-7,表明當(dāng)前的系統(tǒng)時(shí)間7天前,before關(guān)鍵字表示在7天前的歸檔日志,如果使用了閃回功能,也會(huì)刪除閃回的數(shù)據(jù)。

同樣道理,也可以刪除從7天前到現(xiàn)在的全部日志,不過這個(gè)命令要考慮清楚,做完這個(gè)刪除,最好馬上進(jìn)行全備份數(shù)據(jù)庫

DELETE ARCHIVELOG FROM TIME 'SYSDATE-7';



UNIX/LINUX下也可以通過FIND找到7天前的歸檔數(shù)據(jù),使用EXEC子操作刪除



find /oraarchive -xdev -mtime +7 -name "*.dbf" -exec rm -f {} ;

這樣做仍然會(huì)在RMAN里留下未管理的歸檔文件

仍需要在RMAN里執(zhí)行下面2條命令

crosscheck archivelog all;

delete expired archivelog all;

所以還不如上面的方法好用,不過用FIND的好處就是,可以在條件上,和EXEC子項(xiàng)上做很多操作,實(shí)現(xiàn)更復(fù)雜的功能

3.簡要介紹一下report obsolete命令



使用report obsolete命令報(bào)告過期備份

RMAN> report obsolete;

RMAN retention policy will be applied to the command

RMAN retention policy is set to redundancy 1

Report of obsolete backups and copies

Type                 Key    Completion Time    Filename/Handle

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

Backup Set           125    01-NOV-04

Backup Piece       125    01-NOV-04          /data1/oracle/orabak/full_1_541045804

Backup Set           131    04-NOV-04

Backup Piece       131    04-NOV-04          /data1/oracle/orabak/full_AVATAR2_20041104_131

....

Backup Set           173    06-DEC-04

Backup Piece       173    06-DEC-04          /data1/oracle/orabak/full_AVATAR2_20041206_173

Backup Set           179    11-DEC-04

Backup Piece       179    11-DEC-04          /data1/oracle/orabak/arch544588206.arc

.....

Backup Piece       189    17-DEC-04          /data1/oracle/orabak/arch545106606.arc

Backup Set           190    17-DEC-04

Backup Piece       190    17-DEC-04          /data1/oracle/orabak/arch545106665.arc

Backup Set           191    20-DEC-04

Backup Piece       191    20-DEC-04          /data1/oracle/orabak/arch_AVATAR2_20041220_194

Archive Log          2973   20-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2985.dbf

Archive Log          2971   20-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2984.dbf

.....

Archive Log          2705   17-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2717.dbf

Archive Log          2704   17-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2716.dbf

Archive Log          2703   17-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2715.dbf

Archive Log          2702   17-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2714.dbf



4.使用delete obsolete命令刪除過期備份:



RMAN> delete obsolete;



RMAN retention policy will be applied to the command

RMAN retention policy is set to redundancy 1

using channel ORA_DISK_1

Deleting the following obsolete backups and copies:

Type                 Key    Completion Time    Filename/Handle

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

Backup Set           125    01-NOV-04

Backup Piece       125    01-NOV-04          /data1/oracle/orabak/full_1_541045804

....

Archive Log          2704   17-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2716.dbf

Archive Log          2703   17-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2715.dbf

Archive Log          2702   17-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2714.dbf



Do you really want to delete the above objects (enter YES or NO)? yes

deleted backup piece

backup piece handle=/data1/oracle/orabak/full_AVATAR2_20041206_173 recid=173 stamp=544156241

.....

deleted archive log

archive log filename=/opt/oracle/oradata/avatar2/archive/1_2715.dbf recid=2703 stamp=545108268

deleted archive log

archive log filename=/opt/oracle/oradata/avatar2/archive/1_2714.dbf recid=2702 stamp=545107659

Deleted 286 objects





RMAN> crosscheck archivelog all;



released channel: ORA_DISK_1

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=19 devtype=DISK

specification does not match any archive log in the recovery catalog





5 在rman中用crosscheck檢查歸檔日志,2個(gè)歸檔日志都是失敗的:

RMAN> crosscheck archivelog all;



釋放的通道: ORA_DISK_1

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=14 devtype=DISK

對歸檔日志的驗(yàn)證失敗

存檔日志文件名 =D:ORACLEORADATATESTARCHIVE1_47.DBF 記錄 ID=1 時(shí)間戳 =572866

683

對歸檔日志的驗(yàn)證失敗

存檔日志文件名 =D:ORACLEORADATATESTARCHIVE11_48.DBF 記錄 ID=2 時(shí)間戳 =57286

6931

已交叉檢驗(yàn)的 2 對象



6 試著同步一下,看行不行,結(jié)果不行,crosscheck還是失敗:

RMAN> resync catalog;



正在啟動(dòng)全部恢復(fù)目錄的 resync

完成全部 resync



RMAN> crosscheck archivelog all;



釋放的通道: ORA_DISK_1

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=14 devtype=DISK

對歸檔日志的驗(yàn)證失敗

存檔日志文件名 =D:ORACLEORADATATESTARCHIVE1_47.DBF 記錄 ID=1 時(shí)間戳 =572866

683

對歸檔日志的驗(yàn)證失敗

存檔日志文件名 =D:ORACLEORADATATESTARCHIVE11_48.DBF 記錄 ID=2 時(shí)間戳 =57286

6931

已交叉檢驗(yàn)的 2 對象



7 用list expired看看是否有失效的archive log,證明沒有失效的archive log:

RMAN> list expired archivelog all;



說明與恢復(fù)目錄中的任何存檔日志均不匹配



8 更改語言環(huán)境試試,結(jié)果再次crosscheck,2個(gè)archive log 都成功了:

RMAN> exit





恢復(fù)管理器完成。



C:>set nls_lang=american_america.zhs16gbk



C:>rman catalogrman/rman@safetarget /



Recovery Manager: Release 9.2.0.1.0 - Production



Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.



connected to target database: TEST (DBID=1870953724)

connected to recovery catalog database



RMAN> crosscheck archivelog all;



allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=9 devtype=DISK

validation succeeded for archived log

archive log filename=D:ORACLEORADATATESTARCHIVE1_47.DBF recid=1 stamp=57286

6683

validation succeeded for archived log

archive log filename=D:ORACLEORADATATESTARCHIVE11_48.DBF recid=2 stamp=5728

66931

Crosschecked 2 objects


====================================
oracle隱藏參數(shù)字典 x$ksppi x$ksppstvl 
oracle的隱藏參數(shù)字典是 x$ksppi,x$ksppstvl基表中,有關(guān)隱含參數(shù)說明,可以查詢這個(gè)基表

SQL> desc x$ksppi
名稱 是否為空? 類型
------    -----
ADDR      RAW(4)
INDX      NUMBER
INST_ID   NUMBER
KSPPINM   VARCHAR2(64)
KSPPITY   NUMBER
KSPPDESC  VARCHAR2(64)
KSPPIFLG  NUMBER

SQL>

SQL> desc x$ksppcv
名稱 是否為空? 類型
----------------------------------------- -------- ----------------------------

ADDR RAW(4)
INDX NUMBER
INST_ID NUMBER
KSPPSTVL VARCHAR2(512)
KSPPSTDF VARCHAR2(9)
KSPPSTVF NUMBER
KSPPSTCMNT VARCHAR2(255)

SQL>

比如我現(xiàn)在要查詢隱含參數(shù)
_allow_resetlogs_corruption /// 這個(gè)參數(shù)說明允許數(shù)據(jù)庫在不一致的條件下,進(jìn)行數(shù)據(jù)庫打開


查看隱含參數(shù)的值,方式是


SQL> col ksppinm format a30
SQL> col ksppstvl format a30
SQL> select ksppinm,ksppstvl from x$ksppcv cv,x$ksppi pi where cv.indx=pi.indx a
nd pi.ksppinm like '_allow%';

KSPPINM KSPPSTVL
------------------------------ ------------------------------
_allow_error_simulation FALSE
_allow_resetlogs_corruption FALSE
_allow_terminal_recovery_corru FALSE
ption

_allow_read_only_corruption FALSE

SQL>

這個(gè)參數(shù)一般在數(shù)據(jù)庫正常無法恢復(fù)了,可以用它來強(qiáng)行打開數(shù)據(jù)庫,把數(shù)據(jù)文件先備份出來,這是
一個(gè)比較好的辦法。

SIMONE 2010-04-21 15:14 發(fā)表評論
]]>
Oracle 10g schedule job的常用操作http://www.aygfsteel.com/wangxinsh55/archive/2010/01/27/310972.htmlSIMONESIMONEWed, 27 Jan 2010 08:58:00 GMThttp://www.aygfsteel.com/wangxinsh55/archive/2010/01/27/310972.htmlhttp://www.aygfsteel.com/wangxinsh55/comments/310972.htmlhttp://www.aygfsteel.com/wangxinsh55/archive/2010/01/27/310972.html#Feedback0http://www.aygfsteel.com/wangxinsh55/comments/commentRss/310972.htmlhttp://www.aygfsteel.com/wangxinsh55/services/trackbacks/310972.html     Oracle數(shù)據(jù)庫10g schedule job的常用操作:

-- job 權(quán)限

grant create job to somebody;

-- job 創(chuàng)建

begin

dbms_scheduler.create_job (

job_name => 'AGENT_LIQUIDATION_JOB',

job_type => 'STORED_PROCEDURE',

job_action => 'AGENT_LIQUIDATION.LIQUIDATION', --存儲過程名

start_date => sysdate,

repeat_interval => 'FREQ=MONTHLY; INTERVAL=1; BYMONTHDAY=1;BYHOUR=1;BYMINUTE=0;BYSECOND=0', -- 按月,間隔為1個(gè)(月),每月1號,凌晨1點(diǎn)

comments => '執(zhí)行代理商清分程序'

);

end;

/

-- job 執(zhí)行時(shí)間測試

DECLARE

start_date date;

return_date_after date;

next_run_date date;

BEGIN

start_date := sysdate;--to_timestamp_tz('10-OCT-2004 10:00:00','DD-MM-YYYY HH24:MI:SS');

return_date_after := start_date;

FOR i IN 1..10 LOOP

DBMS_SCHEDULER.EVALUATE_CALENDAR_STRING('FREQ=MONTHLY; INTERVAL=1; BYMONTHDAY=1;BYHOUR=1;BYMINUTE=0;BYSECOND=0',start_date, return_date_after, next_run_date);

DBMS_OUTPUT.PUT_LINE('next_run_date: ' || to_char(next_run_date,'yyyy-mm-dd HH24:MI:SS'));

return_date_after := next_run_date;

END LOOP;

END;

/

-- job 查詢

select owner, job_name, state from dba_scheduler_jobs;

select job_name, state from user_scheduler_jobs; 
        select * from all_jobs;

-- job 啟用

begin

dbms_scheduler.enable('BACKUP_JOB');

end;

/

-- job 運(yùn)行

begin

dbms_scheduler.run_job('COLA_JOB',TRUE); -- true代表同步執(zhí)行

end;

/

-- job 停止(不太好用)

begin

dbms_scheduler.stop_job(job_name => 'COLA_JOB',force => TRUE);

end;

/

-- job 刪除(對停job來說好用)

begin

dbms_scheduler.drop_job(job_name => 'COLA_JOB',force => TRUE);)

end;

/



SIMONE 2010-01-27 16:58 發(fā)表評論
]]>
在ORACLE存儲過程中創(chuàng)建臨時(shí)表http://www.aygfsteel.com/wangxinsh55/archive/2009/02/26/256856.htmlSIMONESIMONEThu, 26 Feb 2009 09:29:00 GMThttp://www.aygfsteel.com/wangxinsh55/archive/2009/02/26/256856.htmlhttp://www.aygfsteel.com/wangxinsh55/comments/256856.htmlhttp://www.aygfsteel.com/wangxinsh55/archive/2009/02/26/256856.html#Feedback0http://www.aygfsteel.com/wangxinsh55/comments/commentRss/256856.htmlhttp://www.aygfsteel.com/wangxinsh55/services/trackbacks/256856.html在ORACLE存儲過程中創(chuàng)建臨時(shí)表

存儲過程里不能直接使用DDL語句,所以只能使用動(dòng)態(tài)SQL語句來執(zhí)行

--ON COMMIT DELETE ROWS 說明臨時(shí)表是事務(wù)指定,每次提交后ORACLE將截?cái)啾恚▌h除全部行)
--ON COMMIT PRESERVE ROWS 說明臨時(shí)表是會(huì)話指定,當(dāng)中斷會(huì)話時(shí)ORACLE將截?cái)啾怼?/p>


CREATE OR REPLACE PROCEDURE temptest
(p_searchDate IN DATE)
IS
v_count INT;
str varchar2(300);
BEGIN
v_count := 0;
str:='drop table SETT_DAILYTEST';
execute immediate str;
str:='CREATE GLOBAL TEMPORARY TABLE SETT_DAILYTEST (
NACCOUNTID NUMBER not null,
NSUBACCOUNTID NUMBER not null)
ON COMMIT PRESERVE ROWS';
execute immediate str; ----使用動(dòng)態(tài)SQL語句來執(zhí)行
str:='insert into SETT_DAILYTEST (select naccountid,nsubaccountid from sett_dailyaccountbalance)';
execute immediate str;
END temptest;

上面建立一個(gè)臨時(shí)表的存儲過程

下面是執(zhí)行一些操作,向臨時(shí)表寫數(shù)據(jù)。

CREATE OR REPLACE PROCEDURE PR_DAILYCHECK
(
p_Date IN DATE,
p_Office IN INTEGER,
p_Currency IN INTEGER,
P_Check IN INTEGER,
p_countNum OUT INTEGER)
IS
v_count INT;
BEGIN
v_count := 0;
IF p_Date IS NULL THEN
dbms_output.put_line('日期不能為空');
ELSE
IF P_Check = 1 THEN
insert into SETT_DAILYTEST (select naccountid,nsubaccountid from sett_dailyaccountbalance
where dtdate = p_Date);

select
count(sd.naccountid) into v_count
from sett_subaccount ss,sett_account sa,sett_dailytest sd
where sd.naccountid = sa.id and sd.nsubaccountid = ss.id and sa.id = ss.naccountid
AND sa.nofficeid = p_Office AND sa.ncurrencyid = p_Currency
and rownum < 2;
COMMIT;
p_countNum := v_count;
dbms_output.put_line(p_countNum);
END IF;
IF P_Check = 2 THEN
insert into SETT_DAILYTEST (select naccountid,nsubaccountid from sett_dailyaccountbalance
where dtdate = p_Date);

select
count(sd.naccountid) into v_count
from sett_cfsubaccount ss,sett_account sa,sett_dailytest sd
where sd.naccountid = sa.id and sd.nsubaccountid = ss.id and sa.id = ss.naccountid
AND sa.nofficeid = p_Office AND sa.ncurrencyid = p_Currency
and rownum < 2;
COMMIT;
p_countNum := v_count;
dbms_output.put_line(p_countNum);
END IF;
END IF;
END PR_DAILYCHECK;



需要?jiǎng)?chuàng)建一個(gè)臨時(shí)表,請舉例說明,謝謝!      
  ---------------------------------------------------------------      
     
  是TEMPORARY      
  CREATE     GLOBAL     TEMPORARY     TABLE     flight_schedule     (      
            startdate     DATE,          
            enddate     DATE,          
            cost     NUMBER)      
     
  ---------------------------------------------------------------      
     
  create     proecdure     name_pro      
  as      
  str     varchar2(100);      
  begin      
  str:='CREATE     GLOBAL     TEMPORARY     TABLE     TABLENAME     ON     COMMIT     PRESERVE     ROWS     as     select     *     from     others_table';      
  execute     immediate     str;      
  end;      
  /  
   
   
   
  可以把臨時(shí)表指定為事務(wù)相關(guān)(默認(rèn))或者是會(huì)話相關(guān):  
  ON   COMMIT   DELETE   ROWS:指定臨時(shí)表是事務(wù)相關(guān)的,Oracle在每次提交后截?cái)啾怼? 
  ON   COMMIT   PRESERVE   ROWS:指定臨時(shí)表是會(huì)話相關(guān)的,Oracle在會(huì)話中止后截?cái)啾怼? 
   
  =================  
  可以創(chuàng)建以下兩種臨時(shí)表:  
  1。會(huì)話特有的臨時(shí)表  
        CREATE   GLOBAL   TEMPORARY   <TABLE_NAME>   (<column   specification>)  
        ON   COMMIT   PRESERVE   ROWS;  
  ========  
  對全局臨時(shí)表的總結(jié)  
   
  在臨時(shí)表上的操作比在一般的表上的操作要快。因?yàn)椋? 
  1創(chuàng)建臨時(shí)表不需要往編目表中插入條目,臨時(shí)表的使用也不需要訪問編目表,因此也沒有對編目表的爭用。  
  2僅有創(chuàng)建臨時(shí)表的app才可存取臨時(shí)表,所以在處理臨時(shí)表時(shí)沒有鎖。  
  3如果指定NOT   LOGGED選項(xiàng),在處理臨時(shí)表時(shí)不記日志。所以如果有僅在數(shù)據(jù)庫的一個(gè)會(huì)話中使用的大量臨時(shí)數(shù)據(jù),把這些數(shù)據(jù)存入臨時(shí)表能大大提高性能。  
  DECLARE   GLOBAL   TEMPORARY   TABLE   TT(C1   INT,   C2   CHAR(20));  
  在CONNECT   RESET命令后,臨時(shí)表不再存在。  
  建臨時(shí)表是動(dòng)態(tài)編譯的,所以對臨時(shí)表的使用也必須放在DECLARE   CURSER   后面  
  CREATE   PROCEDURE   INSTT2(P1   INT,   P2   CHAR(20))  
  BEGIN  
      DECLARE   GLOBAL   TEMPORARY   TABLE   TT(C1   INT,   C2   CHAR(20))   %  
      INSERT   INTO   SESSION.TT   VALUES(P1,   P2);  
      BEGIN  
          DECLARE   C1   CURSOR   WITH   RETURN   FOR   SELECT   *   FROM   SESSION.TT;  
      END;  
  END   %  
   
  2。事務(wù)特有的臨時(shí)表  
        CREATE   GLOBAL   TEMPORARY   <TABLE_NAME>   (<column   specification>)  
        ON   COMMIT   DELETE   ROWS;  
       
      在Oracle中,全局臨時(shí)表并不會(huì)刪除,實(shí)際上你只需要建立一次,以后直接應(yīng)用就行了,這與MS和Sybase不一樣。實(shí)際上在斷開數(shù)據(jù)庫連接時(shí),臨時(shí) 表中數(shù)據(jù)自動(dòng)清空,不同的Session之間是隔離的,不許要當(dāng)心相互影響,不過如果起用了連接共享的話,你要用On   Commit   delete   rows使數(shù)據(jù)僅在事物內(nèi)部有效。

3建立臨時(shí)表  
        臨時(shí)表的定義對所有會(huì)話SESSION都是可見的,但是表中的數(shù)據(jù)只對當(dāng)前的會(huì)話或者事務(wù)有效.    
        建立方法:  
  1)   ON   COMMIT   DELETE   ROWS   定義了建立事務(wù)級臨時(shí)表的方法.  
  CREATE   GLOBAL   TEMPORARY   TABLE   admin_work_area  
                  (startdate   DATE,  
                    enddate   DATE,  
                    class   CHAR(20))  
              ON   COMMIT   DELETE   ROWS;  
  EXAMPLE:  
  SQL>   CREATE   GLOBAL   TEMPORARY   TABLE   admin_work_area  
      2                     (startdate   DATE,  
      3                       enddate   DATE,  
      4                       class   CHAR(20))  
      5                 ON   COMMIT   DELETE   ROWS;  
  SQL>   create   table   permernate(   a   number);  
  SQL>   insert   into   admin_work_area   values(sysdate,sysdate,'temperary   table');  
  SQL>   insert   into   permernate   values(1);  
  SQL>   commit;  
  SQL>   select   *   from   admin_work_area;  
  SQL>   select     *   from   permernate;  
    A  
  1  
  2)ON   COMMIT   PRESERVE   ROWS   定義了創(chuàng)建會(huì)話級臨時(shí)表的方法.  
  CREATE   GLOBAL   TEMPORARY   TABLE   admin_work_area  
                  (startdate   DATE,  
                    enddate   DATE,  
                    class   CHAR(20))  
            ON   COMMIT   PRESERVE   ROWS;  
  EXAMPLE:  
   
  會(huì)話1:  
  SQL>   drop   table   admin_work_area;  
  SQL>   CREATE   GLOBAL   TEMPORARY   TABLE   admin_work_area  
      2                     (startdate   DATE,  
      3                       enddate   DATE,  
      4                       class   CHAR(20))  
      5               ON   COMMIT   PRESERVE   ROWS;  
  SQL>   insert   into   permernate   values(2);  
  SQL>   insert   into   admin_work_area   values(sysdate,sysdate,'session   temperary');  
  SQL>   commit;  
  SQL>   select   *   from   permernate;  
   
                    A  
  ----------  
                    1  
                    2  
   
  SQL>   select   *   from   admin_work_area;  
   
  STARTDATE     ENDDATE         CLASS  
  ----------   ----------   --------------------  
  17-1&Ocirc;&Acirc;   -03   17-1&Ocirc;&Acirc;   -03   session   temperary  
   
  會(huì)話2:  
   
  SQL>   select   *   from   permernate;  
   
                    A  
  ----------  
                    1  
                    2  
   
  SQL>   select   *   from   admin_work_area;  
   
    未選擇行.  
   
  會(huì)話2看不見會(huì)話1中臨時(shí)表的數(shù)據(jù).  

 



SIMONE 2009-02-26 17:29 發(fā)表評論
]]>
在hibernate中實(shí)現(xiàn)oracle的自動(dòng)增長[轉(zhuǎn)]http://www.aygfsteel.com/wangxinsh55/archive/2008/08/19/222956.htmlSIMONESIMONETue, 19 Aug 2008 03:43:00 GMThttp://www.aygfsteel.com/wangxinsh55/archive/2008/08/19/222956.htmlhttp://www.aygfsteel.com/wangxinsh55/comments/222956.htmlhttp://www.aygfsteel.com/wangxinsh55/archive/2008/08/19/222956.html#Feedback0http://www.aygfsteel.com/wangxinsh55/comments/commentRss/222956.htmlhttp://www.aygfsteel.com/wangxinsh55/services/trackbacks/222956.html在hibernate中實(shí)現(xiàn)oracle的自動(dòng)增長

http://kuangbaoxu.javaeye.com/blog/192434

關(guān)鍵字: hibernate oracle sequence native
根據(jù)hibernate的文檔,有兩種方式實(shí)現(xiàn)實(shí)體對象的主鍵自動(dòng)增長。
第一種:設(shè)置ID的增長策略是sequence,同時(shí)指定sequence的名字,最好每個(gè)表建一個(gè)sequence,此種做法就如同MS-SQL,MY-SQL中的自動(dòng)增長一樣,不需要?jiǎng)?chuàng)建觸發(fā)器,具體的oracle數(shù)據(jù)庫腳本及hibernate配置文件如下:


[1]oracle數(shù)據(jù)表的創(chuàng)建腳本:
Java代碼

CREATE TABLE DEPARTMENT (  
    ID NUMBER(19,0) DEFAULT '0' NOT NULL,  
    NAME VARCHAR2(255) NOT NULL,  
    DESCRIPTION CLOB  
);  
ALTER TABLE DEPARTMENT ADD CONSTRAINT PRIMARY_0 PRIMARY KEY(ID) ENABLE;  
ALTER TABLE DEPARTMENT ADD CONSTRAINT UK_DEPARTMENT_1 UNIQUE (NAME);  
 
CREATE SEQUENCE DEPARTMENT_ID_SEQ MINVALUE 10000 MAXVALUE 999999999999999999999999 INCREMENT BY 1 NOCYCLE; 

創(chuàng)建DEPARTMENT表,并為DEPARTMENT表創(chuàng)建一個(gè)單獨(dú)的SEQUENCE,名字為SEQUENCE_ID_SEQ,并不需要?jiǎng)?chuàng)建觸發(fā)器。

[2]hibernate映射文件的配置:
Java代碼

<?xml version="1.0"?>  
<!DOCTYPE hibernate-mapping PUBLIC  
      "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
          "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
<hibernate-mapping package="com.liyanframework.demo.domain">  
    <class name="Department" table="DEPARTMENT">  
        <id name="id" column="ID">  
            <generator class="sequence">  
                <param name="sequence">DEPARTMENT_ID_SEQ</param>  
            </generator>  
        </id>  
        <property name="name" column="NAME" type="string" />  
        <property name="description" column="DESCRIPTION" type="text" />  
    </class>  
</hibernate-mapping> 

在hibernate映射文件中,對ID的生成策略選擇sequence,指定sequence的名字DEPARTMENT_ID_SEQ就可以了,當(dāng)你 保存新對象的時(shí)候,hibernate會(huì)自動(dòng)取得DEPARTMENT_ID_SEQ.NEXTVAL作為新對象的ID保存到數(shù)據(jù)庫,所以不需要再使用觸 發(fā)器再來生成新記錄的ID。


第二種:設(shè)置ID的增長策略是native,但是需要?jiǎng)?chuàng)建一個(gè)名字為hibernate_sequence(這個(gè)名字好像是hibernate默認(rèn)的 sequence名字,不創(chuàng)建會(huì)出錯(cuò)的)的全局使用的sequence,然后再對每一個(gè)表的ID生成的時(shí)候,使用觸發(fā)器,取得 hibernate_sequence.CURRVAL作為新記錄的ID,具體的oracle數(shù)據(jù)庫腳本及hibernate配置文件如下:


[1]oracle數(shù)據(jù)表的創(chuàng)建腳本:
Java代碼


CREATE TABLE STAFF (  
    ID NUMBER(19,0) DEFAULT '0' NOT NULL,  
    NAME VARCHAR2(255) NOT NULL,  
    AGE NUMBER(3,0) NOT NULL,  
    BIRTHDAY DATE NOT NULL,  
    SALARY NUMBER(10,2) NOT NULL,  
    LEVELNESS FLOAT NOT NULL,  
    CREATETIME TIMESTAMP NOT NULL,  
    ENABLE CHAR(2) DEFAULT 'Y' NOT NULL,  
    STATUS VARCHAR2(64) NOT NULL,  
    DEPARTMENT_ID NUMBER(19,0)  
);  
ALTER TABLE STAFF ADD CONSTRAINT PRIMARY_1 PRIMARY KEY(ID) ENABLE;  
ALTER TABLE STAFF ADD CONSTRAINT STAFF_IBFK_0 FOREIGN KEY(DEPARTMENT_ID) REFERENCES DEPARTMENT(ID) ENABLE;  
ALTER TABLE STAFF ADD CONSTRAINT UK_STAFF_1 UNIQUE (NAME);  
CREATE INDEX IDX_STAFF_STATUS ON STAFF(STATUS);  
 
CREATE SEQUENCE HIBERNATE_SEQUENCE MINVALUE 90000 MAXVALUE 999999999999999999999999 INCREMENT BY 1 NOCYCLE;  
 
CREATE OR REPLACE TRIGGER STAFF_ID_TRG BEFORE INSERT ON STAFF  
FOR EACH ROW  
BEGIN  
    IF INSERTING AND :NEW.ID IS NULL THEN  
        SELECT HIBERNATE_SEQUENCE.CURRVAL INTO :NEW.ID FROM DUAL;  
    END IF;  
END; 

創(chuàng)建STAFF表,但是并沒有為STAFF創(chuàng)建相應(yīng)的主鍵sequence,而是創(chuàng)建了一個(gè)名字為HIBERNATE_SEQUENCE的 sequence,然后創(chuàng)建一個(gè)觸發(fā)器STAFF_ID_TRG,當(dāng)執(zhí)行INSERT操作時(shí),hibernate會(huì)先執(zhí)行一次 HIBERNATE_SEQUENCE.NEXTVAL,所以在觸發(fā)器中只需要取得HIBERNATE_SEQUENCE.CURRVAL作為新記錄的 ID。

[2]hibernate映射文件的配置:
Java代碼


<?xml version="1.0"?>  
<!DOCTYPE hibernate-mapping PUBLIC  
      "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
          "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
<hibernate-mapping package="com.liyanframework.demo.domain">  
    <class name="Staff" table="STAFF">  
        <id name="id" column="ID">  
            <generator class="native" />  
        </id>  
        <property name="name" column="NAME" type="string" />  
        <property name="age" column="AGE" type="integer" />  
        <property name="birthday" column="BIRTHDAY" type="date" />  
        <property name="salary" column="SALARY" type="big_decimal" />  
        <property name="level" column="LEVELNESS" type="float" />  
        <property name="createTime" column="CREATETIME" type="timestamp" />  
        <property name="enable" column="ENABLE" type="character" />  
        <property name="status" column="STATUS" type="string" />  
        <many-to-one name="department" column="DEPARTMENT_ID" class="Department" />  
    </class>  
</hibernate-mapping> 

在hibernate映射文件中,對ID的生成策略選擇native,hibernate會(huì)根據(jù)你數(shù)據(jù)庫的觸發(fā)器來生成新記錄的ID。

比 較兩種做法,第二種做法也就是hibernate在代碼中,實(shí)現(xiàn)了oracle中的觸發(fā)器功能。對于不同的情況,選擇不懂的做法。如果新的系統(tǒng),新建的 oracle數(shù)據(jù)庫,推薦使用第一種做法,簡單,容易移植到其他支持自動(dòng)增長的數(shù)據(jù)庫;如果是老的系統(tǒng),需要把其他數(shù)據(jù)庫轉(zhuǎn)換為oracle的,那就要用 第二種了,使用native的方式,可以不改動(dòng)配置文件,兼容oracle和mysql之類帶有自動(dòng)增長的數(shù)據(jù)庫。




安裝有oracle數(shù)據(jù)庫,創(chuàng)建數(shù)據(jù)庫,總是要?jiǎng)?chuàng)建一個(gè)主鍵ID,唯一標(biāo)示各條記錄,但oracle不支持自動(dòng)編號,所以還得創(chuàng)建一個(gè)SEQUENCE(序列)語句如
    
create sequence bign nocycle maxvalue 9999999999 start with1;//增加數(shù)據(jù)

insertintotable (ID,..) values(bign.nextval,..)

     在hibernate中的映射文件可這么寫
   <id name="id" type="java.lang.Long" column="ID">
            
<generator class="sequence">
                 
<param name="sequence">bign</param>
            
</generator>
   
</id>



<id name="id" type="java.lang.Long" column="ID">
            
<generator class="increment">
  
</id>


(increment 用與為long,short或者int類型生成唯一標(biāo)示。只有在沒有其他進(jìn)程忘同一張表中插入數(shù)據(jù)時(shí)才能使用。在集群下不要使用)



SIMONE 2008-08-19 11:43 發(fā)表評論
]]>
主站蜘蛛池模板: 大同市| 和林格尔县| 南投市| 麻江县| 靖远县| 清徐县| 泗水县| 寻乌县| 高台县| 耒阳市| 蛟河市| 西峡县| 凭祥市| 清河县| 利辛县| 宜宾市| 岑巩县| 金沙县| 大邑县| 广元市| 烟台市| 东平县| 文水县| 手游| 秦安县| 义马市| 张家港市| 沙河市| 乐平市| 双江| 大埔县| 江安县| 行唐县| 松阳县| 塔城市| 宝山区| 班玛县| 海城市| 汉寿县| 资兴市| 襄城县|