应用环境: 我的一个表被人不小心误删除了,这时候,我不可以把整个库都恢复回去,那样太麻烦了。 所以现在我就从新到一个新库,只将这一个数据文件拷贝过来恢复。 那我们Oracle在恢复文件的时候是不可以只恢复一部分数据文件的,因为oracle 要保证数据文件
应用环境: 我的一个表被人不小心误删除了,这时候,我不可以把整个库都恢复回去,那样太麻烦了。
所以现在我就从新到一个新库,只将这一个数据文件拷贝过来恢复。
那我们Oracle在恢复文件的时候是不可以只恢复一部分数据文件的,因为oracle 要保证数据文件块头信息一致,所以如果我们要恢复部分文件的话,就得采取以下这种方法:
可以另起一个库,再把要恢复的数据文件拷贝过来,恢复。(当然不单单是该数据文件,还要包括system表空间,undo表空间)
1)另起一个库很简单,可以搞出参数文件,在参数文件中添加一行*.db_unique_name='rt'和修改控制文件路径。
$ORACLE_SID=rt sqlplus / as sysdba >startup nomount pfile='/tmp/pfile.ora'
接着控制文件怎么办呢,
2)当然我们可以将之前备份的数据文件直接恢复到我们配置的参数文件中控制文件的路径。
恢复控制文件:
rman target > restore controlfile to '/u01/app/oracle/oradata/test/rt_con01.ctl' from '/tmp/FULL_04pe7jue_1_1.bak';
那现在可以mount了。
现在是不可以open的,如果你现在open,他就会把原来的logfile 覆盖,那肯定原来的那个库会出问题。
3)我们这里要做的就是先恢复数据文件:
在rman中用到一个newname,首先确定原来的system,undo,还有要恢复的表空间文件号。
run { allocate channel di type disk; set newname for datafile 1 to '/tmp/disk1/system01.dbf'; set newname for datafile 3 to '/tmp/disk1/undotbs01.dbf'; set newname for datafile 9 to '/tmp/disk1/test_01.dbf'; restore datafile 1,3,9; }
当然你执行上面会报错,因为我们是新创建的控制文件,所以要注册一下:
rman >catalog start with '/tmp/FULL_04pe7jue_1_1.bak'
4) 然后在主库更改redo日志:
select * from v$log; GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME NEXT_CHANGE# ---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ------------------- ------------ NEXT_TIME ------------------- 1 1 75 52428800 512 2 YES INACTIVE 4215102 2014-07-26:22:18:25 4215195 2014-07-26:22:19:55 2 1 74 52428800 512 2 YES INACTIVE 4211699 2014-07-26:20:55:55 4215102 2014-07-26:22:18:25 3 1 76 52428800 512 2 NO CURRENT 4215195 2014-07-26:22:19:55 2.8147E+14
当前正在用的是group 3,那我们可以删除group1;
SYS@_connect_identifier>alter database drop logfile group 1; 数据库已更改。 SYS@_connect_identifier>alter database add logfile group 1('/u01/app/oracle/oradata/test/mredo01.log') size 60m reuse; 数据库已更改。
跟着删除group 2 :
SYS@_connect_identifier > alter database drop logfile group 2; 数据库已更改。 SYS@_connect_identifier > alter database add logfile group 2('/u01/app/oracle/oradata/test/mredo02.log') size 60m reuse; 数据库已更改。
那3就要跟着切换日志,做完全检查点了:
SYS@_connect_identifier>select * from v$log; GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME NEXT_CHANGE# ---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ------------------- ------------ NEXT_TIME ------------------- 1 1 0 62914560 512 1 YES UNUSED 0 0 2 1 0 62914560 512 1 YES UNUSED 0 0 3 1 76 52428800 512 2 NO CURRENT 4215195 2014-07-26:22:19:55 2.8147E+14 SYS@_connect_identifier>alter system switch logfile; 系统已更改。 SYS@_connect_identifier>alter system checkpoint; 系统已更改。 SYS@_connect_identifier>alter database drop logfile group 3; 数据库已更改。 SYS@_connect_identifier>alter database add logfile group 3('/u01/app/oracle/oradata/test/mredo03.log')size 60m reuse; 数据库已更改。
将备库中不用数据文件更改掉
alter database datafile 2 offline drop;
alter database datafile 4 offline drop;
alter database datafile 5 offline drop;
alter database datafile 6 offline drop;
alter database datafile 8 offline drop;
alter database datafile 10 offline drop;
6)备库更改数据文件路径和归档日志文件路径:
SYS@_connect_identifier>alter database rename file '/u01/app/oracle/oradata/test/system01.dbf' to '/tmp/disk1/system01.dbf' 2 ; 数据库已更改。 SYS@_connect_identifier>alter database rename file '/u01/app/oracle/oradata/test/undotbs01.dbf' to '/tmp/disk1/undotbs01.dbf'; 数据库已更改。 SYS@_connect_identifier>alter database rename file '/u01/app/oracle/oradata/test/test_01' to '/tmp/disk1/test_01.dbf'; 数据库已更改。 SYS@_connect_identifier>set LOGSOURCE '/tmp/disk1/arch';
7)恢复日志文件:
SYS@_connect_identifier >recover database using BACKUP controlfile until cancel; ORA-00279: 更改 4203853 (在 07/24/2014 19:57:38 生成) 对于线程 1 是必需的 ORA-00289: 建议: /tmp/disk1/arch/1_73_831746264.dbf ORA-00280: 更改 4203853 (用于线程 1) 在序列 #73 中
检查数据文件路径,日志文件路径:
SYS@_connect_identifier >select * from v$dbfile; FILE# NAME ---------- ---------------------------------------- 10 /u01/app/oracle/oradata/test/rman01.dbf 9 /tmp/disk1/test_01.dbf 8 /tmp/perstat.ora 6 /home/oracle/trans.dbf 5 /u01/app/oracle/oradata/test/example01.d bf 4 /u01/app/oracle/oradata/test/users01.dbf 3 /tmp/disk1/undotbs01.dbf 2 /u01/app/oracle/oradata/test/sysaux01.db f FILE# NAME ---------- ---------------------------------------- 1 /tmp/disk1/system01.dbf 已选择9行。
8)打开数据库,任务结束:
SYS@_connect_identifier > alter database open resetlogs; 数据库已更改。 SYS@_connect_identifier >select * from v$log; GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME NEXT_CHANGE# ---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ------------------- ------------ NEXT_TIME ------------------- 1 1 1 52428800 512 2 NO CURRENT 4203854 2014-07-27:12:39:11 2.8147E+14 2 1 0 52428800 512 2 YES UNUSED 0 0 3 1 0 52428800 512 2 YES UNUSED 0 0 SYS@_connect_identifier >

mySqlStringTypesimpactStorageAndPerformanCeaseAsfollows:1)長度,始終使用theSamestoragespace,whatcanbefasterbutlessspace-felfficity.2)varCharisvariable varcharisvariable length,morespace-morespace-morespace-effficitybuteftife buteftife butfority butfority textifforlyslower.3)

mysqlStringTypesIncludeVarChar,文本,char,Enum和set.1)varCharisVersAtileForvariable-lengthStringStringSuptoPuptOuptoPepePecifiedLimit.2)textisidealforlargetStortStorStoverStoverStorageWithoutAutAdefinedLength.3)charlisfixed-lenftenge,for forConsistentDatalikeCodes.4)

MySQLoffersvariousstringdatatypes:1)CHARforfixed-lengthstrings,2)VARCHARforvariable-lengthtext,3)BINARYandVARBINARYforbinarydata,4)BLOBandTEXTforlargedata,and5)ENUMandSETforcontrolledinput.Eachtypehasspecificusesandperformancecharacteristics,sochoose

TograntpermissionstonewMySQLusers,followthesesteps:1)AccessMySQLasauserwithsufficientprivileges,2)CreateanewuserwiththeCREATEUSERcommand,3)UsetheGRANTcommandtospecifypermissionslikeSELECT,INSERT,UPDATE,orALLPRIVILEGESonspecificdatabasesortables,and4)

toadduserInmysqleffect和securly,跟隨台詞:1)USEtheCreateUserStattoDaneWuser,指定thehostandastrongpassword.2)GrantNecterAryAryaryPrivilegesSustherthing privilegesgeStatement,usifementStatement,adheringtotheprinciplelastprefilegege.3)

toaddanewuserwithcomplexpermissionsinmysql,loldtheSesteps:1)創建eTheEserWithCreateuser'newuser'newuser'@''localhost'Indedify'pa ssword';。 2)GrantreadAccesstoalltablesin'mydatabase'withGrantSelectOnMyDatabase.to'newuser'@'localhost';。 3)GrantWriteAccessto'

MySQL中的字符串數據類型包括CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT,排序規則(Collations)決定了字符串的比較和排序方式。 1.CHAR適合固定長度字符串,VARCHAR適合可變長度字符串。 2.BINARY和VARBINARY用於二進制數據,BLOB和TEXT用於大對像數據。 3.排序規則如utf8mb4_unicode_ci忽略大小寫,適合用戶名;utf8mb4_bin區分大小寫,適合需要精確比較的字段。

最佳的MySQLVARCHAR列長度選擇應基於數據分析、考慮未來增長、評估性能影響及字符集需求。 1)分析數據以確定典型長度;2)預留未來擴展空間;3)注意大長度對性能的影響;4)考慮字符集對存儲的影響。通過這些步驟,可以優化數據庫的效率和擴展性。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Dreamweaver Mac版
視覺化網頁開發工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能