• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            第三部分、備份與恢復(fù)
            [Q]如何開(kāi)啟/關(guān)閉歸檔
            [A]如果開(kāi)啟歸檔,請(qǐng)保證log_archive_start=true開(kāi)啟自動(dòng)歸檔,否則只能手工歸檔,如果是關(guān)閉了歸檔,則設(shè)置該參數(shù)為false
            注意:如果是OPS/RAC環(huán)境,需要先把parallel_server = true注釋掉,然后執(zhí)行如下步驟,最后用這個(gè)參數(shù)重新啟動(dòng)
            1、開(kāi)啟歸檔
            a. 關(guān)閉數(shù)據(jù)庫(kù)shutdown immediate
            b. startup mount
            c. alter database archivelog
            d. alter database opne
            2、禁止歸檔
            a. 關(guān)閉數(shù)據(jù)庫(kù)shutdown immediate
            b. startup mount
            c. alter database noarchivelog
            d. alter database open
            歸檔信息可以通過(guò)如下語(yǔ)句查看
            SQL> archive log list
            Database log mode Archive Mode
            Automatic archival Enabled
            Archive destination E:\oracle\ora92\database\archive
            Oldest online log sequence 131
            Next log sequence to archive 133
            Current log sequence 133
            [Q]怎樣設(shè)置定時(shí)歸檔
            [A]9i以上版本,保證歸檔的最小間隔不超過(guò)n秒
            設(shè)置Archive_lag_target = n
            單位:秒 范圍:0~7200
            [Q]不同版本怎么導(dǎo)出/導(dǎo)入
            [A]導(dǎo)出用低版本,導(dǎo)入用當(dāng)前版本
            如果版本跨越太大,需要用到中間版本過(guò)渡
            [Q]不同的字符集之前怎么導(dǎo)數(shù)據(jù)
            [A]a.前條件是保證導(dǎo)出/導(dǎo)入符合其他字符集標(biāo)準(zhǔn),如客戶(hù)環(huán)境與數(shù)據(jù)庫(kù)字符集一致。
            b.修改dmp文件的2、3字節(jié)為目標(biāo)數(shù)據(jù)庫(kù)的字符集,注意要換成十六進(jìn)制。
            參考函數(shù)(以下函數(shù)中的ID是十進(jìn)制的):
            nls_charset_name 根據(jù)字符集ID獲得字符集名稱(chēng)
            nls_charset_id 根據(jù)字符集名稱(chēng)獲得字符集ID
            [Q]怎么樣備份控制文件
            [A]再線(xiàn)備份為一個(gè)二進(jìn)制的文件
            alter database backup controlfile to '$BACKUP_DEPT/controlfile.000' [reuse];
            備份為文本文件方式
            alter database backup controlfile to trace [resetlogs|noresetlogs];
            [Q]控制文件損壞如何恢復(fù)
            [A]1、如果是損壞單個(gè)控制文件
            只需要關(guān)閉數(shù)據(jù)庫(kù),拷貝一個(gè)好的數(shù)據(jù)文件覆蓋掉壞的數(shù)據(jù)文件即可
            或者是修改init.ora文件的相關(guān)部分
            2、如果是損失全部控制文件,則需要?jiǎng)?chuàng)建控制文件或從備份恢復(fù)
            創(chuàng)建控制文件的腳本可以通過(guò)alter database backup controlfile to trace獲取。
            [Q]怎么樣熱備份一個(gè)表空間
            [A]Alter tablespace 名稱(chēng) begin backup;
            host cp 這個(gè)表空間的數(shù)據(jù)文件 目的地;
            Alter tablespace 名稱(chēng) end backup;
            如果是備份多個(gè)表空間或整個(gè)數(shù)據(jù)庫(kù),只需要一個(gè)一個(gè)表空間的操作下來(lái)就可以了。
            [Q]怎么快速得到整個(gè)數(shù)據(jù)庫(kù)的熱備腳本
            [A]可以寫(xiě)一段類(lèi)似的腳本
            SQL>set serveroutput on
            begin
            dbms_output.enable(10000);
            for bk_ts in (select distinct t.ts#,t.name from v$tablespace t,v$datafile d where t.ts#=d.ts#) loop
            dbms_output.put_line('--'||bk_ts.name);
            dbms_output.put_line('alter tablespace '||bk_ts.name||' begin backup;');
            for bk_file in (select file#,name from v$datafile where ts#=bk_ts.ts#) loop
            dbms_output.put_line('host cp '||bk_file.name||' $BACKUP_DEPT/');
            end loop;
            dbms_output.put_line('alter tablespace '||bk_ts.name||' end backup;');
            end loop;
            end;
            /
            [Q]丟失一個(gè)數(shù)據(jù)文件,但是沒(méi)有備份,怎么樣打開(kāi)數(shù)據(jù)庫(kù)
            [A]如果沒(méi)有備份只能是刪除這個(gè)數(shù)據(jù)文件了,會(huì)導(dǎo)致相應(yīng)的數(shù)據(jù)丟失。
            SQL>startup mount
            --ARCHIVELOG模式命令
            SQL>Alter database datafile 'file name' offline;
            --NOARCHIVELOG模式命令
            SQL>Alter database datafile 'file name' offline drop;
            SQLl>Alter database open;
            注意:該數(shù)據(jù)文件不能是系統(tǒng)數(shù)據(jù)文件
            [Q]丟失一個(gè)數(shù)據(jù)文件,沒(méi)有備份但是有該數(shù)據(jù)文件創(chuàng)建以來(lái)的歸檔怎么恢復(fù)
            [A]保證如下條件
            a. 不能是系統(tǒng)數(shù)據(jù)文件
            b. 不能丟失控制文件
            如果滿(mǎn)足以上條件,則
            SQL>startup mount
            SQL>Alter database create datafile 'file name' as 'file name' size ... reuse;
            SQL>recover datafile n; -文件號(hào)
            或者
            SQL>recover datafile 'file name';
            或者
            SQL>recover database;
            SQL>Alter database open;
            [Q]聯(lián)機(jī)日志損壞如何恢復(fù)
            [A]1、如果是非當(dāng)前日志而且歸檔,可以使用
            Alter database clear logfile group n來(lái)創(chuàng)建一個(gè)新的日志文件
            如果該日志還沒(méi)有歸檔,則需要用
            Alter database clear unarchived logfile group n
            2、如果是當(dāng)前日志損壞,一般不能clear,則可能意味著丟失數(shù)據(jù)
            如果有備份,可以采用備份進(jìn)行不完全恢復(fù)
            如果沒(méi)有備份,可能只能用_allow_resetlogs_corruption=true來(lái)進(jìn)行強(qiáng)制恢復(fù)了,但是,這樣的方法是不建議的,最好在有Oracle support的指導(dǎo)下進(jìn)行。
            [Q]怎么樣創(chuàng)建RMAN恢復(fù)目錄
            [A]首先,創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)用戶(hù),一般都是RMAN,并給予recovery_catalog_owner角色權(quán)限
            sqlplus sys
            SQL> create user rman identified by rman;
            SQL> alter user rman default tablespace tools temporary tablespace temp;
            SQL> alter user rman quota unlimited on tools;
            SQL> grant connect, resource, recovery_catalog_owner to rman;
            SQL> exit;
            然后,用這個(gè)用戶(hù)登錄,創(chuàng)建恢復(fù)目錄
            rman catalog rman/rman
            RMAN> create catalog tablespace tools;
            RMAN> exit;
            最后,你可以在恢復(fù)目錄注冊(cè)目標(biāo)數(shù)據(jù)庫(kù)了
            rman catalog rman/rman target backdba/backdba
            RMAN> register database;
            [Q]怎么樣在恢復(fù)的時(shí)候移動(dòng)數(shù)據(jù)文件,恢復(fù)到別的地點(diǎn)
            [A]給一個(gè)RMAN的例子
            run {
            set until time 'Jul 01 1999 00:05:00';
            allocate channel d1 type disk;
            set newname for datafile '/u04/oracle/prod/sys1prod.dbf'
            to '/u02/oracle/prod/sys1prod.dbf';
            set newname for datafile '/u04/oracle/prod/usr1prod.dbf'
            to '/u02/oracle/prod/usr1prod.dbf';
            set newname for datafile '/u04/oracle/prod/tmp1prod.dbf'
            to '/u02/oracle/prod/tmp1prod.dbf';
            restore controlfile to '/u02/oracle/prod/ctl1prod.ora';
            replicate controlfile from '/u02/oracle/prod/ctl1prod.ora';
            restore database;
            sql "alter database mount";
            switch datafile all;
            recover database;
            sql "alter database open resetlogs";
            release channel d1;
            }
            [Q]怎么從備份片(backuppiece)中恢復(fù)(restore)控制文件與數(shù)據(jù)文件
            [A]可以使用如下方法,在RMAN中恢復(fù)備份片的控制文件
            restore controlfile from backuppiecefile;
            如果是9i的自動(dòng)備份,可以采用如下的方法
            restore controlfile from autobackup;
            但是,如果控制文件全部丟失,需要指定DBID,如SET DBID=?
            自動(dòng)備份控制文件的默認(rèn)格式是%F,這個(gè)格式的形式為
            c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII就是DBID
            至于恢復(fù)(restore)數(shù)據(jù)文件,oracle 816開(kāi)始有個(gè)包dbms_backup_restore
            在 nomount 狀態(tài)下就可以執(zhí)行,可以讀 815甚至之前的備份片,讀出來(lái)的文件用于恢復(fù)
            可以在SQLPLUS中運(yùn)行,如下
            SQL>startup nomount
            SQL> DECLARE
            2 devtype varchar2(256);
            3 done boolean;
            4 BEGIN
            5 devtype := dbms_backup_restore.deviceallocate('', params=>'');
            6 dbms_backup_restore.restoresetdatafile;
            7 dbms_backup_restore.restorecontrolfileto('E:\Oracle\oradata\penny\control01.ctl');
            8 dbms_backup_restore.restoreDataFileto(1,'E:\Oracle\oradata\penny\system01.dbf');
            9 dbms_backup_restore.restoreDataFileto(2,'E:\Oracle\oradata\penny\UNDOTBS01.DBF');
            10 dbms_backup_restore.restoreDataFileto(3,'E:\ORACLE\ORADATA\PENNY\USERS01.DBF');
            11 dbms_backup_restore.restorebackuppiece('D:\orabak\BACKUP_1_4_04F4IAJT.PENNY',done=>done);
            12 END;
            13 /
            PL/SQL 過(guò)程已成功完成。
            SQL> alter database mount;
            [Q]Rman的format格式中的%s類(lèi)似的東西代表什么意義
            [A]可以參考如下
            %c 備份片的拷貝數(shù)
            %d 數(shù)據(jù)庫(kù)名稱(chēng)
            %D 位于該月中的第幾天 (DD)
            %M 位于該年中的第幾月 (MM)
            %F 一個(gè)基于DBID唯一的名稱(chēng),這個(gè)格式的形式為c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII為該數(shù)據(jù)庫(kù)的DBID,YYYYMMDD為日期,QQ是一個(gè)1-256的序列
            %n 數(shù)據(jù)庫(kù)名稱(chēng),向右填補(bǔ)到最大八個(gè)字符
            %u 一個(gè)八個(gè)字符的名稱(chēng)代表備份集與創(chuàng)建時(shí)間
            %p 該備份集中的備份片號(hào),從1開(kāi)始到創(chuàng)建的文件數(shù)
            %U 一個(gè)唯一的文件名,代表%u_%p_%c
            %s 備份集的號(hào)
            %t 備份集時(shí)間戳
            %T 年月日格式(YYYYMMDD)
            [Q]執(zhí)行exec dbms_logmnr_d.build('Logminer.ora','file directory'),提示下標(biāo)超界,怎么辦
            [A]完整錯(cuò)誤信息如下,
            SQL> exec dbms_logmnr_d.build('Logminer.ora','file directory')
            BEGIN dbms_logmnr_d.build('Logminer.ora','file directory'); END;
            *
            ERROR 位于第 1 行:
            ORA-06532: 下標(biāo)超出限制
            ORA-06512: 在"SYS.DBMS_LOGMNR_D", line 793
            ORA-06512: 在line 1
            解決辦法為:
            1.編輯位于"$ORACLE_HOME/rdbms/admin"目錄下的文件"dbmslmd.sql"
            改變行:
            TYPE col_desc_array IS VARRAY(513) OF col_description;

            TYPE col_desc_array IS VARRAY(700) OF col_description;
            并保存文件
            2. 運(yùn)行改變后的腳本
            SQLPLUS> Connect internal
            SQLPLUS> @$ORACLE_HOME/rdbms/admin/dbmslmd.sql
            3.重新編譯該包
            SQLPLUS> alter package DBMS_LOGMNR_D compile body;
            [Q]執(zhí)行execute dbms_logmnr.start_logmnr(DictFileName=>'DictFileName')提示ORA-01843:無(wú)效的月份,這個(gè)是什么原因
            [A]我們分析start_logmnr包
            PROCEDURE start_logmnr(
            startScn IN NUMBER default 0 ,
            endScn IN NUMBER default 0,
            startTime IN DATE default TO_DATE('01-jan-1988','DD-MON-YYYY'),
            endTime IN DATE default TO_DATE('01-jan-2988','DD-MON-YYYY'),
            DictFileName IN VARCHAR2 default '',
            Options IN BINARY_INTEGER default 0 );
            可以知道,如果TO_DATE('01-jan-1988','DD-MON-YYYY')失敗,將導(dǎo)致以上錯(cuò)誤
            所以解決辦法可以為
            1、Alter session set NLS_LANGUAGE=American
            2、用類(lèi)似如下的方法執(zhí)行
            execute dbms_logmnr.start_logmnr (DictFileName=> 'f:\temp2\TESTDICT.ora', starttime => TO_DATE(
            '01-01-1988','DD-MM-YYYY'), endTime=>TO_DATE('01-01-2988','DD-MM-YYYY'));


            Posted on 2006-09-29 17:24 艾凡赫 閱讀(393) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): ORACLE數(shù)據(jù)庫(kù)
            亚洲AV日韩AV永久无码久久| 精品久久久久久综合日本| 久久精品人人做人人妻人人玩| 久久国产高清一区二区三区| 久久99久久无码毛片一区二区| 色悠久久久久久久综合网| 精品久久久久久国产| 精品国产乱码久久久久久呢| 色综合久久久久无码专区| 精品久久久久久无码人妻蜜桃 | 国产精品久久久久久久久久免费| 伊人色综合久久天天人守人婷 | 久久久久久免费视频| 久久人妻少妇嫩草AV无码蜜桃| 久久er国产精品免费观看2| 亚洲色大成网站www久久九| 久久精品国产一区二区| 品成人欧美大片久久国产欧美... 品成人欧美大片久久国产欧美 | 思思久久99热只有频精品66| 欧美va久久久噜噜噜久久| 中文精品久久久久人妻不卡| 无码人妻久久一区二区三区蜜桃| 久久福利片| 日韩乱码人妻无码中文字幕久久| 亚洲国产精品无码久久| 伊人丁香狠狠色综合久久| 人人狠狠综合久久亚洲| 久久精品卫校国产小美女| 人妻少妇久久中文字幕| 青青青青久久精品国产h| 久久亚洲2019中文字幕| 18禁黄久久久AAA片| 国产精品成人99久久久久 | 久久久久亚洲AV无码去区首| 国产精品免费久久久久久久久| 亚洲欧美一区二区三区久久| 狠狠色丁香婷婷久久综合不卡| 一本久久精品一区二区| 久久精品国产精品亚洲人人| 久久久久久久波多野结衣高潮| 亚洲午夜精品久久久久久人妖|