可以通过本地数据库工具如:Navicat、DBeaver、PLSQL等,通常此方式都存在着权限的限制,部分SQL指令无权限执行;也可以直接通过数据库服务器进行访问。
Windows:打开Windows PowerShell
Linux:登陆Linux服务器,切换到oracle用户权限
su - oracle
查询监听状态:lsnrctl status
启动监听:lsnrctl start
关闭监听:lsnrctl stop
重新加载监听:lsnrctl reload
sqlplus
回车之后会提示输入用户名,密码
或
sqlplus username/password
username:用户名
password:密码
或
connect username/password
或
connect username/password@servername
servername:服务名
sqlplus / as sysdba
或
connect / as sysdba
查看数据库实例名:
show parameter instance_name;
关闭数据库:
shutdown immediate;
启动数据库:
startup;
退出sql语句执行:
exit;
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;
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 ;
自动扩容,有最大限制的:
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:上面查询到的对应的表空间文件名,注意文件名不能重复
查询磁盘组信息:
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,所以新增的数据文件只需要写到’+磁盘组名’,就可以自动创建到数据文件所在目录
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;
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;
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;
SELECT l.SESSION_ID ,o.OWNER ,o.OBJECT_NAME
FROM "V$LOCKED_OBJECT" l,dba_objects o
WHERE l.OBJECT_ID = o.OBJECT_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) ;
SELECT s.SID, s."SERIAL#", l.TYPE
FROM v$lock l, v$session s
WHERE l.SID = s.SID
AND l.TYPE = 'TM';
ALTER system kill SESSION 'SID,SERIAL#';
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;
drop删除表数据,删除表数据和结构:
DROP TABLE student;
truncate删除表数据,只删除表数据,不删除表结构,整体一次性删除,效率高,释放空间:
TRUNCATE TABLE student;
delete删除表数据,只删除表数据,不删除表结构,单行数据删除,效率低,不释放空间:
DELETE FROM student;