Windchill配置-数据库相关的基础操纵

打印 上一主题 下一主题

主题 1711|帖子 1711|积分 5133

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
一、数据库访问

1.1 访问方式

可以通过本地数据库工具如:Navicat、DBeaver、PLSQL等,通常此方式都存在着权限的限定,部分SQL指令无权限实验;也可以直接通过数据库服务器进行访问。
1.2 数据库服务器

1.2.1 Windows/Linux

Windows:打开Windows PowerShell
Linux:登陆Linux服务器,切换到oracle用户权限
  1. su - oracle
复制代码
1.2.2 监听相关命令

查询监听状态:lsnrctl status
启动监听:lsnrctl start
关闭监听:lsnrctl stop
重新加载监听:lsnrctl reload
1.2.3 进入sqlplus
的方式



  • 平凡用户身份登陆
  1. sqlplus
复制代码
回车之后会提示输入用户名,密码

  1. sqlplus
  2. username/password
复制代码
username:用户名
password:密码

  1. connect username/password
复制代码

  1. connect username/password
  2. @servername
复制代码
servername:服务名

  • 体系管理员身份登陆
  1. sqlplus
  2. / as sysdba
复制代码

  1. connect / as sysdba
复制代码
1.2.4 基础SQL命令

查看数据库实例名:
  1. show parameter instance_name;
复制代码
关闭数据库:
  1. shutdown immediate;
复制代码
启动数据库:
  1. startup;
复制代码
退出sql语句实验:
  1. exit;
复制代码
二、常用的SQL语句

2.1 数据库表空间使用情况查询

2.1.1 统计

  1. SELECT         fs.TABLESPACE_NAME "表空间",
  2.                 round(total / (1024 * 1024 * 1024), 2) "总空间(G)",
  3.                 round(free / (1024 * 1024 * 1024), 2) "剩余(G)",
  4.                 round((total - free) / (1024 * 1024 * 1024), 2) "已使用(G)",
  5.                 round((total - free) / total, 4) * 100 "使用率%"
  6.                 FROM (SELECT TABLESPACE_NAME, SUM(BYTES) free
  7.                                 FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) fs,
  8.                         (SELECT TABLESPACE_NAME, SUM(BYTES) total
  9.                                 FROM DBA_DATA_FILES GROUP BY TABLESPACE_NAME) df
  10.                 WHERE fs.TABLESPACE_NAME = df.TABLESPACE_NAME;
复制代码
2.1.2 明细

  1. SELECT         df.FILE_ID AS "文件ID",
  2.                 df.TABLESPACE_NAME AS "表空间",
  3.                 df.FILE_NAME AS "文件名",
  4.                 CONCAT(ROUND(NVL(df.BYTES, 0)/(1024*1024), 2), 'MB') AS "总空间",
  5.                 CONCAT(ROUND((NVL(df.BYTES, 0)-SUM(NVL(fs.BYTES, 0)))/(1024*1024), 2), 'MB') AS "已使用",
  6.                 CONCAT(ROUND(SUM(NVL(fs.BYTES, 0))/(1024*1024), 2), 'MB')  AS "剩余",
  7.                 CONCAT(ROUND(SUM(NVL(fs.BYTES, 0))/NVL(df.BYTES, 0), 4)*100  , '%') AS "剩余%"
  8.         FROM DBA_FREE_SPACE fs, DBA_DATA_FILES df
  9.         WHERE fs.FILE_ID = df.FILE_ID
  10.         GROUP BY df.TABLESPACE_NAME ,df.FILE_NAME ,df.FILE_ID ,df.BYTES
  11.         ORDER BY df.TABLESPACE_NAME ;
复制代码
2.2 数据库表空间扩容

2.2.1 单机情况

自动扩容,有最大限定的:
  1. ALTER TABLESPACE tablespacename ADD DATAFILE 'filepath' SIZE 1024M AUTOEXTEND ON NEXT 8M MAXSIZE 30720M;
复制代码
非自动扩容(表空间最大为32G):
  1. ALTER TABLESPACE tablespacename ADD DATAFILE 'filepath' SIZE 30G;
复制代码
tablespacename:待扩容的表空间
filepath:上面查询到的对应的表空间文件名,留意文件名不能重复
2.2.2 集群情况(Oracle RAC)

查询磁盘组信息:
  1. su - grid
  2. asmcmd
  3. lsdg
复制代码

  1. SELECT GROUP_NUMBER ,NAME ,TYPE ,STATE ,TOTAL_MB ,FREE_MB FROM "GV$ASM_DISKGROUP";
复制代码
扩容命令:
  1. ALTER TABLESPACE tablespacename ADD DATAFILE '+磁盘组名' size 30G;
复制代码
+磁盘组名:一样平常来说都是+DATA
Oracle RAC安装时打开了omf,以是新增的数据文件只必要写到’+磁盘组名’,就可以自动创建到数据文件所在目录
2.3 游标查询

2.3.1 查询最大游标数和最大打开游标数

  1. SELECT MAX(a.value) AS highest_open_cur,
  2.        p.value AS max_open_cur
  3.   FROM v$sesstat   a,
  4.        v$statname  b,
  5.        v$parameter p
  6. WHERE a.statistic# = b.statistic#
  7.    AND b.name = 'opened cursors current'
  8.    AND p.name = 'open_cursors'
  9. GROUP BY p.value;
复制代码
2.3.2 打开游标的信息查询

  1. SELECT a.value,
  2.        s.username,
  3.        s.sid,
  4.        s.serial#
  5.   FROM v$sesstat  a,
  6.        v$statname b,
  7.        v$session  s
  8. WHERE a.statistic# = b.statistic#
  9.    AND s.sid = a.sid
  10.    AND b.name = 'opened cursors current'
  11. ORDER BY 1 DESC;
复制代码
2.3.2 未关闭PreparedStatement的SQL查询

  1. SELECT oc.sid,
  2.        oc.hash_value,
  3.        oc.sql_text,
  4.        COUNT(*) how_many
  5.   FROM v$open_cursor oc
  6. GROUP BY sid,
  7.           hash_value,
  8.           sql_text
  9. ORDER BY 4 DESC;
复制代码
2.4 历程相关SQL

2.4.1 查询用户占用资源信息

  1. SELECT l.SESSION_ID ,o.OWNER ,o.OBJECT_NAME
  2.         FROM "V$LOCKED_OBJECT" l,dba_objects o
  3.         WHERE l.OBJECT_ID = o.OBJECT_ID;
复制代码
2.4.2 根据SID(即SESSION_ID)查询出死锁历程信息

  1. SELECT SID ,"SERIAL#" ,USERNAME ,OSUSER ,MACHINE ,TERMINAL ,PROGRAM ,PREV_EXEC_START ,EVENT ,LOGON_TIME
  2.         FROM v$session WHERE SID IN (SESSION_ID1 ,SESSION_ID2) ;
复制代码
2.4.3 直接查询死锁的历程

  1. SELECT s.SID, s."SERIAL#", l.TYPE
  2.         FROM v$lock l, v$session s
  3.         WHERE l.SID = s.SID
  4.         AND l.TYPE = 'TM';
复制代码
2.4.4 结束死锁历程(SID,SERIAL#)

  1. ALTER system kill SESSION 'SID,SERIAL#';
复制代码
2.5 表占用查询

2.5.1 查询占用内存前10的表

  1. SELECT * FROM
  2.         (SELECT SEGMENT_NAME ,ROUND(NVL(BYTES, 0)/(1024*1024), 2)
  3.                 FROM DBA_SEGMENTS
  4.                 WHERE OWNER = USER
  5.                 ORDER BY BYTES DESC
  6.         )
  7.         WHERE rownum <= 10;
复制代码
2.5.2 删除表数据

drop删除表数据,删除表数据和结构:
  1. DROP TABLE student;
复制代码
truncate删除表数据,只删除表数据,不删除表结构,整体一次性删除,服从高,开释空间:
  1. TRUNCATE TABLE student;
复制代码
delete删除表数据,只删除表数据,不删除表结构,单行数据删除,服从低,不开释空间:
  1. DELETE FROM student;
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

伤心客

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表