oracle12c-學習筆記


                                        oracle12c

 

                                目錄

oracle12c 1

一、oracle架構 2

1.1總體結構 2

1.1.1內存結構 2

1.1.2進程結構 3

1.1.3 oracle存儲結構 4

二、 oracle管理工具 4

三、數據庫實例 5

3.1 instance啟動停止 6

3.2 參數文件錯誤處理 7

四、oracle network 7

五、管理存儲 9

六、data concurrency 數據並發(locks) 12

七、adminstering user security 13

八、implementing oracle database auditing 數據庫審計 15

九、數據庫的backup 17

9.1 moving data數據泵 17

9.2 Sql*loader 18

9.3 back and recovery (物理備份) 20

9.4 back and recover concepts (概念) 22

9.5 rman (revover manager) 23

Restore恢復 29

Redo 日志恢復 33

不完全恢復(整體還原) 35

disaster recovery --災難性恢復 38

還原到新主機--不完全恢復 40

rman加密恢復 44

pitr 基於時間點的還原 47

Transporting data 可傳輸表空間 49

Rman 調優 51

十、 閃回 51

1、閃回查詢 52

2、閃回版本查詢(兩點之間的變化) 52

3、閃回事務查詢 53

4、閃回表 54

5、閃回drop 54

6、閃回數據歸檔 55

7、閃回數據庫 56

十一、managing spaces 57

Block space management 57

Tablespace monitoring 58

Shrinking segments 58

Managing Resumable space allocation 61

Memory manager 64

Install grid 65

 

 

   archive log list;

   backup database plus archivelog delete input;

   alter system archive log current;

  Report schema;

       Report obsolete; --查看過期備份

       delete obsolete; --刪除過期文件(包括過期歸檔日志)

            刪除找不到的文件。

             Crosscheck copy(類型);--檢查一下

             Delete expired copy;  --expired 找不到文件的源數據記錄

       List copy;

---刪除了所有的歸檔日志處理辦法

   List archivelog all;

   Crosscheck archivelog all;

   Delete archivelog all;

   backup database plus archivelog delete input;

備份后--alter system archive log current;--對日志進行歸檔

配置退格鍵支持

# echo "stty erase '^H'" >> /home/oracle/.bashrc

# echo "stty erase '^H'" >> /home/grid/.bashrc

 

一、oracle架構

oracle database architecture 架構

user process 客戶端進程

server process 服務端進程(前台進程)

1.1總體結構 

server

 instance = sgapga + process structures(代碼程序)

 database (storage structures)

 

cdb pdb

session

1.1.1內存結構 

memory stuctures 內存結構

sga

  shared pool 共享池 :

          library cache(sql area和執行計划)

          data dictionary cache (數據庫表記錄各種對象記錄) 字典緩存

           v$  dba_

         server result cache 服務器結果緩存

         reserved pool 保留池

  database buffer cache (數據塊data blocks:         

  redo log buffer (數據庫變更日志緩存):

  large pool :

        session memory for the shared server and the oracle XA interace

        io  

        backup

        parallel query

        流技術

  java pool :

  streams pool :

  

pga :(共享服務器模式uga 會放到sgalarge pool里面)

  stack space:

  user global area :

 

12c新特性:in-memory column store(列式存儲)

          full database in-memory caching(全庫緩存)

 

1.1.2進程結構 

process architecture (進程結構)

  user process

  database processes

  daemon / application processes

1database writer process(dbwn)(把數據寫到磁盤)(modified - dirty)(有時間就寫臟塊)

  全局檢查點(full checkpoint):

    shutdown immediate;

    alter system checkpoint;

  增量檢查點 incremental checkpoint)(每三秒寫一次):

  其他檢查點:

    switch logfile

    begin backup

    offline datafile

 

2log writer processlgwr):(寫日志進程)

  什么時候寫日志

    提交時commit

    日志切換時:

    日志到規定存儲寫(1/3 或者1M):

    dbwn寫贓塊之前寫:  

    每三秒:

 

3checkpoint process(ckpt)

  記錄檢查點

  sinals dbwn to write blocks to disk

4system monitor processsmon

  實例恢復

  cleans up unused temporary segments

5process monitor processpmon)進程監視

  回收用戶process

  動態注冊(11g前)

  監視會話超時時間(idle session

6recoverer processreco)(多個數據庫)

  恢復分布式事務(distributed transactions

7listener registration processlreg)(12c動態注冊)

8archiver processesarcn)(歸檔進程)

  非歸檔模式(日志不保存)

  

----------------------

desc dict--字典表

--內存視圖

desc v$sgainfo;--sga

v$memory_dynamic_components

--進程視圖

v$process;

 

1.1.3 oracle存儲結構 

database storage architecture --oracle存儲結構

  control files (記錄數據庫的物理信息、物理文件在哪)(可以有一份或多份,每一份都是一樣的)

     1、查看控制文件select name from v$controlfile; 

     2show parameter control

       strings /u01/app/oracle/oradata/orcl/control01.ctl

       數據庫文件路徑

       歸檔日志文件路徑

       備份數據路徑

       數據庫檢查點信息

     

  data files dba_data_filesv$datafile

  online redo log files (redo)(v$logfile)

  archive redo log files (v$archived_log)

  parameter file(參數文件)show parameter pfile

  backup files(備份文件)

  password file (密碼文件、sys的密碼)$oracle_home/dbs/orapw-sid-db

  alert log and trance files  (警告和追蹤文件)(v$diag_info)    

 

----

logical and physical database strure

--邏輯架構

database - tablespaces - segment(段、表) - extent() - oracle data block(標准大小8k)

 

二、 oracle管理工具 

 

sql-plus

sql developer

oracle enterprise manager database express

oracle enterprise manager cloud control

 

sql-plus 運行腳本

1sqlplus / as sysdba

   @aa.sql

2sqlplus / as sysdba @aa.sql

shell 腳本

./patch_sqlplus.sh

sqlplus / as sysdba <<EOF | sed -n '/----------/,+1p'|tail -n 1|awk '{print $1}'

select count(*) from v\$process;

quit;

EOF

三、數據庫實例 

--initialization parameter files --參數文件配置

  分類:

   spfile --spfile<sid>.ora (二進制文件)

   pfile  --ini<sid>.ora  (字符串

 

 show parameter pfile; --查看使用的類型

 show parameter  --查看所有生效的參數(內存的參數)

 show spparameter --查看文件中的參數

 desc v$parameter -參數表(內存)

 desc v$spparameter --參數表(物理)

set lines 400; --設置列寬

col name for a20; --設置結果name的顯示寬

set pages 800;   --設置頁大小

  參數分類:basic、高級參數 (v$parameter isbasic

 

changing initialization parameter values

--分類

  static parameter   (靜態參數)

  dynamic parameter  (動態參數)

(v$parameter)  issys_modifiable(global,memory) --全局修改內存(immediate falsedeferred

                    immediate --- can modify memory

                    false -- can not modify memory  (can only modify the spfile or pfile, restart the instance)

                    deferred --- new session

 

               isses_modifiable(session,memory) --會話修改內存的參數

 

  

--session的參數修改方式:     alter session set 參數名稱='';

--system 的參數修改(immediate(立即生效的)false(必須加上spfile重啟生效))     

         alter system set 參數名稱='' [scope=both|spfile|memory]

 

3.1 instance啟動停止 

startup

 shutdown - nomount(instance started) - mount - open

 

startup nomount

  --找到參數文件,啟動實例 $ORACLE_HOME/dbs

      先找spfile<sid>.ora 沒得

      再找 init<sid>.ora (該文件可以手動修改)

  --打開alert_<sid>.log

     $ORACLE_BASE/diag/rdbms/dbname/instance_name/trace

 

alter database mount

   --讀取控制文件(不檢查控制文件存在性(控制文件有多份)

     show parameter control

alter database open

   --打開數據文件和日志文件

  

--selet status from v$instance;(started\mounted\open)

   

-------

shutdown

 A-abort          --掉電--啟動時日志可以還原

 I-immediate      --沒提交的都回滾,立即關閉

 T-transactional  --只要有人做事就不關閉

 N-normal         --只要有鏈接就不關閉

 

ITN一致性關閉)

 

startup force = shutdown abort + startup

--viewing the alert log

--日志文件路徑

find / -name alert_<sid>.log

$ORACLE_BASE/diag/rdbms/dbname/instance_name/trace

 

--日志內容

  關於數據庫的報錯、全局操作

 

12c-ddl.log --新特性

reference 手冊、參考

 

--動態性能視圖 v$XXX 內存中(不同狀態內容不同)

 

dba_*s    --所有的

all_*s    --權限內所有的

user_*s   --用戶所有的

 

3.2 參數文件錯誤處理 

1、確定以前用的哪一類 pfile 可以直接修改

sql>create pfile from spfile;

sql>create spfile from pfile;

2、找到pfile進行參數修改

  vi $ORACLE_HOME/dbs/init<sid>.ora

3、修改錯誤參數

4、啟動數據庫

 

四、oracle network 

--監聽文件 $ORACLE_HOME/network/admin/listener.ora

LISTENER =

  (DESCRIPTION=

       (ADDRESS=(PROTOCOL=tcp)(HOST=100.98.100.225)(PORT=1521))

   )

 

  lsnrctl status

--創建監聽

  netca

--register database

  1、自動注冊auto1521start instanceevery 60salter system register;

      server name = db_unlque_name.db_domain

  2、手動注冊manual:該配置文件$ORACLE_HOME/network/admin/listener.ora

      netmgr

    

     SID_LIST_LISTENER=

         (SID_LIST=

             (SID_DESC=

               (GLOBAL_DBNAME = mylisner)--(服務名稱)

               (SID_NAME = orcl)         --(實例名稱)

                (ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1)

              )

           )

 

--查看oralce錯誤 oerr ora 1515

 

 

--EZ connect:

   sqlplus sys/passwd@192.168.100.1:1521/orcl(監聽服務名稱) as sysdba;

 

--local naming:(客戶端配置文件)

   $ORACLE_HOME/network/admin/tnsnames.ora

orcl2=

(DESCRIPTION=

   (ADDRESS=(PROTOCOL=TCP)(HOST=192.168.100.1)(PORT=1521))

   (CONNECT_DATA=(SERVICE_NAME=orcl))

)

 

 

 

   netca/netmgr

 

sqlnet.ora --特殊配置 超時、加密

tnsping--測試tns的配置文件語法

__________________________________________________________________________________________

1、共享服務器模式:不能用的情況 

  a、管理員操作

  b、備份恢復

  c、批處理大數據處理

  d、數據倉庫操作

2、專有服務器模式

 

數據庫與數據庫之間通訊

dblink 高低版本之間連接問題:有的需要打補丁

CREATE DATABASE LINK locallink

CONNECT TO hr IDENTIFIED BY hr

USING 'orcl2';

--

CREATE DATABASE LINK link1

CONNECT TO hr IDENTIFIED BY hr

USING

'(DESCRIPTION=

   (ADDRESS=(PROTOCOL=TCP)(HOST=100.98.100.225)(PORT=1521))

   (CONNECT_DATA=(SERVICE_NAME=orcl))

)';

五、管理存儲 

dba_tablespaces --所有表空間

3 classer permanet,undo ,tmporary

permanet --永久表空間

查詢表空間使用率

set lines 800;

set pages 800;

col tablespace_name for a30;

col used_pct for a10;

 

select total.TABLESPACE_NAME TABLESPACE_NAME,

total.MAX_SIZE_MB MAX_SIZE_MB, total.SIZE_MB-free.USED_FREE_MB USED_SIZE_MB,

round(((total.SIZE_MB-free.USED_FREE_MB)/total.MAX_SIZE_MB)*100,2)|| '%'  USED_PCT,

total.MAX_SIZE_MB-(total.SIZE_MB-free.USED_FREE_MB) Free_MB

from

    (select TABLESPACE_NAME,

sum(BYTES)/1024/1024 SIZE_MB,

sum(decode(MAXBYTES, 0 , BYTES,MAXBYTES ))/1024/1024 MAX_SIZE_MB

 from dba_data_files

group by TABLESPACE_NAME) total,

    (select TABLESPACE_NAME,

sum(BYTES)/1024/1024 USED_FREE_MB

from dba_free_space

group by TABLESPACE_NAME) free

    where total.TABLESPACE_NAME=free.TABLESPACE_NAME

and total.TABLESPACE_NAME not like 'UNDO%' ;

 

創建表空間

select file_name from dba_data_files;

create tablespace cs datafile '/u01/app/oracle/oradata/orcl/cs1.dbf' size 1g autoextend on maxsize 30g;

--大塊表空間創建

alter system set db_16k_cache_size=20M;

create tablespace cs datafile '/u01/app/oracle/oradata/orcl/cs1.dbf' size 1g autoextend on maxsize 30g blocksize 16k;

--添加表空間數據文件

alter tablespace cs add datafile...;

--刪除表空間

drop tablespace cs including contents and datafiles;

--縮放表空間

alter database datafile '/u01/app/oracle/oradata/orcl/cs1.dbf' resize 20M;

 

dba_tablespaces 字段解析

  extent_management -區管理 localdictionary(不常用)

    allcation_type  --區管理方式autoallocate(system)uniform

  segment_space_management  -- 段空間管理 manualfreelist->dictionary)、(segment headerbitmapauto(常用)

  blocksize --表空間默認大小(8k

    show parameter block_dize;

    show parameter db_cache; 

    show parameter cache_size;

 

--數據文件類型

bigfile/smallfile(默認創建方式)(多個數據文件)

  8k-->32T bigfile(單個數據文件)(只能一個)

  create bigfile tablespace name....;

 

 

 

--表空間的ofline online

--offline

 normalall dirty buffer cache sync to diskthen offline

 temporarysync the buffer cache as mostthe ofline

 immediateoffline immediateno sync

--語法

alter talespace tablesname offline [normal\temporary\immediate];

alter talespace tablesname online;

archive log list;--查看歸檔模式

 

 

--表空間

systemdictionary、所有系統信息用戶表

sysaux:輔助表空間awrstatistics統計信息)、em

usersdefault permanetn tablespace 默認的永久表空間(先放用戶的默認表空間,然后建表沒有指定表空間則放這表空間)

 

temp:temporary data 臨時表空間

undo:undo data

 

--ofaoracle flxiable architecture

/u01/app/oracle/oradata...

--omforacle managed files

  db_create_file_dest-參數-指定數據文件目錄

 

--moving or renaming an onlin data file (移動數據文件,或重命名)

 11g需要關閉數據庫或者offline datafile

 1、方法

  shutdown

  移動文件到新目錄

  statup mount

  alter database rename file '路徑' to '新路徑'

  alter database open

  12c在線移動(新特性)

  alter database move datafile '路徑' to '新路徑';

 

dba_temp_files

 臨時表空間datafile 生成方式

   1restart instance

   2、新增數據文件,刪除錯誤數據文件

--temporary tablespace

  1temporary datasort)(pga不夠-磁盤)

     order by

     group by

     setexcept(排查) union all

     join

     create index

  2temporary table

     --消失數據

     acommit

     bsession end

create temporary tablespace temp2 tempfile '  ' size 5m;

create GLOBAL temporary table aa(id number(20)) tablespace temp2;

select * from aa

insert into aa values(1);

commit

drop tablespace _name

--database_properties  --數據庫屬性表(字符集)

 

---tablespace group(建臨時表空間 指定組就生成了)

   dba_tablespace_group

  alter tablespace temp2 tablespace group grp;

  select * from dba_tablespace_groups

 

-------managing undo data-undo 表空間

a copy of original ,premdified data (修改之前,的數據)

undo 數據什么時候回收commit+900秒(事務沒有結束不會被覆蓋)

   select * from v$undostat;

 --作用 roolback operations

         redad-consistent queries (一致性查詢)

         oracle falshback queryoracle flashback(閃回)

         recovery from failed trancefil

 each transaction is assigned to only one undo

 一個undo 段可以多transaction

 一個undo只能一個instance

 一個instance只能一個undo生效

 

undo 閃回 一致性查詢

redo 恢復

 

undo 表空間 固定 fixed sizeingnore undo_retention(忽略undo配置時間)

alte tablespace undotbs1 retention guarantee;--強制保證900

_____________________________________________________________________________

 

六、data concurrency 數據並發(locks)

--locks

  prevent-防止

  escalate 升級

--locking mechanism

  行級鎖

  查詢沒有鎖

 自動隊列管理

 事務提交解鎖

--dml locks

 tm -rx表鎖(防止表結構變更alter drop

 x 行鎖

 lock tables emplyess in exclusive mode;-手動加鎖

 --鎖轉換不用重新排隊

--

數據庫監控項目(找出阻塞者殺掉)

active session

session wait

process number

host memory

host cpu

db time

-lock confilicts 鎖沖突

 原因 uncommitted changes

      long-running

      鎖升級

 v$session -視圖;

   字段 -blocking_session -堵塞的會話id

        select distinct sid from v$mystat--查看自己的session id

   serial#-串號

   alter system kill session 'sid,serial#';--殺掉鎖

 

---------

desc v$session;

select distinct blocking_session from v$session where blocking_session is not null;  --查看堵塞的會話id

select SID,SERIAL#,USERNAME,OSUSER,MACHINE,TERMINAL,PROGRAM,SQL_ID from v$session  WHERE sid='125';

ALTER SYSTEM KILL SESSION '125,29489';  --殺掉堵塞會話

select * from v$session where blocking_session is not null;  --查看哪個會話被堵塞了

-----------

--dead locks 死鎖(互相等)(oracle會殺死前一個等待的session,程序還是不能運行需要前一個會話rollback才能保持數據一致性)

----------

七、adminstering user security

--select * from dba_users;--查看用戶屬性

  schema--某個人的對象(用戶)

用戶syssystem 12c sysbackupsysdgsyskm

  sysdg --主從用戶

 

權限 sysdbasysoper(實例管理員)、sysbackupsysdgsyskm(管理秘鑰)

 

用戶認證方式

  password externalglobal

管理員認證

  密碼文件(網絡連接@select * from v$pwfile_users;

 as sysdba)操作系統認證(用戶在定義的組中就可以)

      cat $ORACLE_HOME/rdbms/lib/config.c

      $ mv config.o config.o.orig

      $ make -f ins_rdbms.mk ioracle

--------------------

--普通用戶管理

  create user app identified by app;

  grant connect,resource,unlimited tablespace,create view to app; --一般普通用戶權限

  alter user app default tablespace cs;

  alter user app account lock;

  alter user app identified by oracle; --改密碼

--普通用戶的操作系統認證ops$name

--權限分類

   systemdatabasesystem--select * from system_privilege_map;

   objectprivileges on object(某一個數據庫對象)

   

   select * from system_privilege_map; --所有的系統權限

   select * from dba_sys_privs; --用戶的系統權限配置情況

  

   select * from table_privilege_map --對象權限

   select * from dba_tab_privs;  --用戶的對象權限

 

--分配權限

  分配系統權限:grant xx to xx;[with admin option]

  分配對象權限:grant xx on bb to yyy;[with grant option(可以傳給別人)] grant select on app.t to py;

 

--回收

  系統和對象權限回收后 對對象(如建立的表)不影響

  系統權限回收 不牽連其他

  對象權限回收 級聯停用下發的權限

  revoke create session from sys01;

 

--roles 角色(當成system權限)

  select * from dba_roles;

 

  grant select_catalog_role to app;--查詢數據字典的權限(巡檢用戶配置這個權限)

  show parameter audit;--顯示審計文件路徑

 

  create role role_name;

  grant connect to role_name;

  grant select any table to role_name;

  --建用戶

  grant role_name to app;

 

  select * from dba_role_privs; --角色分配情況

 

--查看用戶權限

  1、查看用戶system權限

  2、查看用戶object權限

  3、查看用戶角色。

    select * from dba_sys_privs where grantee='APP';

    select * from dba_tab_privs where grantee='APP';

    select * from dba_role_privs where grantee='APP';

--secure roles

  set role vacationdba;啟用角色

 

---profiles and users

   作用

     管理用戶密碼策略

     管資源的限制 --resource_limit參數 必須為true 才生效

 

----密碼策略

   文件模板$ORACLE_HOME/rdbms/admin |grep pwd --utlpwdmg.sql

   

   ALTER PROFILE DEFAULT LIMIT

   failed_login_attempts --幾次數鎖定

   password_lock_time --1--1

   password_life_time 過期時間

   password_grace_time 過期后幾天可以登錄

   password_reuse_time 密碼從用時間

   password_reuse_max  密碼從用次數

   PASSWORD_VERIFY_FUNCTION ora12c_verify_function;

 alter profile default limit password_life_time unlimited;

 select * from dba_profiles;--查看profile詳情

 

--密碼復雜度檢查

-----------------------------------

--------------quota 配額

 1unlimite tablespacegrant unlimited tablespace to yh;

 2quota on some tablespacealter user yh quota 10m/unlimited on users;

 

--least privilege--最小權限

   public 對所有人的權限

   administrator privilege

 

八、implementing oracle database auditing 數據庫審計

--數據庫安全

  用戶認證

  權限

  監控可疑活動

--審計分類

  審計路徑文件 show parameter audit(沒有開統一審計前)

  audit_sys_operations-參數--管理員(基本操作)審計(12c默認開啟)

  mandatory auditing 強制審計日志 (默認開啟)

    和審計相關的操作

    alter table against audsys(用戶的表)

    管理員的開啟、關閉實例

  standard database auditing -標准數據庫審計

  value-based auditing  值的審計(基本不用了)(觸發器)

  fine-grained auditingFGA) 細粒度的審計  

      1、審計的dml 操作

      

 

---v$option 數據庫有什么功能視圖

 

--12c打開統一審計模式(geno進程)

 

   SHUTDOWN IMMEDIATE

   lsnrctl stop

   cd $ORACLE_HOME/rdbms/lib

    make -f ins_rdbms.mk uniaud_on ioracle ORACLE_HOME=$ORACLE_HOME

 

    lsnrctl start

    startup

    SELECT value FROM v$option WHERE parameter = 'Unified Auditing'

------默認審計規則

    select * from audit_unified_policies

 

---編寫審計規則、啟用規則、停用審計、查看審計

   --創建統一審計:

   CREATE AUDIT POLICY my_audit_policy

   ACTIONS SELECT ON app.bb;

   AUDIT POLICY my_audit_policy;

   noaudit POLICY my_audit_policy;

   --創建fga審計

   begin

    dbms_fga.add_policy (

    object_schema => 'APP',

    object_name => 'bb',

    policy_name => 'audit_emps_salary',

    audit_column => 'id',

    enable => TRUE,

    statement_types => 'SELECT,UPDATE');

   end;

   /

   --查詢審計信息

   select * from unified_audit_trail order by event_timestamp desc;

   

九、數據庫的backup 

9.1 moving data數據泵

  greneral architecture

    data pump --數據泵

     expdp impdp expimp客戶端和字符集相關)

 

--目錄對象創建 dba_directories -目錄表 默認目錄名稱:data_pump_dir

   create directory mydir as '/u01/app/oracle';

   grant read,write on directory mydir to app;

 

   

--導出expdp help=y

   fullschema tabletablespace

   expdp \'/ as sysdba\' directory=mydir tablespaces=users ESTIMATE_ONLY=y  --計算導出文件大小

   expdp \'/ as sysdba\' directory=mydir dumpfile=app.dump logfile=mydir:app.log

     tables=app.bb  --倒表

     schemas=app     --倒用戶(常用)

     exclude=statistics --排除統計數據

     tablespaces=cs1  --導出表空間

     full=y           --倒數據庫

      

     expdp \'/ as sysdba\' directory=mydir dumpfile=app_%u.dump logfile=app_%u.log parallel=n    --並行數量

     

     compression=all --壓縮

     version=11.2.04  --指定導出的版本

     content=all[data_only|metadata_only(表結構)]

     expdp parfile=app.para  --執行參數文件

------------------------

      cat app.para

        userid=app/app

        directory=mydir

        dumpfile=apppara.dump

        tables=app.bb

        QUERY=bb:"WHERE id = 7"

-------------------------

    --schema導入先建表空間、建用戶

 

--導入impdp help=y| grep -i -C 3 table

     impdp app/app directory=mydir dumpfile=app.dump tables=bb;

      

      TABLE_EXISTS_ACTION=[APPEND, REPLACE, [SKIP] and TRUNCATE] --存在處理方式

      remap_table='employees':'emp' ----remap 更名導入的對象

 

      impdp app/app parfile=impdp.para

       --cat impdp.para

          directory=mydir

          dumpfile=apppara.dump

          tables=app.bb

          remap_table=app.bb:aa

9.2 Sql*loader

Sql*loader -將文本文件導入數據庫

Input data files-> control file->sql*load(field processing(列選擇bad file)、record selection(行選擇discard file)-.>database

/etc/group 導入數據庫

  1、文件需要加后綴(拷貝文件加后綴)cp /etc/group group.txt

  2、建表 create table linuxgroup(

               groupname varchar2(30),

               grouppasswd char,

                groupid number(10),

               groupmem varchar2(20))

 3、寫control file

      load data

      infile 'group.txt' "str '\n'"

      into table linuxgroup

      fields terminated by ':'

      TRAILING NULLCOLS

      (groupname char(30),grouppasswd char(1),groupid INTEGER EXTERNAL,groupmem char(20))

   --(TRAILING NULLCOLS 空值插入null)

   --modtime date ‘yyyy-mm-dd hh24:mi:ss’ --日期格式定義

 4、導入命令 sqlldr app/app control=linuxgroup.ctl

Truncate table linuxgroup;

 --loading methods

  Conventional load --一條一條加載commit

  Direct path load --以塊方式保存 data saves

 

--external tables(只讀)

   --表的定義在數據庫中,表的數據在操作系統的文件上

 

文本文件(oracle_loader驅動)

--建表文本文件的外部表               

CREATE TABLE linuxgrouptxt

(groupname varchar2(30),

   grouppasswd char,

   groupid number(10),

   groupmem varchar2(20))

ORGANIZATION EXTERNAL --定義外部表

( TYPE ORACLE_LOADER DEFAULT DIRECTORY mydir --定義類型和文件路徑

ACCESS PARAMETERS

( records delimited by newline

badfile mydir:'linuxgrouptxt.bad'

logfile mydir:'linuxgrouptxt.log'

fields terminated by ':'

missing field values are null   --空值設為null

( groupname,grouppasswd,groupid,groupmem))  --對應表字段

LOCATION ('group.txt') )    --讀取文件名稱

PARALLEL REJECT LIMIT UNLIMITED;

 

二進制文件(oracle_datapump

--導出二進制文件

CREATE TABLE linuxgroupdump

ORGANIZATION EXTERNAL --定義外部表

(

TYPE ORACLE_DATAPUMP

DEFAULT DIRECTORY mydir

LOCATION ('group.exp')

)

PARALLEL

AS

SELECT * from linuxgroup;  --根據查詢建表

 

--導入二進制文件的外部表

CREATE TABLE linuxgroupimp

(

               groupname varchar2(30),

               grouppasswd char,

                groupid number(10),

               groupmem varchar2(20))

ORGANIZATION EXTERNAL --定義外部表

(

TYPE ORACLE_DATAPUMP  --外部文件為二進制

DEFAULT DIRECTORY mydir  --文件路徑

LOCATION ('group.exp')   --文件名稱

);

 

9.3 back and recovery (物理備份)

(物理備份)

Configuring for recoverability(配置可還原配置)

  --定期備份

  --控制文件的復用

   Show parameter control

   Alter system set control_files=’’,’’,’’ scop=spfile;

   Shutdown IMMEDIATE;

   Cp file

   startup

  --

Fra:(閃回區)(內容)

  1、控制文件的復用

  2redo的復用

  3backup files

  4、歸檔日志

  5flashback logflashback database

 配置(路徑和大小)

 Show parameter recover

   db_recover_file_dest_size

   db_recover_file_dest

 

 --開啟閃回區

   alter system set db_recovery_file_dest_size=1024M;

   alter system set db_recovery_file_dest='/u01/app/oracle/fast_recovery_area';

   查看閃回區大小

     Show parameter recover

      V$FLASH_RECOVERY_AREA_USAGE --查看各個閃回文件大小

      V$RECOVERY_FILE_DEST         --查看整個閃回區大小   

 

Redo log files

  復用(日志組)

   V$log --查看組

   V$logfile --查看組成員

 創建日志組

   Alter database add logfile group 4 ('xx.log','xx.log') size 50M [reuser];

  增加組成員(文件)

   Alter database add logfile memeber ‘xx.log’ to group 1

  刪除成員

   Alter database drop logfile memeber ‘xx.log’;

  刪除組

   Alter database drop logfile group 4;

 

  Select status from v$log --查看日志狀態

      Current --正在用

      Acitive --bufer cach的日志的臟塊沒有落盤

      Inactive --寫了庫了

      Unused --沒有用的    

 

   Alter system switch logfile; --切換日志

   Alter sysetm checkpoint; --切換檢查點,dbwn

  Redo & omf  --默認日志路徑

    Show parameter db_create

 

Archived redo log file --歸檔日志

   archive log list; --current log sequence --日志的切換次數

  開啟歸檔

1shutdown immediate;

2startup mount;

3alter database archivelog;

4alter database open;

5archive log list;

   Log_archive_dest_1  --參數歸檔日志路徑

      Fra:fra     ---歸檔日志開啟了閃回區日志放閃回區

      No fra:$ORACLE_HOME/dbs   --沒有開啟閃回就放軟件目錄

 

--設置歸檔日志路徑

(企業版、配置log_archive_dest_n

alter system set log_archive_dest_1='location=/u01/app/oracle/archive_area'  mandatory(必須成功)|[optional](默認可以成功);

alter system set log_archive_dest_2=’service=remotedb’

(標准版、配置log_archive_dest/log_archive_duplex_dest='/u01/app/oracle/archive_area'

   --log_archive_min_succeed_dest --歸檔日志最小成功系統才能用 默認值 1

作業:

 Redo :添加日志組、日志文件、修改日志組大小、路徑管理

 archive :打開歸檔、修改路徑

 

9.4 back and recover concepts (概念)

   Mtbf(在線時長) mttr    

--失敗的分類

   

   1、語句級失敗(定義、權限、沒空間、業務邏輯) 

   2、用戶進程失敗select * from v$process   

   3、網絡失敗

   4、用戶error(例如:錯誤刪除):閃回

   5、實例故障 kill -9 pmon  啟動startup 恢復

       Ckpt (檢查點):實例恢復的起點

       檢查點隊列: 按照臟塊第一次對臟的順序串起來

       前滾 (將日志回寫到內存)、回滾(undo(表空間))(沒提交的寫到內存撤銷)

 

作業 :歸檔多份 歸檔必須成功幾份 實例恢復過程

  6media failure(完全恢復、不完全恢復(重點))

      Point-in-time recover  ptr

  --備份恢復類型

Rman

Flashback

Adg

 

9.5 rman (revover manager)

Rman target /  --連接目標數據庫

 

命令

 Standalone  --單條命令

 

 Job        

  Run{

   ....

     }

 

     Whole --全備

     Partial --部分備

     Offline --冷備 (可以直接用)

     Online --熱備  (必須日志)

     Full --對某個數據文件 所有備份

     Incremental --對某個數據文件 增加的備

         Cumulative累計增量備份(和第一次備份做比較)

         Differential差異增量備份(和上一次比較)

 --osboracle secure backnbu

  Rman

  

Image copies(鏡像拷貝)

Backup sets (備份集)(多個backup pice

 

----using the rman recovery catalog  (數據庫)

     Rman>backup spfile;

  --備份文件兩部分

--backup metadata --備份的源數據

    1、放在控制文件中(有時間限制)

    2、放catlog里面

--backup files --備份文件

 

--創建catlog

  1、創建數據庫、表空間

  2、創建用戶分權限

 

 

 

 

Grant unlimited tablespace to cataadmin;

  3、創建calog數據庫

     rman catalog cataadmin/oracle  --鏈接catalog數據庫

     create catalog;

     drop catalog;

  4、注冊

     --數據庫端

     rman target / catalog cataadmin/oracle@100.98.100.215:1521/xe

     register database;

     unregister database;

     --catalog端進行注冊

     rman target sys/123qweQWE@100.98.100.225:1521/orcl catalog cataadmin/oracle

     register database;

     backup spfile;

作業:catalog概念 創建catalog數據庫

create tablespace catlog datafile '/u01/app/oracle/oradata/orcl/catlogspace.dbf' size 20m autoextend on maxsize 30g;

create user cataadmin identified by oracle default tablespace catlog;

 

grant recovery_catalog_owner,unlimited tablespace to cataadmin;

 

rman catalog cataadmin/oracle

RMAN> create catalog

 

 

---partial full

--using rman stored scripts (使用rman腳本)

     Delete backup

      List backup;

 

Run {

  Backup spfile;

  Backup current controlfile;

}

 

----creating and using virtual private catalogs

---catalog command (手動添加源文件,收錄到數據庫)

  Catalog start with ‘路徑’

  

--收錄某類的文件

 

作業:注冊數據庫、創建腳本 、收錄

--建立catalog數據庫

-- 1、建表空間

create tablespace catlog datafile '/u01/app/oracle/oradata/xe/catlogspace.dbf' size 20m autoextend on maxsize 30g;

-- 2、建用戶分權限

create user cataadmin identified by oracle default tablespace catlog;

grant recovery_catalog_owner,unlimited tablespace to cataadmin;

--鏈接catalogcatalog

rman catalog cataadmin/oracle

RMAN> create catalog

--源端鏈接catalog數據庫進行注冊

Rman target sys/123qweQWE@100.98.100.225/orcl catalog cataadmin/oracle

Register database;

--創建備份腳本、查看

create script backup_controlfile{

backup spfile;

Backup current controlfile;

}

list script names;

print script backup_controlfile;

--運行腳本

RUN { EXECUTE SCRIPT backup_controlfile;

}

--收錄備份文件的源到catalog

catalog start with '/u01/app/oracle/fast_recovery_area/ORCL/backupset/2019_09_08';

--刪除查看備份

delete backup;

list backup;

 

---performing backups

 backup show all 顯示rman所有配置)

   1spfile,controlifile,datafile,(online redo),archive log,(password file),(alert),(trace) --rman不能備份打括號的

   2、備份命令

   CONFIGURE BACKUP OPTIMIZATION ON;  --打開備份的時候備份控制文件和參數文件的參數

   spfile backup spfile

   Controlfile :

     Rman> backup [as backupset] current controlfile;

     Rman> backup as copy current controlfile;

    --鏡像拷貝

     SQL> alter database backup controlfile to '/tmp/control.ctl';

     SQL> alter database backup controlfile to trace  as '/tmp/control.trc';

 

  Datafile:

    Rman>report schema;

Rman>backup datafile 8|’xxxwjm’;

Sql>backup as copy datafile 8|’xxxwjm’;

  Tablespace,database:

Rman>backup tablespace xxx;

Rman>backup database;--包含spfile,controlifile,datafile

Rman>backup database plus archivelog delete input(刪除備份了的歸檔); --全庫備份

  Archivelog:

Rman>backup archivelog all [delete input];

 

9.6 incrementally updated backups (增量備份)

 

   Rman target /

 Rman >Report schema;

       backup incremental level 0 datafile 7;

       Backup [Differential/cumulative] incremental level 1 datafile 5;

       Differential(差異增量)/cumulative(累計增量和0比)

       List backup of datafile 5

 Fast incrementall back (快速備份)

      --啟用快速備份(塊跟蹤)ctwf進行塊寫

      Alter database

        {enable|disable} block change tracking

        [using file ‘...’] (開啟了omf可以不用寫該文件,軟件自己放路徑)

        

       SELECT file#, avg(datafile_blocks),

avg(blocks_read),

avg(blocks_read/datafile_blocks)

* 100 AS PCT_READ_FOR_BACKUP,

avg(blocks)

FROM

v$backup_datafile

WHERE used_change_tracking = 'YES'

AND

incremental_level > 0

GROUP BY file#;

 

--查看備份塊情況

查看備份情況

        List back of ...

       List copy of ..

       Report schema;

       Report obsolete; --查看過期備份

        Delete obsolete --刪除過期文件

            刪除找不到的文件。

             Crosscheck copy(類型);--檢查一下

             Delete expired copy;  --expired 找不到文件的源數據記錄

       List copy;

   

 備份壓縮

   備份集才可以壓縮(鏡像拷貝不能壓縮)

   Backup [as copy|as compressed backupset] datafile 5;

備份大文件方法

Backup daafile 5 section size =25M;(一般和並行用如下)

 

 

 

 

作業:增量備份、開啟塊追蹤、刪除過期、壓縮備份、大文件備份

   backup incremental level 0 datafile 7;

   backup cumulative incremental level 1 datafile 7;

   list backup of datafile 7;

   alter database enable block change tracking;

   report obsolete;

   List copy;

   Crosscheck copy;

   Delete expired copy;

   backup as compressed backupset datafile 5;

 

   對備份集的備份

Backup backupset all;

Backup backupset 4;

備份多份

    方法1、修改rman 配置,指定備份地方

    

 

 

 

還原rman的配置用

CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO clean;

方法2、命令方式

 

Archival backups (打破默認的保存策略)指定過期時間

    

 

 

 

1、配置自動備份控制文件

2、開啟歸檔模式

3、全庫備份

 

Restore恢復

Resore & recovery

 

  1parameter file 參數文件問題

    方法一、

Create pfile from spfile;

pfile,啟動數據庫

方法二、自己配置參數文件

  2password file 密碼文件恢復(遠程的管理員用戶)

     Cd $ORACLE_HOME/dbs

     Orapwd file=orapw<sid>

作業:備份多份、參數文件密碼文件恢復

     backup database plus archivelog delete input;

     backup  copies 2 format '/tmp/datafile%U','/home/oracle/datafile%U' datafile 7;

     

     3crcial (關鍵性文件)

        Control file, system tbs,undo tbs,online redo log

 4datafile (數據文件損壞恢復)

    Creater table a(id int) tablespaces cs;

      --清理緩存

     

 

 

 

     --查看損壞文件

        Rman >Select  * from v$recover_file;

        Rman >validate database;

   方法rman

      1、離線數據文件

         Alter database datafile 2 offline;

      2、恢復

         Restore datafile 2;

      3、跑日志

         Recover datafile 2;

      4Alter database datafile 2 online;

  Tablespces

        

  數據庫恢復

        

  System\undo:

        

Archvie log(恢復歸檔文件)

        List backup of Archivelog all;

        Restore archivelog all |sequence 65;

--查看數據文件和控制文件的頭 必須一樣才能啟動

              

作業:數據庫文件恢復、表空間恢復、歸檔文件恢復

      select table_name,TABLESPACE_NAME from dba_tables where TABLESPACE_NAME='USERS';

      mv /u01/app/oracle/oradata/prod/users01.dbf /u01/app/oracle/oradata/prod/users01.dbf.bak

      SQL> select * from OJDS$BINDINGS$;

      select * from OJDS$BINDINGS$

              *

           ERROR at line 1:

           ORA-01116: error in opening database file 6

           ORA-01110: data file 6: '/u01/app/oracle/oradata/prod/users01.dbf'

           ORA-27041: unable to open file

           Linux-x86_64 Error: 2: No such file or directory

           Additional information: 3

      Rman>validate database;

      --恢復

      Rman>Alter database datafile 6 offline;

            restore datafile 6;

            recover datafile 6;

            alter database datafile 6 online;

 

----------表空間恢復

            rm -rf example01.dbf

            restore tablespace example;

            recover tablespace example;

            alter database open;

------數據庫的恢復

            

              rm -rf system01.dbf

              alter system flush buffer_cache;

              alter system flush shared_pool;

              Rman>validate database;

                   Restore database;

                   recover database;

                   Alter database open;

-----------controlfile控制文件恢復

Parameter ,controlfile:nomount模式下

     Rman>

           

作業:刪除參數文件 控制文件 進行數據庫恢復

     /u01/app/oracle/fast_recovery_area

     /u01/app/oracle/oradata/orcl/control01.ctl

     /u01/app/oracle/ fast_recovery_area/orcl/control02.ctl

  ----恢復參數、控制文件

     rman target /

     Startup nomount;

     restore spfile from autobackup recovery  area = '/u01/app/oracle/fast_recovery_area/' db_name = 'ORCL';

     Startup nomount force;

     restore controlfile from autobackup;

     Alter database mount;

     Recover database;

     Alter database open resetlogs;

    ----

     -重新進行備份

Rman>backup database plus archivelog delete input;

 

控制文件沒有備份如何恢復

       1、另外一台oracle 生成模板

       

   2、修改配置

     修改庫名稱

   修改日志文件、數據文件路徑

 

 

 

 

Redo 日志恢復v$log \v$logfile

 

(思路 建正在用的變成用過的,用過的變成沒在用的,然后clear日志)

  如果不能實現,只能不完全恢復

   1、只是某個logdata損壞,刪除新建

   2、某個日志組損壞。

       一、Inactive模式的日志

        A、做了歸檔

        B、直接   Alter database clear logfile group 4;

    

       二、active模式的日志

          寫庫 checkpoint 變成 inactive

          Alter system checkpoint;

           Clear日志

          Alter database clear logfile group 4;

 

       三、curent模式的日志

          日志切換 log switch

           Alter system switch logfile;

           變成 active,進行寫盤

           Alter system checkpoint;

           Clear日志

           Alter database clear logfile group 4;

           

           

作業:通過模板恢復控制文件、redo日志的恢復

  ---inactive 日志文件恢復

select GROUP#,STATUS from v$log;

select group#,member from v$logfile;

alter database clear logfile group 1;

 

 --active 日志文件恢復

     SQL> select GROUP#,STATUS from v$log; --查看到3日志組待寫盤

      GROUP# STATUS

       ---------- ----------------

         1 CURRENT

         2 INACTIVE

         3 ACTIVE

     rm -rf redo03.log       --刪除3日志組

Alter system checkpoint;  --進行寫盤操作

SQL> select GROUP#,STATUS from v$log; --日志組3變成了用過的日志

    GROUP# STATUS

---------- ----------------

         1 CURRENT

         2 INACTIVE

         3 INACTIVE

SQL> alter database clear logfile group 3;   --clear 將日志resetlog,生成新日志文件

 

--CURRENT 正在用的日志恢復

           Alter system switch logfile;

           變成 active,進行寫盤

           Alter system checkpoint;

           Clear日志

           Alter database clear logfile group 4;

 

----手動編寫控制文件

alter database backup controlfile to trace as '/tmp/contro.ctl';

不完全恢復(整體還原)

    

   1、找時間點(timescnsequence#restore point

       相關人員告訴

       分析日志

      Select group#, Firest_time,next_change# from v$log;

  還原

Run{

   Startup mont force;

   Set until scn 1323434;

   Restore database;

   Recover database;

   Alter database open resetlogs;

 }

Oracle 備份進度查看

 

作業 :不完全恢復

    --插入表數據

insert into a select * from a;

Cmmit;

--查看正在用的日志組

SQL> select GROUP#,STATUS from v$log;

 

    GROUP# STATUS

---------- ----------------

         3 CURRENT

         2 INACTIVE

         1 INACTIVE

--刪除日志組

rm -rf /u01/app/oracle/oradata/orcl/redo3.log

--找到可以還原的時間點

SQL> select GROUP#,FIRST_CHANGE#,NEXT_CHANGE# from v$log;

 

    GROUP# FIRST_CHANGE# NEXT_CHANGE#

---------- ------------- ------------

         1       4976405      4977820

         2       4977820      4979576

         3       4979576   2.8147E+14

--全庫還原

Run{

   startup mount force;

   set until scn 4979576;

   restore database;

   recover database;

   alter database open resetlogs;

 }

--進行全庫備份

 backup database plus archivelog delete input;

 

-----建備份還原到新環境中

  Set newname for datafile and set newname for tempfile

  Set newname for tablespace

  Set newname for database

 

作業:nolongnewname

---nolong表情況 example is nolong表空間。

   create table b (id int) tablespace EXAMPLE;

   Rm-rf /u01/app/oracle/oradata/prod/example01.dbf

   alter database datafile 5 offline drop;

   Restore datafile 5;

   recover datafile 5;

   alter database datafile 5 online;

--newname 還原到新地方

  Run {

     Sql 'alter tablespace example offline immediate';

     Set newname for tablespace example to '/home/oracle/%b';

     Restore tablespace example;

     Switch datafile all;

     Recover tablespace example;

     Sql 'alter tablespace example online';

        }

  

 RMAN> report schema;

  

--鏡像拷貝恢復(建現在用的文件用備份的鏡像直接替換)

List copy of datafile 5;

alter database datafile 5 offline drop;

--copy的鏡像替換datafile'/home/oracle/example01.dbf'

switch datafile '/home/oracle/example01.dbf' to copy;

recover datafile 5;

alter database datafile 5 online;

 

 

 

 

 recover copy of database with tag 'daily_inc';

Backup incremental level 1 for recover of copy with tag 'daily_inc' database;

 

---非歸檔模式的備份恢復alter database noarchivelog;

Noarchivelog

Full-全備:

Backup: mount -->backup(backup database;backup current controlfile;)

Restore: mount-->restore database;-->alter database open resetlogs;

增量:

Backup: mount -->

  第一天

  backup incremental leve 0 database;

  Backup current controlfile;

  第二天

   backup incremental leve 1 database;

   Backup current controlfile;

  ...........

Restor

 Restore latest controlfile;

 Mount;

 Restore database;

 Recover database noredo;

 alter database open resetlogs;

 

disaster recovery --災難性恢復

  最小需求

  Backups of data files

  Corresponding archived redo logs files

  At least one control file autobackup

 

  ----數據文件不在、控制文件不在、參數文件不在

步驟

   1、恢復參數文件

      Rman

      A、啟動啞實例:startup nomount

      B、恢復參數文件:

      

   2、以參數文件啟動實例

      Startup nomount force;

      恢復控制文件

      

   3、使用控制文件啟動到mount

      Alter database mount;

      恢復庫(日志沒丟完全恢復、丟日志不完全恢復)

      Restore database & recover database;

   4alter database open resetlogs;(改變了控制文件需要重寫日志)

------alter system archive log current;--對日志進行歸檔

 

---刪除了所有的歸檔日志處理辦法

   List archivelog all;

   Crosscheck archivelog all;

   Delete archivelog all;

   backup database plus archivelog delete input;

備份后--alter system archive log current;--對日志進行歸檔

 

作業:災難性恢復

   刪除數據文件、控制文件、參數文件。

   Shutdown abort;

   Startup nomount;

   恢復參數文件

   restore spfile from autobackup recovery area='/u01/app/oracle/fast_recovery_area/' db_name='orcl';

   以參數文件啟動實例

   Startup nomount force;

   恢復控制文件

   restore controlfile from autobackup ;

   Alter database mount;

   恢復數據庫

   Restore database;

   Recover database;

   打開數據庫;

   alter database open resetlogs;

 

還原到新主機--不完全恢復

 Archivelog mode+whole database;

   archive log list;

   backup database plus archivelog delete input;

   alter system archive log current;

1、控制文件

   Create pifile from spfile;

   Scp pifile 到新機器對應目錄

   修改pifile 建目錄

   export ORACLE_SID=prod

   Rman 啟動到nomount

2、恢復controlfile文件

   Prod

List backup of controlfile;

Scp controlfile 到新主機

Restore controlfile from ‘控制文件路徑’;

Alter database mount;

List backup;--找最新的archlogscn用於不完全恢復

3、恢復數據庫

拷貝prod的最新備份文件到新主機相同目錄下(建目錄)

Restore & recover database

Run{

 Set until scn 15454;

 Restore database;

 Recover database;

}

 

 alter database open resetlogs;

 

作業:還原到新主機

   1、還原參數文件

   Prod

create pfile from spfile;

scp initprod.ora oracle@192.168.20.251:/u01/app/oracle/product/12.1.0/dbhome_1/dbs/

修改新主機的initprod.ora

mkdir -p /u01/app/oracle/admin/prod/adump /u01/app/oracle/oradata/prod /home/oracle/mydir /u01/app/oracle/fast_recovery_area /u01/app/oracle

新主機

  export ORACLE_SID=prod

  rman target /

  startup nomount;

2、恢復controlfile文件

       Prod

   List backup of controlfile;

   scp /u01/app/oracle/fast_recovery_area/PROD/autobackup/2019_10_13/o1_mf_s_1021547306_gt559b8s_.bkp oracle@192.168.20.251:/home/oracle/

  新主機

   Restore controlfile from '/home/oracle/o1_mf_s_1021547306_gt559b8s_.bkp';

   Alter database mount;

  Prod

   List backup;--找最新的archlogscn用於不完全恢復

       List of Archived Logs in backup set 25

       Thrd Seq     Low SCN    Low Time  Next SCN   Next Time

         ---- ------- ---------- --------- ---------- ---------

         1    29      2848763    13-OCT-19 2848803    13-OCT-19

      

     3、恢復數據庫

     拷貝prod的最新備份文件到新主機相同目錄下(建目錄)

     新主機:mkdir -p /u01/app/oracle/fast_recovery_area/PROD/backupset

     Prodscp -r /u01/app/oracle/fast_recovery_area/PROD/backupset/2019_10_13    oracle@192.168.20.251:/u01/app/oracle/fast_recovery_area/PROD/backupset/

    新主機:

     Restore & recover database

        Run{

           Set until scn 2848803;

           Restore database;

           Recover database;

           }

 4、啟動庫

    alter database open resetlogs;

 

Duplicate database --復制數據庫

  在線復制

  基於備份的復制(對生產沒有影響)--(連接生產、不連接生產)--連接新主機

12c新概念

  The push process is based on image copies; 鏡像拷貝  

  The pull process is based on backup sets;12c 新特性 (備份集拷貝)

---在線復制-復制成新實例名稱

1、復制initorclt.ora到新主機

2、修改initoraclt.ora 的實例名稱和路徑、建立路徑

3、啟動到nomount

4、啟動監聽alter system register;

5、靜態注冊,改配置文件

6、准備腳本http://www.xuwang.online/index.php/archives/57/

7、准備密碼文件 orapwd file=$ORACLE_HOME/dbs/orclpwdb01

8、

9、運行腳本

 

作業:在線復制數據庫

   11prod 復制到251orcl

   1、復制initorclt.ora到新主機

scp initprod.ora oracle@192.168.20.251:/u01/app/oracle/product/12.1.0/dbhome_1/dbs/initorcl.ora

   2、修改initoraclt.ora 的實例名稱和路徑、建立路徑

%s/prod/orcl/g

Mkdir -p /u01/app/oracle/admin/orcl/adump  /u01/app/oracle/oradata/orcl/

   3、啟動到nomount

     export ORACLE_SID=orcl

     sqlplus / as sysdba

     Startup nomount;

   4、啟動監聽alter system register;

       靜態注冊,改配置文件

LISTENER =

  (DESCRIPTION=

       (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.20.251)(PORT=1521))

   )

 

SID_LIST_LISTENER=

  (SID_LIST=

    (SID_DESC=

       (GLOBAL_DBNAME = orclzc)

       (SID_NAME = orcl)

       (ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1)

    )

  )

    6、准備腳本http://www.xuwang.online/index.php/archives/57/

    run{

SET NEWNAME FOR DATABASE TO '/u01/app/oracle/oradata/orcl/%b';

DUPLICATE TARGET DATABASE TO orcl

FROM ACTIVE DATABASE

NOFILENAMECHECK

logfile

group 1 ('/u01/app/oracle/oradata/orcl/redo01a.log') SIZE 50M REUSE,

group 2 ('/u01/app/oracle/oradata/orcl/redo02a.log') SIZE 50M REUSE,

group 3 ('/u01/app/oracle/oradata/orcl/redo03a.log') SIZE 50M REUSE;

}

    7rman連接目標庫和還原庫

 

    orapwd file=$ORACLE_HOME/dbs/orapworcl password=oracle

    rman target sys/oracle@192.168.20.11:1521/prod auxiliary sys/oracle@192.168.20.251:1521/orclzc

 

 backup-based duplicate  (orcl  ---> cfopdb)

 

 

1. Create an Oracle password file for the auxiliary instance. (optional)

$ orapwd file=orapwcfopdb

 

2. Establish Oracle Net connectivity to the auxiliary instance. (optional)

 

3. Create an initialization parameter file for the auxiliary instance.

 

4. Start the auxiliary instance in NOMOUNT mode.

[oracle@demo dbs]$ export ORACLE_SID=cfopdb

[oracle@demo dbs]$ rman target /

startup nomount;

 

5. Mount or open the target database.

SQL> select status from v$instance;

 

6. Ensure that backups and archived redo log files are available.

$ scp /u01/app/oracle/fast_recovery_area/ORCL/archivelog/2019_10_13/* 192.168.20.10:/u01/app/oracle/fast_recovery_area/ORCL/archivelog/2019_10_13/

 

7. Allocate auxiliary channels if needed.

8. Execute the DUPLICATE command.

 

$ rman target sys/oracle@192.168.20.250:1521/orcl auxiliary /

 

RMAN> RUN

{SET NEWNAME FOR DATABASE TO '/u01/app/oracle/oradata/cfopdb/%b';

DUPLICATE TARGET DATABASE to cfopdb NOFILENAMECHECK

logfile

group 1 ('/u01/app/oracle/oradata/cfopdb/redo01a.log') SIZE 50M REUSE,

group 2 ('/u01/app/oracle/oradata/cfopdb/redo02a.log') SIZE 50M REUSE,

group 3 ('/u01/app/oracle/oradata/cfopdb/redo03a.log') SIZE 50M REUSE;

}

rman加密恢復

  TDE(錢夾的方式 基於鑰匙的加密)

  1、基於口令的加密

  

   恢復

   

  2、基於鑰匙的加密

       http://www.xuwang.online/index.php/archives/140/

     A、建鑰匙目錄

        Mkdir /u01/wallet

     B、配置錢夾位置

        More $ORACLE_HOME/network/admin/sqlnet.ora

         

        Lsnrctl stop  /   start

     C、創建秘鑰

         Sqlplus / as sysdba    

 

 

 

 

 

 

 

作業:秘鑰加密、錢夾方式加密、雙棧模式

  Rman

--密碼加密備份

SET ENCRYPTION ON IDENTIFIED BY 'oracle' only; run{

  Backup datafile 6; }

      

alter database datafile 6 offline;

rm /u01/app/oracle/oradata/prod/users01.dbf;

--密碼提供恢復

SET DECRYPTION IDENTIFIED BY 'oracle';run{

  restore datafile 6;

  recover datafile 6;}

--錢夾加密

  --建目錄

   Mkdir /home/oracle/wallet

  --編輯sqlnet.ora

  --重啟監聽實例

  --sqlplus / as sysdba

  --創建keystore文件

  --打開keystore文件

  --生成key

  --打開wallet

ADMINISTER KEY MANAGEMENT CREATE KEYSTORE '/home/oracle/wallet' IDENTIFIED BY oracle;

ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY oracle;

ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY oracle WITH BACKUP USING 'for_12c';

ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "oracle";

rman

SET ENCRYPTION ON;

run {

backup datafile 6;

}

alter database datafile 6 offline;

restore datafile 6;

 

--diagnosing failures  

Adr(repository倉庫)/ dra(advisor顧問)

--參數diagnostic_dest 指定adr 的路徑

Dra 只支持單實例 不支持rac

支持主從切換

Dra 功能作用

Dra 步驟

   Validate database; --對數據庫進行校驗、檢查是否有錯誤。

  Rman

List failure;

Advise failure;

Repair failure;

---cure日志出問題實例直接掛了

  啟動到mount

  不完全恢復

--block 恢復

   物理壞塊

     --查看壞塊

     1Ora-01578 物理壞塊

      2、告警日志

      3、看視圖

     防止壞塊參數(性能)

 

  恢復壞塊:

     1、制作壞塊

 

     2、人為校驗 rman > validate database;

                       Validate datafile 5;

           Select * from v$database_block_corruption;

        

     3、修復

        Recover datafile 5 block 150;

        recover corruption list;

    ADG 主備庫

   邏輯壞塊

 

作業:物理壞塊修復

1、制作壞塊

   dd if=/dev/zero of=/u01/app/oracle/oradata/prod/users01.dbf count=2 seek=150 bs=8192 conv=notrunc

2、人為校驗

       rman > validate database;

       Select * from v$database_block_corruption;

3、修復壞塊

    Recover datafile 6 block 150;

    Recover datafile 6 block 151;

    recover corruption list;

 

 

pitr 基於時間點的還原

 Tspitr:表空間基於時間點的還原(啟動輔助實例-導出源數據-修改原來的datafile

 Tpirt:表基於時間點的還原 (12c)(啟動輔助實例-導出表數據-導入數據表)

   Target time:目標點

   Recover set:需要恢復的表空間集合

   Auxiliary set:輔助完成需要的集合

   Auxiliary destination --輔助實例目錄

操作:

1Backup database;

2Select to_char(sysdate,’yyyy-mm-dd hh24:mi:ss’) from dual;

3Drop table name;

4-檢查表空間是否self-contain(是否獨立是否和其他表空間關聯)

 

5--check lost object --檢查是否有丟失數據

 

6、還原表空間到時間點

 

Users是永久表空間,不能刪除,需要換一個表空間進行實驗

 

作業:表空間、表的時間點的恢復

--表空間的時間點恢復

create tablespace cytbs datafile '/u01/app/oracle/oradata/prod/cytbs01.dbf' size 10m;

backup database;

create table hr.regionscp tablespace cytbs as select * from hr.regions;

SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

 

TO_CHAR(SYSDATE,'YY

-------------------

2019-10-19 15:45:27

 

drop table hr.regionscp;

1. self-contain

 

exec DBMS_TTS.TRANSPORT_SET_CHECK ('CYTBS');

SELECT * FROM TRANSPORT_SET_VIOLATIONS;

2. check lost object

 

select owner, name,to_char(creation_time,'yyyy-mm-dd hh24:mi:ss') create_time

from ts_pitr_objects_to_be_dropped

where tablespace_name = 'CYTBS' and

creation_time > to_date('2019-10-19 15:45:27','yyyy-mm-dd hh24:mi:ss');

 

3. 還原表空間

mkdir /home/oracle/aux

rman target /

 

RECOVER TABLESPACE cytbs

UNTIL TIME "to_date('2019-10-19 15:45:27','yyyy-mm-dd hh24:mi:ss')"

AUXILIARY DESTINATION '/home/oracle/aux';

4alter tablespace cytbs online;

 

--表的時間點恢復

  Backup database

1、創建表

2、查找時間點

3、drop table (truncate 表不能還原(提示表存在,可以再次把表刪除再還原))

4、檢查self-containcheck lost object

4、還原表

create table hr.regionscp tablespace cytbs as select * from hr.regions;

SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

TO_CHAR(SYSDATE,'YY

-------------------

2019-10-19 16:01:16

 

drop table hr.regionscp;

 

recover table hr.regionscp

until time "to_date('2019-10-19 16:01:16','yyyy-mm-dd hh24:mi:ss')"

auxiliary destination '/home/oracle/aux';

Transporting data 可傳輸表空間

   跨平台功能 版本10.0以上

   

表空間傳輸操作:

1、查看系統是否支持

2、檢查表空間自包含

3、修改表空間read only

   Alter tablespace tabales_name read only;

4、倒源數據

   

5、轉換數據 (不同系統)

  Rman >

   

   注:%U唯一名稱

6、讓生產庫表空間可讀

   Alter tablespace tabales_name read write;

7、傳輸源和轉換后的數據文件到新主機

8、源數據放到data_pump_dir 目錄下

Select * from dba_directories

9、新主機導入

   

   Alter tablespace tabales_name read write;

  

exclude=statistics  ---不導入統計信息

content=metadata_only  --只導出源數據

 

作業:傳輸表空間

 1select * from v$transportable_platform;

    execute dbms_tts.transport_set_check('CYTBS',true);

select * from transport_set_violations;

 2Alter tablespace CYTBS read only;

 3expdp system/oracle dumpfile=cytbs.tbs.metadata transport_tablespaces=CYTBS

******************************************************************************

Dump file set for SYSTEM.SYS_EXPORT_TRANSPORTABLE_01 is:

  /u01/app/oracle/admin/prod/dpdump/cytbs.tbs.metadata

******************************************************************************

Datafiles required for transportable tablespace CYTBS:

  /u01/app/oracle/oradata/prod/cytbs01.dbf

新主機

4、select * from dba_directories where directory_name='DATA_PUMP_DIR';

5、新主機導入

   impdp system/123qweQWE dumpfile=cytbs.tbs.metadata transport_datafiles='/u01/app/oracle/oradata/orcl/cytbs01.dbf';

   Alter tablespace CYTBS read write;

Rman troubleshooting  rman告警

   Debuge 選項

   Rman 三個階段Readprocesswrite 讀、 處理、 寫

   Backup validate database 只進行讀 處理 不寫 (測試速度)

   V$backup_async_io   v$backup_sync_io  --異步io 同步io視圖

   V$session_longops --時間很長的語句

    

rman 看進度

 

Rman 調優

 

BEST PRACTISE

 

1. whole ---> partial                           --部分備份

2. increamtal backups  (block change tracking)  --增量備份

3. multile channel( parallel)                   --多通道 並行

RMAN>run{

ALLOCATE CHANNEL c1 DEVICE TYPE disk;

ALLOCATE CHANNEL c2 DEVICE TYPE disk;

ALLOCATE CHANNEL c3 DEVICE TYPE disk;

backup database;

SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';

}

-----手工指定通道

BACKUP

INCREMENTAL LEVEL = 0

(DATAFILE 1,4,5 CHANNEL c1)

(DATAFILE 2,3,9 CHANNEL c2)

(DATAFILE 6,7,8 CHANNEL c3);

---

4. Compress                           --壓縮

5. section size + parallel            --大文件分塊+並行

6.

   a.CONFIGURE BACKUP OPTIMIZATION ON --rman自動優化參數(備了的就不備份了)

   b.backup archivelog delete input;   

   c.backup archivelog;

     delete archivelog until time "sysdate-1/24"  --刪除一小時以前的所有歸檔

   

7. large pool                        --配置大池

8. minnus backup or restore          --最小備份恢復

Use block media recovery for isolated block corruptions.

 

 

十、閃回

 

准備配置:

  Flashback privileges

  Show parameter undo;

      undo_management  string  AUTO

 --顯示當前數據庫的scn

 

1、閃回查詢

   

2、閃回版本查詢(兩點之間的變化)

 

作業:閃回查詢

   create table a(id int);

   insert into a values(1);

   SQL> select current_scn from v$database;

 

CURRENT_SCN

-----------

3615339

update a set id=10 where id=1;

   SQL> select current_scn from v$database;

CURRENT_SCN

-----------

3615366

--閃回查詢

select * from a as of scn 3615339 where id=1;

--閃回版本查詢

select versions_xid,VERSIONS_STARTSCN,VERSIONS_ENDSCN,id from a  versions between scn 3615339

       and 3615366;

 

--閃回查詢 做了ddl語句就不能生效

          發生段的收縮 不能查詢

3、閃回事務查詢

  (分析作用)(里面有undo sql

  Flashback_transaction_query --閃回事務查詢表

  select * from FLASHBACK_TRANSACTION_QUERY where table_name='REGIONS';

  需要開附加日志

   Alter database Add supplemental log data;

  閃回事務

   select * from FLASHBACK_TRANSACTION_QUERY where table_name='A';

   Dbms_falshback.transaction_backout (調用閃回存儲方法)

      declare

        xids sys.xid_array;

      begin

        xids := sys.xid_array('04000D00A9050000');

        dbms_flashback.transaction_backout(1,xids,options=>dbms_flashback.nocascade);

      end;

     /

   注意:閃回事務不自帶提交

         Write-after-writer    多個事務更新,閃回前一個的時候

         Primary key depend  多個事務delet-insert,主鍵沖突 (對delete事務閃回)

         Foreign key depend  多個事務多張表 表一insert 表二引用表一的insert數據(對表一的事務閃回)

   Cascade(級聯)、nocascadenocascade_forcenonconflict_only(閃回不沖突的)

  

作業:閃回事務

    --打開閃回事務日志(日志會變大)

Alter database Add supplemental log data;

--查詢閃回信息記錄表

select * from FLASHBACK_TRANSACTION_QUERY where table_name='A';

--輸入xid閃回事務

      declare

        xids sys.xid_array;

      begin

        xids := sys.xid_array('0200180082100000');

        dbms_flashback.transaction_backout(1,xids,options=>dbms_flashback.nocascade);

      end;

     /

    --進行事務提交

 Commit;

4、閃回表

   In-place

   相關權限

   Alter table table_name enable row movement;  --開啟表移動

   

  select current_scn from v$database;

  update hr.regions set region_name='sc';

  commit;

  flashback table hr.regions to scn 2476463;

   自帶提交

注意:統計信息不能閃回

      操作時要鎖表

      系統表不能閃回

      Ddl 不能跨越

      產生undo redo data

5、閃回drop

  Recycle bin(放在回收站)(默認開啟)show parameter recycle

  Show recyclebin;

  Flashback table emjployes to before drop;

  flashback table regionscp to before drop rename to oldregionscp;

  flashback table "BIN$lT6QVYSWd+DgU/r+Gawd/A==$0" to before drop;

 

  Show recyclebin;--顯示回收站信息

  Dba_free_space  ---數據庫空間

  Purge table regionscp; --清理回收站最老的數據

  System\sys 用戶操作沒有回收站

6、閃回數據歸檔

  Temporal history11g

   把某個表的操作歸檔到表中(閃回歸檔)

   1、建表空間

   2、創建閃回歸檔

   3、表關聯數據歸檔

   create tablespace fdatbs datafile '/u01/app/oracle/oradata/orcl/fdatbs01.dbf' size 10m;

   CREATE FLASHBACK ARCHIVE fda1 TABLESPACE fdatbs  QUOTA 10M RETENTION 1 YEAR; 

   ALTER TABLE HR.REGIONS FLASHBACK ARCHIVE fda1;

   

   表做了閃回歸檔,就不能刪除了

  Temporal validity and history(12c)--數據自動歸檔

  作業:閃回表、閃回drop、配置某表的閃回歸檔

     --閃回表

        create table hr.cs(id int,name varchar2(20));

        insert into hr.cs values (1,'zhangs');

        SQL> select current_scn from v$database;  --查詢scn號

 

       CURRENT_SCN

        -----------

        3736392

         insert into hr.cs values (2,'zhangs');     

         Commit;

         Alter table hr.cs enable row movement;         --配置行移動

         flashback table hr.cs to scn 3736392;    --閃回表到某個點

   

--閃回drop

    drop table hr.cs;

    Show recyclebin;                           --查看回收站      

    Flashback table hr.cs to before drop;           --閃回表

        

--配置某表的閃回歸檔

    

      create tablespace fdatbs datafile '/u01/app/oracle/oradata/prod/fdatbs01.dbf' size 10m;  --創建表空間

      CREATE FLASHBACK ARCHIVE fda1 TABLESPACE fdatbs  QUOTA 10M RETENTION 1 YEAR; --創建閃回歸檔

      ALTER TABLE HR.cs FLASHBACK ARCHIVE fda1;                             --表關聯數據歸檔

      ALTER TABLE HR.cs no FLASHBACK ARCHIVE ; --撤銷關聯

    

7、閃回數據庫

   邏輯閃回 rman物理還原

   

     前提: 開閃回區

            開歸檔

     開閃回數據庫

         Shutdown immediate;

         Starup mount;

         Show parameter recover;

         archive log list;

         Alter database flashback on;

         Alter database open;  

      使用:

         select current_scn from v$database;

         Drop user hr cascade;  --刪除用戶及表

         Startup mount force;

         Flashback database to scn 3750985;

         Alter database open read only; --只讀模式后可以多次進行閃回

         Alter database open resetlogs;

         --查詢最早閃回時間

          

  Guaranteed restore points --強制還原點

     

 十一、managing spaces

      Block space management

       (ASMM)

     

      pctfree 作用) Row chain/row migrate 行連接(insert時) 行遷移(update

       Select chain_cnt,avg_row_len from user_tables where table_name='hr.cs';

       analyze table hr.cs compute statistics;--表分析

       alter table hr.cs move ;  --表移動可以消除塊和指針分離的情況,提高查詢速度 (表遷移索引會失效)

   Segments

   Understanding deferred segment creation --延遲段分配

   Show paramater defer; --參數

   下面三類不能延遲段分配:

     Iot表 (索引表)

     分區表

     字典類型表空間的表

   Alter index test_1 rebuild online;--在線建索引,不加online會鎖表

     Unusable 不分配表空間,回收空間

  Table compression--表壓縮

     Direct-path insert operations --基本壓縮(一次性導入,其他在次insert沒什么用)(直接路徑加載)

         -默認-pctree=0 --內容不經常變得表

 

     Advanced row compression for dml dperations --高級壓縮,所有的操作都可以(寫數據要慢點、很耗cpu

         (12c語法

   

       高級壓縮使用情況:

         堆表、分區表、nested table

       不能用情況:

          多余255列的表、基本壓縮不能刪除列,高級壓縮可以刪除列

   Select * from dba_segments;--段表

      

作業表壓縮:基本壓縮、高級壓縮

      create table big as select * from dba_objects;

      insert into big select * from big;

      commit;

      create table nocompresst as select * from big;

      create table compresst COMPRESS BASIC as select * from big;

      create table compresst_oltp ROW STORE COMPRESS ADVANCED as select * from big where 1=2;

      insert into compresst_oltp select * from big;

      commit;

      --查看

      select segment_name,bytes/1024/1024 from dba_segments where segment_name in ('NOCOMPRESST','COMPRESST','COMPRESST_OLTP');

 

Tablespace monitoring --表空間監控

Shrinking segments 

      --收縮表空間

   操作(不能對sys表空間的表進行操作)

     Alter table table_name enable row movement;--行移動

     Alter table table_name shrink space compact;  --移數據

     Alter table bable_name shrink space;  --移水位線(鎖表)

Rowid 變動 索引失效

--shrinking

  自動維護索引

  不會觸發 觸發器

  節省空間

  Iot表 建議重修rebuit二級索引

 Assm segments 自動表空間管理

段顧問(只能用在自動段空間管理的表空間)

   自動跑

 手動運行段顧問

 --分析表是否有空的高水位線

   variable id number;

begin

  declare

  name varchar2(100);

  descr varchar2(500);

  obj_id number;

  begin

  name:='advisor_cy test3';

  descr:='Segment Advisor Example';

 

  dbms_advisor.create_task (

    advisor_name     => 'Segment Advisor',

    task_id          => :id,

    task_name        => name,

    task_desc        => descr);

 

  dbms_advisor.create_object (

    task_name        => name,

    object_type      => 'TABLE',

    attr1            => 'HR',

    attr2            => 'BIGT',

    attr3            => NULL,

    attr4            => NULL,

    attr5            => NULL,

    object_id        => obj_id);

 

  dbms_advisor.set_task_parameter(

    task_name        => name,

    parameter        => 'recommend_all',

    value            => 'TRUE');

 

  dbms_advisor.execute_task(name);

  end;

end;

/

 

tablespace-based:

 

object_type:TABLESPACE

attr1: <tablespace-name>

attr2: NULL

----查看分析結果

col task_name format a10

col segname format a10

col partition format a10

col type  format a10

col message format a30

select af.task_name, ao.attr2 segname, ao.attr3 partition, ao.type, af.message

from dba_advisor_findings af, dba_advisor_objects ao

where ao.task_id = af.task_id

and ao.object_id = af.object_id

and lower(af.message) like '%shrink%';

 

作業:創建一個大表,刪除數據 分析是否有空高水位線,進行shrink

     create table hr.big as select * from dba_objects;

     insert into hr.big select * from hr.big;

     Commit;

     Delete hr.big;

     ---進行分析

   variable id number;

begin

  declare

  name varchar2(100);

  descr varchar2(500);

  obj_id number;

  begin

  name:='advisor_cy test3';

  descr:='Segment Advisor Example';

 

  dbms_advisor.create_task (

    advisor_name     => 'Segment Advisor',

    task_id          => :id,

    task_name        => name,

    task_desc        => descr);

 

  dbms_advisor.create_object (

    task_name        => name,

    object_type      => 'TABLE',

    attr1            => 'HR',

    attr2            => 'BIG',

    attr3            => NULL,

    attr4            => NULL,

    attr5            => NULL,

    object_id        => obj_id);

 

  dbms_advisor.set_task_parameter(

    task_name        => name,

    parameter        => 'recommend_all',

    value            => 'TRUE');

 

  dbms_advisor.execute_task(name);

  end;

end;

/

--查看結果

col task_name format a10

col segname format a10

col partition format a10

col type  format a10

col message format a30

select af.task_name, ao.attr2 segname, ao.attr3 partition, ao.type, af.message

from dba_advisor_findings af, dba_advisor_objects ao

where ao.task_id = af.task_id

and ao.object_id = af.object_id

and lower(af.message) like '%shrink%';

--進行shrink

 Alter table hr.big enable row movement;--行移動

 Alter table hr.big shrink space compact;  --移數據

 Alter table hr.big shrink space;  --移水位線(鎖表)

Managing Resumable space allocation 

    --空間不夠暫停jobs 可喚醒表空間管理

  操作

   Show parameter resum;

   Alter session enable resumable timeout 3600;

   Select * from dba_resumable; --查看等待多少時間

   

   使用喚醒表空間的情況

     The following operations are resumable:

      Queries: SELECT statements that run out of temporary

      space (for sort areas)

       DML: INSERT,

       INSERT UPDATE,

       UPDATE and DELETE statements

       The following DDL statements:

       CREATE TABLE ... AS SELECT

       CREATE INDEX

       ALTER INDEX ... REBUILD

       ALTER TABLE ... MOVE PARTITION

       ALTER TABLE ... SPLIT PARTITION

       ALTER INDEX ... REBUILD PARTITION

       ALTER INDEX ... SPLIT PARTITION

       CREATE MATERIALIZED VIEW

 

Automat tasks --自動任務

   Schedule(時間) ---job ---program(任務塊)

   SELECT t.* FROM  dba_jobs t; --查看所有的job

--創建job任務

   1. create program

 

BEGIN

DBMS_SCHEDULER.CREATE_PROGRAM(

program_name =>'my_pro1',

program_action =>'begin

              insert into hr.job_test1 values(sysdate);

              commit;

           end;',

program_type =>'PLSQL_BLOCK',

number_of_arguments =>0,

comments =>'insert sysdate into table',

enabled =>TRUE);

END;

/

 

2. create schedule

BEGIN

dbms_scheduler.create_schedule(

repeat_interval => 'FREQ=SECONDLY;INTERVAL=30',

start_date   => sysdate,

comments => 'Start Every 30 seconds',

schedule_name    => 'my_sch1');

END;

/

3. create job

BEGIN

dbms_scheduler.create_job(

job_name => 'my_job1',

program_name=> 'my_pro1',

schedule_name    => 'my_sch1',

comments=> 'insert sysdate into table',

enabled=> TRUE);

END;  

/

   Job chain -很多job 鏈接在一起

Resource manager --資源管理器

   多個系統使用同一個數據庫

   作用對象 資源使用者組

      資源計划

   Using advanced scheduler features

 

 

 

  Thresholds

Memory manager 

 Amm-->asmm-->手動管理方式

 

  --內存管理

   Amm (automaitc memory managerment)         --自動管理所有內存

     Show parameter memory

      Memory_max_target  --最大限制,不給就以下面為准

      Memory_target   --以這個參數為准(啟用了amm)(60-80%

   Asmm (automatic shared memory management)   --自動管理sga內存

      Memory_target = 0

Show parameter sga --開啟asmm

   Sga_max_size

   Sga_target    ---設置memory80%

 

 Log buffer --修改后要重啟實例(一般不改)

Pga_aggregate_target --pga參數(沒什么用)

-------查看內存管理

先看memory  amm

    再看sga  asmm

----如果memorysga 都設置了值 sga設置的值為最小值

 Amm-->asmm-->手動管理方式

 重置內存參數,修改spfile

Huge page --開大頁(2M)

  設置

關閉ammmemory

Sga_max_size

1、算頁 Sga_max_size/2 + 100

2、打開限制

  More /etc/security/limits.conf

   Oracle soft memlock -1

   Oracle hard memlock -1

3、設置參數

      More /etc/sysctl.conf

       vm.nr_hugepages = ‘算出的頁大小’

Sysctl -p (配置大頁 很慢) --建議重啟主機

查看大頁

  grep -i huge /proc/meminfo

  Ipcs

Rac: off transparent hugepage --rac 關閉透明大頁 

作業:開啟huge page

   Show parameter target

   --關閉amm

   Alter system set memory_target=0;

   --計算大頁個數

   Sga_max_size/2 + 100 = 260

   --打開限制,添加參數

    # vi /etc/security/limits.conf

          oracle  soft  memlock -1

          oracle  hard  memlock -1

   --設置參數,添加配置

      # tail -n 1 /etc/sysctl.conf

              vm.nr_hugepages = 260  [sysctl -a --查找參數]

   --reboot host and review

Install grid

優點:

  1、進程重啟

  2、資源放asm

Oracle restart

Install db software

Dbca

Install grid software

Register to cluster software

1、建目錄

  mkdir -p /u01/app/grid/12.1 /u01/app/grid_base

2、解壓

3、Root

   xhost +

   Echo $DISPLAY

   Su - oracle

Export DISPLAY=:0

4、安裝

  執行root命令時注意。

5、環境變量

6、注冊

   加數據庫、加監聽(先關監聽)

   srvctl add database -db prod -oraclehome /u01/app/oracle/product/12.1.0/dbhome_1

   Lsnrctl stop

   srvctl add listener

7、集群軟件管理數據庫

   srvctl start database -d orcl --啟動數據庫  

   srvctl status database -d orcl

   crsctl stat res -t

   select open_mode,status from v$database,v$instance;

   

Asm

  Raw(udev)

    http://www.xuwang.online/index.php/archives/124/

  Asmlib

asmca

 

冗余級別

  High     (3)

  Normal    (2)

  Externam(none)  (1)

 

Rebalancepower--加磁盤到組 oracle會自動平衡數據

刪除盤 自動遷移數據到其他盤

Failgroup 失敗組(不同磁盤分到同一個組)

 

Grid 實例

   Sqlplus / as sysasm

       V$asm_disk \ V$asm_diskgroup

       Show parameter asm_dis; --默認查找磁盤路徑

 

--統計信息收集(系統定時晚上收集)(即字典對表信息的顯示 如表多少行)

--手動收集統計信息(查詢慢可以進行統計信息收集)

http://www.xuwang.online/index.php/archives/146/

 

作業:手動收集統計信息

  select * from DBA_AUTOTASK_CLIENT;

  select owner,table_name,num_rows from dba_tables where

   table_name='REGIONS';

  select count(*) from hr.regions;

  insert into hr.regions values(13,'1');

  commit;

  --查看統計信息沒有變

   select owner,table_name,num_rows from dba_tables where

   table_name='REGIONS';

  --收集表統計信息

   exec dbms_stats.gather_table_stats(ownname => 'HR',tabname => 'EMPLOYEES',estimate_percent =>   10,method_opt=> 'for all indexed columns') ;

   --再次查看統計信息變化了

   select owner,table_name,num_rows from dba_tables where

   table_name='REGIONS';

Awr

  Mmon-->60minutes -->awr

--查看快照

  Select * from Dba_hist_snapshot

--拍攝快照(默認快照8天)

  

--基線(一段時間的快照集合)

生成awr 報告

  --配置起始快照位置

 @?/rdbms/admin/awrrpt.sql

 

Addm

  --monitor

--識別和修復不可用的對象

  

Cdb pdb

  http://www.xuwang.online/index.php/archives/46/

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM