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

数据库相关的基础操作

  • 一、数据库访问
    • 1.1 访问方式
    • 1.2 数据库服务器
      • 1.2.1 Windows/Linux
      • 1.2.2 监听相关命令
      • 1.2.3 进入sqlplus的方式
      • 1.2.4 基础SQL命令
  • 二、常用的SQL语句
    • 2.1 数据库表空间使用情况查询
      • 2.1.1 统计
      • 2.1.2 明细
    • 2.2 数据库表空间扩容
      • 2.2.1 单机环境
      • 2.2.2 集群环境(Oracle RAC)
    • 2.3 游标查询
      • 2.3.1 查询最大游标数和最大打开游标数
      • 2.3.2 打开游标的信息查询
      • 2.3.2 未关闭PreparedStatement的SQL查询
    • 2.4 进程相关SQL
      • 2.4.1 查询用户占用资源信息
      • 2.4.2 根据SID(即SESSION_ID)查询出死锁进程信息
      • 2.4.3 直接查询死锁的进程
      • 2.4.4 结束死锁进程(SID,SERIAL#)
    • 2.5 表占用查询
      • 2.5.1 查询占用内存前10的表
      • 2.5.2 删除表数据

一、数据库访问

1.1 访问方式

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

1.2 数据库服务器

1.2.1 Windows/Linux

Windows:打开Windows PowerShell
Linux:登陆Linux服务器,切换到oracle用户权限

su - oracle

1.2.2 监听相关命令

查询监听状态:lsnrctl status
启动监听:lsnrctl start
关闭监听:lsnrctl stop
重新加载监听:lsnrctl reload

1.2.3 进入sqlplus的方式

  1. 普通用户身份登陆
sqlplus

回车之后会提示输入用户名,密码

sqlplus username/password

username:用户名
password:密码

connect username/password

connect username/password@servername

servername:服务名

  1. 系统管理员身份登陆
sqlplus / as sysdba

connect / as sysdba

1.2.4 基础SQL命令

查看数据库实例名:

show parameter instance_name;

关闭数据库:

shutdown immediate;

启动数据库:

startup;

退出sql语句执行:

exit;

二、常用的SQL语句

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

2.1.1 统计

SELECT 	fs.TABLESPACE_NAME "表空间", 
		round(total / (1024 * 1024 * 1024), 2) "总空间(G)", 
		round(free / (1024 * 1024 * 1024), 2) "剩余(G)", 
		round((total - free) / (1024 * 1024 * 1024), 2) "已使用(G)", 
		round((total - free) / total, 4) * 100 "使用率%" 
		FROM (SELECT TABLESPACE_NAME, SUM(BYTES) free 
				FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) fs, 
			(SELECT TABLESPACE_NAME, SUM(BYTES) total 
				FROM DBA_DATA_FILES GROUP BY TABLESPACE_NAME) df 
		WHERE fs.TABLESPACE_NAME = df.TABLESPACE_NAME;

2.1.2 明细

SELECT 	df.FILE_ID AS "文件ID",
		df.TABLESPACE_NAME AS "表空间",
		df.FILE_NAME AS "文件名",
		CONCAT(ROUND(NVL(df.BYTES, 0)/(1024*1024), 2), 'MB') AS "总空间",
		CONCAT(ROUND((NVL(df.BYTES, 0)-SUM(NVL(fs.BYTES, 0)))/(1024*1024), 2), 'MB') AS "已使用",
		CONCAT(ROUND(SUM(NVL(fs.BYTES, 0))/(1024*1024), 2), 'MB')  AS "剩余",
		CONCAT(ROUND(SUM(NVL(fs.BYTES, 0))/NVL(df.BYTES, 0), 4)*100  , '%') AS "剩余%"
	FROM DBA_FREE_SPACE fs, DBA_DATA_FILES df
	WHERE fs.FILE_ID = df.FILE_ID 
	GROUP BY df.TABLESPACE_NAME ,df.FILE_NAME ,df.FILE_ID ,df.BYTES 
	ORDER BY df.TABLESPACE_NAME ;

2.2 数据库表空间扩容

2.2.1 单机环境

自动扩容,有最大限制的:

ALTER TABLESPACE tablespacename ADD DATAFILE 'filepath' SIZE 1024M AUTOEXTEND ON NEXT 8M MAXSIZE 30720M;

非自动扩容(表空间最大为32G):

ALTER TABLESPACE tablespacename ADD DATAFILE 'filepath' SIZE 30G;

tablespacename:待扩容的表空间
filepath:上面查询到的对应的表空间文件名,注意文件名不能重复

2.2.2 集群环境(Oracle RAC)

查询磁盘组信息:

su - grid
asmcmd
lsdg

SELECT GROUP_NUMBER ,NAME ,TYPE ,STATE ,TOTAL_MB ,FREE_MB FROM "GV$ASM_DISKGROUP";

扩容命令:

ALTER TABLESPACE tablespacename ADD DATAFILE '+磁盘组名' size 30G;

+磁盘组名:一般来说都是+DATA
Oracle RAC安装时打开了omf,所以新增的数据文件只需要写到’+磁盘组名’,就可以自动创建到数据文件所在目录

2.3 游标查询

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

SELECT MAX(a.value) AS highest_open_cur,
       p.value AS max_open_cur
  FROM v$sesstat   a,
       v$statname  b,
       v$parameter p
 WHERE a.statistic# = b.statistic#
   AND b.name = 'opened cursors current'
   AND p.name = 'open_cursors'
 GROUP BY p.value;

2.3.2 打开游标的信息查询

SELECT a.value,
       s.username,
       s.sid,
       s.serial#
  FROM v$sesstat  a,
       v$statname b,
       v$session  s
 WHERE a.statistic# = b.statistic#
   AND s.sid = a.sid
   AND b.name = 'opened cursors current'
 ORDER BY 1 DESC;

2.3.2 未关闭PreparedStatement的SQL查询

SELECT oc.sid,
       oc.hash_value,
       oc.sql_text,
       COUNT(*) how_many
  FROM v$open_cursor oc
 GROUP BY sid,
          hash_value,
          sql_text
 ORDER BY 4 DESC;

2.4 进程相关SQL

2.4.1 查询用户占用资源信息

SELECT l.SESSION_ID ,o.OWNER ,o.OBJECT_NAME 
	FROM "V$LOCKED_OBJECT" l,dba_objects o 
	WHERE l.OBJECT_ID = o.OBJECT_ID;

2.4.2 根据SID(即SESSION_ID)查询出死锁进程信息

SELECT SID ,"SERIAL#" ,USERNAME ,OSUSER ,MACHINE ,TERMINAL ,PROGRAM ,PREV_EXEC_START ,EVENT ,LOGON_TIME 
	FROM v$session WHERE SID IN (SESSION_ID1 ,SESSION_ID2) ;

2.4.3 直接查询死锁的进程

SELECT s.SID, s."SERIAL#", l.TYPE
	FROM v$lock l, v$session s
	WHERE l.SID = s.SID 
	AND l.TYPE = 'TM';

2.4.4 结束死锁进程(SID,SERIAL#)

ALTER system kill SESSION 'SID,SERIAL#';

2.5 表占用查询

2.5.1 查询占用内存前10的表

SELECT * FROM 
	(SELECT SEGMENT_NAME ,ROUND(NVL(BYTES, 0)/(1024*1024), 2) 
		FROM DBA_SEGMENTS 
		WHERE OWNER = USER 
		ORDER BY BYTES DESC 
	) 
	WHERE rownum <= 10;

2.5.2 删除表数据

drop删除表数据,删除表数据和结构:

DROP TABLE student;

truncate删除表数据,只删除表数据,不删除表结构,整体一次性删除,效率高,释放空间:

TRUNCATE TABLE student;

delete删除表数据,只删除表数据,不删除表结构,单行数据删除,效率低,不释放空间:

DELETE FROM student;

你可能感兴趣的:(系统配置,Windchill二开,数据库)