OCP笔记部分整理-学习参考
? database
2.? instance
3.? session
4.? process
5.? table
6.? index?
7.? transaction (事務)
8.? lock
9.? cursor
10.? awr(auto workload repository)
11.? service
12.? data guard
13.? rac
查詢服務器主機名:
select host_name from v$instance;
查詢服務器IP
select sys_context ('userenv','ip_address') from dual;
創建或配置數據庫:dbca
net manager 調用:netmgr
emca創建數據庫
手動創建數據庫:emca -config dbcontrol db -repos create
1\database:
查看控制文件:
select * from v$controlfile;
查看數據文件:
select * from dba_data_files;
數據文件不包括臨時文件
日志文件:
select * from v$log;
select * from v$logfile
切換日志文件:
alter system switch logfile;
參數文件:
(server parameter file)spfile
show parameter spfile
口令文件:password file?
select * from v$pwfile_users
重要
2\instance:
oracle 五大進程:
select * from v$process
? 1.pmon( process monitor)
? 2.smon(system monitor)
? 3.dbwr(database write)
? 4.lgwr(log write)
? 5.ckpt(checkpoint)
oracle 啟動的幾個狀態:
正常啟動順序:
啟動實例:instance ,讀取系統參數文件
讀取控制文件
打開數據庫
nomount -- mount-- open
startup? open
startup force (強制重啟,模仿停電試驗)
shutdown == shutdown normal
shutdown immediate
shutdown abort(停電類似)==startup force
shutdown transactional
創建表空間:
關于sys用戶參數:
show parameter O7
里面有一個屬性為false 如果更改為true就可以不需要as sysdba 連接。
os認證:
關于登錄的"/ ",操作系統認證,省缺狀態下只可以在數據服服務器生效。
1、windows屏蔽操作系統認證:去掉ora_dba組里的相對應用戶
即可。
2、更改E:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora下的文件
關于服務命名與監聽:
show parameter service_name
C:\>tnsping orcl 解釋服務命名
更改數據文件大小:
SQL> alter database datafile 9 resize 100m;
ntfs 最大的數據文件大小為32GB
更改數據文件大小自動擴展:
SQL>alter database datafile 9 autoextend on next 5m;每次增加5m
表空間可以有多個數據文件:
SQL> alter tablespace ming_tbs add datafile 'E:\ORACLE\ORADATA\MING_TBS2.DBF' si
ze 2048m;
表空間脫機:
alter tablespace test2 offline;
alter tablespace test2 onine;
表空間只讀:
alter tablespace test2 read only
更改為online
alter tablespace ming_tbs read write
刪除表空間:
drop tablespace test;
刪除表空間的同時刪除表的內容與數據文件
drop tablespace test including contents and datafile;
表空間重命名:
alter tablespace test2 rename to test;
表重命名:
rename table1 to table_1;
清空回收站:purge recyclebin;
查看數據庫用戶:
select * from dba_users;
修改數據庫默認表空間,表間是由數據段組成
alter database default tablespace test;
alter user test default tabledpace test;
一個用戶能使用多少表空間不是通過權限控制quota
quota unlimited?
臨時表空間如臨時文件,虛擬內存,linux下的交換表空間
創建臨時表空間:
create temporary tablespace temp1 tempfile 'e:\oracle\tem_f.dbf' size 10m
創建用戶同時指定其臨時表空間:
create user test identified by test default tablespace test temporary tablespace temp1 quota 10m on test;
刪除表空間指定的數據文件:
alter tablespace test drop datafile 5;
用戶:
創建用戶時指定下次登錄時需改修密碼:
cteate user test identified by test5 default tablespace test temporary tablespace temp1 password expire(過期);
鎖定用戶:
create user test identified by test5 default tablespace test temporary tablespace temp1 account lock;
創建外部驗證用戶:
create user "pgm/pgm-pc" identified externally;(操作系統用戶驗證)用戶一定要用雙引號,且要大寫。
權限(privilege):
1、系統權限system
SQL>select * from system_privilege_map (系統權限表)
SQL>select * from dba_sys_privs where grantee='test'? 查看一個用戶擁有的系統權限(重要,常用)
SQL>grant create any table to test;授予可以在其它表空間創建表,注意此權限較大,如test用戶可以創建test1用戶的表。
create any table?
unlimited tablespace?
drop any table?
2、對象權限 object
SQL>select * from dba_tab_privs where grantee ='test' ;查看用戶擁有的對象(表)權限 (重要,常用)
授予用戶對表t的相關權限:
SQL>grant select ,insert,updata,delete on t to test;
SQL>grant all on test1 to test? ;把關于test1所有的對象權限授予給test用戶。
SQL>grant all on test1 to test grant option (實現權限傳遞)
收回權限revoke:
SQL>revoke all on test1 from test?
oracle 默認是不能權限傳遞
角色(role):
SQL>select * from dba_roles;
SQL>create role role_test;創建角色
SQL>grant create table,create session,create view to role_test;授予角色上述權限
查看某個角色擁有哪些權限:
SQL>select * from dba_role_privis where grantee='orle_test'
授予用戶某個角色:
SQL>grant role_test to test;?
控制用戶資源使用:
profiles 默認:用戶密碼輸錯10次被鎖定
創建用戶時指定默認profiles
SQL>create user test identified by test profile default;?
修改用戶profile
SQL>alter user test3 profile profile_test;
指定profiles 時需要注意設置以下參數為true時才可生效:
show parameter limit
SQL>alter system set resource_limit=true;
例外:set time on?
set time off
關于SCHEMA.
SQL>grant SELECT_GATALOG_ROLE to test1;
授予查看視圖等 權限
查看某個用戶所擁有的表:
select * from dba_tables where owner = 'MING'
修改表的列的屬性:
SQL>alter table tt modify emp varchar2(10);
增加列:
SQL>alter table tt add d int;
增加表約束:
alter table emp add constraint pk1 primary key (id);
主鍵約束與唯一約束區別:一個可以為空,一個不可以為空
創建check約束(男代表1,女代表0):
SQL>alter table emp add constraint chk_t check (sex in ('0','1'));
創建check約束,sal在1500與100000之間數值。
SQL> alter table tt add constraint chk_tt check (sal >= 1500 and sal <=100000);
添加非空約束:
alter table tt add constraint not_null check (id is not null);
not null 為列級約束,
主鍵,外鍵,唯一,檢查約束都為表級約束。
查看某個用戶的約束;
select * from dba_constraints where owner = 'MING'
視圖(view):
查看某個用戶下擁有的視圖:
select * from dba_views where owner = 'MING'
復雜視圖與簡單視圖(可在視圖里插入數據操作)
創建一個復雜視圖:
create view or replace v$empd as?
select t1.empno,t1.ename,t2.dname,t1.job,t1.hiredate,t1.sal from emp t1 join dept t2 on (t1.deptno=t2.deptno)
創建視圖同時指定為只讀:
create view v$v1 as?
select * from emp with read only
索引(index)
1、b-tree (balance)平衡樹
2、bitmap
查看某用戶下的索引:
select * from dba_indexes where owner = 'SCOTT'
研究oracle時用的更改 session命令:
SQL>alter session set events 'immediate trace name treedump level 12190(對象編號)'
drop table tt purge;刪除一個表不放到回收站里
plsql:
glogin.sql 初始化文件添加以下:
set serveroutput on?
procedure
第四天 錄像16\17先跳過,找一些關于PL/SQL相關資料再補一下, 42分
關于帳戶安全性:
授予表為公共表:
?grant all on emp to public;
撤銷操作:
revoke all on emp from public;
revoke execute on utl_file from public; 收回執行權限
關于審計:
show parameter audit? 查看上述參數,windows與linux不同
啟用審計,修改下述參數:
alter system set audit_trail=db_extended scope=spfile;
1、權限審計
創建審計:
audit? create session 所有用戶都審計
audit create session by ming? 只審計ming用戶
刪除審計:
noaudit create session
查看審計權限視圖:
select * from dba_priv_audit_opts;?
審計日志視圖:
select * from dba_audit_trail
2、對象審計:
audit select on ming.emp;
audit select on ming.emp by session;默認? 針對同一個session
audit select on ming.emp by access whenever successfull
3、語句審計?
audit table by ming審計用戶ming關于表的操作
查看表的審計日志:
select * from dba_obj_audit_opts;?
4、oracle提供的審計包:
audit all? by emp;
查看日志:
select * from dba_stmt_audit_opts;
audit all on default; 審計所有,只對創建其之后的對象生效
查看日志:
select * from all_def_audit_opts;
5、例外:
創建一個審計策略:
execute
dbms_fga.add_policy(
object_schema=>'ming',
object_name=>'emp',
policy_name=>'audit_emp',
audit_condition=>'empno=7900',
audit_column=>'ename',
handler_schema=>'secure',
enable=>true,
statement_types=>'select'
);
關于服務命名:
配置時主要看lsnrctl里面的狀態:ready 的肯定是能連接,unknow未必能連接。
查看數據庫是共享還是專用模式:
show parameter shared
如果shared_servers為大于0說明支持共享模式
數據庫默認連接類型選擇共享模式,如果共享與專用共存時。
研究進程時用的查看sid
selelct sid from v$mystat where rownum=1;
select server from v$session where sid ='??';
關于無效對象處理:
查看無效對象:
select * from dba_objects where status='INVALID'
HWM:(high water mark) 高水位
分析sql語句執行:
SQL>set autotrace traceonly
SQL>analyze table t1 compute statistics ;分析表
修改索引:
alter index idx_t rebuild;重建索引
alter index idx_t rebuild online; 在線重建索引,不影響insert updata delete 執行。
sql>exec dbms_stats.gather_table_stats('sys','T1');
關于上述包dbms_stats 收集統計信息
undo表空間
創建undo表空間
create undo tablespace undo002 datafile ' e:\oracle\datafile\undo002.dbf' size 100m autoextend off next 20m;
查看實例使用哪一個undo表空間:
SQL>show parameter undo
查看undo段:
select * from dba_rollback_segs;
select * from v$undostat
每十分鐘紀錄一個
select * from v$sql;
block 阻塞
SQL> show parameter db_block
關于鎖:lock
select * from v$lock
select * from v$locked_object? 鎖的對象
TX:ROW 模式為:6 排他的 行級鎖
TM:TABLE? 3 表級鎖共5種:RS、 RX、 S、 SRX、 X?
SQL>lock table t in exclusive mode ; x鎖模式,死鎖
注:請不要手動隨便加鎖,數據庫會自動所需加鎖
deadlock:
指的是應用程序里的死循環等
收集統計信息:
select * from dba_scheduler_jobs?? 每晚十點系統的一個GATHER_STATS_JOB 任務
select * from dba_scheduler_window_groups??
查看等待session :
select * from V$session_Wait
select * from v$session_wait_history order by wait_time desc
關于監控::
ash:active session history? 記錄session紀錄,每秒紀錄一次,插入一次紀錄。em里面的ash報告
select * from v$active_session_history;
命令下創建ash報告:
SQL> @E:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\ashrpt.sql
awr:auto workload repository
awr的表屬于sys用戶下,存儲在SYSAUX表空間下面
每一小時收集一次信息,保留7天,以下表可以查看:
select * from dba_hist_wr_control
修改其設置(但一般不建議修改):
SQL>exec dbms_workload_repository.modify_snapshot_settings(retention=>1440,interval=>30);
命令下創建awr報告:
SQL> @E:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\awrrpt.sq
addm: auto database dia
數據自動診斷建議
命令下創建addm報告:
SQL> @E:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\addmrpt.sq
查看表的大小:
SQL>select bytes/1024/1024 m from dba_segments where segment_name='T1';
創建表在指定的表空間中:
SQL>create table t1 tablespace test as select * from dba_objects;
SQL>insert into t1 select * from t1;
關于度量metric:
select * from dba_outstanding_alerts
查看度量警告
啟用管理顧問參數:
SQL> show parameter statistics
statistics_level? string TYPICAL? 當為typical時啟用
查看下述建議視圖:
select * from v$statistics_level
關于備份:
1、完全脫機備份
2、部分脫機備份(只針對表空間操作)
3、聯機部分備份 (可以備份system表空間)
4、rman備份(聯機完全備份)
5、邏輯備份(exp/imp expdp/impdp)
sql>show parameter db_reco;(db_recover)
查看歸檔備份日志的參數路徑信息,包括其大小:默認為2g
db_recovery_file_dest_size? 關于經常出現歸檔日志超過2G大小問題
scn : system change number??
select dbms_flashback.get_system_change_number from dual;
select file#,checkpoint_change# from v$datafile;
select file#,checkpoint_change# from v$datafile_header;
兩個作對比查看檢查點是否一致,如不是文件需恢復。
更改某個表空間為熱備份:
alter tablespace users begin backup; (更改后可以聯機拷文件)
alter database begin backup; 更改所有表空間為熱備
查看:
select * from? v$backup; 主要紀錄起始檢查點
拷文件完后:
alter tablespace users end backup;
注:上述聯機熱備產生的日志比其它備份模式較大
如果出現控制文件需恢復,把舊的控制文件拷來使用需添加以下命令:
sql>recover database using backup controlfile;(申明控制文件不是最新 的)
sql>recover database using backup controlfile until cancel;
sql>alter database open resetlogs; 把 scn折斷,當scn有損失時使用,即當聯機日志存在時使用。否則用noresetlog
關于日志文件的備份恢復
添加一組日志文件:
SQL> alter database add logfile 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO04.LOG' size 50m;
(默認)最多只可以有16組日志文件,最少需要2組。
SQL> alter database drop logfile group 4; 一個group 可能會有多個member;
當日志文件損壞后,可以新建一組后使用以上命令刪除原來的
給日志文件加一個鏡像:
SQL> alter database add logfile member 'E:\oracle\product\10.2.0\oradata\orcl\log\redo03.log' to group 3;
當前聯機的不能刪除
刪除其中一個member:
SQL> alter database drop logfile member 'E:\oracle\product\10.2.0\oradata\orcl\redo01.log' ;
關于RMAN備份:
RMAN>backup archivelog all;?? 備份歸檔日志
檢查歸檔日志:
rman>crosscheck archivelog all;
刪除過期沒用的歸檔日志:
rman>delete expired archivelog all;
RMAN>backup as compressed backupset full database ;
完全備份,壓縮備份集
RMAN>restore database from TAG=TAG201099342432;
使用指定備份集來恢復
SQL>grant connect,resource,recovery_catalog_owner to rman;
授予上述角色給新建用戶RMAN
RMAN>delete noprompt backup;
刪除備份,磁盤上的文件同時刪除。
關于增量備份:
RMAN>backup as compressed backupset incremental level=0 database;
0級備份(完全備份)
RMAN>backup as compressed backupset incremental level=2 database;
2級備份,差異備份
RMAN>backup as compressed backupset incremental level=1 database;
1級備份,再把前面的2級備份覆蓋備份一次,同級別的備份不覆蓋
RMAN>list backup of database summary;
顯示詳細的備份信息
累積備份,關鍵字:cumulative,同一級別備份將覆蓋:
RMAN>backup as compressed backupset incremental level=1? cumulative database;
創建腳本:
rman>create script sc1{
delete noprompt backup;
backup as compressed backupset full database;
backup archivelog all;
}
查看腳本,本地腳本:
rman>list script name
執行腳本:
rman不支持直接執行腳本,需放在run里面:
新建一個sql,把以下內容輸入:
run{execute script sc1};
當出現有數據塊損壞時:
rman>backup validate database ;
檢驗備份,不生成備份文件,與下述命令一樣作用:
c:\>dbv file ='e:\oracle\oradata\test.dbf'
sql>select * from v$database_block_corruption
檢驗完成后,查看有那一些壞塊
塊恢復操作(只有rman才可以):
rman>blockrecover datafile 5 block 275;
恢復剛才查詢到那一個數據文件的那一個塊
關于flashback database閃回(不完全恢復)
1.檢查是否開啟flashback:
sql>select flashback_on from v$database;
2.如沒有開啟需在mount狀態下執行:
sql>alter database flashback on;
閃回表需在mount 狀態下執行:
SQL> flashback database to timestamp to_timestamp('2012/06/18 22:04:58','yy/mm/dd hh24:mi:ss');
閃回完成后需使用resetlog 打開數據庫
關于flashback? drop;主要針對表刪除后閃回
flashback drop 不能閃回system表空間里面的對象
sql>flashback table t to before drop;
sql>show parameter recyclebin ;默認上述參數開啟才可以支持閃回表
查看回收站:
sql>select * from dba_recyclebin;
sql>flashback table t to before drop rename to t1;
如果遇到重名時使用rename
sql>purge table t ; 清除回收站里的表t
sql>purge tablespace users ;清除回收站里的user表空間
sql>purge recyclebin;清空回收站
閃回到某一個scn:
sql>select * from t as of scn 84391414;
sql>flashback table t to scn 34242342;
注:sys用戶不支持閃回。
例外:
新建一個數據文件:
SQL> alter database create datafile 'C:\oracle\product\10.2.0\oradata\orcl\tbs_test.dbf';
第八天錄像1:
http://tomszrp.itpub.net/post/11835/487501
關于asm
1、asmtool管理工具
2、創建asm儲存:
C:\>asmtool -create E:\asm\disk1 1024
增加以下服務css:
C:\>e:
E:\>cd E:\oracle\product\10.2.0\db_1\BIN
E:\oracle\product\10.2.0\db_1\BIN>localconfig.bat add
第八天錄像3-5 跳過
使用oracle 全球支持特性:
select * from v$nls_valid_values?
查看支持語言視圖
windows注冊表里:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_ORADB10GDB\NLS_LANG:
語言,版塊,字符集,排序
LANGUAGE_TERRITORY_CHARACTERSET? SORT?
alter session set nls_sort ='對應的sort值'
alter session set nls_language='對應的language值'
alter ssession set nls_date_format='yyyy/mm/dd hh:mi:ss';? 更改日期格式
注:上述只對當前窗口生效
修改日期格式:
alter system set nls_format='yyyy/mm/dd hh24:mi:ss' scope=spfile;
優先級最低,默認以版塊來作日期格式,再到上述參數,如果注冊表添加以下,則以下述格式優先
在注冊表編輯
添加以下鍵值:nls_date_format???? yyyy-mm-dd hh24:mi:ss
在監聽里增加安裝機制:
change_password :
啟用上述密碼后,oracle10g是不起作用的,默認可以通過os認證,
要去除os認證,那么需要在listener.ora文件中添加:
LOCAL_OS_AUTHENTICATION_[listener name] = OFF
重啟監聽后生效
配置遠程監聽:
在tnsnames.ora增加以下:
LISTENER_R =
????? (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.24)(PORT = 1521))
再設置以下相關參數,主要使用在rac環境中的負載均衡:
sql>show parameter remote;
sql>alter system set remote_listener=listener_r;需指定相關參數
停止遠程數據庫監聽(在上述配置的數據操作):
LSNRCTL> stop listener_r
關于em修復:
c:\>emctl status dbconsole
c:\>emctl start dbconsole
em重建:emca -config dbcontrol db -repos recreate
第九天 錄像6? :
關于使用em建立自動作業:
打開em---管理----數據庫調度程序----作業
通過上述創建相關作業實現自動運行;
注意:windows里:OracleJobSchedulerORCL 服務必須啟動
第十天 錄像 3
關于exp/imp 使用:
注:sys用戶下不支持導出!!
如以sysdba用戶導出需加單引號,如:
C:\>exp 'sys/tiger@orcl as sysdba' file =c:\temp\a.dmp log =c:\temp\a.log owner=scott
指定scn導出
C:\>exp 'sys/tiger@orcl as sysdba' file =c:\temp\a.dmp log =c:\temp\a.log owner=scott flashback_scn=984312984
當遇到磁盤空間問題時掛起操作處理,不作中斷處理
RESUMABLE??????????? 遇到與空間相關的錯誤時掛起 (N)
C:\>exp system/tiger@orcl? file =c:\temp\a.dmp log =c:\temp\a.log owner=scott resumable=y
ora-04031錯誤,常見錯誤,為sga錯誤為主!
例外:非歸檔模式下當數據文件損壞,沒有作任何備份,嘗試以下方式打開數據庫:offline drop 表示永久刪除,而歸檔模式下可以使用offline
sql>alter database datafile 5 offline drop;
傳輸表空間的使用:
C:\>exp 'sys/tiger@orcl as sysdba' file =c:\temp\a.dmp log =c:\temp\a.log tablespaces=test transport_tablespace=y
導入時反轉過來 ,但需指定相關數據文件。
http://jzhil2004.blog.163.com/blog/static/27558504201010553843243/?fromdm&fromSearch&isFromSearchEngine=yes
2012年7月? 記
本文轉自pimg200551CTO博客,原文鏈接:http://blog.51cto.com/pimg2005/1182724?,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的OCP笔记部分整理-学习参考的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Apache整合Tomcat
- 下一篇: windows桌面快捷方式图标上面怎么老