Oracle学习笔记2


  1. --查看具有dba权限的用户
  2. select * from v$pwfile_users

  3. --计算日志缓冲区的块尺寸
  4. SELECT ROUND((A.REDOSIZE + B.REDOWAST) / C.REDOBLKS) + 16 AS REDO_BLOCK_SIZE
  5.   FROM (SELECT VALUE REDOSIZE FROM V$SYSSTAT WHERE NAME = 'redo size') A,
  6.        (SELECT VALUE REDOWAST FROM V$SYSSTAT WHERE NAME = 'redo wastage') B,
  7.        (SELECT VALUE REDOBLKS FROM V$SYSSTAT WHERE NAME = 'redo blocks written') C
  8.     
  9. --缓存命中率查询语句
  10. select 1 - (sum(decode(name, 'physical reads', value, 0)) /
  11.        (sum(decode(name, 'db block gets', value, 0)) +
  12.        (sum(decode(name, 'consistent gets', value, 0))))) "缓冲命中率"
  13.   from v$sysstat;    

  14. --合并索引分区碎片
  15. select 'alter index ' || a.owner || '.' || a.index_name || ' coalesce ;'
  16.   from dba_indexes a
  17.  where a.owner in ('ZLHIS', 'ZLTOOLS')
  18.    and a.index_type = 'NORMAL'
  19.    AND A.uniqueness = 'UNIQUE'
  20.    AND A.status = 'VALID'
  21.    AND A.tablespace_name IS NOT NULL;
  22.     
  23. --检查数据库的状态
  24. SQL>select instance_name,status from v$instance ; --status=open    

  25. --监听器的启动、停止和状态
  26. $lsnrctl start
  27. $lsnrctl stop
  28. $lsnrctl status

  29. --检查表空间的使用情况
  30. SELECT A.TABLESPACE_NAME AS "TableSpace Name",
  31.        A.TOTAL_SIZE AS "Total Size",
  32.        ROUND(B.TOTAL_FREE_SIZE, 1) AS "Total Free Size",
  33.        ROUND((A.TOTAL_SIZE - B.TOTAL_FREE_SIZE), 2) AS "Used Size",
  34.        TO_CHAR(100 * B.TOTAL_FREE_SIZE / A.TOTAL_SIZE, '99.99') || '%' AS "Percent Free"
  35.   FROM (SELECT TABLESPACE_NAME, SUM(BYTES) / 1024 / 1024 AS TOTAL_SIZE
  36.           FROM DBA_DATA_FILES
  37.          GROUP BY TABLESPACE_NAME) A,
  38.        (SELECT TABLESPACE_NAME, SUM(BYTES / 1024 / 1024) AS TOTAL_FREE_SIZE
  39.           FROM DBA_FREE_SPACE
  40.          GROUP BY TABLESPACE_NAME) B
  41.  WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME

  42. --另一种查询方法
  43. SELECT A.TABLESPACE_NAME AS TABLESPACE_NAME,
  44.        ROUND(A.BYTES / (1024 * 1024 * 1024), 2) AS "TOTAL(G)",
  45.        ROUND(B.BYTES / (1024 * 1024 * 1024), 2) AS "USED(G)",
  46.        ROUND(C.BYTES / (1024 * 1024 * 1024), 2) AS "FREE(G)",
  47.        ROUND((B.BYTES * 100) / A.BYTES, 2) AS "% USED",
  48.        ROUND((C.BYTES * 100) / A.BYTES, 2) AS "% FREE"
  49.   FROM SYS.SM$TS_AVAIL A, SYS.SM$TS_USED B, SYS.SM$TS_FREE C
  50.  WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME
  51.    AND A.TABLESPACE_NAME = C.TABLESPACE_NAME;

  52. --计算空间使用情况
  53. SELECT UPPER(F.TABLESPACE_NAME) AS "表空间名称",
  54.        ROUND(D.AVAILB_BYTES, 2) AS "表空间大小(G)",
  55.        ROUND(D.MAX_BYTES, 2) AS "最终表空间大小(G)",
  56.        ROUND((D.AVAILB_BYTES - F.USED_BYTES), 2) AS "已使用空间(G)",
  57.        TO_CHAR(ROUND((D.AVAILB_BYTES - F.USED_BYTES) / D.AVAILB_BYTES * 100,2),'999.99') AS "使用比",
  58.        ROUND(F.USED_BYTES, 6) AS "空闲空间(G)",F.MAX_BYTES AS "最大块(M)"
  59.   FROM (SELECT TABLESPACE_NAME,
  60.                ROUND(SUM(BYTES) / (1024 * 1024 * 1024), 6) USED_BYTES,
  61.                ROUND(MAX(BYTES) / (1024 * 1024 * 1024), 6) MAX_BYTES
  62.           FROM SYS.DBA_FREE_SPACE
  63.          GROUP BY TABLESPACE_NAME) F,
  64.        (SELECT DD.TABLESPACE_NAME,
  65.                ROUND(SUM(DD.BYTES) / (1024 * 1024 * 1024), 6) AVAILB_BYTES,
  66.                ROUND(SUM(DECODE(DD.MAXBYTES, 0, DD.BYTES, DD.MAXBYTES)) / (1024 * 1024 * 1024),6) MAX_BYTES
  67.           FROM SYS.DBA_DATA_FILES DD
  68.          GROUP BY DD.TABLESPACE_NAME) D
  69.  WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME
  70.  ORDER BY 4 DESC
  71.    
  72.  --检查是否有表空间碎片
  73.  --FSFI%(可用破碎空间索引):数值最大值为100,表示完全没有破碎的空间。数值越低表明破碎的空间越严重,低于30%就需要进行重整
  74. SELECT A.TABLESPACE_NAME AS "TableSpace Name",
  75.        SQRT(MAX(A.BLOCKS) / SUM(A.BLOCKS)) * (100 / SQRT(SQRT(COUNT(A.BLOCKS)))) AS "FSFI%(可用破碎空间索引)"
  76.   FROM DBA_FREE_SPACE A
  77.  GROUP BY A.TABLESPACE_NAME
  78.  ORDER BY 1;
  79.  
  80. --每月数据库增长报告
  81. SELECT TO_CHAR(A.CREATION_TIME, 'RRRR Month') AS "Month",
  82.        SUM(A.BYTES) / 1024 / 1024 / 1024 AS "Growth in GB"
  83.   FROM SYS.V_$DATAFILE A
  84.  GROUP BY A.CREATION_TIME
  85.  ORDER BY TO_CHAR(A.CREATION_TIME, 'RRRR Month');
  86.  
  87. --每月表空间增长报告
  88. SELECT A.TS# AS "TableSpace No",
  89.        B.NAME AS "TableSpace Name",
  90.        SUM(A.BYTES) / 1024 / 1024 / 1024 AS "Growth in GB"
  91.   FROM SYS.V_$DATAFILE A, SYS.V$TABLESPACE B
  92.  WHERE A.CREATION_TIME > SYSDATE - 365
  93.    AND A.TS# = B.TS#
  94.  GROUP BY A.TS#, B.NAME, TO_CHAR(A.CREATION_TIME, 'RRRR Month')
  95.  ORDER BY A.TS# ;

  96. --表分析,并将分析的结果放入到chained_rows表中
  97. CREATE TABLE system.chained_rows(
  98. owner_name VARCHAR2(30),
  99. table_name VARCHAR2(30),
  100. cluster_name VARCHAR2(30),
  101. partition_name VARCHAR2(30),
  102. subpartition_name VARCHAR2(30),
  103. head_rowid ROWID,
  104. analyze_timestamp DATE
  105. ) ;
  106. --以下为分析的语句
  107. SELECT 'analyze table ' || OWNER || '.' || TABLE_NAME || ' list chained rows into system.chained_rows ;'
  108.   FROM DBA_TABLES
  109.  WHERE OWNER IN ('ZLHIS', 'ZLTOOLS');
  110.  
  111. --Oracle数据库的构成
  112. 数据文件 data file
  113. 在线重做日志文件 online redo log file
  114. 控制文件 control file
  115. 初始参数文件 initialization parameter file
  116. 密码文件 password file
  117. 归档日志文件 archive log file
  118. 警告日志文件 alert log file
  119. 跟踪文件 trace file

  120. --新增一个日志文件
  121. ALTER DATABASE ADD LOGFILE GROUP 4 ('C:\app\Administrator\oradata\CeShiKu\REDO4.LOG') SIZE 50m ;

  122. --新增一个日志文件到组中(不需要指定大小,自动按照组中其他成员的大小)
  123. alter database add logfile member 'C:\app\Administrator\oradata\CeShiKu\REDO1A.LOG' to group 1;

  124. --删除日志文件(状态为inactive,否则需要切换日记)
  125. alter system switch logfile ;
  126. alter database drop logfile group 1 ;

  127. --初始化参数分为动态参数和静态参数
  128. --动态参数使用alter system之后不需要重启数据库即可生效;
  129. --静态参数修改后需要重启数据才能生效;

  130. --通过spfile创建pfile
  131. create pfile='c:\pfile.ora' from spfile ;

  132. --创建表空间
  133. CREATE TABLESPACE USERSDATA
  134. DATAFILE 'C:\APP\ADMINISTRATOR\ORADATA\CESHIKU\USERS_DATA_01.DBF' SIZE 100M
  135. EXTENT MANAGEMENT LOCAL UNIFORM SIZE 10M ;

  136. CREATE TABLESPACE USERSDATA
  137. DATAFILE 'C:\APP\ADMINISTRATOR\ORADATA\CESHIKU\USERS_DATA_01.DBF' SIZE 100M
  138. EXTENT MANAGEMENT LOCAL AUTOALLOCATE ;

  139. --删除表空间
  140. DROP TABLESPACE USERSDATA INCLUDING CONTENTS AND DATAFILES [cascade constraints] ;

  141. --创建undo表空间
  142. CREATE UNDO TABLESPACE UNDOTBS2
  143. DATAFILE 'C:\APP\ADMINISTRATOR\ORADATA\CESHIKU\UNDOTBS02.DBF' SIZE 700M ;

  144. --创建临时表空间
  145. CREATE TEMPORARY TABLESPACE TEMP02
  146. TEMPFILE 'C:\APP\ADMINISTRATOR\ORADATA\CESHIKU\TEMP02.DBF' SIZE 100M
  147. EXTENT MANAGEMENT LOCAL UNIFORM SIZE 10M ;

  148. --表空间离线
  149. alter tablespace tablespaceName offline ;

  150. --表空间在线
  151. alter tablespace tablespaceName on ;

  152. --表空间增加一个数据文件
  153. alter tablespace tablespaceName
  154. add datafile 'C:\APP\ADMINISTRATOR\ORADATA\CESHIKU\USERS_DATA_01.DBF' size 100m ;

  155. --增加或减少表空间的大小
  156. alter tablespace tablespaceName
  157. datafile 'C:\APP\ADMINISTRATOR\ORADATA\CESHIKU\USERS_DATA_01.DBF' resize 200m ;

  158. --修改数据文件的大小
  159. alter database datafile 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF' resize 1000m;

  160. --设置undo的时间
  161. SQL>alter system set undo_retention=1800 scope=both ;(both=spfile+memory)

  162. --如何迁移系统数据库文件到其他地方
  163. 1.SQL>shutdown immediate ;
  164. 2.SQL>host copy c:\app\Administrator\oradata\CeShiKu\system01.dbf d:\oradata\system01.dbf;
  165. 3.SQL>startup mount ;
  166. 4.SQL>alter database rename file 'c:\app\Administrator\oradata\CeShiKu\system01.dbf' to 'd:\oradata\system01.dbf';
  167. 5.SQL>alter database open ;

  168. --如何迁移非系统数据文件到其他地方
  169. 1.SQL>alter tablespace usertbs offline ;
  170. 2.SQL>host copy c:\app\Administrator\oradata\CeShiKu\usertbs01.dbf d:\oradata\usertbs01.dbf ;
  171. 3.SQL>alter database rename file 'c:\app\Administrator\oradata\CeShiKu\usertbs01.dbf' to 'd:\oradata\usertbs01.dbf';
  172. 4.SQL>alter tablespace usertbs online ;

  173. --open_cursors的解释
  174. open_cursors:控制每个session最多能够同时打开的cursor的数量,当超过这个cursor数量时,就会出现ora-01000错误;
  175. --下面的语句用于查询该参数的设置值以及曾经达到的最大值
  176. select max(a.value) as highest_open_cur,p.value as max_open_cur
  177. from v$sesstat a,v$statname b,v$parameter p
  178. where a.statistic# = b.statistic#
  179. and b.name = 'opened cursors current'
  180. and p.name = 'open_cursors'
  181. group by p.value ;

  182. SQL语句在Oracle中的分类:
  183. 1.简单SQL语句(single SQL):无嵌套,整个语句只有一层select。
  184. 2.复杂SQL语句(complex SQL):有嵌套:使用了视图,子查询,集合操作等的SQL语句。

  185. --传统数据库的类型
  186. 1.OLTP:ONLINE TRANSACTION PROCESSING:在线事务系统
  187. 2.OLAP:ONLINE ANALYTICAL PROCESSING:在线分析系统

  188. --block的大小是由 db_block_size 的大小决定的
  189. show parameter db_block_size ;

  190. --系统检查点
  191. alter system checkpoint ;

  192. --日记切换
  193. alter system switch logfile ;

  194. --刷新系统缓冲区(注意在生产环境中不要轻易使用)
  195. alter system flush buffer_cache ;

  196. --查看隐含参数_use_single_log_writer的值,判断是否使用多个log_writer进程
  197. --_use_single_log_writer:false - 否 ADAPTIVE - 自适应
  198. select a.ksppinm,b.ksppstvl,a.ksppdesc
  199. from sys.x$ksppi a, sys.x$ksppcv b
  200. where a.indx = b.indx
  201. and a.ksppinm like '%log_writer%' ;

  202. --windows系统中启用多线程的模式
  203. alter system set threaded_execution=true scope=spfile ;

  204. --Oracle删除口令文件的后果
  205. Oracle可以正常启动,但是在授权sysdba的时候会报错
  206. SQL>grant sysdba to system ;
  207. ORA-01994: GRANT 失败: 口令文件缺失或已禁用

  208. --查看具有sysdba/sysoper权限的用户列表
  209. select * from v$pwfile_users ;

  210. --Oracle11g及以上隐藏了一个关于Oracle_Base的参数,查询语句如下:
  211. SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.KSPPDESC PDESC
  212.   FROM SYS.x$ksppi x, SYS.x$ksppcv y
  213.  WHERE x.indx = y.indx
  214.    AND x.ksppinm LIKE '%oracle_base%';

  215. --ADR(automatic diagnostic repository)自动诊断库的信息,可以通过以下语句获得:
  216. select * from v$diag_info ;

  217. --如何查看隐藏参数
  218. SELECT i.ksppinm name,
  219.        i.ksppdesc description,
  220.        CV.ksppstvl VALUE,
  221.        CV.ksppstdf isdefault,
  222.        DECODE(BITAND(CV.ksppstvf, 7),1,'MODIFIED',4,'SYSTEM_MOD','FALSE') ismodified,
  223.        DECODE(BITAND(CV.ksppstvf, 2), 2, 'TRUE', 'FALSE') isadjusted
  224.   FROM sys.x$ksppi i, sys.x$ksppcv CV
  225.  WHERE i.inst_id = USERENV('Instance')
  226.    AND CV.inst_id = USERENV('Instance')
  227.    AND i.indx = CV.indx
  228.    AND i.ksppinm LIKE '/_%' ESCAPE '/'
  229.  ORDER BY REPLACE(i.ksppinm, '_', '') ;
  230.  
  231.  --如何清除缓冲区中的信息
  232.  alter system flush buffer_cache ;
  233.  alter system flush shared_pool ;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28878983/viewspace-2135816/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28878983/viewspace-2135816/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值