数据库常见问题

oracle基础

 

sql 全称 Structure Query Language 是数据库的核心语言 包括以下三大类

数据操作语言 dml

数据定义语言 ddl

数据控制语言 dcl

 

select name from v$database                查看数据库实例名

select * from Dba_Tablespaces;             查看数据库中的所有表空间
select * from all_users                    查看数据库中所有的用户
select * from dba_users                    查看数据库中所有的dba用户
select * from session_privs                查看当前用户的权限
select * from user_all_tables              查询当前用户所有的表  SELECT * FROM USER_TABLES;
select * from user_tables                  
select * from user_views                   查询当前用户视图
select * from user_source                  查询当前用户所有函数和存储过程
grant all_privilege to smptest             给用户赋权
grant sysdba to username                   给用户赋予dba权限

select username,default_tablespace from dba_users  where username='DOCUXU';查询指定用户的表空间


进入sql前
set oracle_sid=adamdb
或者sqlplus/nolog
conn username password@数据库名称
查询数据库中表 select table_name from user_names
alter table 表名 add(column_name type)      添加一个字段
alter table 表名 modify(column_name type)   修改字段或长度
alter table 表名 rname column (column_name)旧 to (column_name)新 更改列名
alter table 表名 drop  column column_name   删除字段
rename (table_name)旧 to (table_name)新 修改表名称
drop table table_name            删除表的数据和结构 
delete from  table_name          删除表的全部记录 表结构还在 日志也在
truncate table table_name        删除标的全部记录 表结构还在 没有日志  速度较快
查询系统时间 
select sysdate from dual
更改系统时间格式
alter session set nls_date_format='dd-mm-yy'






1、查询oracle的连接数
select count(*) from v$session;
2、查询oracle的并发连接数
select count(*) from v$session where status='ACTIVE';
3、查看不同用户的连接数
select username,count(username) from v$session where username is not null group by username;
4、查看所有用户:
select * from all_users;
5、查看用户或角色系统权限(直接赋值给用户或角色的系统权限):
select * from dba_sys_privs;
select * from user_sys_privs;
6、查看角色(只能查看登陆用户拥有的角色)所包含的权限
select * from role_sys_privs;
7、查看用户对象权限:
select * from dba_tab_privs;
select * from all_tab_privs;
select * from user_tab_privs;
8、查看所有角色:
select * from dba_roles;
9、查看用户或角色所拥有的角色:
select * from dba_role_privs;
select * from user_role_privs;
10、查看哪些用户有sysdba或sysoper系统权限(查询时需要相应权限)
select * from V$PWFILE_USERS;
 
修改数据库允许的最大连接数:
alter system set processes = 300 scope = spfile;
 
查看游标数量
Select * from v$open_cursor Where user_name=''
 
查询数据库允许的最大连接数:
select value from v$parameter where name = 'processes';
或者:show parameter processes;
 
查询数据库允许的最大游标数:
select value from v$parameter where name = 'open_cursors'
 
查看oracle版本
select banner from sys.v_$version;
按降序显示用户"SYSTEM"为每个会话打开的游标数
select o.sid, osuser, machine, count(*) num_curs  from v$open_cursor o, v$session s  where user_name = 'SYSTEM' and o.sid=s.sid   group by o.sid, osuser, machine  order by num_curs desc;

 

 

Oracle建立表空间用户以及dmp文件导入导出

 

select name from v$database 查询数据库实例名

 

select * from Dba_Tablespaces 查看表空间

grant all privilege to smptest 给用户赋权

grant sysdba to username给用户赋予dba权限

select * from user_tables 查看当前用户能够访问的表

select * from user_all_tables Oracle查询用户表

select * from user_views Oralce查询用户视图

select * from user_source 查询所有函数和存储过程

select * from all_users 查询所有用户 

select * from dba_users 查询所有dba用户

select * from session_privs 查看当前用户权限

select name from v$database

 

 

建立表空间以及对应的用户名和密码

create tablespace adam datafile'H:\app\Administrator\adam.ora' size 5000m

 

create user smptest identified by 123default tablespace adam quota 1000m on users

 

数据导出:
1 将数据库TEST完全导出,用户名system密码manager 导出到D:\daochu.dmp中
   exp system/manager@TEST file=d:\daochu.dmp full=y

2 将数据库中system用户与sys用户的表导出
   exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)

3 将数据库中的表inner_notify、notify_staff_relat导出
    exp aichannel/aichannel@TESTDB2 file= d:\data\newsmgnt.dmp tables=

(inner_notify,notify_staff_relat)

 

1 将D:\daochu.dmp中的数据导入 TEST数据库中。
   imp system/manager@TEST file=d:\daochu.dmp
   imp aichannel/aichannel@HUST full=y file=file= d:\data\newsmgnt.dmp

ignore=y 
   上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导

入。
   在后面加上 ignore=y就可以了。

2 将d:\daochu.dmp中的表table1导入
imp system/manager@TEST file=d:\daochu.dmp tables=(table1) 

 

 

orcle主键自增长实例 以及密码丢失问题

Oracle序列详解和创建自增主键
Oracle序列主键============================================
序列:是oracle提供的用于生产一系列唯一数字的数据库对象
自动提供唯一的数值
共享对象
主要用于提供主键值
将序列值装入内存可以提高访问效率
语法===========================
increment by 用于定义序列的不长 如果省略 则默认为1
start with 定义序列的初始值(即产生的第一个值),默认为1
maxvalue 最大值  nomaxvalue默认选项 没有最大值
minvalue 最小值  nominvalue默认选项
递增oracle 最大值 10的27次方 
递减序列 最小值1
cycle 和nocycle
cache(缓冲)
删除Oracle序列的语法是drop sequence 序列名;===========================
建表语句=============================================
create table car(
id  number(10) not null,
speed varchar2(32),
price varchar2(32),
des varchar2(32),
constraint pk_id primary key(id)
)
建立序列
create sequence seq_car_id
start with 1
increment by 1
minvalue 1
maxvalue 99999999
nocycle
nocache
order;
建立触发器
CREATE OR REPLACE TRIGGER trg_car_id
BEFORE INSERT ON car
FOR EACH ROW
BEGIN
SELECT seq_car_id.nextval INTO :new.id FROM dual;

END;

一、忘记除SYS、SYSTEM用户之外的用户的登录密码。
用sys或system用户登录,执行修改数据库密码 
#sqlplus sys/oracle@"sid" as sysdba 
使用如下语句修改用户的密码:
SQL> alter user "username" identified by "newpass";
注意:密码不能全是数字。并且不能是数字开头。否则会出现:ORA-00988:口令缺失或无效
二、忘记SYS用户,或者是SYSTEM用户的密码。
如果是忘记system/sys密码,且人就在数据库服务器旁边,可以可以通过本地验证方式登录,执行如下操作:
$ sqlplus / as sysdba
SQL> alter user "username" identified by "newpass";
用数据字典
select * from dba_users; 查看数据库里面所有用户,前提是你是有dba权限的帐号,如sys,system
select * from all_users; 查看你能管理的所有用户!
select * from user_users; 查看当前用户信息 ! 
查询当前用户所有表
方法一:select * from tab;
方法二:select * from user_tables;
select username,default_tablespace from dba_users  where username='用户名';
查看结果(如查询scott用户的所属表空间):
搜索
select username,default_tablespace from dba_users  where username='SCOTT';--用户名需要大写

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章