灌溉梦想,记录脚步

linux下完全删除Oracle

1.用oracle用户登录
如果要再次安装, 最好先做一些备份工作。
包括用户的登录脚本,数据库自动启动关闭的脚本,和Listener自动启动的脚本。
要是有可能连创建数据库的脚本也保存下来
2.使用SQL*PLUS停止数据库
[oracle@ora920 oracle]$ sqlplus /nolog
SQL> connect / as sysdba
SQL> shutdown [immediate]
SQL> exit

3.停止Listener
[oracle@ora920 oracle]$ lsnrctl stop

4.停止HTTP服务
[oracle@ora920 oracle]$ $ORACLE_HOME/Apache/Apache/bin/apachectl stop

5.用su或者重新登录到root(如想重新安装可以保留oracle用户,省得输入环境变量了)

6.将安装目录删除
[root@ora920 /root]# rm -rf /opt/oracle/

7.将/usr/bin下的文件删除
[root@ora920 /root]# rm /usr/bin/dbhome
[root@ora920 /root]# rm /usr/bin/oraenv
[root@ora920 /root]# rm /usr/bin/coraenv

8.将/etc/oratab删除
[root@ora920 /root]# rm /etc/oratab

9.将/etc/oraInst.loc删除
[root@ora920 /root]# rm /etc/oraInst.loc

10.将oracle用户删除(若要重新安装,可以不删除)
[root@ora920 /root]# userdel -r oracle

11.将用户组删除(若要重新安装,可以不删除)
[root@ora920 /root]# groupdel oinstall
[root@ora920 /root]# groupdel dba

12.将启动服务删除
[root@ora920 /root]# chkconfig –del dbora

scp和rsync的限制流量方法

为了避免你的scp或者rsync因为无良&懒惰的OPS设置防火墙的偷懒而造成的断流现象,我们必须对自己的数据传输进行一定的限流措施,慢一点总比被掐了的好。因此(限制为 1M Bytes/s):

  scp -l 10000 某个大文件   你的账号@远程的机器

或者rsync是(限制为 60k Bytes/s):

  rsync -auvz --progress --delete --bwlimit=60 远程的文件  本地的文件
  rsync -auvz --progress --delete --bwlimit=60 本地的文件  远程的文件

ORACLE 常用脚本

  1、查看表空间的名称及大小
  select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size
  from dba_tablespaces t, dba_data_files d
  where t.tablespace_name = d.tablespace_name
  group by t.tablespace_name;
  2、查看表空间物理文件的名称及大小
  select tablespace_name, file_id, file_name,
  round(bytes/(1024*1024),0) total_space
  from dba_data_files
  order by tablespace_name;
  3、查看回滚段名称及大小
  select segment_name, tablespace_name, r.status,
  (initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent,
  max_extents, v.curext CurExtent
  From dba_rollback_segs r, v$rollstat v
  Where r.segment_id = v.usn(+)
  order by segment_name ;
  4、查看控制文件
  select name from v$controlfile;
  5、查看日志文件
  select member from v$logfile;
  6、查看表空间的使用情况
  IXDBA.NET社区论坛
  select sum(bytes)/(1024*1024) as free_space,tablespace_name
  from dba_free_space
  group by tablespace_name;
  Select A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED, C.BYTES FREE,
  (B.BYTES*100)/A.BYTES "% USED",(C.BYTES*100)/A.BYTES "% FREE"
  FROM SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE C
  Where A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.TABLESPACE_NAME=C.TABLESPACE_NAME;
  7、查看数据库库对象
  select owner, object_type, status, count(*) count# from all_objects group by owner, object_type, status;
  8、查看数据库的版本
  Select version FROM Product_component_version
  Where SUBSTR(PRODUCT,1,6)='Oracle';
  9、查看数据库的创建日期和归档方式
  Select Created, Log_Mode, Log_Mode From V$Database;
  10、查看当前所有对象
  SQL> select * from tab;
  11、建一个和a表结构一样的空表
  SQL> create table b as select * from a where 1=2;
  SQL> create table b(b1,b2,b3) as select a1,a2,a3 from a where 1=2;
  12、察看数据库的大小,和空间使用情况
  SQL> col tablespace format a20
  SQL> select b.file_id  文件ID,
  b.tablespace_name  表空间,
  b.file_name     物理文件名,
  b.bytes       总字节数,
  (b.bytes-sum(nvl(a.bytes,0)))   已使用,
  sum(nvl(a.bytes,0))        剩余,
  sum(nvl(a.bytes,0))/(b.bytes)*100 剩余百分比
  from dba_free_space a,dba_data_files b
  where a.file_id=b.file_id
  group by b.tablespace_name,b.file_name,b.file_id,b.bytes
  order by b.tablespace_name
  /
  dba_free_space –表空间剩余空间状况
  dba_data_files –数据文件空间占用情况
  13、查看现有回滚段及其状态
  SQL> col segment format a30
  SQL> Select SEGMENT_NAME,OWNER,TABLESPACE_NAME,SEGMENT_ID,FILE_ID,STATUS FROM DBA_ROLLBACK_SEGS;
  14、查看数据文件放置的路径
  SQL> col file_name format a50
  SQL> select tablespace_name,file_id,bytes/1024/1024,file_name from dba_data_files order by file_id;
  15、显示当前连接用户
  SQL> show user
  16、把SQL*Plus当计算器
  SQL> select 100*20 from dual;
  17、连接字符串
  SQL> select 列1||列2 from 表1;
  SQL> select concat(列1,列2) from 表1;
  18、查询当前日期
  SQL> select to_char(sysdate,'yyyy-mm-dd,hh24:mi:ss') from dual;
  19、用户间复制数据
  SQL> copy from user1 to user2 create table2 using select * from table1;
  20、视图中不能使用order by,但可用group by代替来达到排序目的
  SQL> create view a as select b1,b2 from b group by b1,b2;
  21、通过授权的方式来创建用户
  SQL> grant connect,resource to test identified by test;
  SQL> conn test/test
  ORACLE 常用脚本(2)
  一、ORACLE的表的分类:
  1、REGULAR TABLE:普通表,ORACLE推荐的表,使用很方便,人为控制少。
  2、PARTITIONED TABLE:分区表,人为控制记录的分布,将表的存储空间分为若干独立的分区,记录按一定的规则存储在分区里。适用于大型的表。
  二、建表
  1 Create TABLE 表名 (EMPNO NUMBER(2),NAME VARCHAR2(20)) PCTFREE 20 PCTUSED 50
  STORAGE (INITIAL 200K NEXT 200K MAXEXTENTS 200 PCTINCREASE 0) TABLESPACE 表空间名称
  [LOGGING|NOLOGGING]所有的对表的操作都要记入REDOLOG,ORACLE建议使用NOLOGGING;
  [CACHE|NOCACHE]:是否将数据按照一定的算法写入内存。
  2、关于PCTFREE 和PCTUSED
  A、行迁移和行链接
  B、PCTFREE:制止Insert,为 Update留FREE 空间
  C、PCTUSED:为恢复Insert操作,而设定的。
  三、拷贝一个已经存在的表:
  Create TABLE 新表名 STORAGE(。。) TABLESPACE 表空间
  AS Select * FROM 老表名 ;
  当老表存在约束,触发的时候,不会拷过去。
  四、修改表的参数
  Alter TABLE 名称 PCTFREE 20 PCTUSED 50 STOAGE(MAXEXTENTS 1000);
  五、手工分配空间:
  Alter TABLE 名称 ALLOCATE EXTENT(SIZE 500K DATAFILE '。。');
  1、SIZE选项,按照NEXT分配
  2、表所在表空间与所分配的数据文件所在的表空间必须一样。
  六、水线
  1、水线定义了表的数据在一个BLOCK中所达到的最高的位置。
  2、当有新的记录插入,水线增高
  3、当删除记录时,水线不回落
  4、减少查询量
  七、如何回收空间:
  Alter TABLE 名称 DEALLOCATE UNUSED [KEEP 4[M|K]]
  1、当空间分配过大时,可以使用本命令
  2、如果没有加KEEP,回收到水线
  3、如果水线《MINEXTENTS的大小回收到MINEXTENTS所指定的大小
  八、TRUNCATE 一个表
  TRUNCATE TABLE 表名,表空间截取MINEXTENT,同时水线重置。
  九、Drop 一个表
  Drop TABLE 表名 [CASCADE CONSTRAINTS]
  当一个表含有外键的时候,是不可以直接Drop的,加CASCADE CONSRIANTS将外键等约束一并删掉。
  十、信息获取
  1、dba_object
  2 dba_tables:建表的参数
  3 DBA_SEGMENTS:
  组合查询的连接字段:DBA_TABLES的table_name+dba_ojbect的object_name+dba_segments的SEGMENT_NAME
  ORACLE 常用脚本(3)
  一、ORACLE的安全域
  1、TABLESPACE QUOTAS:表空间的使用定额
  2、DEFAULT TABLESPACE:默认表空间
  3、TEMPORARY TABLESPACE:指定临时表空间。
  4、ACCOUNT LOCKING:用户锁
  5、RESOURCE LIMITE:资源限制
  6、DIRECT PRIVILEGES:直接授权
  7、ROLE PRIVILEGES:角色授权先将应用中的用户划为不同的角色,
  二、创建用户时的清单:
  1、选择一个用户名称和检验机制:A,看到用户名,实际操作者是谁,业务中角色。
  2、选择合适的表空间:
  3、决定定额:
  4、口令的选择:
  5、临时表空间的选择:先建立一个临时表空间,然后在分配。不分配,使用SYSTEM表空间
  6、Create USER
  7、授权:A,用户的工作职能
  B,用户的级别
  三、用户的创建:
  1、命令:
  Create USER 名称 IDENTIFIED BY 口令 DEFAULT TABLESPACE 默认表空间名 TEMPOARAY
  TABLESPACE 临时表空间名
  QUOTA 15M ON 表空间名
  [PASSWORD EXPIRE]:当用户第一次登陆到ORACLE,创建时所指定的口令过期失效,强迫用户自己定义一个新口令。
  [ACCOUNT LOCK]:加用户锁
  QUOTA UNLIMITED ON TABLESPACE:不限制,有多少有多少。
  [PROFILE 名称]:受PROFILE文件的限制。
  四、如何控制用户口令和用户锁
  1、强迫用户修改口令:Alter USER 名称 IDENTIFIED BY 新口令 PASSWORD EXPIRE;
  2、给用户加锁:Alter USER 名称 ACCOUNT [LOCK|UNLOCK]
  3、注意事项:
  A、所有操作对当前连接无效
  B、1的操作适用于当用户忘记口令时。
  五、更改定额
  1、命令:Alter USER 名称 QUOTA 0 ON 表空间名
  Alter USER 名字 QUOTA (数值)K|M|UNLIMITED ON 表空间名;
  2、使用方法:
  A、控制用户数据增长
  B、当用户拥有一定的数据,而管理员不想让他在增加新的数据的时候。
  C、当将用户定额设为零的时候,用户不能创建新的数据,但原有数据仍可访问。
  六、Drop一个USER
  1、Drop USER 名称
  适合于删除一个新的用户
  2、Drop USER 名称 CASCADE: 删除一个用户,将用户的表,索引等都删除。
  3、对连接中的用户不好用。
  七、信息获取:
  1、DBA_USERS:用户名,状态,加锁日期,默认表空间,临时表空间
  2、DBA_TS_QUOTAS:用户名,表空间名,定额。
  两个表的连接字段:USERNAME
  GRANT Create SESSION TO 用户名
  PROFILE的管理(资源
  文件)
  一、PROFILE的管理内容:
  1、CPU的时间
  2、I/O的使用
  3、IDLE TIME(空闲时间)
  4、CONNECT TIME(连接时间)
  5、并发会话数量
  6、口令机制:
  二、DEFAULT PROFILE:
  1、所有的用户创建时都会被指定这个PROFILE
  2、DEFAULT PROFILE的内容为空,无限制
  三、PROFILE的划分:
  1、CALL级LIMITE:
  对象是语句:
  当该语句资源使用溢出时:
  A、该语句终止
  B、事物回退
  C、SESSION连接保持
  2、SESSION级LIMITE:
  对象是:整个会话过程
  溢出时:连接终止
  四、如何管理一个PROFILE
  1、Create PROFILE
  2、分配给一个用户
  3、象开关一样打开限制。
  五、如何创建一个PROFILE:
  1、命令:Create PROFILE 名称
  LIMIT
  SESSION_PER_USER 2
  CPU_PER_SESSION 1000
  IDLE_TIME 60
  CONNECT_TIME 480
  六、限制参数:
  1、SESSION级LIMITE:
  CPU_PER_SESSION:定义了每个SESSION占用的CPU的时间: (1/100 秒)
  2、SESSION_PER_USER:每个用户的并发连接数
  3、CONNECT_TIME:一个连接的最长连接时间(分钟)
  4、LOGICAL_READS_PER_SESSION: 一次读写的逻辑块的数量
  5、CALL级LIMITE
  CPU_PER_CALL:每个语句占用的CPU时间
  LOGICAL_READS_PER_CALL:
  七、分配给一个用户:
  Create USER 名称。。。。。。
  PROFILE 名称
  Alter USER 名称 PROFILE 名称
  八、打开资源限制:
  1、RESOURCE_LIMT:资源文件中含有
  2、Alter SYSTEM SET RESOURCE_LIMIT=TRUE;
  3、默认不打开
  九、修改PROFIE的内容:
  1、Alter PROFILE 名称参数 新值
  2、对于当前连接修改不生效。
  Drop一个PROFILE
  1、Drop PROFILE 名称
  删除一个新的尚未分配给用户的PROFILE,
  2、Drop PROFILE 名称 CASCADE
  3、注意事项
  A、一旦PROFILE被删除,用户被自动加载DEFAULT PROFILE
  B、对于当前连接无影响
  C、DEFAULT PROFILE不可以被删除
  信息获取:
  1、DBA_USERS:
  用户名,PROFILE
  2、DBA_PROFILES:
  PROFILE及各种限制参数的值
  每个用户的限制:PROFILE(关键字段)
  PROFILE的口令机制限制
  1、限制内容
  A、限制连续多少次登录失败,用户被加锁
  B、限制口令的生命周期
  C、限制口令的使用间隔
  2、限制生效的前提:
  A、RESOURCE_LIMIT:=TRUE
  B orACLE\RDBMS\ADMIN\UTLPWDMG.SQL
  3、如何创建口令机制:
  Create PROFILE 名称
  SESSIONS_PER_USER
  …..
  password_life_time 30
  failed_log_attempts 3
  password_reuse_time 3
  4、参数的含义:
  A FAILED_LOGIN_ATTEMPTS:
  当连续登陆失败次数达到该参数指定值时,用户加锁
  B PASSWORD_LOCK_TIME:加锁天数
  C PASSWORD_LIFE_TIME:口令的有效期(天)
  D PASSWORD_GRACE_TIME:口令修改的间隔期(天)
  E PASSWORD_REUSE_TIME:口令被修改后原有口令隔多少天被重新使用。
  F PASSWORD_REUSE_MAX:口令被修改后原有口令被修改多少次被重新使用。

千年的愿望-此水的尽头

   千年的愿望
  总希望
  二十岁的那个月夜
  能再回来
  再重新活那么一次
  然而
  商时风
  唐时雨
  多少枝花
  多少闲情的少女
  想她们在玉阶上转回以后
  也只能枉然地剪下玫瑰
  插入瓶中
   –席慕容–1976.
   此水的尽头
   –<千年的愿望>悟读
  石砌台阶的寒气穿透了她的鞋底,子夜时分她回到卧室,丈夫已酣然入睡,女儿在隔壁房间的梦呓透墙而来,她悄声地走进浴室,在镜子前面刷两次牙,检查眼角爬上的新愁,良久良久,无奈地摘下耳饰,放在梳妆台上,然后上床,偎进丈夫的怀里.
  此刻,她离的她的二十岁有三千年之遥.
  我猜不透二十岁的那个月夜到底是个什么日子.是她与情人的初次相吻,风颤栗地掠过水面,使她在痛苦的欢娱中迈进了女人的门槛.
  二十年前的那个月夜,发生了什么并不重要,重要的是有一件事发生了.
  生活中能有这么一件事,在以后的时光里被时时念及,那便就是幸福的事.
  席慕蓉是一位出了名的女人,是特殊的人,但她传达的这段情感却是极普通的,可见她的出名就是因为她细腻地,具体地艺术地表达了这种情感.

誓言–爱到极致是无言

   誓言

  今生已矣 且将
  所有无法形容的渴望与企盼
  凝聚成一粒孤独的种子
  播在来世
  让时光逝去最简单的方法
  就是让白日与黑夜
  反复的出现
  让我长成为一株 静默的树
  就是在如水的月夜里
  也能坚持着 不发一言
   –席慕容–1984.11.17.
  

爱到极处是无言
   –〈誓言〉悟读

  今世的沧桑,已无法改变。
  亲爱的你,将终生用一种温柔的心情来守口如瓶吗?
  夜,诗白诗白的月夜里,山脊上一棵孤零零的树。
  一队大雁向南飞去。这些大雁原本是相约而来,今又相约而去。风中的雁鸣,一声接着一声,与山涧里长长的猿啼,遥遥相应。
  此刻,想一想,那株孤寂的树,就是你了。
  在这样的夜里,月光,这唯一的流水,灌溉大片大片的土地,爱和诗歌的裨草。面对着它们,你终日沉默的果实。在时间的长廊上,象戒守这个夜晚,戒守着你的全部的美丽和忧伤。
  今世的沧桑,已无法改变。
  亲爱的你,将终生用一种温柔的心情来守口如瓶吗?
  你的渴望和企盼,是遍野的三千红树,将一个悲凉的晚秋装点成一首最动人的曲子了。而你不曾开口。你相信来世的约言,你相信,有一万中孤独,就会有一万个来世。而在一万个来世里,就将住有一万个圆满。是的。你相信。
  时光逐渐地远离了我们。黑夜过去,又是白天。这是一间巨大的磨坊:日日夜夜不停地唱着,日日夜夜不停地转着,日日夜夜不停地研磨着我们的快乐、青春和唉叹!即使面对这样的情景,你也无意开口,你也无意让大家知道,甚至也无意让我知道你那愁丝三千的心事,就是秋夜里那轮不眠的月亮呀!
  今世的沧桑,已无法改变。
  亲爱的你,将终生有一种温柔的心情来守口如瓶吗?

oracle启动dbconsole提示connection refused的解决办法

  $ emctl start dbconsole
  执行命令后,提示以下错误,并在日志中看到如下信息:
  It puts up all the “……..” dots for about 2 mins, and then states FAILED. Here is the first error message in the /oracle/10g/db_1/localhost.localdomain_ACT1/sysman/log/emdctl.trc)
  2009-7-3 10:09:21 Thread-4144096448 WARN http: snmehl_connect: connect failed to (localhost.localdomain:1830): Connection refused (error = 111)
  原因:
  要使用 OEM 或 iSQL*Plus,必须先启动监听器。
  解决办法:
  先启动监听器而后在执行命令
  $ lsnrctl start
  $ emctl start dbconsole

CentOS 5.2-X64安装Oracle 10g

  一.安装centos 5.2 (X64)
  pxe方式安装,不启动selinux
  二.安装需要的软件
  拷贝配置yum配置文件:
  scp 10.0.50.71:/etc/yum.repos.d/* /etc/yum.repos.d/
  安装文件
  yum install -y binutils compat-libstdc++ elfutils-libelf elfutils-libelf-devel glibc glibc-common glibc-devel gcc gcc-c++ libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel libXp
  三.建立用户和组
  /usr/sbin/groupadd oinstall
  /usr/sbin/groupadd dba
  /usr/sbin/useradd -g oinstall -G dba oracle
  passwd oracle

  四.建立目录和权限
  mkdir /oracle
  mkdir /oracle/10g
  chown -R oracle:oinstall /oracle

  五.编辑变量
  1.
  cat >> /etc/sysctl.conf <<EOF
  kernel.shmall = 2097152
  kernel.shmmax = 2147483648
  kernel.shmmni = 4096
  kernel.sem = 250 32000 100 128
  net.ipv4.ip_local_port_range = 1024 65000
  net.core.rmem_default=4194304
  net.core.rmem_max=4194304
  net.core.wmem_default=262144
  net.core.wmem_max=262144

  EOF

  2.
  cat >> /etc/security/limits.conf <<EOF
  oracle soft nproc 2047
  oracle hard nproc 16384
  oracle soft nofile 1024
  oracle hard nofile 65536

  EOF

  3.
  cat >> /etc/pam.d/login <<EOF
  session required /lib/security/pam_limits.so
  EOF

  4.
  vi /etc/profile
  if [ $USER = “oracle” ]; then
  if [ $SHELL = “/bin/ksh” ]; then
  ulimit -p 16384
  ulimit -n 65536
  else
  ulimit -u 16384 -n 65536
  fi
  fi

  5.
  cat >> /home/oracle/.bash_profile <<EOF
  ORACLE_BASE=/oracle
  ORACLE_HOME=$ORACLE_BASE/10g
  ORACLE_SID=wilson
  PATH=$ORACLE_HOME/bin:$PATH
  export orACLE_BASE orACLE_HOME orACLE_SID PATH

  EOF

  六.解压安装文件
  #gunzip 文件名.cpio.gz
  #cpio -idmv < 文件名.cpio
  七.修改系统版本
  vi /etc/redhat-release
  将CentOS release 5 (Final) 修改成redhat 4
  八.安装数据库
  用oracle用户进入linux
  进入终端
  su root
  xhost local:oracle
  su oralce

  sh /ORACLE的目录/runInstaller
  正常安装就可以,关于权限的错误可以忽略
  九.启动和停止 iSQL*Plus:
  $ isqlplusctl start
  $ isqlplusctl stop

  十.启动和停止监听器:
  监听器接受客户端的连接请求,并在验证证书后创建数据库连接。要使用 OEM 或 iSQL*Plus,必须先启动监听器。
  $ lsnrctl start
  $ lsnrctl stop

  十一.启动和停止数据库:
  启动和停止数据库的最简单方法是从 OEM 控制台启动和停止。要从命令行执行此操作,请在以 oracle 身份登录后使用 SQL*Plus,如下所示:
  启动:
  $ sqlplus
  SQL*Plus:Release 10.1.0.2.0 – Production on Sun Jun 13 22:27:48 2004
  Copyright (c) 1982, 2004, oracle.All rights reserved.
  Enter user-name:/ as sysdba
  Connected to an idle instance.
  SQL> startup
  ORACLE instance started.
  Total System Global Area 188743680 bytes
  Fixed Size 778036 bytes
  Variable Size 162275532 bytes
  Database Buffers 25165824 bytes
  Redo Buffers 524288 bytes
  Database mounted.
  Database opened.
  SQL> exit
  停止:
  $ sqlplus
  SQL*Plus:Release 10.1.0.2.0 – Production on Sun Jun 13 22:25:55 2004
  Copyright (c) 1982, 2004, oracle.All rights reserved.
  Enter user-name:/ as sysdba
  Connected to:
  Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 – Production
  With the Partitioning, OLAP and Data Mining options
  SQL> shutdown immediate
  Database closed.
  Database dismounted.
  ORACLE instance shut down.
  SQL> exit