gdufo

           

          rman 增量備份

          一、準(zhǔn)備工作
          查看是否處在歸檔模式
          SQL> archive log list;
          Database log mode              No Archive Mode
          Automatic archival             Disabled
          Archive destination            USE_DB_RECOVERY_FILE_DEST
          Oldest online log sequence     28
          Current log sequence           30

          如果是"No Archive Mode"
          修改為歸檔模式
          首先要關(guān)閉數(shù)據(jù)庫,啟動到mount狀態(tài)。
          SQL> shutdown immediate;

          SQL> startup mount;
          修改為歸檔模式
          SQL>alter database archivelog;

          驗證修改結(jié)果
          SQL> select log_mode from v$database;
          LOG_MODE
          ------------
          ARCHIVELOG

          打開數(shù)據(jù)庫
          SQL> alter database open;

          二、RMAN Catalog 配置
          創(chuàng)建 RMAN Calalog表空間
          SQL>create tablespace RMAN_TS datafile '/opt/oracle/oradata/orcl/RMAN_TS01.dbf' size 500M;

          --創(chuàng)建用戶rman/rman 默認(rèn)表空間味RMAN_TS允許自由使用
          SQL> create user rman identified by rman default tablespace RMAN_TS quota unlimited on RMAN_TS;
          用戶授權(quán)
          SQL>grant connect, resource,recovery_catalog_owner to rman;

          創(chuàng)建恢復(fù)目錄
          在命令終端
          [oracle@localhost ~]$rman catalog rman/rman
          RMAN> CREATE CATALOG;
          連接,注冊目標(biāo)數(shù)據(jù)庫,同步catalog和控制文件
          [oracle@localhost ~]$rman target sys/wxbwer catalog rman/rman
          連接成功出現(xiàn)下面的信息
          connected to target database: ORCL (DBID=1325399111)
          connected to recovery catalog database

          RMAN> REGISTER DATABASE;

          RMAN> RESYNC CATALOG;

          下面是否有注冊信息即可
          RMAN>LIST INCARNATION;

          List of Database Incarnations
          DB Key  Inc Key DB Name  DB ID            STATUS  Reset SCN  Reset Time
          ------- ------- -------- ---------------- --- ---------- ----------
          2       36      ORCL     1325399111       PARENT  1          13-AUG-09
          2       4       ORCL     1325399111       CURRENT 754488     25-OCT-12

          三、創(chuàng)建RMAN備份腳本
          來自:http://blog.csdn.net/robinson_0612/article/details/8029245
          ##===========================================================  
          ##   db_bak_rman.sh                
          ##   created by Robinson           
          ##   2011/11/07    
          ##   usage: db_bak_rman.sh <$ORACLE_SID> <$BACKUP_LEVEL>  
          ##          BACKUP_LEVEL:   
          ##             F: full backup  
          ##             0: level 0  
          ##             1: level 1                             
          ##============================================================  
          #!/bin/bash  
          # User specific environment and startup programs  
           
          if [ -f ~/.bash_profile ];   
          then  
          . ~/.bash_profile  
          fi  
           
          ORACLE_SID=${1};                              export ORACLE_SID      
          RMAN_LEVEL=${2};                              export RMAN_LEVEL  
          TIMESTAMP=`date +%Y%m%d%H%M`;                 export TIMESTAMP       
          DATE=`date +%Y%m%d`;                          export DATE          
          #RMAN_DIR=/u02/database/${ORACLE_SID}/backup/rman;   export RMAN_DIR        
          #RMAN_DATA=${RMAN_DIR}/${DATE};                export RMAN_DATA          
          #RMAN_LOG=/u02/database/${ORACLE_SID}/backup/rman/log  export RMAN_LOG
          RMAN_DIR=/opt/oracle/oradata/backup/rman;     export RMAN_DIR    
          RMAN_DATA=${RMAN_DIR}/${DATE};                export RMAN_DATA  
          RMAN_LOG=${RMAN_DIR}/log                      export RMAN_LOG  
          # Check rman level   
          #======================================================================  
          if [ "$RMAN_LEVEL" == "F" ];  
          then  unset INCR_LVL  
                BACKUP_TYPE=full  
          else  
                INCR_LVL="INCREMENTAL LEVEL ${RMAN_LEVEL}"  
                BACKUP_TYPE=lev${RMAN_LEVEL}   
          fi  
           
          RMAN_FILE=${RMAN_DATA}/${ORACLE_SID}_${BACKUP_TYPE}_${TIMESTAMP};       export RMAN_FILE  
          SSH_LOG=${RMAN_LOG}/${ORACLE_SID}_${BACKUP_TYPE}_${TIMESTAMP}.log;      export SSH_LOG  
          MAXPIECESIZE=4G;                                                export MAXPIECESIZE  
           
          #Check RMAN Backup Path  
          #=========================================================================  
           
          if ! test -d ${RMAN_DATA}  
          then  
          mkdir -p ${RMAN_DATA}  
          fi  
           
          echo "---------------------------------" >>${SSH_LOG}  
          echo "   " >>${SSH_LOG}  
          echo "Rman Begin  to Working ........." >>${SSH_LOG}  
          echo "Begin time at:" `date` --`date +%Y%m%d%H%M` >>${SSH_LOG}  
           
          #Startup rman to backup   
          #=============================================================================  
          $ORACLE_HOME/bin/rman log=${RMAN_FILE}.log <<EOF  
          connect target / 
          connect catalog rman/rman
          run {  
          CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 3 DAYS;  
          CONFIGURE BACKUP OPTIMIZATION ON;  
          CONFIGURE CONTROLFILE AUTOBACKUP ON;  
          CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '${RMAN_FILE}_%F';  
          ALLOCATE CHANNEL 'ch1' TYPE DISK maxpiecesize=${MAXPIECESIZE};  
          ALLOCATE CHANNEL 'ch2' TYPE DISK maxpiecesize=${MAXPIECESIZE};  
          set limit channel ch1 readrate=10240;  
          set limit channel ch1 kbytes=4096000;  
          set limit channel ch2 readrate=10240;  
          set limit channel ch2 kbytes=4096000;  
          CROSSCHECK ARCHIVELOG ALL;  
          DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;  
          BACKUP   
          #AS COMPRESSED BACKUPSET   
          ${INCR_LVL}  
          DATABASE FORMAT '${RMAN_FILE}_%U' TAG '${ORACLE_SID}_${BACKUP_TYPE}_${TIMESTAMP}';  
          SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';  
          BACKUP ARCHIVELOG ALL FORMAT '${RMAN_FILE}_arc_%U' TAG '${ORACLE_SID}_arc_${TIMESTAMP}'  
          DELETE  INPUT;  
          DELETE NOPROMPT OBSOLETE;  
          RELEASE CHANNEL ch1;  
          RELEASE CHANNEL ch2;  
          }  
          sql "alter database backup controlfile to ''${RMAN_DATA}/cntl_${BACKUP_TYPE}.bak''";  
          exit;  
          EOF  
          RC=$?  
           
          cat ${RMAN_FILE}.log >>${SSH_LOG}  
          echo "Rman Stop working @ time:"`date` `date +%Y%m%d%H%M` >>${SSH_LOG}
           
          echo >>${SSH_LOG}  
          echo "------------------------" >>${SSH_LOG}  
          echo "------ Disk Space ------" >>${SSH_LOG}  
          df -h >>${SSH_LOG}  
           
          echo >>${SSH_LOG}  
           
          if [ $RC -ne "0" ]; then  
              echo "------ error ------" >>${SSH_LOG}  
          else  
              echo "------ no error found during RMAN backup peroid------" >>${SSH_LOG}  
              rm -rf ${RMAN_FILE}.log  
          fi  
           
          #Remove old backup than 3 days  
          #============================================================================  
          RMDIR=${RMAN_DIR}/`/bin/date +%Y%m%d -d "3 days ago"`;   export RMDIR
          echo >>${SSH_LOG}  
          echo -e "------Remove old backup than 3 days ------\n" >>${SSH_LOG}  
           
          if test -d ${RMDIR}  
              then  
              rm -rf ${RMDIR}  
              RC=$?  
          fi  
           
          echo >>${SSH_LOG}  
           
          if [ $RC -ne "0" ]; then  
              echo -e "------ Remove old backup exception------ \n" >>${SSH_LOG}  
          else  
              echo -e "------ no error found during remove old backup set peroid------ \n" >>${SSH_LOG}  
          fi  
           
          exit  

          [oracle@localhost backup]$ pwd
          /opt/oracle/oradata/backup
          [oracle@localhost backup]$vi db_bak_rman.sh
          將上面腳本復(fù)制進去,并保存,且設(shè)置權(quán)限
          [oracle@localhost backup]$ chmod 755 db_bak_rman.sh
          測試腳本
          orcl 為 SID
          0: 代表0級備份
          [oracle@localhost backup]$ ./db_bak_rman.sh orcl 0

          四、crontab 定時任務(wù) 以 oralce用戶登錄
          [oracle@localhost backup]$crontab -e

          45 23 * * 0 /opt/oracle/oradata/backup/db_bak_rman.sh orcl 0
          45 23 * * 1-3 /opt/oracle/oradata/backup/db_bak_rman.sh orcl 2
          45 23 * * 4 /opt/oracle/oradata/backup/db_bak_rman.sh orcl 1
          45 23 * * 5-6 /opt/oracle/oradata/backup/db_bak_rman.sh orcl 2
          以root用戶登錄
          [root@localhost backup]$/etc/init.d/crond restart
          Stopping crond:                                            [  OK  ]
          Starting crond:                                            [  OK  ]


          腳本的增量備份策略: 周日0級備份,周四1級備份,其他2級備份
          差異備份有3個級別:
          0級:相當(dāng)于全備,不同的是0級可用于增量備份,全備不行。
          1級:備份自上次0級備份以來的數(shù)據(jù)
          2級:備份自上次備份依賴的數(shù)據(jù)

          posted @ 2012-10-28 22:37 gdufo| 編輯 收藏

          logminer的安裝配置使用

          logminer的安裝配置使用
          安裝
          環(huán)境:linux AS5,oracle 11gR2

          2.添加補充日志

          如果數(shù)據(jù)庫需要使用logminer,就應(yīng)該添加,只有添加這個日志之后的才能捕獲DML
          ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE INDEX) COLUMNS;

          3.開啟歸檔(對logminer來說不是必須)
          alter system set log_Archive_dest_1='/opt/oracle/flash_recovery_area' scope=both;
          shutdown immediate
          startup mount
          alter database archivelog;
          alter database open;


          創(chuàng)建DBMS_LOGMNR包
          SQL>@?/rdbms/admin/dbmslm.sql

          創(chuàng)建相關(guān)數(shù)據(jù)字典
          SQL>@?/rdbms/admin/dbmslmd.sql

          修改初始化參數(shù)UTL_FILE_DIR,指定分析數(shù)據(jù)的存放處
          SQL>alter system set UTL_FILE_DIR='/opt/oracle/oradata/logminer' scope=spfile;

          重啟數(shù)據(jù)庫
          SQL>shutdown immediate
          SQL>startup


          SQL> show parameter utl;

          NAME TYPE VALUE
          ------------------------------------ ----------- ------------------------------
          create_stored_outlines string
          utl_file_dir string /opt/oracle/oradata/logminer

          生成字典信息文件:

          SQL> execute dbms_logmnr_d.build(dictionary_filename=>'/opt/oracle/oradata/logminer/sqltrace.ora',dictionary_location=>'/opt/oracle/oradata/logminer');

          PL/SQL 過程已成功完成。
          查當(dāng)前日志組
          SQL>select Group#, Status from v$log;

              GROUP# STATUS
          ---------- ----------------
                   1 INACTIVE
                   2 CURRENT
                   3 INACTIVE

          SQL>select Group#, MEMBER from v$logfile;

              GROUP# MEMBER
          ---------- ----------------------------------------
                   3 /opt/oracle/oradata/orcl/redo03.log
                   2 /opt/oracle/oradata/orcl/redo02.log
                   1 /opt/oracle/oradata/orcl/redo01.log
                  
          添加需要分析的日志文件(在線日志)
          SQL> execute dbms_logmnr.add_logfile(options=>dbms_logmnr.new,logfilename=>'/opt/oracle/oradata/orcl/redo02.log');

          #歸檔日志
          execute dbms_logmnr.add_logfile(options=>dbms_logmnr.new,logfilename=>'/opt/oracle/oradata/logminer/1_6356_704818301.dbf');
          PL/SQL 過程已成功完成。
          SQL> execute dbms_logmnr.add_logfile(options=>dbms_logmnr.addfile,logfilename=>'opt/oracle/oradata/orcl/redo03.log');

          PL/SQL 過程已成功完成。
          options選項有三個參數(shù)可選:
          NEW - 表示創(chuàng)建一個新的日志文件列表
          ADDFILE - 表示向這個列表中添加日志文件
          REMOVEFILE - 和addfile相反。


          開始分析
          SQL> execute dbms_logmnr.start_logmnr(dictfilename=>'/opt/oracle/oradata/logminer/sqltrace.ora');

          #設(shè)置 STARTTIME / ENDTIME
          SQL>execute dbms_logmnr.start_logmnr(dictfilename=>'/u01/app/oracle/logminer/sqltrace.ora',starttime => to_date('2012/11/01-08:00:00','yyyy/mm/dd-hh24:mi:ss'),endtime => to_date('2012/11/02-12:30:00','yyyy/mm/dd-hh24:mi:ss'));


          #也可以設(shè)置不用數(shù)據(jù)字典,只是看不到解釋過來,沒有意義了。
          begin
            dbms_logmnr.start_logmnr(starttime => to_date('2012/09/29-08:55:00','yyyy/mm/dd-hh24:mi:ss'),
            endtime => to_date('2012/09/29-15:30:00','yyyy/mm/dd-hh24:mi:ss')
          );
          PL/SQL 過程已成功完成。
          dbms_logmnr.start_logmnr()過程還有其它幾個用于定義分析日志時間/SCN窗口的參數(shù),它們分別是:
          STARTSCN / ENDSCN - 定義分析的起始/結(jié)束SCN號,
          STARTTIME / ENDTIME - 定義分析的起始/結(jié)束時間。

          查詢分析的日志文件包含的scn范圍和日期范圍。
          SQL> select low_time,high_time,low_scn,next_scn from v$logmnr_logs;

          LOW_TIME HIGH_TIME LOW_SCN NEXT_SCN
          -------------- -------------- ---------- ----------
          08-8月 -07 08-8月 -07 626540 637998
          08-8月 -07 01-1月 -88 637998 2.8147E+14

          SQL> create table ELLINGTON.log_content NOLOGGING Tablespace Users as select timestamp,sql_redo,sql_undo,USERNAME,OS_USERNAME,MACHINE_NAME from v$logmnr_contents;
          將內(nèi)容復(fù)制到一張表中查詢并指定存儲表空間,desc v$logmnr_contents

          結(jié)束分析

          SQL> execute dbms_logmnr.end_logmnr;

          結(jié)束后視圖v$logmnr_contents中的分析結(jié)果也不再存在,關(guān)閉sqlplus自動結(jié)束。
          注意:1. LogMiner必須使用被分析數(shù)據(jù)庫實例產(chǎn)生的字典文件,而不是安裝LogMiner的數(shù)據(jù)庫產(chǎn)生的字典文件,另外必須保證安裝LogMiner數(shù)據(jù)庫的字符集和被分析數(shù)據(jù)庫的字符集相同。
              2. 被分析數(shù)據(jù)庫平臺必須和當(dāng)前LogMiner所在數(shù)據(jù)庫平臺一樣,也就是說如果我們要分析的文件是由運行在UNIX平臺上的Oracle 8i產(chǎn)生的,那么也必須在一個運行在UNIX平臺上的Oracle實例上運行LogMiner,而不能在其他如Microsoft NT上運行LogMiner。當(dāng)然兩者的硬件條件不一定要求完全一樣。
                3. 生產(chǎn)庫的歸檔日志拿到測試機上來分析,雖然可以分析,但是由于db_id不同,不能使用數(shù)據(jù)字典,也就看不到翻譯過的語句(16進制的東西)

          posted @ 2012-10-25 20:12 gdufo 閱讀(656) | 評論 (0)編輯 收藏

          一次數(shù)據(jù)導(dǎo)入過程

          一。查出原系統(tǒng)有多少表空間:

          select a.tablespace_name,total,free,round(free/total*100,2) free_precent,total-free used from
          ( select tablespace_name,sum(bytes)/1024/1024 total from dba_data_files
          group by tablespace_name) a,
          ( select tablespace_name,sum(bytes)/1024/1024 free from dba_free_space
          group by tablespace_name) b
          where a.tablespace_name=b.tablespace_name
          order by tablespace_name;
          TABLESPACE_NAME                     TOTAL       FREE FREE_PRECENT       USED
          ------------------------------ ---------- ---------- ------------ ----------
          AUDTOOL                                5120   959.9375        18.75  4160.0625
          DBA01_2001                            500   499.9375        99.99     0.0625
          DBA01_2002                            500   499.9375        99.99     0.0625
          DBA01_2003                            500   499.9375        99.99     0.0625
          DBA01_2004                            500   499.9375        99.99     0.0625
          DBA01_2005                           1024  1023.9375        99.99     0.0625
          DBA01_2006                           1024  1023.9375        99.99     0.0625
          DBA01_2007                           1024  1023.9375        99.99     0.0625
          DBA01_2008                           1024  1023.9375        99.99     0.0625
          DBA01_2009                           1024  1023.9375        99.99     0.0625
          DBA01_2010                           1024  1023.9375        99.99     0.0625
          DBA01_2011                           1024  1023.9375        99.99     0.0625
          INDX                                98816 19484.3125        19.72 79331.6875
          SYSAUX                         27080.9375  1126.6875         4.16   25954.25
          SYSTEM                               2788  1626.3125        58.33  1161.6875
          UNDOTBS2                             3524       3299        93.62        225
          USERS                               92160  54093.875         58.7  38066.125

          二。查出各表空間數(shù)據(jù)文件大小
          SQL> SELECT TABLESPACE_NAME ,FILE_NAME, BYTES/1024/1024 SIZE_M from dba_data_files WHERE TABLESPACE_NAME = 'USERS';
           
          TABLESPACE FILE_NAME                          SIZE_M
          ---------- ------------------------------ ----------
          USERS      /u02/oradata/orcl/users01.dbf       30720
          USERS      /u02/oradata/orcl/users02.dbf       30720
          USERS      /u02/oradata/orcl/users03.dbf       30720

           
          SQL>SELECT TABLESPACE_NAME ,FILE_NAME, BYTES/1024/1024 SIZE_M from dba_data_files WHERE TABLESPACE_NAME = 'DBA01_2001';
          TABLESPACE FILE_NAME                                    SIZE_M
          ---------- ---------------------------------------- ----------
          DBA01_2001 /u02/oradata/orcl/users_2001.dbf                500

          SQL> SELECT TABLESPACE_NAME ,FILE_NAME, BYTES/1024/1024 SIZE_M from dba_data_files WHERE TABLESPACE_NAME = 'DBA01_2002';
           
          TABLESPACE FILE_NAME                                    SIZE_M
          ---------- ---------------------------------------- ----------
          DBA01_2002 /u02/oradata/orcl/users_2002.dbf          500

          SQL> SELECT TABLESPACE_NAME ,FILE_NAME, BYTES/1024/1024 SIZE_M from dba_data_files WHERE TABLESPACE_NAME = 'DBA01_2003';
           
          TABLESPACE FILE_NAME                                    SIZE_M
          ---------- ---------------------------------------- ----------
          DBA01_2003 /u02/oradata/orcl/users_2003.dbf                500

          SQL> SELECT TABLESPACE_NAME ,FILE_NAME, BYTES/1024/1024 SIZE_M from dba_data_files WHERE TABLESPACE_NAME = 'DBA01_2004';
           
          TABLESPACE FILE_NAME                                    SIZE_M
          ---------- ---------------------------------------- ----------
          DBA01_2004 /u02/oradata/orcl/users_2004.dbf                500

          SQL> SELECT TABLESPACE_NAME ,FILE_NAME, BYTES/1024/1024 SIZE_M from dba_data_files WHERE TABLESPACE_NAME = 'DBA01_2005';
           
          TABLESPACE FILE_NAME                                    SIZE_M
          ---------- ---------------------------------------- ----------
          DBA01_2005 /u02/oradata/orcl/users_2005.dbf               1024

          SQL> SELECT TABLESPACE_NAME ,FILE_NAME, BYTES/1024/1024 SIZE_M from dba_data_files WHERE TABLESPACE_NAME = 'DBA01_2006';
           
          TABLESPACE FILE_NAME                                    SIZE_M
          ---------- ---------------------------------------- ----------
          DBA01_2006 /u02/oradata/orcl/users_2006.dbf               1024

          SQL> SELECT TABLESPACE_NAME ,FILE_NAME, BYTES/1024/1024 SIZE_M from dba_data_files WHERE TABLESPACE_NAME = 'DBA01_2007';
           
          TABLESPACE FILE_NAME                                    SIZE_M
          ---------- ---------------------------------------- ----------
          DBA01_2007 /u02/oradata/orcl/users_2007.dbf               1024

          SQL> SELECT TABLESPACE_NAME ,FILE_NAME, BYTES/1024/1024 SIZE_M from dba_data_files WHERE TABLESPACE_NAME = 'DBA01_2008';
           
          TABLESPACE FILE_NAME                                    SIZE_M
          ---------- ---------------------------------------- ----------
          DBA01_2008 /u02/oradata/orcl/users_2008.dbf               1024

          SQL> SELECT TABLESPACE_NAME ,FILE_NAME, BYTES/1024/1024 SIZE_M from dba_data_files WHERE TABLESPACE_NAME = 'DBA01_2009';
           
          TABLESPACE FILE_NAME                                    SIZE_M
          ---------- ---------------------------------------- ----------
          DBA01_2009 /u02/oradata/orcl/users_2009.dbf               1024

          SQL> SELECT TABLESPACE_NAME ,FILE_NAME, BYTES/1024/1024 SIZE_M from dba_data_files WHERE TABLESPACE_NAME = 'DBA01_2010';
           
          TABLESPACE FILE_NAME                                    SIZE_M
          ---------- ---------------------------------------- ----------
          DBA01_2010 /u02/oradata/orcl/users_2010.dbf               1024

          SQL> SELECT TABLESPACE_NAME ,FILE_NAME, BYTES/1024/1024 SIZE_M from dba_data_files WHERE TABLESPACE_NAME = 'DBA01_2011';
           
          TABLESPACE FILE_NAME                                    SIZE_M
          ---------- ---------------------------------------- ----------
          DBA01_2011 /u02/oradata/orcl/users_2011.dbf               1024

          SQL> SELECT TABLESPACE_NAME ,FILE_NAME, BYTES/1024/1024 SIZE_M from dba_data_files WHERE TABLESPACE_NAME = 'INDX';
           
          TABLESPACE FILE_NAME                                    SIZE_M
          ---------- ---------------------------------------- ----------
          INDX       /u02/oradata/orcl/indx01.dbf                  10240
          INDX       /u02/oradata/orcl/indx02.dbf                  20480
          INDX       /u02/oradata/orcl/indx03.dbf                  23808
          INDX       /u02/oradata/orcl/indx04.dbf                  23808
          INDX       /u02/oradata/orcl/indx05.dbf                  20480

          SQL> SELECT TABLESPACE_NAME ,FILE_NAME, BYTES/1024/1024 SIZE_M from dba_data_files WHERE TABLESPACE_NAME = 'USERS';
           
          TABLESPACE FILE_NAME                                    SIZE_M
          ---------- ---------------------------------------- ----------
          USERS      /u02/oradata/orcl/users01.dbf                 30720
          USERS      /u02/oradata/orcl/users02.dbf                 30720
          USERS      /u02/oradata/orcl/users03.dbf                 30720

          SQL> SELECT TABLESPACE_NAME ,FILE_NAME, BYTES/1024/1024 SIZE_M from dba_data_files WHERE TABLESPACE_NAME = 'SYSAUX';
           
          TABLESPACE FILE_NAME                                    SIZE_M
          ---------- ---------------------------------------- ----------
          SYSAUX     /u02/oradata/orcl/sysaux01.dbf           27080.9375

          三.根據(jù)以上文件分別建立表空間
          1.先擴大本身的user01.dbf的空間
          SQL>alter database datafile '/opt/oracle/oradata/orcl/users01.dbf' resize 30G;
          2.再增加數(shù)據(jù)文件
          SQL>alter tablespace users add datafile '/opt/oracle/oradata/orcl/users02.dbf' size 30G;
          SQL>alter tablespace users add datafile '/opt/oracle/oradata/orcl/users03.dbf' size 30G;

          3.創(chuàng)建索引表空間
          SQL>create tablespace INDX datafile '/opt/oracle/oradata/orcl/indx01.dbf' size 30G;
          SQL>alter tablespace INDX add datafile '/opt/oracle/oradata/orcl/indx02.dbf' size 30G;
          SQL>alter tablespace INDX add datafile '/opt/oracle/oradata/orcl/indx03.dbf' size 30G;
          其它表空間
          create tablespace DBA01_2001 datafile '/opt/oracle/oradata/orcl/users_2001.dbf' size 500M;
          create tablespace DBA01_2002 datafile '/opt/oracle/oradata/orcl/users_2002.dbf' size 500M;
          create tablespace DBA01_2003 datafile '/opt/oracle/oradata/orcl/users_2003.dbf' size 500M;
          create tablespace DBA01_2004 datafile '/opt/oracle/oradata/orcl/users_2004.dbf' size 500M;
          create tablespace DBA01_2005 datafile '/opt/oracle/oradata/orcl/users_2005.dbf' size 500M;
          create tablespace DBA01_2006 datafile '/opt/oracle/oradata/orcl/users_2006.dbf' size 500M;
          create tablespace DBA01_2007 datafile '/opt/oracle/oradata/orcl/users_2007.dbf' size 500M;
          create tablespace DBA01_2008 datafile '/opt/oracle/oradata/orcl/users_2008.dbf' size 500M;
          create tablespace DBA01_2009 datafile '/opt/oracle/oradata/orcl/users_2009.dbf' size 500M;
          create tablespace DBA01_2010 datafile '/opt/oracle/oradata/orcl/users_2010.dbf' size 500M;
          create tablespace DBA01_2011 datafile '/opt/oracle/oradata/orcl/users_2011.dbf' size 500M;

          建立目錄:以SYS管理登錄
          sql> create directory expdir as '/opt/oracle/oradata/orcl';
          一。授權(quán)用戶
          sql> grant EXP_FULL_DATABASE to orauser
          sql> grant IMP_FULL_DATABASE  to orauser

          注意:
            針對大數(shù)據(jù)庫導(dǎo)入時,遇到了 由于db_recovery_file_dest_size=4G (太小),導(dǎo)致不能寫日志,導(dǎo)入過程停在那里了。
          通過
          SQL> alter system set db_recovery_file_dest_size =50G scope=both來設(shè)置。--調(diào)大

          在linux命令窗口以 oracle用戶登錄
          導(dǎo)入
          # impdp orauser/password directory=expdir   dumpfile=data.dmp logfile=exp.log full=y
          #單張表。如果表已經(jīng)存在則要先刪除
          impdp 用戶名/密碼 TABLES= DIRECTORY=expdir DUMPFILE=data.dmp

          導(dǎo)出:
          # expdp orauser/password directory=expdir compression=ALL  dumpfile=data.dmp full=y logfile=exp.log

          posted @ 2012-10-24 15:58 gdufo| 編輯 收藏

          oracle 11數(shù)據(jù)導(dǎo)入與導(dǎo)出

          建立目錄:以SYS管理登錄
          sql> create directory expdir as '/opt/oracle/oradata/orcl';
          一。授權(quán)用戶
          sql> grant EXP_FULL_DATABASE to orauser
          sql> grant IMP_FULL_DATABASE  to orauser
          在linux命令窗口以 oracle用戶登錄
          導(dǎo)出:
          # expdp orauser/password directory=expdir compression=ALL  dumpfile=data.dmp full=y logfile=exp.log

          導(dǎo)入(整個數(shù)據(jù)庫):
          # impdp orauser/password directory=expdir   dumpfile=data.dmp logfile=exp.log 
          full=y
          導(dǎo)入(指定用戶):
          # impdp orauser/password directory=expdir   dumpfile=data.dmp logfile=exp.log schemas=xxx

          注意:
            針對大數(shù)據(jù)庫導(dǎo)入時,遇到了 由于db_recovery_file_dest_size=4G (太小),導(dǎo)致不能寫日志,導(dǎo)入過程停在那里了。
          通過
          SQL> alter system set db_recovery_file_dest_size =50G scope=both來設(shè)置。

          posted @ 2012-10-23 19:46 gdufo 閱讀(565) | 評論 (0)編輯 收藏

          oracle 關(guān)閉audit 功能

          http://zxf261.blog.51cto.com/701797/762048

          Oracle 11g缺省安裝數(shù)據(jù)庫啟動了audit功能,導(dǎo)致oracle不斷累積sys.aud$表及相關(guān)索引數(shù)據(jù)量增加;
          如果導(dǎo)致表空間滿了,在alert日志中將會報ORA-1654: unable to extend index SYS....錯誤。
          如果不用到審計功能,建議關(guān)閉審計。

          處理過程: 
          1、用oracle用戶登錄到數(shù)據(jù)庫服務(wù)器,執(zhí)行:
          sqlplus / as sysdba
          2、取消audit,將初始化參數(shù)audit_trail設(shè)置為NONE
          alter system set audit_trail=none scope=spfile;
          3、然后重啟數(shù)據(jù)庫.
          shutdown immediate;
          sqlplus / as sysdba
          startup;
          4、刪除簽權(quán)數(shù)據(jù),oracle用戶登錄到數(shù)據(jù)庫服務(wù)器:
          sqlplus / as sysdba
          truncate table SYS.AUD$;

          posted @ 2012-10-14 10:55 gdufo 閱讀(6539) | 評論 (0)編輯 收藏

          Oracle 在Linux X86上使用超過2G的SGA

          Oracle 在Linux X86上使用超過2G的SGA
          轉(zhuǎn)自(http://cnhtm.itpub.net/post/39970/496153)

          有空測試一下!
          =================================================

          在Linux X86上,SGA最大使用2G內(nèi)存,如果設(shè)置超過2G的SGA,會報如下錯誤

          ORA-27123: unable to attach to shared memory segment

          可以通過使用shared memory file的方式使用超過2G的sga。

          下面演示其過程(RedHat as 4+Oracle 10.2.0.1)


          1、SGA過大的錯誤演示

          SQL> alter system set sga_target=3G scope=spfile;

          System altered.

          SQL> startup force
          ORA-27123: unable to attach to shared memory segment
          SQL> exit
          Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
          With the Partitioning, OLAP and Data Mining options

          2、Mount ramfs 文件系統(tǒng),并保證可以被oracle用戶訪問

          以下下過程用root用戶操作

          [root@linux32 ~]# umount /dev/shm
          [root@linux32 ~]# mount -t ramfs ramfs /dev/shm
          [root@linux32 ~]# chown oracle:dba /dev/shm

          然后將上面的三個命令加入到/etc/rc.local文件最后,修改后的文件如下所示

          [root@linux32 ~]# cat /etc/rc.local
          #!/bin/sh
          #
          # This script will be executed *after* all the other init scripts.
          # You can put your own initialization stuff in here if you don't
          # want to do the full Sys V style init stuff.

          touch /var/lock/subsys/local

          umount /dev/shm
          mount -t ramfs ramfs /dev/shm
          chown oracle:dba /dev/shm

          3、設(shè)置shared pool可以使用的內(nèi)存

          編輯/etc/security/limits.conf文件,加入標(biāo)記為紅色的兩行
          最后數(shù)字的計算公式為(假設(shè)要使用1g的shared pool,計算公式為 1×1024×1024=1048576),

          [root@linux32 ~]# cat /etc/security/limits.conf
          # /etc/security/limits.conf
          #
          ......
          #@student - maxlogins 4

          # End of file
          oracle soft nproc 2047
          oracle hard nproc 16384
          oracle soft nofile 1024
          oracle hard nofile 65536

          oracle soft memlock 1048576
          oracle hard memlock 1048576

          可以在另一個終端中重新用oracle用戶登錄,查看設(shè)置是否生效

          [oracle@linux32 ~]$ ulimit -l
          1048576

          4、設(shè)置SHMMAX參數(shù)值

          編輯/etc/sysctl.conf文件,按照如下規(guī)則設(shè)置如下3行

          kernel.shmmax = 2147483648 #Linux主機內(nèi)存的一半,單位為byte,但最大最不能超過4294967295
          kernel.shmmni = 4096 #一般固定為4094
          kernel.shmall = 2097152 #應(yīng)該>或= kernel.shmmax/kernel.shmmni

          使用sysctl -p命令使設(shè)置生效

          [root@linux32 ~]# sysctl -p

          5、修改oracle的pfile文件

          以下操作使用oracle用戶操作

          使用spfile生產(chǎn)pfile文件

          [oracle@linux32 dbs]$ strings spfileorcl.ora > init.ora.bak

          編輯init.ora.bak文件,增加標(biāo)記為紅色的三行

          *.db_block_size=8192
          ......
          *.use_indirect_data_buffers=true
          *.db_block_buffers = 393216
          *.shared_pool_size = 452984832

          db_block_buffers表示db_block_size的大小,如欲使用3g的db_block_size,則公司為:(3×1024×1024/8=393216)(8代表db_block_size為8k)

          shared_pool_size表示shared pool的大小,單位為byte,不能超過步驟3設(shè)置的內(nèi)存大小,否則啟動時會報告如下錯誤:

          ORA-27102: out of memory
          Linux Error: 28: No space left on device

          然后將*.sga_max_size和*.sga_target行刪掉

          6、使用修改好的pfile文件啟動

          [oracle@linux32 dbs]$ sqlplus / as sysdba

          SQL*Plus: Release 10.2.0.1.0 - Production on Wed Jan 20 21:52:40 2010

          Copyright (c) 1982, 2005, Oracle. All rights reserved.

          Connected to an idle instance.

          SQL> startup pfile='?/dbs/init.ora.bak'
          ORACLE instance started.

          Total System Global Area 3724541952 bytes
          Fixed Size 1218076 bytes
          Variable Size 486541796 bytes
          Database Buffers 3221225472 bytes
          Redo Buffers 15556608 bytes
          Database mounted.
          Database opened.

          生成spfile

          SQL> create spfile from pfile='?/dbs/init.ora.bak';

          File created.

          使用spfile啟動

          SQL> startup force;
          ORACLE instance started.

          Total System Global Area 3724541952 bytes
          Fixed Size 1218076 bytes
          Variable Size 486541796 bytes
          Database Buffers 3221225472 bytes
          Redo Buffers 15556608 bytes
          Database mounted.
          Database opened.

          顯示sga情況

          SQL> show sga

          Total System Global Area 3724541952 bytes
          Fixed Size 1218076 bytes
          Variable Size 486541796 bytes
          Database Buffers 3221225472 bytes
          Redo Buffers 15556608 bytes

          SQL> show parameter sga

          NAME TYPE VALUE
          ------------------------------------ ----------- ------------------------------
          lock_sga boolean FALSE
          pre_page_sga boolean FALSE
          sga_max_size big integer 3552M
          sga_target big integer 0

          --end--



          posted @ 2012-10-13 17:12 gdufo 閱讀(622) | 評論 (0)編輯 收藏

          刪除過期歸檔日志

          刪除過期歸檔日志
          1. 進入rman 
          2. connect target /
          3. crosscheck archivelog all;
          4.delete expired archivelog all;==>沒有rman備份的情況下不適用。
          5.delete archivelog all completed before 'SYSDATE-30'; 刪除一個月前的日志。

          posted @ 2012-09-29 13:20 gdufo 閱讀(523) | 評論 (0)編輯 收藏

          ZK Paging組件實現(xiàn)動態(tài)分頁,描述很通俗易懂

          ZK Paging組件實現(xiàn)動態(tài)分頁,描述很通俗易懂


          Xml代碼  收藏代碼
          1.   zul 頁面:  
          2. <?xml version="1.0" encoding="utf-8"?>  
          3. <?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" arg0="userWin"?>  
          4.   
          5. <window id="userWin" width="100%" use="com.linktel.linkFax.web.zk.controller.UserController"  
          6.     xmlns:h="http://www.w3.org/1999/xhtml" xmlns:n="http://www.zkoss.org/2005/zk/native"  
          7.     xmlns="http://www.zkoss.org/2005/zul" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
          8.     xsi:schemaLocation="http://www.zkoss.org/2005/zul http://www.zkoss.org/2005/zul/zul.xsd">  
          9.   
          10.           <listbox id="userLbx" model="@{userWin.userList}" fixedLayout="true"   paginal="@{pagingUser}" selectedItem="@    
          11.                      {userWin.user}">  
          12.                   <listhead sizable="true">  
          13.                     <listheader label="用戶名"></listheader>  
          14.                     <listheader label="手機號"></listheader>  
          15.                     <listheader label="分機號"></listheader>  
          16.                     <listheader label="公司名稱"></listheader>  
          17.                     <listheader label="部門名稱"></listheader>  
          18.                     <listheader label="職位"></listheader>  
          19.                     <listheader label="傳真"></listheader>  
          20.                      <listheader label="角色"></listheader>  
          21.                     <listheader label="啟用狀態(tài)"></listheader>  
          22.                     <listheader label="創(chuàng)建時間" ></listheader>  
          23.                    </listhead>  
          24.                      
          25.                    <listitem self="@{each=user}" forEach="@{user.roles}">  
          26.                            <listcell label="@{user.username}"></listcell>  
          27.                            <listcell label="@{user.phone}"></listcell>  
          28.                            <listcell label="@{user.exten}"></listcell>  
          29.                            <listcell label="@{user.coname}"></listcell>  
          30.                            <listcell label="@{user.deptname}"></listcell>  
          31.                            <listcell label="@{user.position}"></listcell>  
          32.                            <listcell label="@{user.fax}"></listcell>  
          33.                            <listcell  label="@{each.name}"></listcell>  
          34.                            <listcell label="@{user.enabled}"></listcell>  
          35.                            <listcell label="@{user.createtime}"></listcell>  
          36.                    </listitem>  
          37.            </listbox>  
          38.                   
          39.            <paging id="pagingUser"  pageSize="2"></paging>  
          40. </window>  
           

           

          Java 代碼綁定paging動態(tài)分頁綁定數(shù)據(jù)

           

           

          Java代碼  收藏代碼
          1. java  代碼:  
          2. package com.linktel.linkFax.web.zk.controller;  
          3.   
          4. import java.util.ArrayList;  
          5. import java.util.Date;  
          6. import java.util.List;  
          7.   
          8. import org.zkoss.zk.ui.Components;  
          9. import org.zkoss.zk.ui.event.Event;  
          10. import org.zkoss.zk.ui.event.EventListener;  
          11. import org.zkoss.zk.ui.ext.AfterCompose;  
          12. import org.zkoss.zkplus.databind.AnnotateDataBinder;  
          13. import org.zkoss.zkplus.spring.SpringUtil;  
          14.   
          15. import org.zkoss.zul.Window;  
          16. import org.zkoss.zul.api.Listbox;  
          17. import org.zkoss.zul.api.Paging;  
          18. import org.zkoss.zul.event.PagingEvent;  
          19.   
          20. import com.linktel.linkFax.dao.support.Page;  
          21. import com.linktel.linkFax.domain.Authority;  
          22. import com.linktel.linkFax.domain.Role;  
          23. import com.linktel.linkFax.domain.User;  
          24. import com.linktel.linkFax.service.UserService;  
          25.   
          26.   
          27. @SuppressWarnings("serial")  
          28. public class UserController extends Window implements AfterCompose{  
          29.        
          30.        private User user = new User();  
          31.     protected AnnotateDataBinder binder;  
          32.     public List<User> userList;  
          33.     protected Listbox userLbx;  
          34.   
          35.     public User getUser() {  
          36.         return user;  
          37.     }  
          38.     public void setUser(User user) {  
          39.         this.user = user;  
          40.     }  
          41.         public  void setUserList(List<User> userList) {  
          42.         this.userList = userList;  
          43.     }  
          44.   
          45.     @Override  
          46.     public void afterCompose() {  
          47.         Components.wireVariables(this, this);  
          48.         Components.addForwards(this, this);  
          49.           
          50.         onGetUser();//頁面初始化的時候條用此方法  
          51.     }  
          52.   
          53.     public void onCreate() {  
          54.         binder = (AnnotateDataBinder) this.getVariable("binder", true);  
          55.   
          56.     }  
          57.   
          58.     public List<User> onGetUserList() {  
          59.         return userList;  
          60.     }  
          61.   
          62.     public void onGetUser() {  
          63.     
          64.            final UserService service  = (UserService) SpringUtil.getBean("userService");  
          65.           final Paging paging= (Paging) this.getFellow("pagingUser");//找到id命名為pagingUser的paging組件  
          66.           int totalSize=service.countUser();  //查詢出所有數(shù)據(jù)的記錄數(shù);  
          67.           paging.setTotalSize(totalSize);   //設(shè)置paging組件的總記錄數(shù);  
          68.           final int pageSize=paging.getPageSize();  //這個我不詳細(xì)描述了自己想....  
          69.                /** 
          70.                *下面就是為paging組件添加事件監(jiān)聽器 "onPaging"事件 
          71.                * 
          72.                */  
          73.           paging.addEventListener("onPaging", new EventListener() {  
          74.                     public void onEvent(Event event) throws Exception {  
          75.                             PagingEvent pagingEvt=(PagingEvent) event;//轉(zhuǎn)化成PaingEvent事件  
          76.   
          77.                             Page<User> pu=new Page<User>();//這個是我自己寫的工具類  
          78.                                            //其實就是將傳入?yún)?shù)pageSize,pageNo的封裝  
          79.                                              
          80.                             pu.setAutoCount(true);  
          81.                             pu.setPageNo( pagingEvt.getActivePage());  
          82.                             pu.setPageSize(pageSize);  
          83.                               Page<User>  pageUser=    service.pagedUser(pu,user);//后臺biz層的數(shù)據(jù)訪問  
          84.                               userList=  pageUser.getResult();//result返回一個集合對象全部數(shù)據(jù)  
          85.                                binder.loadComponent(userLbx);//這個不加闡述了  
          86.                     }  
          87.                 });  
          88.                
          89.     }  
          90.   

          posted @ 2012-06-16 22:20 gdufo 閱讀(1589) | 評論 (0)編輯 收藏

          ORACLE分頁查詢SQL語法


          --1:無ORDER BY排序的寫法。(效率最高)

          --(經(jīng)過測試,此方法成本最低,只嵌套一層,速度最快!即使查詢的數(shù)據(jù)量再大,也幾乎不受影響,速度依然!)
          SELECT *
            FROM (Select ROWNUM AS ROWNO, T.*
                     from k_task T
                    where Flight_date between to_date('20060501', 'yyyymmdd') and
                          to_date('20060731', 'yyyymmdd')
                      AND ROWNUM <= 20) TABLE_ALIAS
          WHERE TABLE_ALIAS.ROWNO >= 10;

          --2:有ORDER BY排序的寫法。(效率最高)
          --(經(jīng)過測試,此方法隨著查詢范圍的擴大,速度也會越來越慢哦!)
          SELECT *
            FROM (SELECT TT.*, ROWNUM AS ROWNO
                     FROM (Select t.*
                              from k_task T
                             where flight_date between to_date('20060501', 'yyyymmdd') and
                                   to_date('20060531', 'yyyymmdd')
                             ORDER BY FACT_UP_TIME, flight_no) TT
                    WHERE ROWNUM <= 20) TABLE_ALIAS
          where TABLE_ALIAS.rowno >= 10;

          --3:無ORDER BY排序的寫法。(建議使用方法1代替)
          --(此方法隨著查詢數(shù)據(jù)量的擴張,速度會越來越慢哦!)
          SELECT *
            FROM (Select ROWNUM AS ROWNO, T.*
                     from k_task T
                    where Flight_date between to_date('20060501', 'yyyymmdd') and
                          to_date('20060731', 'yyyymmdd')) TABLE_ALIAS
          WHERE TABLE_ALIAS.ROWNO <= 20
             AND TABLE_ALIAS.ROWNO >= 10;
          --TABLE_ALIAS.ROWNO  between 10 and 100;

          --4:有ORDER BY排序的寫法.(建議使用方法2代替)
          --(此方法隨著查詢范圍的擴大,速度會越來越慢哦!)
          SELECT *
            FROM (SELECT TT.*, ROWNUM AS ROWNO
                     FROM (Select *
                              from k_task T
                             where flight_date between to_date('20060501', 'yyyymmdd') and
                                   to_date('20060531', 'yyyymmdd')
                             ORDER BY FACT_UP_TIME, flight_no) TT) TABLE_ALIAS
          where TABLE_ALIAS.rowno BETWEEN 10 AND 20;


          --5另類語法。(有ORDER BY寫法)
          --(語法風(fēng)格與傳統(tǒng)的SQL語法不同,不方便閱讀與理解,為規(guī)范與統(tǒng)一標(biāo)準(zhǔn),不推薦使用。)
          With partdata as(
            SELECT ROWNUM AS ROWNO, TT.*  FROM (Select *
                            from k_task T
                           where flight_date between to_date('20060501', 'yyyymmdd') and
                                 to_date('20060531', 'yyyymmdd')
                           ORDER BY FACT_UP_TIME, flight_no) TT
             WHERE ROWNUM <= 20)
              Select * from partdata where rowno >= 10;

          --6另類語法 。(無ORDER BY寫法)
          With partdata as(
            Select ROWNUM AS ROWNO, T.*
              From K_task T
             where Flight_date between to_date('20060501', 'yyyymmdd') and
                   To_date('20060531', 'yyyymmdd')
               AND ROWNUM <= 20)
              Select * from partdata where Rowno >= 10;   

          posted @ 2012-06-16 22:17 gdufo 閱讀(485) | 評論 (0)編輯 收藏

          Spring 獲取Connection

          http://www.aygfsteel.com/pitey/archive/2008/03/05/183932.html

          applicationContext.xml里面設(shè)置

          <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean" lazy-init="default" autowire="default" dependency-check="default">
                  <property name="jndiName">
                      <value>JDBC/TEST</value>           
                  </property>
          </bean> 或者

          <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
                  <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>
                  <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:ora"></property>
                  <property name="username" value="test"></property>
                  <property name="password" value="123456"></property>
              </bean>


          通過
          DataSourceUtils.getConnection(DataSource);就能獲取到設(shè)置的DataSource 然后獲得connection

          public static Connection getConnection()
                      
          throws SQLException
              {        
                  
          return DataSourceUtils.getConnection((DataSource)ServiceLocator.getBean("dataSource"));
          }

          posted @ 2012-06-08 00:26 gdufo 閱讀(1283) | 評論 (0)編輯 收藏

          僅列出標(biāo)題
          共19頁: 上一頁 1 2 3 4 5 6 7 8 9 下一頁 Last 

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          收藏夾

          Hibernate

          友情鏈接

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 冀州市| 溧水县| 雷州市| 太保市| 南开区| 石首市| 大同市| 栖霞市| 彩票| 尚志市| 通许县| 浦县| 盐边县| 元阳县| 咸宁市| 安阳市| 蕲春县| 乌拉特中旗| 沙雅县| 息烽县| 宜都市| 蒙城县| 交口县| 吐鲁番市| 大荔县| 东源县| 勃利县| 时尚| 黄梅县| 留坝县| 溧阳市| 龙山县| 安平县| 温州市| 咸阳市| 南皮县| 霍林郭勒市| 新安县| 从化市| 高青县| 礼泉县|