Posts

Showing posts from July, 2015

Get Public IP using Linux Terminal

Get Public IP using Linux Terminal Command 1. Using wget # wget http://ipecho.net/plain -O - -q ; echo Command 2: Using curl # curl ipecho.net/plain; echo Command 3: Using wget # wget http://observebox.com/ip -O - -q ; echo Command 4: Using curl # curl icanhazip.com Command 5: Using curl # curl ifconfig.me Pasted from: < http://tecadmin.net/5-commands-to-get-public-ip-using-linux-terminal/ >

Linux scp not found

If scp or ssh-copy-id command not found yum install openssh-clients

ORACLE objects migration

对象: 表空间,数据库 作用: 将表空间,数据库通过复制的方法尽快传输的另一台机器,可以跨平台移动 同一台机器 system表空间迁移: 1. 关闭数据库 SQL> shutdown immediate 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 2. 复制system表空间对应数据文件去新路径 3. 以mount启动数据库 SQL> startup mount ORACLE 例程已经启动。 Total System Global Area  135338868 bytes Fixed Size                   453492 bytes Variable Size             109051904 bytes Database Buffers           25165824 bytes Redo Buffers                 667648 bytes 数据库装载完毕。 4. 修改system表空间对应数据文件去新路径 SQL> alter database rename file  '/u01/app/oracle/oradata/orcl/system01.dbf' to '/u01/app/oracle/oradata/orcl/system/system01.dbf'; 数据库已更改。 5. 启动数据库 SQL> alter database open; 数据库已更改。 不同机器 非system表空间迁移: 准备工作: 1. 创建用于传输的表空间: create tablespace move datafile '/u01/app/oracle/oradata/orcl/move.dbf' size 10M; 2. 在表空间上创建表,以便检...

ORACLE Migration by using Dataguard

Target: migrate the dataase from server1 to server2 and sync the two database by using archive log. 12.11.0.104 RHEL11G source 12.11.0.105 RHEL11G2 target 12.11.0.104 1. Create table test1 2. Insert two record  1 abc 2 bcd 3. alter system archive log current; 4. shutdown database take snapshot; --> snapshot 5 5. Clone new server 12.11.0.105; 6. create table test2 7. Insert two record  3 abc 4 bcd 8. drop table test1 9 create standby control file; 10. alter system archive log current; 11. shutdown database and listener; --> snapshot 6 12.11.0.105  1. startup system --> snapshot 1 2. Change IP address and hostname --> snapshot 2 3. generate standby control file  scp /u01/standby.ctl oracle@12.11.0.105:/u01/app/oracle/oradata/orcl11g/control01.ctl cp /u01/app/oracle/oradata/orcl11g/control01.ctl /u01/app/oracle/flash_recovery_area/orcl11g/control02.ctl scp /u01/app/oracle/flash_recovery_area/ORCL...

ORACLE Find SQL script

1. 通过用户名查询SQL_ID: select SQL_ID from v$session a where  USERNAME ='HR' AND ACTION='SQL Window - New'   2. 通过SQL_ID查询具体脚本: select sql_text from v$sql where sql_id='';

ORACLE 9i statspack使用

安装 1.建一个单独的表空间用于Statspack 或建在tools表空间上(>100MB) sqlplus “/ as sysdba” create tablespace perfstat datafile ‘/oracle/oradata/perfstat.dbf’ size 500M extent management local; 2.建用户perfstat及表 @?/rdbms/admin/spcreate.sql 要求输入表空间及临时表空间. 建完后会在本目录下生成: spauto.lis spcpkg.lis spctab.lis spcusr.lis spdtab.lis spdusr.lis grep –I “ora-“ *.lis 查看是否有错。 制作报表 1. 手工采样 exec statspack.snap 隔一段时间后再次采样数据 exec statspack.snap 2. 设置自动采样 定义定时任务 修改spauto.sql内容,定义采样数据的时间间隔 例如:每分钟采样一次: variable job_no number; begin dbms_job.submit(:job_no,'statspack.snap;',sysdate,'sysdate+1/1440'); end; / 一天24小时,1440分钟,则: 每小时一次: 1/24 (建议使用) 每30分钟一次:  1/48 每10分钟一次 1/144 每5分钟一次 1/288 后执行 @?/rdbms/admin/spauto.sql 停止定时任务 sqlplus perfstat/perfstat select job,interval from user_jobs; exec dbms_job.remove(job => ?); 3. 删除历史数据 delete from stats$snapshot where snap_id<??? 4. 删除全部数据 @?/rdbms/admin/sptrunc.sql 5. 生成报表  @?/rdbms/admin/spreport.sql 报告内容 Statspack报告分为几个部分: 5. 数据库总体信息 6. 每秒每事务的资...

ORACLE 跟踪统计用户操作

Oracle 新增了 DBMS_MONITOR 包,使得用户可以更加方便的设置 TRACE 和统计信息。 查看: SELECT SID, SERIAL#, SQL_TRACE, SQL_TRACE_WAITS, SQL_TRACE_BINDS   FROM V$SESSION 如果SQL_TRACE为disable则说明没有跟踪; 建立跟踪: 1. sys用户登录; 2. 执行:EXEC DBMS_MONITOR.SESSION_TRACE_ENABLE( SID, SERIAL# ); 关闭跟踪: 1. sys用户登录; 2. 执行:EXEC DBMS_MONITOR.SESSION_TRACE_DISABLE( SID, SERIAL# ); 查看跟踪结果: 1. 找出相关SPID SELECT SPID FROM V$PROCESS  WHERE ADDR IN  (SELECT PADDR FROM V$SESSION WHERE SID =  SID ); 2. 在trace文件夹(oracle 11g /u01/app/oracle/diag/rdbms/orcl11g/orcl11g/trace)找含有SPID的trc文件。

ORACLE Check script execution plan

三种查看方式: 1. EXPLAIN 2. AUTOTRACE; 3. PL/SQL工具   EXPLAIN: 1. 安装: UNIX: $ORACLE_HOME/rdbms/admin\ultxplan.sql Windows:%ORACLE_HOME%\rdbms\admin\ultxplan.sql   2. 建立: set feedback on; explain plan set statement_id='T_TEST' for select * from hr.employees; 3. 查看:  select * from plan_table;   AUTOTRACE: 1. 安装: UNIX: $ORACLE_HOME/rdbms/admin\ultxplan.sql Windows:%ORACLE_HOME%\rdbms\admin\ultxplan.sql   2. 建同义词,授权: create public synonym plan_table for plan_table;--建立同义词 grant all on plan_table to public;--授权所有用户   3. 运行脚本: UNIX:$ORACLE_HOME/sqlplus/admin/plustrce.sql; Windows:%ORACLE_HOME%\sqlplus\admin\plustrce.sql; grant plustrace to public;   4.使用: 查看执行计划: set autotrace on explain select * from hr.employees;   查看统计结果: set autotrace on statictics; select * from hr.employees;   删除同义词: drop public synonym <synonym name>; drop synonym <synonym name>;

ORALCE Generate AWR Report

1. 检查系统中现有参数设置 SQL>select snap_interval, retention from dba_hist_wr_control;   2. 修改系统中参数 begin dbms_workload_repository.modify_snapshot_settings ( interval => 20, retention => 2*24*60); end; / 3. 手工创造快照 begin dbms_workload_repository.create_snapshot(); end; / 4. 生成AWR REPROT @D:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\awrrpt.sql; 参数: 输入report的值:html\text 输入num_days的值:1 输入begin_snap的值:15 输入end_snap的值:20 输入report_name的值:d:\awrrpt.txt 报告如果正常完成: End of Report Report written to d:\awrrpt.txt   AWR默认的采样间隔和历史快照保留时间  默认是保留七天,采集间隔是1小时,这个信息可以从DBA_HIST_WR_CONTROL视图中获得。  sys@ora10g> col SNAP_INTERVAL for a20  sys@ora10g> col RETENTION for a20  sys@ora10g> select * from dba_hist_wr_control;        DBID SNAP_INTERVAL        RETENTION            TOPNSQL  ---------- ------------...

ORACLE Database Design

系统设计阶段决定数据库是否存在性能问题。   系统设计:软件设计,硬件设计,数据库设计   软件设计: 1. 软件架构设计:三层架构(应用层+中间件层+数据库层) 2. 软件代码设计: a. 人为添加Hint约束SQL的执行计划; b. 不必要的外连接操作; c. CBO下优化器模式选择:     i. OLAP,报表作业: 设置all_rows;     ii. 分页操作较多的网站类数据库:设置first_rows;     iii. 如果既有报表作业,又有分页操作:选择使用Hint;     例如: select * from                 (select /*+ first_rows(10) */ a.*,rownum rnum from                 (select /*+ first_rows(10) */ id,name from t1 order by id) a                 where rownum <=10)                 where rnum >=1; d. 绑定变量:适用于OLTP系统,因为可以节省语法,语义分析及生成执行计划; e. 使用存储过程代替PL/SQL 包,因为PL/S...

ORACLE LATCH

LATCH:oracle用于保护内存结构,保证数据在读取的时候,只能由一个会话来完成。   LATCH:轻量级锁,不会造成阻塞,会导致等待。   系统缓慢原因是LATCH: 1. 共享池中LATCH争用 --> 绑定变量;   如果字段上有索引或者字段集较大,不建议用绑定变量   a. 如何绑定变量: declare     i number; begin   for i in 1..1000 loop       insert into t values(i,i+1,i*1,i*2,i-1);   end loop; end;   或者:   declare     i number;     sqlstr varchar2(200); begin   for i in 1..1000 loop        sqlstr:='insert into 测试表 (:i,:i+1,:i*1,:i*2,:i-1) ';       execute immediate sqlstr;   end loop; end; b. 如何判断是否绑定变量:      select substr(sql_text,1,20), count(*)           from v$sqlarea          group by substr(sql_text,1,20) having count(*) > 50;    2. 数据缓冲池LATCH争用 --> 热块...

ORACLE analyze table

Table EXEC DBMS_STATS.gather_table_stats(' <table owner> ', '< table_name> '); Schema exec dbms_stats.gather_schema_stats('<schema name>',DBMS_STATS.AUTO_SAMPLE_SIZE); Database exec dbms_stats.GATHER_DATABASE_STATS(99,CASCADE=>TRUE); If after the gather statistics, still not go index, maybe the problem is the size of SGA.

ORACLE Optimization

Oracle优化器:SQL分析和执行的优化工具,负责制定SQL执行计划。   Oracle优化器类型:RBO(基于规则优化器),CBO(基于代价优化器) 说明:ORACLE10g,RBO被弃用(原因相对单板,不能很好适应实际使用)   CBO工作原理: 1. 通过已有的统计信息,进行分析,然后选择最优的执行计划。 2. 如果没有统计信息,ORACLE采用动态采样的技术。   CBO运行模式: 1. FIRST_ROW(n):    Oracle执行SQL时,有效考虑将结果集中前n条记录最快反馈 --> 分页显示的网站 2. ALL_ROWS:          Oracle执行SQL时,将SQL执行完毕,将全部结果集全部返回 --> OLAP系统   查看: show parameter optimizer_mode;   修改: 1. SQL语句级别 select /*+ first_row(10) */ name from table; select /*+ all_row */ name from table;   2. 修改PFILE参数 alter system set optimizer_mode=rule/choose/first_rows/all_rows;   3. session级别 alter session set optimizer_mode=all_rows; SQL script optimization 1. Generate the explain plan of the sql script; 2. Find out the full scan or large cost; 3. Try to create index or change script to reduce the cost.   No sql change to optimize system W...

ORACLE Optimize SQL

Example 1 original one: update acc_bill b set brand = (      select brand     from user     where serv_id = b.serv_id     ) , plan_id = (     select plan_id      from user     where serv_id = b.serv_id     ) where b.serv_id in (                         select serv_id from user                          ) optimized one: update acc_bill b set brand, plan_id = (select brand, plan_id from user where serv_id = b.serv_id) where b.serv_id in  ( select serv_id from user ) Further optimized one: update ( select a.brand brand_a, a.plan_id plan_id_a, b.brand, b.plan_id from acc_bill b, user a where b.serv_id = a.serv_id ) set brand=brand_a, plan_id=plan_id_a; Example 2 TOP 5 1. latch: cache buffers chains ...