OCP筆記部分整理-學習參考

  1.   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認證:
    關於登陸的"/ ",操做系統認證,省缺狀態下只能夠在數據服服務器生效。

    一、windows屏蔽操做系統認證:去掉ora_dba組裏的相對應用戶
    便可。
    二、更改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):

    一、系統權限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

    二、對象權限 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)
    一、b-tree (balance)平衡樹
    二、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;

    一、權限審計
    建立審計:
    audit  create session 全部用戶都審計
    audit create session by ming  只審計ming用戶
    刪除審計:
    noaudit create session

    查看審計權限視圖:
    select * from dba_priv_audit_opts;
    審計日誌視圖:
    select * from dba_audit_trail

    二、對象審計:
    audit select on ming.emp;
    audit select on ming.emp by session;默認  針對同一個session
    audit select on ming.emp by access whenever successfull

    三、語句審計

    audit table by ming審計用戶ming關於表的操做

    查看錶的審計日誌:
    select * from dba_obj_audit_opts;

    四、oracle提供的審計包:
    audit all  by emp;
    查看日誌:
    select * from dba_stmt_audit_opts;

    audit all on default; 審計全部,只對建立其以後的對象生效
    查看日誌:
    select * from all_def_audit_opts;

    五、例外:
    建立一個審計策略:
    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


    關於備份:
    一、徹底脫機備份
    二、部分脫機備份(只針對表空間操做)
    三、聯機部分備份 (能夠備份system表空間)
    四、rman備份(聯機徹底備份)
    五、邏輯備份(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
    一、asmtool管理工具
    二、建立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 dbconsolecss

    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=yeslinux


2012年7月  記sql

相關文章
相關標籤/搜索