資料庫db_files引數增大怎麼辦
資料庫的資料檔案數(200)達到了資料庫定義的引數db_files的值,而原本需要使用alter system可以修改這個引數,但是因為限制該引數的maxdatafiles值(由控制檔案定義)儀200,故要想改大db_files引數值,需要重建控制檔案,下面是我個人根據實驗總結的操作過程。
一、引數察看
$sqlplus /nolog
conn / as sysdba
SQL> show parameter db_files;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_files integer 200
由此可看出db_files值為200,如果資料庫中資料檔案數達到或超過200,就需要更改該引數了。
更改db_files有兩種情況:
1, 如果控制檔案中定義的maxdatafiles以及系統允許開啟的檔案數值大於200,則可以透過alter方式來修改db_files的值
2, 如果控制檔案中maxdatafiles值等於200,則需要重建控制檔案來修改maxdatafiles值。
察看maxdatafiles方法
SQL>alter database backup controlfile to trace;
到$ORACLE_BASE/admin/db_name/udump下面查詢最新生成的trc檔案
$grep –i MAXDATAFILES boss_ora_4310.trc
MAXDATAFILES 200
MAXDATAFILES 200
系統允許開啟檔案數可用ulimit –a察看
$ulimit –a
open files (-n) 1024
二、修改步驟
1,生成控制檔案建立指令碼
SQL>alter database backup controlfile to trace;
在$ORACLE_BASE/admin/db_name/udump目下新生成的trc檔案oracle/admin/boss/udump/boss_ora_4310.trc
根據上述檔案建立控制檔案生成指令碼recreate_control.sql
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "BOSS" NORESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 300 修改MAXDATAFILES值
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/oracle/oradata/boss/redo01.log' SIZE 50M,
GROUP 2 '/oracle/oradata/boss/redo02.log' SIZE 50M,
GROUP 3 '/oracle/oradata/boss/redo03.log' SIZE 50M
-- STANDBY LOGFILE
DATAFILE
'/oracle/oradata/boss/system01.dbf',
'/oracle/oradata/boss/undotbs01.dbf',
'/oracle/oradata/boss/sysaux01.dbf',
'/oracle/oradata/boss/users01.dbf',
'/oracle/oradata/boss/example01.dbf'
CHARACTER SET ZHS16GBK
;
2,關閉資料庫
SQL>shutdown
3, 備份原有控制檔案,刪除原有控制檔案
備份控制檔案
cd /oracle/oradata/boss/
cp control01.ctl control01.ctl.0520
cp control02.ctl control02.ctl.0520
cp control03.ctl control03.ctl.0520
刪除控制檔案
rm control0*.ctl
4, 建立新的控制檔案
$sqlplus /nolog
SQL>conn / as sysdba
SQL>@ oracle/admin/boss/udump/recreate_control.sql
ORACLE instance started.
Total System Global Area 268435456 bytes
Fixed Size 1218892 bytes
Variable Size 75499188 bytes
Database Buffers 188743680 bytes
Redo Buffers 2973696 bytes
Control file created.
5,使用控制檔案恢復
SQL> RECOVER DATABASE USING BACKUP CONTROLFILE
ORA-00279: change 567684 generated at 05/15/2010 00:19:32 needed for thread 1
ORA-00289: suggestion :
/oracle/flash_recovery_area/BOSS/archivelog/2010_05_15/o1_mf_1_3_%u_.arc
ORA-00280: change 567684 for thread 1 is in sequence #3
Specify log: {=suggested | filename | AUTO | CANCEL}
/oracle/oradata/boss/redo01.log
ORA-00310: archived log contains sequence 2; sequence 3 required
ORA-00334: archived log: '/oracle/oradata/boss/redo01.log'
SQL> RECOVER DATABASE USING BACKUP CONTROLFILE
ORA-00279: change 567684 generated at 05/15/2010 00:19:32 needed for thread 1
ORA-00289: suggestion :
/oracle/flash_recovery_area/BOSS/archivelog/2010_05_15/o1_mf_1_3_%u_.arc
ORA-00280: change 567684 for thread 1 is in sequence #3
Specify log: {=suggested | filename | AUTO | CANCEL}
/oracle/oradata/boss/redo02.log
Log applied.
Media recovery complete.
這裡恢復要使用redo線上日誌,需要逐個嘗試,直到介質恢復成功。
6,resetlogs方式啟動資料庫
SQL> ALTER DATABASE OPEN RESETLOGS;
Database altered
7,恢復臨時表空間
SQL> ALTER TABLESPACE TEMP ADD TEMPFILE '/oracle/oradata/boss/temp01.dbf'
2 SIZE 20971520 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
Tablespace altered.
8,修改引數
SQL> show parameter db_files;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_files integer 200
SQL> alter system set db_files=250 scope=spfile;
System altered.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 268435456 bytes
Fixed Size 1218892 bytes
Variable Size 75499188 bytes
Database Buffers 188743680 bytes
Redo Buffers 2973696 bytes
Database mounted.
Database opened.
SQL>show parameter db_files
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_files integer 250
SQL> exit
至此db_files引數修改工作完成
當然,如果控制檔案損壞或丟失,也可以使用這種方法來恢復資料庫。
一、引數察看
$sqlplus /nolog
conn / as sysdba
SQL> show parameter db_files;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_files integer 200
由此可看出db_files值為200,如果資料庫中資料檔案數達到或超過200,就需要更改該引數了。
更改db_files有兩種情況:
1, 如果控制檔案中定義的maxdatafiles以及系統允許開啟的檔案數值大於200,則可以透過alter方式來修改db_files的值
2, 如果控制檔案中maxdatafiles值等於200,則需要重建控制檔案來修改maxdatafiles值。
察看maxdatafiles方法
SQL>alter database backup controlfile to trace;
到$ORACLE_BASE/admin/db_name/udump下面查詢最新生成的trc檔案
$grep –i MAXDATAFILES boss_ora_4310.trc
MAXDATAFILES 200
MAXDATAFILES 200
系統允許開啟檔案數可用ulimit –a察看
$ulimit –a
open files (-n) 1024
二、修改步驟
1,生成控制檔案建立指令碼
SQL>alter database backup controlfile to trace;
在$ORACLE_BASE/admin/db_name/udump目下新生成的trc檔案oracle/admin/boss/udump/boss_ora_4310.trc
根據上述檔案建立控制檔案生成指令碼recreate_control.sql
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "BOSS" NORESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 300 修改MAXDATAFILES值
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/oracle/oradata/boss/redo01.log' SIZE 50M,
GROUP 2 '/oracle/oradata/boss/redo02.log' SIZE 50M,
GROUP 3 '/oracle/oradata/boss/redo03.log' SIZE 50M
-- STANDBY LOGFILE
DATAFILE
'/oracle/oradata/boss/system01.dbf',
'/oracle/oradata/boss/undotbs01.dbf',
'/oracle/oradata/boss/sysaux01.dbf',
'/oracle/oradata/boss/users01.dbf',
'/oracle/oradata/boss/example01.dbf'
CHARACTER SET ZHS16GBK
;
2,關閉資料庫
SQL>shutdown
3, 備份原有控制檔案,刪除原有控制檔案
備份控制檔案
cd /oracle/oradata/boss/
cp control01.ctl control01.ctl.0520
cp control02.ctl control02.ctl.0520
cp control03.ctl control03.ctl.0520
刪除控制檔案
rm control0*.ctl
4, 建立新的控制檔案
$sqlplus /nolog
SQL>conn / as sysdba
SQL>@ oracle/admin/boss/udump/recreate_control.sql
ORACLE instance started.
Total System Global Area 268435456 bytes
Fixed Size 1218892 bytes
Variable Size 75499188 bytes
Database Buffers 188743680 bytes
Redo Buffers 2973696 bytes
Control file created.
5,使用控制檔案恢復
SQL> RECOVER DATABASE USING BACKUP CONTROLFILE
ORA-00279: change 567684 generated at 05/15/2010 00:19:32 needed for thread 1
ORA-00289: suggestion :
/oracle/flash_recovery_area/BOSS/archivelog/2010_05_15/o1_mf_1_3_%u_.arc
ORA-00280: change 567684 for thread 1 is in sequence #3
Specify log: {
/oracle/oradata/boss/redo01.log
ORA-00310: archived log contains sequence 2; sequence 3 required
ORA-00334: archived log: '/oracle/oradata/boss/redo01.log'
SQL> RECOVER DATABASE USING BACKUP CONTROLFILE
ORA-00279: change 567684 generated at 05/15/2010 00:19:32 needed for thread 1
ORA-00289: suggestion :
/oracle/flash_recovery_area/BOSS/archivelog/2010_05_15/o1_mf_1_3_%u_.arc
ORA-00280: change 567684 for thread 1 is in sequence #3
Specify log: {
/oracle/oradata/boss/redo02.log
Log applied.
Media recovery complete.
這裡恢復要使用redo線上日誌,需要逐個嘗試,直到介質恢復成功。
6,resetlogs方式啟動資料庫
SQL> ALTER DATABASE OPEN RESETLOGS;
Database altered
7,恢復臨時表空間
SQL> ALTER TABLESPACE TEMP ADD TEMPFILE '/oracle/oradata/boss/temp01.dbf'
2 SIZE 20971520 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
Tablespace altered.
8,修改引數
SQL> show parameter db_files;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_files integer 200
SQL> alter system set db_files=250 scope=spfile;
System altered.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 268435456 bytes
Fixed Size 1218892 bytes
Variable Size 75499188 bytes
Database Buffers 188743680 bytes
Redo Buffers 2973696 bytes
Database mounted.
Database opened.
SQL>show parameter db_files
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_files integer 250
SQL> exit
至此db_files引數修改工作完成
當然,如果控制檔案損壞或丟失,也可以使用這種方法來恢復資料庫。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29119536/viewspace-1117951/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [Q]怎麼檢視資料庫引數 zt資料庫
- mysql無法建立資料庫怎麼辦MySql資料庫
- 資料庫Hang住怎麼辦 - HANGANALYZE資料庫
- 網站連線資料庫怎麼辦網站資料庫
- MySQL資料庫引數MySql資料庫
- 資料庫mysql儲存遇到禁用怎麼辦?資料庫MySql
- mysql建立資料庫報錯了怎麼辦MySql資料庫
- 如果資料庫日誌已滿,怎麼辦?資料庫
- 網站資料庫配置失敗怎麼辦網站資料庫
- 網站資料庫老是錯誤怎麼辦?網站資料庫
- 網站搬家資料庫錯誤怎麼辦?網站資料庫
- 調整資料庫引數資料庫
- 【資料庫資料恢復】SQL server資料庫被加密怎麼辦?如何恢復?資料庫資料恢復SQLServer加密
- 資料庫Hang住怎麼辦 - HANGANALYZE[final]資料庫
- 請教,資料庫不支援事務怎麼辦?資料庫
- 網站資料庫連線錯誤怎麼辦?網站資料庫
- 網站無法連線資料庫怎麼辦?網站資料庫
- 網站資料庫連線失敗怎麼辦網站資料庫
- 正式上崗前的準備:怎麼檢視資料庫引數配置資訊資料庫
- 資料庫同步 Elasticsearch 後資料不一致,怎麼辦?資料庫Elasticsearch
- 顯示資料庫所有引數資料庫
- Oracle 資料庫引數調整Oracle資料庫
- JSP中讀資料庫顯示為“??”怎麼辦?JS資料庫
- 帝國cms連線不上資料庫怎麼辦資料庫
- 織夢cms連線資料庫失敗怎麼辦資料庫
- 網站程式連線資料庫失敗怎麼辦?網站資料庫
- 網站出現資料庫連線錯誤怎麼辦?網站資料庫
- 上網站無法連線資料庫怎麼辦?網站資料庫
- 網站資料庫連線時錯誤怎麼辦?網站資料庫
- 帝國cms資料庫連線不上怎麼辦資料庫
- 為SQL Server資料庫傳陣列引數的變通辦法SQLServer資料庫陣列
- 天翼雲RDS資料庫如何修改資料庫引數資料庫
- 資料庫易混淆引數名以及引數檔案啟動資料庫到nomount狀態資料庫
- 私人資料不想要怎麼辦?
- DM7修改資料庫引數資料庫
- postgresql資料庫重要引數說明SQL資料庫
- Mysql 5.5 設定資料庫引數MySql資料庫
- MySQL 5.7資料庫引數優化MySql資料庫優化