Oracle 一些簡單操作


 

登錄oracle

以root用戶切換到oracle數據庫用戶:su - oracle

輸入sqlplus /nolog 不連接任何數據庫

conn /as sysdba 用sysdba登錄

startup 開啟實例

shutdown 關閉實例 shutdown immediate (立即關閉實例)

conn 用戶名/密碼 也可以登錄

   

查詢當前實例名

select instance_name from v$instance;

show parameter instance_name

   

指定某個實例進行登錄:sqlplus system(用戶名)/jhy(密碼)@orcl(實例) as sysdba

oracle實例設置開機啟動:

[root@centoscms oracle]# vi /etc/oratab

orcl:/oracle/app/product/10.2.0/db_1:Y

   

查看監聽:

lsnrctl start|stop|status (啟動|停止|活動狀態 監聽)

查詢命令:

desc dba_users; (查詢dba_users表結構)

select username from dba_users; (查詢當前sid下的所有用戶的username)

select count(*) from username.tablename; (查詢tablename表的行數)

drop user username cascade; (刪除名稱為username的oracle用戶)

select distinct table_name from user_tab_columns; (查看當前user模式下所有表名)

select sum(bytes)/(1024*1024) as "size(M)" from user_segments where segment_name=upper('&table_name');

   

查看ASM磁盤使用情況

select name,total_mb,free_mb from v$asm_disk;

select name,total_mb,free_mb from v$asm_diskgroup;

select state,name,type,total_mb, free_mb from v$asm_diskgroup_stat;

查看ASM磁盤路徑

select name, path, group_number from v$asm_disk_stat;

   

asmcmd命令使用

   

   

   

ASM中建表

   

表空間:

create tablespace ceshi001 datafile '+DATA2/RAC/DATAFILE/ceshi001.dbf' size 1024m autoextend on next 100m maxsize unlimited extent management local segment space management auto;next 100m:表空間大小超過原定大小時,每次自動擴展100m,這里中間不要加size,否則會報錯,提示數值無效)

   

commit:提交之前的操作

   

臨時表空間:

create temporary tablespace temp001 tempfile '+DATA2/RAC/TEMPFILE/temp001.dbf' size 200m autoextend on next 20M maxsize unlimited extent management local;

臨時表空間操作參考:http://www.cnblogs.com/kerrycode/p/4006840.html

   

查看表空間詳細信息

select * from dba_data_files;

select * from dba_temp_files;

   

查看某表的大小

select segment_name,bytes from dba_segments where segment_type='TABLE' and segment_name='DSE_TASK1';

select * from user_tables;

   

查看用戶下所有的表

select instance_name,status,version,database_status from v$instance;

echo $ORACLE_HOME

   

查詢所有用戶

select username from dba_users;

   

查看指定用戶有哪些系統權限

select * from dba_role_privs where grantee=upper('username');

查看指定用戶有哪些對象權限

select * from dba_tab_privs where grantee=upper('username');

   

創建臨時表空間

CREATE TEMPORARY TABLESPACE temp001 TEMPFILE '/u01/app/oracle/oradata/temp001.dbf' SIZE 200m AUTOEXTEND ON NEXT 32m MAXSIZE 2048m EXTENT MANAGEMENT LOCAL;

   

指定默認臨時表空間

ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp001;

   

創建表空間

create tablespace test001 datafile '/u01/app/oracle/oradata/test001.dbf' size 10240m AUTOEXTEND ON EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;

   

創建用戶

CREATE USER test001 IDENTIFIED BY shuyi123 DEFAULT TABLESPACE test001 temporary tablespace temp001;

create user ceshi identified by shuyi123 default tablespace ceshi001 temporary tablespace temp001;

   

授權

grant dba to ceshi001;

grant connect,resource to ceshi001;

grant unlimited tablespace to ceshi001;

grant create database link to ceshi001;

grant select any sequence,create materialized view toceshi001;

   

   

用戶B 要 訪問用戶A 的表:

用system登錄,將用戶A的表授權給public或者 B

grant select on A.table1 to public; grant select on A.table to B;

或者用A登錄,將表的select授權給public或者B

   

撤銷權限 revoke

   

建表

create table dse_task1 (id number not null,task_id number,server_uuid char(1024),proxy_uuid char(1024),repo_uuid char(1024));

   

插入數據

insert into dse_task1 value( select rownum as id,rownum+10 as task_id,dbms_random.string('x', 40) as server_uuid,dbms_random.string('x',40) as proxy_uuid,dbms_random.string('x',40) as repo_uuid from dual connect by level<=100000);

   

復制表數據到新表

create table dse_task2 as select * from dse_task1;

   

   

查詢表空間表容量

select segment_name,tablespace_name,bytes B, bytes/1024 KB, bytes/1024/1024 MB from user_segments where segment_type='TABLE' and tablespace_name='TEST001';

   

查詢當前用戶每個表大小

select segment_name,sum(bytes)/1024/1024 from user_extents group by segment_name

   

清空表數據並釋放空間

truncate table dse_task2 drop storage;

// alter table dse_task2 deallocate unused keep 0

清除當前用戶的回收站:purge recyclebin;

清楚所有用戶的回收站:purge dba_recyclebin;

徹底刪除表:drop table dse_task1 purge;

   

查看數據庫的創建日期和歸檔方式

select created, log_mode from v$database;

   

刪除用戶及表空間:

刪除用戶:drop user xxx;

如果用戶的schema中有objects,需要加cascade參數,即drop user xxx cascade;

刪除表空間:

可以先將其offline:alter tablespace xx offline;

將磁盤上的數據文件一同刪除:drop tablespace xxx including contents and datafiles;

drop tablespace TEST including contents and datafiles;

   

源文檔 <http://blog.itpub.net/23862439/viewspace-1058093/>

   

   

查看數據庫庫對象

select owner, object_type, status , count(*) count# from all_objects group by owner, object_type, status;

   

查看表空間的名稱及大小

SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size FROM dba_tablespaces t, dba_data_files d WHERE t.tablespace_name = d.tablespace_name GROUP BY t.tablespace_name;

select name from v$tablespace;

源文檔 <http://blog.itpub.net/23862439/viewspace-1058093/>

   

查看表空間物理文件的名稱及大小

select tablespace_name, file_id, file_name, round(bytes / (1024 * 1024), 0) total_space from dba_data_files order by tablespace_name;

select name from v$datafile;

源文檔 <http://blog.itpub.net/23862439/viewspace-1058093/>

   

查看臨時表空間路徑

select TABLESPACE_NAME,FILE_NAME from dba_temp_files;

刪除日志文件:

清空日志:Alter database clear logfile group 4;

處於current狀態的日志文件組是不能夠刪除的,除非先進行強制日志切換alter system switch logfile;.

alter database drop logfile member 'f:\oracledata\redo4.log';

查詢系統中的數據庫日志文件組:select group#,member from v$logfile;

查看各日志文件組與日志文件成員的信息:select group#,members,archived,status from V$log;

注意:當一個日志文件組中僅剩一個日志文件的時候該日志文件時不能被刪除的。

   

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM