Oracle學習筆記


CREATE SPFILE='路徑' FROM PFILE;
從PFILE創建SPFILE

CREATE PFILE='路徑' FROM SPFILE;

col 字段名 format a10
格式化屏幕顯示

v$spparameter SPFILE的參數值視圖
select name,value from v$spparameter

startup pfile=$ORACLE_HOME/dbs/inittest.ora
startup spfile=$ORACLE_HOME/dbs/spfiletest.ora
指定pfile啓動實例

spfileSID.ora->spfile.ora->initSID.ora
啓動順序

alter system set aq_tm_processes=1 scope=both;
修改SPFILE的參數值

alter system reset aq_tm_processes scope=spfile sid='*';
刪除或重置值

ALTER SYSTEM SET 命令用於更改例程參數的值。
ALTER SYSTEM SET parameter_name = parameter_value
[COMMENT 'text'] [SCOPE = MEMORY|SPFILE|BOTH]
[SID= 'sid'|'*']
其中
parameter_name:要更改的參數的名稱
parameter_value:要將參數更改爲的值
COMMENT:添加在SPFILE 中被更改的參數旁的註釋
SCOPE:確定應在內存中、在SPFILE 中還是同時在這兩個位置進行更改
MEMORY:只能在當前運行的例程中更改參數值
SPFILE:只能在SPFILE 中更改參數值
BOTH:在當前運行的例程和SPFILE 中均可更改參數值
SID:標識要使用的SPFILE 的ORACLE_SID
'sid':更改SPFILE 時使用的特定SID
'*':使用缺省SPFILE

show parameters aq_tm_processes
顯看SPFILE中的參數值

啓動過程:
shutdown->nomount->mount->open

nomount
讀取SPFILE->分配SGA->啓動後進程->打開alertSID.log文件
mount
打開控制文件
open
打開數據文件及日誌文件

STARTUP [FORCE] [RESTRICT] [PFILE=filename]
[OPEN [RECOVER][database]
|MOUNT
|NOMOUNT]
其中:
 OPEN:使用戶能夠訪問數據庫
 MOUNT:爲某些DBA 活動加載數據庫,但不允許用戶訪問數據庫
 NOMOUNT:創建SGA 並啓動後臺進程,但不允許訪問數據庫
 PFILE=parfile:允許使用非缺省參數文件配置例程
 FORCE:執行正常啓動之前終止運行的例程。
 RESTRICT:只允許具有RESTRICTED SESSION 權限的用戶訪問數據庫。
 RECOVER:在數據庫啓動時開始進行介質恢復。

startup nomount
alter database ora9i mount;
alter database ora9i open read only;

alter database ora9i open;

startup restrict
受限啓動

alter system enable restricted session;
將現有的模式改變成受限模式

ALTER SYSTEM SQL 命令也可以將數據庫設爲受限模式:
ALTER SYSTEM [ {ENABLE|DISABLE} RESTRICTED SESSION ]
其中:
 ENABLE RESTRICTED SESSION:僅允許具有RESTRICTED SESSION 權限的用
戶在以後登錄
 DISABLE RESTRICTED SESSION:禁用RESTRICTED SESSION 以允許沒有該權
限的用戶可以登錄

ALTER SYSTEM KILL SESSION 'sessionID' 命令一執行,將使後臺進程PMON 立即執行以下步驟:
 回退用戶的當前事務
 釋放所有當前持有的表或行鎖定
 釋放用戶當前保留的所有資源

SHUTDOWN [NORMAL | TRANSACTIONAL | IMMEDIATE | ABORT ]

alertSID.log 文件:記錄數據庫日常操作的信息
後臺跟蹤文件:記錄SMON、PMON、DBWn 和其它後臺進程失敗時產生的重要信息
用戶跟蹤文件:記錄出現嚴重用戶錯誤或用戶強制執行跟蹤文件時產生的重要信息

ALTER SESSION SET SQL_TRACE = TRUE


第一步:設置環境變量
第二步:準備好初始化參數文件

create database testdb
maxinstances 2
maxloghistory 5
maxlogfiles 5
maxlogmembers 5
maxdatafiles 100
datafile '$ORACLE_BASE/oradata/testdb/system01.dbf' size 200m
undo tablespace undotbs datafile
'$ORACLE_BASE/oradata/testdb/undotbs01.dbf'
size 200m autoextend on next 2048k maxsize unlimited
default temporary tablespace tempts TEMPFILE '$ORACLE_BASE/oradata/testdb/tmpts01.dbf' size

100M extent management local
character set AL32UTF8
national character set al16utf16
logfile group 1 ('$ORACLE_BASE/oradata/testdb/redo01.log') size 100m,
group 2 ('$ORACLE_BASE/oradata/testdb/redo02.log') size 100m,
group 3 ('$ORACLE_BASE/oradata/testdb/redo03.log') size 100m;

要點:
create database命令中的undo tablespace要與pfile中的參數一樣
datafile的空間不能太少
temporary tablespace的TEMPFILE參數不能少,一定要指定文件路徑
在dbs目錄下生成密碼文件,命令:orapwd file=$ORACLE_HOME/dbs/orapwtestdb password=bscy

entries=5

創建完後的腳本:
SQL>@?/rdbms/admin/catalog.sql
SQL>@?/rdbms/admin/catproc.sql
SQL>@?/rdbms/admin/catexp.sql

alter system set

control_files='/opt/ora9/oradata/testdb/control01.ctl','/opt/ora9/oradata/testdb/control02.c

tl','/opt/ora9/oradata/testdb/control03.ctl','/opt/ora9/oradata/testdb/control04.ctl'

scope=spfile;
注:control_files中的控制文件是要以逗號分隔的,且必須要是spfile的scope,不能同時修改內存。

mv control01.ctl control01.ctl.bak
mv control02.ctl control02.ctl.bak
mv control03.ctl control03.ctl.bak
mv control04.ctl control04.ctl.bak

mv control01.ctl.bak control01.ctl
mv control02.ctl.bak control02.ctl
mv control03.ctl.bak control03.ctl
mv control04.ctl.bak control04.ctl
注:如果找不到控制文件,數據庫將不能進入mount狀態,只能到達unmount狀態

ALTER DATABASE ADD LOGFILE GROUP 4

('$ORACLE_BASE/oradata/testdb/log4a.rdo','$ORACLE_BASE/oradata/testdb/log4b.rdo')  SIZE 1M;

alter system switch logfile;

alter system checkpoint;

alter system set fast_start_mttr_target = 600;

alter database add logfile member '$ORACLE_BASE/oradata/testdb/log5c.rdo' to group 5;

alter database drop logfile group 5;

alter database drop logfile member '$ORACLE_BASE/oradata/testdb/log4c.rdo';

alter database rename file '$ORACLE_BASE/oradata/testdb/log4a.rdo' to

'$ORACLE_BASE/oradata/testdb/log41.rdo'
重命名時,新的名字的文件必須要已存在

create tablespace userdata datafile '$ORACLE_BASE/oradata/testdb/userdata01.dbf' size 100M

autoextend on next 5M maxsize 500M;

create tablespace userdata datafile '$ORACLE_BASE/oradata/testdb/userdata01.dbf' size 100M

extent management local uniform size 128k;

create tablespace userdata datafile '$ORACLE_BASE/oradata/userdata01.dbf' size 100M extent

management dictionary default storage (initial 1M next 1M pctincrease 0);
默認不允許創建字典管理的表空間

create undo tablespace undo1 datafile '$ORACLE_BASE/oradata/undo01.dbf' size 40M;
只能使用DATAFILE 和EXTENT MANAGEMENT 子句

create temporary tablespace temp01 tempfile '$ORACLE_BASE/oradata/testdb/temp001.dbf' size

100M extent management local uniform size 4m

alter database default temporary tablespace temp01;
修改默認臨時表空間

alter tablespace userdata read only;

在一次性寫入 (WORM) 設備上創建只讀表空間:
1. ALTER TABLESPACE...READ ONLY
2. 使用操作系統命令將表空間的數據文件移動到只讀
3. ALTER TABLESPACE...RENAME DATAFILE

alter tablespace userdata offline;

alter tablespace userdata online;

CREATE TABLESPACE user_data
DATAFILE
'$ORACLE_BASE/oradata/userdata01.dbf' SIZE 50M
AUTOEXTEND ON NEXT 10M MAXSIZE 500M;

alter database datafile '/opt/ora9/oradata/testdb/userdata01.dbf' resize 150M

alter tablespace user_data add datafile '$ORACLE_BASE/oradata/testdb/userdata03.dbf' size

100M;

alter tablespace userdata rename datafile '$ORACLE_BASE/oradata/testdb/userdata03.dbf' to

'$ORACLE_BASE/oradata/testdb/userdata04.dbf'
重命名數據文件的步驟:
– 使表空間脫機。
– 使用操作系統命令移動或複製文件。
– 執行ALTER TABLESPACE RENAME DATAFILE 命令。
– 使表空間聯機。
– 必要時使用操作系統命令刪除該文件。

alter database rename file '$ORACLE_BASE/oradata/testdb/system01.dbf'
to '$ORACLE_BASE/oradata/testdb/system02.dbf';
因爲 SYSTEM 表空間無法脫機,您必須使用該方法移動 SYSTEM 表空間內的數據文件。
使用如下進程重命名無法脫機的表空間內的文件:
1. 關閉數據庫。
2. 使用操作系統命令移動文件。
3. 裝載數據庫。
4. 執行 ALTER DATABASE RENAME FILE 命令。
5. 打開數據庫。

drop tablespace userdata including contents and datafiles;

create table customers (cust_code varchar2(3),name varchar2(50),region varchar2(5))

tablespace users;

alter table customers move tablespace system;
將表從一個表空間移動到另一個表空間後要重新建立索引,否則查詢時會出錯。


#使用RMAN備份數據庫
sqlplus /nolog
conn /as sysdba
startup mount
alter database archivelog;
#修改爲歸檔模式
alter database open;
alter system archive log start;  
#開啓自動歸檔
archive log list

rman nocatalog
connect target /
list backupset;

backup database;
#全備份
backup incremental level=0 database;
#0級增量備份,與全備份的區別在於0級增量備份可以作爲1級增量備份的基礎,而全備份則不可以。
backup incremental level 1 database;
#1級增量備份,以0級爲基礎進行增量備份
#從Oracle 10g開始纔會單獨的備份集來備份spfile和控制文件,Oracle 9i分兩個備份集

backup database plus archivelog delete input;
備份歸檔日誌文件

backup tablespace users;
backup current controlfile;
backup database include current controlfile;

report schema;
#顯示系統信息

copy datafile ... to ...

run{
allocate channel cha1 type disk;
backup format '$ORACLE_BASE/rmanbak/full_%t'
tag full_backup_bat
database;
release channel cha1;
}


一週備份計劃
#bakl0腳本
run {
allocate channel c1 type disk;
backup
incremental level 0
format "$ORACLE_BASE/rmanbak/inc0_%u_%T"
tag monday_inc0
database;
release channel c1;
}

rman target / msglog=bakl0.log cmdfile=bakl0
rman target / msglog=bakl1.log cmdfile=bakl1
rman target / msglog=bakl2.log cmdfile=bakl2

crontab -e -u oracle
#代表每週日的23點45分執行
45 23 * * 0 rman target / msglog=bakl0.log cmdfile=bakl0
45 23 * * 1 rman target / msglog=bakl0.log cmdfile=bakl2
45 23 * * 2 rman target / msglog=bakl0.log cmdfile=bakl2
45 23 * * 3 rman target / msglog=bakl0.log cmdfile=bakl1
45 23 * * 4 rman target / msglog=bakl0.log cmdfile=bakl2
45 23 * * 5 rman target / msglog=bakl0.log cmdfile=bakl2
45 23 * * 6 rman target / msglog=bakl0.log cmdfile=bakl2

service crond restart
#重啓crontab服務

configure controlfile autobackup off/on;
show all

delete backupset 1;

backup database plus archivelog delete input;

#口令文件丟失:創建口令文件
orapwd file=orapwdbsid password=pass1234 entries=5
#entries=5代表特權用戶可以有5個

#SPFILE丟失
rman target /
startup nomount;
set dbid 2540702947
restore spfile from autobackup;
restore spfile from '$ORACLE_BASE/dbs/full_8488775.dkp';
#指定具體的備份集跟徑
shutdown immediate;
set dbid 2540702947
#於rman target /時可以看到dbid
startup

#controlfile丟失
sqlplus /nolog
shutdown abort
quit
rman
startup nomount;
restore controlfile from autobackup;
alter database mount;
recover database;
alter database open resetlogs;

#redolog file丟失
sqlplus /nolog
conn /as sysdba
shutdown immediate;
startup mount;
recover database until cancel;
alter database open resetlogs;
#可能丟失數據

#data file丟失
rman target /
report schema;
sql "alter database datafile 5 offline"
restore datafile 5;
recover datafile 5;
sql "alter database datafile 5 online";

#表空間恢復
rman target /
sql "alter tablespace users offline immediate"
restore tablespace users;
recover tablespace users;
sql "alter tablespace users online";

#非catalog方式完全恢復
sqlplus /nolog
conn /as sysdba
shutdown abort;
quit
rman target /
startup nomount;
restore controlfile from autobackup;
alter database mount;
restore database;
quit
sqlplus /nolog
conn /as sysdba
create pfile from spfile
quit
vi pfile
添加_allow_resetlogs_corruption='TURE'
sqlplus /nolog
conn /as sysdba
shutdown immediate;
startup pfile=/u01/oracle/dbs/pfile mount
alter database open resetlogs;

#基於時間點的恢復
rum{
set until time "to_date('07/01/02
15:00:00','mm/dd/yy hh24:mi:ss')"
restore database;
recover database;
alter database open resetlogs;
}

#基於備份集的SCN恢復
startup mount;
restore database UNTIL SCN 10000;
recover database UNTIL SCN 10000;
alter database open resetlogs;

#基於日誌序列的恢復
startup mount;
restore database until sequence 1 thread 1;
recover database until sequence 1 thread 1;
alter database open resetlogs;

report schema
list backup
#讀取控制文件的內容
crosscheck backup
#從物理盤上檢查備份集的狀態
delete

#Catalog mode:
#創建catalog所用表空間
sqlplus /nolog
conn /as sysdba
#如數據文件已存在則要加上reuse
create tablespace rman_ts datafile '' size 20M [reuse];
#創建RMAN用戶並授權
create user rman identified by rman default
tablespace rman_ts quota unlimited on rman_ts;
grant recovery_catalog_owner to rman;
#創建恢復目錄
rman catalog rman/rman
create catalog tablespace rman_ts;
register database;

rman target / catalog rman/rman
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章