Oracle 使用隨筆

PL/SQL破解方法(不需要註冊碼)

打開註冊表
在run下輸入regedit
刪除
1.HKEY_CURRENT_USER/Software/Allround Automations
2.HKEY_CURRENT_USER/Software/Microsoft/Security

查詢命令

查詢當前庫的表空間
select tablespace_name from dba_tablespaces;

查詢當前用戶的表空間
select table_name,tablespace_name from user_tables;

刪除表命令
DELETE FROM <table/view> [WHERE ]

創建用戶並指定表空間
創建表空間

//查詢 SELECT tablespace_name, file_id, file_name, round(bytes / (1024 * 1024), 0) total_space FROM dba_data_files ORDER BY tablespace_name;

sql>CREATE TABLESPACE DB_DATA
LOGGING DATAFILE ‘D:\APP\ADMINISTRATOR\ORADATA\ORCL\temp.dbf’
SIZE 32M --表空間大小
AUTOEXTEND ON NEXT 32M MAXSIZE UNLIMITED – 表空間自增長
EXTENT MANAGEMENT LOCAL;

其中’DB_DATA’和’DB_TEMP’是你自定義的數據表空間名稱和臨時表空間名稱,可以任意取名;
'D:appAdministratororadataNewDBDB_DATA.DBF’是數據文件的存放位置,'DB_DATA.DBF’文件名也是任意取;'size 32M’是指定該數據文件的大小,也就是表空間的大小。
2.創建臨時表空間

create temporary tablespace user_temp
tempfile ‘D:\APP\ADMINISTRATOR\ORADATA\ORCL\xyrj_temp.dbf’
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;
2.創建用戶

create user data_name identified by “data_pwd” --創建用戶
default tablespace tableSpace_name – 默認表空間
temporary tablespace TEMP_name --臨時表空間
profile DEFAULT;
3.授權

grant dba to data_name; – dba權限
grant connect to data_name; --連接權限
grant resource to data_name; --資源使用權限
給用戶授予權限
grant connect,resource to username;

//以後以該用戶登錄,創建的任何數據庫對象都屬於user_temp 和user_data表空間,
這就不用在每創建一個對象給其指定表空間了

撤權:
revoke 權限… from 用戶名;

刪除用戶命令
drop user user_name cascade;

在進行procedure執行的時候,用的是PL/SQL工具中的test,調試方法進行執行,因爲有輸入參數,但是報了個錯:
“note:debugging requires the debug connect session system privilege”.

原因是用戶權限不夠,使用以下命令授予權限:
GRANT debug any procedure, debug connect session TO username

其實只需要授予debug connect session 就可以了,已經過測試

例子:創建用戶,賦管理員權限

創建用戶:
create user 用戶名 identified by 密碼 default tablespace 默認表空間 temporary 臨時表空間;
賦管理員權限:
grant connect,resource,create any view,create any synonym,create database link to 用戶名
查找用戶
select * from dba_users;

查找工作空間的路徑
select * from dba_data_files;

刪除用戶
drop user 用戶名稱 cascade; //最後這個級聯特別有用(刪除用戶以及所有關聯的數據庫對象)

刪除表空間
drop tablespace 表空間名稱 including contents and datafiles cascade constraint;

例如:刪除用戶名成爲LYK,表空間名稱爲LYK

刪除用戶,及級聯關係也刪除掉
drop user LYK cascade;

刪除表空間,及對應的表空間文件也刪除掉
drop tablespace LYK including contents and datafiles cascade constraint;

update
首先必須把一個varchar類型的值轉化爲date類型後纔可以插入:

sql:update tablename set DATEcolumn = to_date(‘2015-05-04 20:00:00’,‘yyyy-mm-dd hh:mi:ss’);

解釋:修改tablename表中的日期字段的時間值爲”2015-05-04 20:00:00“,to_date函數中第一個字段是要轉化的值,第二個字段是日期的類型,這兩個值必須保持格式一致。

拆分字符串

1.實現截取字符串
substr(string, start_position, [length])

其中,string是元字符串,start_position爲開始位置,length是可選項,表示子字符串的位數。

例子:

substr(‘ABCDEFG’, 0); – 返回結果是:ABCDEFG,從0位開始截取後面所有

substr(‘ABCDEFG’, 2); – 返回結果是:BCDEFG,從2位開始截取後面所有

substr(‘ABCDEFG’, 0, 3); – 返回結果是:ABC,從0位開始往後截取3個字符長度

substr(‘ABCDEFG’, 0, 100); – 返回結果是:ABCDEFG,雖然100超出了元字符串長度,但是系統會按元字符串最大數量返回,不會影響返回結果

substr(‘ABCDEFG’, -3); – 返回結果是:EFG,如果是負數,則從尾部往前數,截取-3位置往後的所有字符串
2.查找字符串位置
instr(string, subString, [start_position, [nth_appearance]])

其中,string是元字符串;subString是要查找的子字符串;start_position是要查找的開始位置,爲可選項(默認爲1),注意在這裏字符串索引從1開始,如果此參數爲正,則從左到右檢索,如果此參數爲負,則從右到左檢索;nth_appearance是元字符串中第幾次出現的子字符串,此參數可選,缺省默認爲1,如果是負數則系統報錯。

例子:

instr(‘ABCDABCDAEF’, ‘AB’); – 返回結果是:1,因爲instr字符串索引從1開始,所以是1不是0

instr(‘ABCDABCDAEF’, ‘DA’, 1, 2); – 返回結果是:8,返回第二次出現’DA’的位置

instr(‘A BCDABCDAEF’, ‘DA’, 1, 2); – 返回結果是:9,由於我在元字符串中加了一個空格,空格仍然算一個字符
3.替換字符串
replace(str1, str2, str3)

其表示的意思是:在str1中查找str2,凡是出現str2的地方,都替換成str3。

replace(‘ABCDEFG’, ‘CDE’, ‘cde’); – 返回結果是:ABcdeFG

replace(‘ABCDEFG’, ‘CDE’, ‘’); – 返回結果是:ABFG,CDE被替換成空字符

replace(‘ABCDEFG’, ‘CDE’); – 返回結果是:ABFG,當不存在第三個參數時,CDE直接被刪掉
計算當前年齡
// 精確到了日
floor(MONTHS_BETWEEN(sysdate,to_date(字段 ,‘yyyy-mm-dd’))/12)
//精確到 月
select floor(MONTHS_BETWEEN(sysdate,to_date(substr(‘1938-05-17’, 0,7),‘yyyy-mm’))/12) age from dual

Oracle表被鎖死如何解鎖

2013年10月19日 21:39:19 閱讀數:25793 用dba權限的用戶登陸數據庫。

1、select * from v$locked_object 查出被鎖定的對象,其中object_id是對象的ID,session_id是被鎖定對象有session ID;

2、select object_name, object_type from dba_objects where object_id = 剛纔查出來的object_id;(根據vKaTeX parse error: Expected 'EOF', got '#' at position 92: …ect sid, serial#̲, machine, prog…session where sid =第1步中查出來的session_id;(是根據v$locked_object對應鎖定記錄的session_id找出來的) 然後 4、alter system kill session ‘sid,serial#’;用來殺死這個會話; 以上幾個步驟即能解決對象被鎖定問題。

另外附上鎖定一個表的語句: LOCK TABLE tablename IN EXCLUSIVE MODE;將鎖定整個表

導出數據庫

exp User/pwd@localhost file=F:/LZCCB.DMP

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