數據庫常見問題

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';--用戶名需要大寫

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