• <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>
            第三部分、備份與恢復
            [Q]如何開啟/關閉歸檔
            [A]如果開啟歸檔,請保證log_archive_start=true開啟自動歸檔,否則只能手工歸檔,如果是關閉了歸檔,則設置該參數為false
            注意:如果是OPS/RAC環境,需要先把parallel_server = true注釋掉,然后執行如下步驟,最后用這個參數重新啟動
            1、開啟歸檔
            a. 關閉數據庫shutdown immediate
            b. startup mount
            c. alter database archivelog
            d. alter database opne
            2、禁止歸檔
            a. 關閉數據庫shutdown immediate
            b. startup mount
            c. alter database noarchivelog
            d. alter database open
            歸檔信息可以通過如下語句查看
            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]怎樣設置定時歸檔
            [A]9i以上版本,保證歸檔的最小間隔不超過n秒
            設置Archive_lag_target = n
            單位:秒 范圍:0~7200
            [Q]不同版本怎么導出/導入
            [A]導出用低版本,導入用當前版本
            如果版本跨越太大,需要用到中間版本過渡
            [Q]不同的字符集之前怎么導數據
            [A]a.前條件是保證導出/導入符合其他字符集標準,如客戶環境與數據庫字符集一致。
            b.修改dmp文件的2、3字節為目標數據庫的字符集,注意要換成十六進制。
            參考函數(以下函數中的ID是十進制的):
            nls_charset_name 根據字符集ID獲得字符集名稱
            nls_charset_id 根據字符集名稱獲得字符集ID
            [Q]怎么樣備份控制文件
            [A]再線備份為一個二進制的文件
            alter database backup controlfile to '$BACKUP_DEPT/controlfile.000' [reuse];
            備份為文本文件方式
            alter database backup controlfile to trace [resetlogs|noresetlogs];
            [Q]控制文件損壞如何恢復
            [A]1、如果是損壞單個控制文件
            只需要關閉數據庫,拷貝一個好的數據文件覆蓋掉壞的數據文件即可
            或者是修改init.ora文件的相關部分
            2、如果是損失全部控制文件,則需要創建控制文件或從備份恢復
            創建控制文件的腳本可以通過alter database backup controlfile to trace獲取。
            [Q]怎么樣熱備份一個表空間
            [A]Alter tablespace 名稱 begin backup;
            host cp 這個表空間的數據文件 目的地;
            Alter tablespace 名稱 end backup;
            如果是備份多個表空間或整個數據庫,只需要一個一個表空間的操作下來就可以了。
            [Q]怎么快速得到整個數據庫的熱備腳本
            [A]可以寫一段類似的腳本
            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]丟失一個數據文件,但是沒有備份,怎么樣打開數據庫
            [A]如果沒有備份只能是刪除這個數據文件了,會導致相應的數據丟失。
            SQL>startup mount
            --ARCHIVELOG模式命令
            SQL>Alter database datafile 'file name' offline;
            --NOARCHIVELOG模式命令
            SQL>Alter database datafile 'file name' offline drop;
            SQLl>Alter database open;
            注意:該數據文件不能是系統數據文件
            [Q]丟失一個數據文件,沒有備份但是有該數據文件創建以來的歸檔怎么恢復
            [A]保證如下條件
            a. 不能是系統數據文件
            b. 不能丟失控制文件
            如果滿足以上條件,則
            SQL>startup mount
            SQL>Alter database create datafile 'file name' as 'file name' size ... reuse;
            SQL>recover datafile n; -文件號
            或者
            SQL>recover datafile 'file name';
            或者
            SQL>recover database;
            SQL>Alter database open;
            [Q]聯機日志損壞如何恢復
            [A]1、如果是非當前日志而且歸檔,可以使用
            Alter database clear logfile group n來創建一個新的日志文件
            如果該日志還沒有歸檔,則需要用
            Alter database clear unarchived logfile group n
            2、如果是當前日志損壞,一般不能clear,則可能意味著丟失數據
            如果有備份,可以采用備份進行不完全恢復
            如果沒有備份,可能只能用_allow_resetlogs_corruption=true來進行強制恢復了,但是,這樣的方法是不建議的,最好在有Oracle support的指導下進行。
            [Q]怎么樣創建RMAN恢復目錄
            [A]首先,創建一個數據庫用戶,一般都是RMAN,并給予recovery_catalog_owner角色權限
            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;
            然后,用這個用戶登錄,創建恢復目錄
            rman catalog rman/rman
            RMAN> create catalog tablespace tools;
            RMAN> exit;
            最后,你可以在恢復目錄注冊目標數據庫了
            rman catalog rman/rman target backdba/backdba
            RMAN> register database;
            [Q]怎么樣在恢復的時候移動數據文件,恢復到別的地點
            [A]給一個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)中恢復(restore)控制文件與數據文件
            [A]可以使用如下方法,在RMAN中恢復備份片的控制文件
            restore controlfile from backuppiecefile;
            如果是9i的自動備份,可以采用如下的方法
            restore controlfile from autobackup;
            但是,如果控制文件全部丟失,需要指定DBID,如SET DBID=?
            自動備份控制文件的默認格式是%F,這個格式的形式為
            c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII就是DBID
            至于恢復(restore)數據文件,oracle 816開始有個包dbms_backup_restore
            在 nomount 狀態下就可以執行,可以讀 815甚至之前的備份片,讀出來的文件用于恢復
            可以在SQLPLUS中運行,如下
            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 過程已成功完成。
            SQL> alter database mount;
            [Q]Rman的format格式中的%s類似的東西代表什么意義
            [A]可以參考如下
            %c 備份片的拷貝數
            %d 數據庫名稱
            %D 位于該月中的第幾天 (DD)
            %M 位于該年中的第幾月 (MM)
            %F 一個基于DBID唯一的名稱,這個格式的形式為c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII為該數據庫的DBID,YYYYMMDD為日期,QQ是一個1-256的序列
            %n 數據庫名稱,向右填補到最大八個字符
            %u 一個八個字符的名稱代表備份集與創建時間
            %p 該備份集中的備份片號,從1開始到創建的文件數
            %U 一個唯一的文件名,代表%u_%p_%c
            %s 備份集的號
            %t 備份集時間戳
            %T 年月日格式(YYYYMMDD)
            [Q]執行exec dbms_logmnr_d.build('Logminer.ora','file directory'),提示下標超界,怎么辦
            [A]完整錯誤信息如下,
            SQL> exec dbms_logmnr_d.build('Logminer.ora','file directory')
            BEGIN dbms_logmnr_d.build('Logminer.ora','file directory'); END;
            *
            ERROR 位于第 1 行:
            ORA-06532: 下標超出限制
            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. 運行改變后的腳本
            SQLPLUS> Connect internal
            SQLPLUS> @$ORACLE_HOME/rdbms/admin/dbmslmd.sql
            3.重新編譯該包
            SQLPLUS> alter package DBMS_LOGMNR_D compile body;
            [Q]執行execute dbms_logmnr.start_logmnr(DictFileName=>'DictFileName')提示ORA-01843:無效的月份,這個是什么原因
            [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')失敗,將導致以上錯誤
            所以解決辦法可以為
            1、Alter session set NLS_LANGUAGE=American
            2、用類似如下的方法執行
            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 艾凡赫 閱讀(400) 評論(0)  編輯 收藏 引用 所屬分類: ORACLE數據庫
            精品免费tv久久久久久久| 久久久久香蕉视频| 亚洲国产欧洲综合997久久| 国产亚洲精品久久久久秋霞| 精品国际久久久久999波多野| 7国产欧美日韩综合天堂中文久久久久| 久久精品中文字幕一区| 亚洲AV无码久久精品蜜桃| 伊人丁香狠狠色综合久久| 久久久国产99久久国产一| 久久免费线看线看| 一本久道久久综合狠狠爱| 久久se精品一区精品二区国产| 久久久久亚洲AV成人网人人网站 | 久久久精品国产免大香伊| 国产成人久久AV免费| 久久只这里是精品66| 久久免费视频观看| 日产精品久久久久久久性色| 欧美亚洲另类久久综合婷婷| 女人香蕉久久**毛片精品| 亚洲AV无码久久精品成人| 亚洲欧美成人久久综合中文网| 99久久精品国产一区二区| 精品熟女少妇a∨免费久久| 久久九九兔免费精品6| 久久久久久青草大香综合精品| 久久久久一区二区三区| 99久久er这里只有精品18| 久久久久亚洲Av无码专| 亚洲AV无码一区东京热久久| 精品久久久久久无码不卡| 亚洲а∨天堂久久精品9966| 久久综合色区| 亚洲精品99久久久久中文字幕 | 色偷偷久久一区二区三区| 精品熟女少妇AV免费久久| 无码精品久久久天天影视| 狠狠综合久久AV一区二区三区| 久久丫忘忧草产品| 日韩人妻无码一区二区三区久久|