基本使用
开机关机
shutdown immediate 时候会进行一致性检查(或shu immediate)
而shutdown abort不进行一致性检查,所以再次打开的时候需要进行自动恢复。
SHUTDOWN -- NORMAL(缺省值):
-- 不允许新的连接、等待会话结束、等待事务结束、做一个检查点并关闭数据文件。启动时不需要实例恢复。
SHUTDOWN TRANSACTIONAL:
-- 不允许新的连接、不等待会话结束、等待事务结束、做一个检查点并关闭数据文件。启动时不需要实例恢复。
SHUTDOWN IMMEDIATE:
-- 不允许新的连接、不等待会话结束、不等待事务结束、做一个检查点并关闭数据文件。没有结束的事务是自动rollback的。启动时不需要实例恢复。
SHUTDOWN ABORT:
-- 不允许新的连接、不等待会话结束、不等待事务结束、不做检查点且没有关闭数据文件。启动时自动进行实例恢复。
开机
startup mount;
alter database open
查看数据库开机时间以及运行时间
COL STARTUP_TIME FOR A35;
COL RUN_TIME FOR A35;
select to_char(startup_time,'yyyy-mm-dd HH24:MI:SS') startup_time,
TRUNC(sysdate - (startup_time))||'Day '||TRUNC(24*((sysdate-startup_time) -TRUNC(sysdate-startup_time)))
||'Hour '||MOD(TRUNC(1440*((SYSDATE-startup_time)-
TRUNC(sysdate-startup_time))),60)
||'min '||MOD(TRUNC(86400*((SYSDATE-STARTUP_TIME)-
TRUNC(SYSDATE-startup_time))),60)
||'s' run_time
from v$instance;
查看scn号
select to_char(CURRENT_SCN) from v$database;
select checkpoint_change# from v$database;
查看数据文件scn号
select name,checkpoint_change# from v$datafile;
查看数据库环境
linux版本
数据库实例名
-- 数据库名
select name from v$database
-- 实例名 SID
select instance_name from v$instance
数据库版本
select * from v$session;
数据库字符集
select userenv('language')from dual;
查看oracle使用的端口
可以通过tnsnames.ora文件读取数据库信息
# 默认端口post=1521
数据库信息
查看数据库状态
select inst_id, instance_name, version, status from gv$instance;
查看数据库模式(只读,读写)
select open_mode, from v$database;
更改数据库模式
-- 更改为只读-- sh> sqlplus / as sysdbaselect open_mode from v$database;shutdown immediate --确保没有真正执行的进程后再执行startup mount --加载数据库alter database open read only --变更数据库为只读状态startup open read only;-- 将数据库由只读状态变更为可写状态-- sh> sqlplus / as sysdbaselect open_mode from v$database;shutdown immediate;startup open read write;
查看一些数据库状态(保护模式)
select open_mode, protection_mode, database_role, switchover_status from v$database;
查看数据库数据量
查看数据库某用户的视图量
select count(*) from dba_views u where u.owner='USER_NAME';
查看数据库某用户的序列量
select count(*) from dba_sequences where sequence_owner='USER_NAME';
查看某用户的触发器数量
select count(*) from dba_triggers where owner='USER_NAME';
查看数据库表数量
select count(table_name) from dba_tables;
查看数据库总条数
select sum(sample_size) from dba_tables;
查看所有表以及表有多少条数据
SELECT table_name,num_rows FROM user_tables order by num_rows desc;
查看数据库占用空间
select sum(bytes)/1024/1024 from dba_segments;
查看除了 undo 数据文件以外的所有数据文件大小(数据量)
select SUM(SPACE-NVL(FREE_SPACE,0)) "ALL_USED_SPACE(G)" from (select TABLESPACE_NAME, ROUND(SUM(BYTES)/(1024*1024*1024),2) SPACE from dba_data_files GROUP BY TABLESPACE_NAME) d,(SELECT TABLESPACE_NAME, ROUND(SUM(BYTES)/(1024*1024*1024),2) FREE_SPACE FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) f where d.tablespace_name=f.tablespace_name and d.tablespace_name not like '%UNDO%';-- 或者select (all_used-free_used)/(1024*1024*1024) "used(G)"from(select sum(bytes) all_used from dba_data_files where tablespace_name not like '%UNDO%'), (select sum(bytes) free_used from dba_free_spacewhere tablespace_name not like '%UNDO%');
查看数据量
set pagesize 1000 linesize 180col owner format a15col COL_SUM for 99999999999999999compute sum of total_size on reportbreak on reportSELECT a.owner, a.total_size, b.numtab, b.col_sum, round((a.total_size/b.numtab) * 10) / 10 AVGFrom (SELECT owner, round(Sum(bytes) * 10 /1024 /1024 / 1024) / 10 total_size FROM dba_segments GROUP BY owner) a, (SELECT owner, count(*) numtab, sum(NUM_ROWS) col_sum FROM dba_tables GROUP BY owner) bwhere a.owner = b.ownerorder by 2 desc/
表空间和表数量
set pagesize 1000 linesize 180col owner format a15col COL_SUM for 99999999999999compute sum of total_size on reportbreak on reportSELECT a.owner, a.total_size,b.numtab From (SELECT owner, round(Sum(bytes) * 10 / 1024 / 1024 / 1024) / 10 total_size FROM dba_segments GROUP BY owner) a, (SELECT owner, count(*) numtab,sum(NUM_ROWS) col_sum FROM dba_tables GROUP BY owner) b WHERE a.owner = b.owner order by 3 desc/
登录
登录oracle:
sqlplus / as sysdba (sqlplus [用户名]/[密码] as sysdba)
以nolog登录并切换成sysdba:
sqlplus /nolog
SQL> conn sys/ as sysdba (conn 用户名/[密码] as sysdba)
查看以什么用户登录的oracle
SQL> show user;
SQL> select user from dual;
查看所有用户名
SQL> select * from all_users;
切换用户
正常操作
SQL> connect username/password;
修改口令并连接到数据库
查看口令
11g版本(需要访问基表):SQL> select name,password from user$ where name=’ ’
其它版本:SQL> select username,password from dba_users where username=’ ’
修改口令并连接到数据库
SQL> alter user 用户名 identified by “密码”;
SQL> conn 用户名/密码;
成功执行完马上把用户名密码修改回原来的口令。
SQL> alter user 用户名 identified by values’口令’
远程登录某个数据库
sqlplus 用户名/密码@IP地址/实例名
sid
数据库的 sid 和字符集最好一次性指定好,不建议修改
如果是空库的话不妨创建一个新库 使用dbca