之前使用Oracle数据库都是通过jdbc接口调用oracle。最近由于工作的关系需要通过tns操作Oracle数据库,于是把最近学习和收集的一点内容记录下来,以便以后再次使用时参考。
- 概念先行
- 概念落地
- 登陆
- 常用sql
概念先行
- 数据库–文件
- 表空间
- 表
- 表空间
- 数据库实例–进程+内存空间
概念落地
- 表空间
select * from dba_tablespaces;
- 查询数据库名
select name,dbid from v$database;
- 查询实例名
select instance_name from v$instance;
- 查询数据库域名
select value from v$parameter where name='db_domain'
- 数据库服务名:此参数是数据库标识类参数,用service_name表示。数据库如果有域,则数据库服务名就是全局数据库名;如果没有,则数据库服务名就是数据库名。
select * from v$parameter where name='service_names'
登陆
- sqlplus
- path>
sqlplus username/password@dbname as [sysdba,sysoper];
- SQL>
sqlplus
、`conn username/password as [sysdba,sysoper];
- path>
- plsql
- 设置%ORACLE_HOME%\network\ADMIN\tnsnames.ora
- XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = acer)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)其中,XE为下图中的登陆数据库名称(这里的数据库名称不是真实的数据库名称,可以随意设定,只是登陆时用的一个名称而已,其实叫listener_name),SERVICE_NAME = ORCL为oracle服务OracleServiceORCL中的末尾部分。
常用sql
SELECT a.tablespace_name "表空间名",total "表空间大小",free "表空间剩余大小",( total - free ) "表空间使用大小",Round(( total - free ) / total,4) * 100 "使用率 %" FROM (SELECT tablespace_name,Sum(bytes) free FROM DBA_FREE_SPACE GROUP BY tablespace_name) a,(SELECT tablespace_name,Sum(bytes) total FROM DBA_DATA_FILES GROUP BY tablespace_name) b WHERE a.tablespace_name = b.tablespace_name;
表空间名 表空间大小 表空间剩余大小 表空间使用大小 使用率 %
SYSAUX 692060160 40239104 651821056 94.19 UNDOTBS1 398458880 381026304 17432576 4.38 USERS 104857600 102170624 2686976 2.56 SYSTEM 377487360 5963776 371523584 98.42