gdufo

 

rman 增量备份

一、准备工作
查看是否处在归档模式
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"
修改为归档模式
首先要关闭数据库,启动到mount状态。
SQL> shutdown immediate;

SQL> startup mount;
修改为归档模式
SQL>alter database archivelog;

验证修改结果
SQL> select log_mode from v$database;
LOG_MODE
------------
ARCHIVELOG

打开数据库
SQL> alter database open;

二、RMAN Catalog 配置
创建 RMAN Calalog表空间
SQL>create tablespace RMAN_TS datafile '/opt/oracle/oradata/orcl/RMAN_TS01.dbf' size 500M;

--创建用户rman/rman 默认表空间味RMAN_TS允许自由使用
SQL> create user rman identified by rman default tablespace RMAN_TS quota unlimited on RMAN_TS;
用户授权
SQL>grant connect, resource,recovery_catalog_owner to rman;

创建恢复目录
在命令终端
[oracle@localhost ~]$rman catalog rman/rman
RMAN> CREATE CATALOG;
连接,注册目标数据库,同步catalog和控制文件
[oracle@localhost ~]$rman target sys/wxbwer catalog rman/rman
连接成功出现下面的信息
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

三、创建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
将上面脚本复制进去,并保存,且设置权限
[oracle@localhost backup]$ chmod 755 db_bak_rman.sh
测试脚本
orcl 为 SID
0: 代表0级备份
[oracle@localhost backup]$ ./db_bak_rman.sh orcl 0

四、crontab 定时任务 以 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级:相当于全备,不同的是0级可用于增量备份,全备不行。
1级:备份自上次0级备份以来的数据
2级:备份自上次备份依赖的数据

posted @ 2012-10-28 22:37 gdufo| 编辑 收藏

logminer的安装配置使用

logminer的安装配置使用
安装
环境:linux AS5,oracle 11gR2

2.添加补充日志

如果数据库需要使用logminer,就应该添加,只有添加这个日志之后的才能捕获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;


创建DBMS_LOGMNR包
SQL>@?/rdbms/admin/dbmslm.sql

创建相关数据字典
SQL>@?/rdbms/admin/dbmslmd.sql

修改初始化参数UTL_FILE_DIR,指定分析数据的存放处
SQL>alter system set UTL_FILE_DIR='/opt/oracle/oradata/logminer' scope=spfile;

重启数据库
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 过程已成功完成。
查当前日志组
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选项有三个参数可选:
NEW - 表示创建一个新的日志文件列表
ADDFILE - 表示向这个列表中添加日志文件
REMOVEFILE - 和addfile相反。


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

#设置 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'));


#也可以设置不用数据字典,只是看不到解释过来,没有意义了。
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窗口的参数,它们分别是:
STARTSCN / ENDSCN - 定义分析的起始/结束SCN号,
STARTTIME / ENDTIME - 定义分析的起始/结束时间。

查询分析的日志文件包含的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;
将内容复制到一张表中查询并指定存储表空间,desc v$logmnr_contents

结束分析

SQL> execute dbms_logmnr.end_logmnr;

结束后视图v$logmnr_contents中的分析结果也不再存在,关闭sqlplus自动结束。
注意:1. LogMiner必须使用被分析数据库实例产生的字典文件,而不是安装LogMiner的数据库产生的字典文件,另外必须保证安装LogMiner数据库的字符集和被分析数据库的字符集相同。
    2. 被分析数据库平台必须和当前LogMiner所在数据库平台一样,也就是说如果我们要分析的文件是由运行在UNIX平台上的Oracle 8i产生的,那么也必须在一个运行在UNIX平台上的Oracle实例上运行LogMiner,而不能在其他如Microsoft NT上运行LogMiner。当然两者的硬件条件不一定要求完全一样。
      3. 生产库的归档日志拿到测试机上来分析,虽然可以分析,但是由于db_id不同,不能使用数据字典,也就看不到翻译过的语句(16进制的东西)

posted @ 2012-10-25 20:12 gdufo 阅读(659) | 评论 (0)编辑 收藏

一次数据导入过程

一。查出原系统有多少表空间:

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

二。查出各表空间数据文件大小
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

三.根据以上文件分别建立表空间
1.先扩大本身的user01.dbf的空间
SQL>alter database datafile '/opt/oracle/oradata/orcl/users01.dbf' resize 30G;
2.再增加数据文件
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.创建索引表空间
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';
一。授权用户
sql> grant EXP_FULL_DATABASE to orauser
sql> grant IMP_FULL_DATABASE  to orauser

注意:
  针对大数据库导入时,遇到了 由于db_recovery_file_dest_size=4G (太小),导致不能写日志,导入过程停在那里了。
通过
SQL> alter system set db_recovery_file_dest_size =50G scope=both来设置。--调大

在linux命令窗口以 oracle用户登录
导入
# impdp orauser/password directory=expdir   dumpfile=data.dmp logfile=exp.log full=y
#单张表。如果表已经存在则要先删除
impdp 用户名/密码 TABLES= DIRECTORY=expdir DUMPFILE=data.dmp

导出:
# expdp orauser/password directory=expdir compression=ALL  dumpfile=data.dmp full=y logfile=exp.log

posted @ 2012-10-24 15:58 gdufo| 编辑 收藏

oracle 11数据导入与导出

建立目录:以SYS管理登录
sql> create directory expdir as '/opt/oracle/oradata/orcl';
一。授权用户
sql> grant EXP_FULL_DATABASE to orauser
sql> grant IMP_FULL_DATABASE  to orauser
在linux命令窗口以 oracle用户登录
导出:
# expdp orauser/password directory=expdir compression=ALL  dumpfile=data.dmp full=y logfile=exp.log

导入(整个数据库):
# impdp orauser/password directory=expdir   dumpfile=data.dmp logfile=exp.log 
full=y
导入(指定用户):
# impdp orauser/password directory=expdir   dumpfile=data.dmp logfile=exp.log schemas=xxx

注意:
  针对大数据库导入时,遇到了 由于db_recovery_file_dest_size=4G (太小),导致不能写日志,导入过程停在那里了。
通过
SQL> alter system set db_recovery_file_dest_size =50G scope=both来设置。

posted @ 2012-10-23 19:46 gdufo 阅读(567) | 评论 (0)编辑 收藏

oracle 关闭audit 功能

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

Oracle 11g缺省安装数据库启动了audit功能,导致oracle不断累积sys.aud$表及相关索引数据量增加;
如果导致表空间满了,在alert日志中将会报ORA-1654: unable to extend index SYS....错误。
如果不用到审计功能,建议关闭审计。

处理过程: 
1、用oracle用户登录到数据库服务器,执行:
sqlplus / as sysdba
2、取消audit,将初始化参数audit_trail设置为NONE
alter system set audit_trail=none scope=spfile;
3、然后重启数据库.
shutdown immediate;
sqlplus / as sysdba
startup;
4、删除签权数据,oracle用户登录到数据库服务器:
sqlplus / as sysdba
truncate table SYS.AUD$;

posted @ 2012-10-14 10:55 gdufo 阅读(6542) | 评论 (0)编辑 收藏

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

Oracle 在Linux X86上使用超过2G的SGA
转自(http://cnhtm.itpub.net/post/39970/496153)

有空测试一下!
=================================================

在Linux X86上,SGA最大使用2G内存,如果设置超过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 文件系统,并保证可以被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、设置shared pool可以使用的内存

编辑/etc/security/limits.conf文件,加入标记为红色的两行
最后数字的计算公式为(假设要使用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用户登录,查看设置是否生效

[oracle@linux32 ~]$ ulimit -l
1048576

4、设置SHMMAX参数值

编辑/etc/sysctl.conf文件,按照如下规则设置如下3行

kernel.shmmax = 2147483648 #Linux主机内存的一半,单位为byte,但最大最不能超过4294967295
kernel.shmmni = 4096 #一般固定为4094
kernel.shmall = 2097152 #应该>或= kernel.shmmax/kernel.shmmni

使用sysctl -p命令使设置生效

[root@linux32 ~]# sysctl -p

5、修改oracle的pfile文件

以下操作使用oracle用户操作

使用spfile生产pfile文件

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

编辑init.ora.bak文件,增加标记为红色的三行

*.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设置的内存大小,否则启动时会报告如下错误:

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 阅读(624) | 评论 (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 阅读(525) | 评论 (0)编辑 收藏

ZK Paging组件实现动态分页,描述很通俗易懂

ZK Paging组件实现动态分页,描述很通俗易懂


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="启用状态"></listheader>  
  22.                     <listheader label="创建时间" ></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动态分页绑定数据

 

 

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();  //查询出所有数据的记录数;  
  67.           paging.setTotalSize(totalSize);   //设置paging组件的总记录数;  
  68.           final int pageSize=paging.getPageSize();  //这个我不详细描述了自己想....  
  69.                /** 
  70.                *下面就是为paging组件添加事件监听器 "onPaging"事件 
  71.                * 
  72.                */  
  73.           paging.addEventListener("onPaging", new EventListener() {  
  74.                     public void onEvent(Event event) throws Exception {  
  75.                             PagingEvent pagingEvt=(PagingEvent) event;//转化成PaingEvent事件  
  76.   
  77.                             Page<User> pu=new Page<User>();//这个是我自己写的工具类  
  78.                                            //其实就是将传入参数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层的数据访问  
  84.                               userList=  pageUser.getResult();//result返回一个集合对象全部数据  
  85.                                binder.loadComponent(userLbx);//这个不加阐述了  
  86.                     }  
  87.                 });  
  88.                
  89.     }  
  90.   

posted @ 2012-06-16 22:20 gdufo 阅读(1594) | 评论 (0)编辑 收藏

ORACLE分页查询SQL语法


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

--(经过测试,此方法成本最低,只嵌套一层,速度最快!即使查询的数据量再大,也几乎不受影响,速度依然!)
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排序的写法。(效率最高)
--(经过测试,此方法随着查询范围的扩大,速度也会越来越慢哦!)
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代替)
--(此方法随着查询数据量的扩张,速度会越来越慢哦!)
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写法)
--(语法风格与传统的SQL语法不同,不方便阅读与理解,为规范与统一标准,不推荐使用。)
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 阅读(487) | 评论 (0)编辑 收藏

Spring 获取Connection

http://www.blogjava.net/pitey/archive/2008/03/05/183932.html

applicationContext.xml里面设置

<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);就能获取到设置的DataSource 然后获得connection

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

posted @ 2012-06-08 00:26 gdufo 阅读(1289) | 评论 (0)编辑 收藏

仅列出标题
共19页: 上一页 1 2 3 4 5 6 7 8 9 下一页 Last 

导航

统计

常用链接

留言簿(6)

随笔分类

随笔档案

文章分类

文章档案

收藏夹

Hibernate

友情链接

搜索

最新评论

阅读排行榜

评论排行榜