Oracle進階培訓 第5課 學習筆記

來源:互聯網
上載者:User
 

Oracle進階培訓 第5課 學習筆記本課筆記中的頁碼與《Oracle9i 資料庫管理基礎II Ed 1.1 Vol.2.pdf》對應指南:http://blog.csdn.net/magus_yang/archive/2006/10/10/1328283.aspx 作者:JackYang (JackYang.sh@gmail.com)日期:2006-10-17 本課包含多個實驗,目前還未通過上機驗證。 回顧上節課不完全介質恢複,一定要在歸檔模式下進行,不能在非歸檔模式下進行。不完全介質恢複,即使只損壞一個檔案,都要把資料檔案還原。不完全介質恢複時,控制檔案沒有損壞,就不要用原來備份的控制檔案。 redo log file,是ORACLE資料庫的一個副本。 P93基於取消的恢複聯機重做日誌,在歸檔模式下不允許備份。 P94一旦發現有聯機檔案丟失了,可以查看v$log_history;歸檔記錄序號到4748開始在聯機重做記錄檔中。 所有不完全介質恢複,開啟資料庫時都要用RESETLOGS P96假如控制檔案沒有丟失,還原的時候,就不用還原。 RECOVER database時,後面已經要加 useing backup controlfile P97誤刪除了一個資料表空間,用上節課的方法還原不行了。僅僅還原資料檔案,不還原控制檔案不行。必須用早期的控制檔案來恢複,才能恢複資料表空間。  實驗一:實驗目的:恢複被誤刪除的資料表空間1.         E:/ora01g> sqlplus /nolog 2.         SQL> connect sys/ora123 as sysdba 3.         SQL> startup 4.         SQL> archive log list 5.         SQL> select name from v$tablespace; 6.         SQL> create tablespace data1 datafile ‘e:/ora01g/oradata/db1/data1.dbf’ size 2m; 7.         SQL> create table dept1 tablespace data1 as select * from scott.dept; 8.         SQL> insert into dept1(deptno.dname) values(28,’before drop’); 9.         SQL> create tablespace data2 datafile ‘e:/ora01g/oradata/db1/data2.dbf’ size 2m; 10.     SQL> create table dept2 tablespace data2 as select * from scott.dept; 11.     SQL> insert into dept2(deptno.dname) values(28,’before drop’); 12.     SQL> select * from dept1; 13.     SQL> select * from dept2; 14.     SQL> alter database begin backup;       做一個備份       資料庫開啟的狀態下進行熱備份,必須先執行命令alter database begin backup; 把資料檔案凍結。把所有的修改不寫到資料檔案,而是寫到redo log file。 15.     SQL> host copy E:/ora01g/oradata/db1/*.dbf d:/oradata/db1/hot 16.     SQL> alter database end backup;       17.     SQL> alter system archive log current;備份結束馬上做一次強行歸檔 18.     SQL> alter database backup controlfile to ‘d:/oradata/db1/hot/con1.ctl’ reuse;       備份控制檔案       因為資料表空間被誤刪除,必須使用控制檔案來恢複       加reuse是為了覆蓋備份目錄下的原來檔案 19.     SQL> drop tablespace data1 including contents;       刪除資料表空間的時候,資料表空間中只要有一個表,就必須加上including contents,否則刪不掉資料表空間 20.     SQL> select * from dept1;       查詢失敗,因為資料表空間data1已經被刪除 21.     SQL> select * from dept2;       查詢成功,因為資料表空間data2未被刪除 22.     SQL> insert into dept2(deptno,dname) values (30,’after drop’);       刪除資料表空間後,插入一條類比資料 23.     SQL> select * from dept2; 24.     SQL> commit; 25.     SQL> alter system archive log current; 26.     SQL> show parameter background_dump_dest; 27.     SQL> show parameter user_dump_dest;E:/ora01g/oradata/db1/udump路徑下有alter_db1檔案檔案中有一行drop tablespace data1 including contents表明了刪除資料表空間data1的起始時間和結束時間。 28.     SQL> shutdown immediate不完全介質恢複必須在資料庫關閉情況下,把所有資料檔案還原,所以先關閉資料庫。 29.     正常操作,應該把壞的Database Backup以下,redo log file也要備份,這裡省了。 30.     SQL> host copy d:/oradata/db1/hot/*.dbf e:/ora01g/oradata/db1       還原所有資料檔案 31.     SQL> host copy d:/oradata/db1/hot/con1.ctl e:/ora01g/oradata/db1/con1.ctl 32.     SQL> host copy d:/oradata/db1/hot/con1.ctl e:/ora01g/oradata/db1/con2.ctl       兩個控制檔案是一樣的,所以只需要備份一個。但現在必須還原出兩個 33.     SQL> startup mount 34.     SQL> recover database until time ‘2006-10-12 18:55:20’ using backup controlfile;        去備份目錄下查看ARC歸檔檔案存在就斷行符號。歸檔檔案不存在,就要CANCEL       控制檔案的路徑是初始化參數檔案指明的。       using backup controlfile是告訴recover命令要恢複控制檔案。 35.     SQL> alter database open resetlogs; 36.     SQL> select * from dept1;       dept1恢複了 37.     SQL> select * from dept2;       before drop紀錄有,after drop紀錄沒有了 38.     SQL> select * from v$log;       sequence number恢複到了1 39.     SQL> alter system  恢複之後,要對資料庫做一次完全備份。不做完全備份,下一次資料庫再出故障,就無法恢複。因為現在的backup已經不能用了。  P99當前重做記錄檔丟失已經備份的重做記錄檔丟失沒有問題。redo logo file的內容沒有歸檔的時候丟失了。recover到某個備份的redo logo file丟失,就用CANCEL。當前是指資料庫現在正在使用的檔案。對先前備份的所有資料檔案都要還原,否則沒法做RECOVER操作。  實驗二:實驗目的:當前重做記錄檔丟失後的恢複操作1.         啟動ORACLE服務 2.         sqlplus /nolog 3.         SQL> connect sys/ora123@DB4 as sysdba       網路連接 4.         SQL> startup 5.         SQL> archive log list       確定資料庫在歸檔模式下 6.         SQL> alter database begin backup;       必須先做一個備份 7.         SQL> host copy e:/ora01g/oradata/db4/*.dbf d:/oradata/db4/hot 8.         SQL> alter database end backup; 9.         SQL> alter system archive log current;       current當前正在用的redo log file       active表示redo log file中紀錄的資訊,與資料庫緩衝區中對應的髒資料未寫入資料檔案。       inactive表示redo log file中紀錄的資訊,與資料庫緩衝區中對應的髒資料已經寫入資料檔案。 10.     SQL> alter database backup controlfile to ‘d:/oradata/db4/hot/con1.ctl’ reuse;       備份控制檔案 11.     SQL> select * from v$log; 12.     SQL> shutdown immediate;關閉資料庫之後,刪除ora01g/oradata/db4/路徑下的REDO01A和REDO01B 13.     SQL> startup mount; 14.     SQL> alter database clear logfile group 1;       REDO01A和REDO02B兩個redo log file被重建,但是空的。       重建status處於inactive狀態的redologfile。 15.     SQL> alter database open; 16.     SQL> select * from v$log; 17.     SQL> shutdown immediate;       關閉資料庫之後,類比故障,把當前使用的REDO03A和REDO03B刪掉。 18.     SQL> startup mount; 19.     SQL> alter database clear logfile group 3;       無法開啟 20.     SQL> host copy d:/oradata/db4/hot/*.dbf e:/ora01g/oradata/db4還原所有資料檔案 21.     SQL> recover database until cancel;不用控制檔案的情況下,recover一下       48號檔案是剛才沒有歸檔的       所以要恢複48號檔案的時候,要打CANCEL       因為當前的記錄檔沒有歸檔,所以CANCEL 22.     SQL> alter database open resetlogs; 23.     SQL> select * from scott.dept; 24.     SQL> select name from v$controlfile; 25.     SQL> select name from v$datafile;   實驗三:實驗目的:通過網路連接訪問ORACLE執行個體1.         SQL> @?/rdms/admin/utlsampl       建立scott資料庫 2.         sqlplus /nolog 3.         SQL> connect scott/tiger@DB4       顯示ERROR 訪問 PROFILE 4.         SQL> select * from dept;       查詢失敗 5.         SQL> select * from emp;       查詢失敗 6.         SQL> connect system/ora123 7.         SQL> @?/sqlplus/admin/pupbld建立profile 8.         SQL> connect scott/tiger@DB4       串連成功 9.         SQL> exit退出  實驗四:實驗目的:通過環境變數預設串連1.         set ORACLE_SID_DB4 2.         sqlplus /nolog 3.         connect sys/ora123 as dba   實驗五:實驗目的:配置ORACLE網路連接,配置分2部分,一部分是用戶端配置,一部分是服務端配置oracle安裝目錄下,由network/admin下有listener.oranetwork/admin/sample 路徑下有一個listener.ora的sample檔案,但這個檔案不用。 可以用老師提供的listener.ora的sample檔案,配置在服務端。檔案中LISTENER是listener的名稱。ORACLE服務端,可以1個或多個listener.版本不同都可以。10g可以偵聽9i請求,反之亦然。 從oracle9i開始SID_LIST_LISTENER是可有可無的。有這段實現了靜態註冊。上面是LISTNER1,那麼下面就是SID_LIST_LISTENER1 動態註冊,只要資料庫啟動之後,在1分鐘以後,資料庫會自動到LISTENER上去註冊。 TNSNAMES配置在ORACLE用戶端oracle安裝目錄下network/admin路徑下的TNSNAMES檔案可以參考老師提供的sample檔案 初始化參數檔案initdb1中和網路連接有關的兩行service_names=’DB1’instance_name=’DB1’oracle9i之後版本一定要有這兩行,才能實現動態註冊。 另外,服務中一定要有TNSlistener服務啟動。關掉這個服務以後,SQL> connect sys/ora123@DB4 as sysdba 會顯示no listener的錯誤 1.         lsnrctl2.         lsnrctl>start凡是靜態註冊,狀態都是UNKNOWN。因為靜態註冊,資料庫沒啟動,都可以註冊。關閉用命令LSNRCTL> stop3.         LSNRCTL> service4.         LSNRCTL> status5.         LSNRCTL> quit oracle安裝目錄的network/admin目錄下還有一個sqlnet.ora檔案檔案中NAMES.DIRECTORY_PATH=(TNSNAMES)為了告訴oracle 名字解析的方法 > tnsping DB1此命令用來驗證是否能進行遠端連線。  實驗六:實驗目的:遠端連線資料庫1.         sqlplus /no log 2.         SQL> connect sys/ora123@DB1 as sysdba       顯示 an idle instance表示資料庫未開啟,要用startup命令開啟資料庫 3.         SQL> startup 4.         SQL> select * from v$log; 遠端資料庫檔案相關的就是三個檔案,一條命令。  listener.ora和TNSNAMES.ora檔案中的HOST不能填LOCALHOST或127.0.0.1,必須填IP地址或機器名,機器名不能帶減號或空格。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.