仅供测试环境参考,生产环境按实际要求操作!!!
set pagesize <数字> #设置一页有多少行数。默认14。
set LINESHOW on/off #设置是否显示行号。默认on。
set HEADING on/off #设置是否显示列标题。默认on。
set TIMING on/off #设置是否显示列标题。默认on。
set TIME on/off #显示系统的当前时间。默认off。
set FEED <数字>/on/off #设置是否显示当前 SQL 语句查询或修改的总行数。数字为表示结果大于n行时,才显示结果的总行数。默认6。
set ECHO on/off #在用 START 命令执行一个 SQL 脚本时,是否显示脚本中正在执行的SQL语句。默认ON。
set AUTOCOMMIT on/off #在用 START 命令执行一个 SQL 脚本时,设置当前 session 是否对修改的数据进行自动提交。默认OFF。
SQL> spool D:/output.txt
SQL> select * from v$database;
NAME CREATE_TIME ARCH_MODE LAST_CKPT_TIME STATUS$ ROLE$ MAX_SIZE TOTAL_SIZE DSC_NODES OPEN_COUNT STARTUP_COUNT
---- ------------------- --------- ------------------- ----------- ----------- -------------------- -------------------- ----------- ----------- --------------------
LAST_STARTUP_TIME
-------------------
DMDB 2025-04-15 10:35:35 Y 2025-05-09 16:09:32 4 0 0 748544 1 8 7
2025-05-09 13:33:32
SQL> spool off
SQL> host
Microsoft Windows [版本 10.0.26100.3775]
(c) Microsoft Corporation。保留所有权利。
C:\Users\administrator\AppData\Local\Programs\SQLark\plugins\terminal\disql>dir D:\output.txt
驱动器 D 中的卷是 新加卷
卷的序列号是 50A2-DFBE
D:\ 的目录
2025/05/09 16:12 611 output.txt
1 个文件 611 字节
0 个目录 115,858,219,008 可用字节
-- exit回到sql终端,或者host dir D:\output.txt可以直接跟需要执行的命令
SQL> desc dba_users;
NAME TYPE$ NULLABLE
--------------------------- ------------ --------
USERNAME VARCHAR(128) Y
USER_ID INTEGER Y
PASSWORD VARCHAR(8) Y
ACCOUNT_STATUS VARCHAR(21) Y
LOCK_DATE DATETIME(0) Y
EXPIRY_DATE DATETIME(6) Y
DEFAULT_TABLESPACE VARCHAR(128) Y
DEFAULT_INDEX_TABLESPACE VARCHAR(128) Y
TEMPORARY_TABLESPACE VARCHAR(4) Y
CREATED DATETIME(6) Y
PROFILE VARCHAR(128) Y
INITIAL_RSRC_CONSUMER_GROUP VARCHAR(1) Y
EXTERNAL_NAME VARCHAR(1) Y
PASSWORD_VERSIONS INTEGER Y
EDITIONS_ENABLED VARCHAR(1) Y
AUTHENTICATION_TYPE VARCHAR(19) Y
NOWDATE DATETIME(0) Y
SQL> list
1* select * from v$database;
--- 设置变量和引用变量
SQL> select count(1) from &target_object;
输入 target_object的值:dba_users
原值 1:select count(1) from &target_object;
新值 1:select count(1) from dba_users;
COUNT(1)
--------------------
9
SQL> def target_object=dba_users
SQL> select count(1) from &target_object;
原值 1:select count(1) from &target_object;
新值 1:select count(1) from dba_users;
COUNT(1)
--------------------
9
-- 设置sql脚本变量和使用
SQL> host type D:\select_object.sql
select count(1) from &1;
SQL> start D:\select_object.sql dba_users
SQL> select count(1) from &1;
原值 1:select count(1) from &1;
新值 1:select count(1) from dba_users;
COUNT(1)
--------------------
9
cl col # 清理所有的变量信息
cl screen # 清理终端屏幕信息
col sql # 清理本地sql缓存信息
-- 创建自动增长表空间
CREATE TABLESPACE "AGILE_DATA" DATAFILE '/dm8/data/DMDB/AGILE.DBF' SIZE 128 AUTOEXTEND ON NEXT 10 MAXSIZE 200 CACHE = NORMAL;
-- 创建非自动增长表空间
CREATE TABLESPACE "AGILE_INDEX" DATAFILE '/dm8/data/DMDB/AGILE_INDEX.DBF' SIZE 200 AUTOEXTEND OFF CACHE = NORMAL;
alter tablespace AGILE rename to AGILE_DATA;
drop tablespace AGILE_INDEX;
alter tablespace agile_data offline;
alter tablespace agile_data online;
SELECT ts.NAME, df.PATH FROM V$TABLESPACE ts, V$DATAFILE AS df WHERE ts.ID = df.GROUP_ID;
SELECT
TS_NAME AS 表空间名,
ROUND(SUM(TOTAL) / 1048576, 2) AS "总大小_MB",
ROUND(SUM(USED) / 1048576, 2) AS "已使用大小_MB",
CONCAT(CAST(ROUND(SUM(USED) * 100.0 / SUM(TOTAL), 2) AS VARCHAR), '%') AS 使用率
FROM (
SELECT
UPPER(df.TABLESPACE_NAME) AS TS_NAME,
df.BYTES AS TOTAL,
df.BYTES - fs.BYTES AS USED
FROM DBA_DATA_FILES df
INNER JOIN DBA_FREE_SPACE fs ON df.TABLESPACE_NAME = fs.TABLESPACE_NAME AND df.FILE_ID = fs.FILE_ID
) group by TS_NAME;
ALTER TABLESPACE agile_data ADD DATAFILE '/dm8/data/DMDB/AGILE2.DBF' SIZE 2000;
ALTER TABLESPACE agile_data ADD DATAFILE '/dm8/data/DMDB/AGILE3.DBF' SIZE 1000;
ALTER TABLESPACE agile_data DROP DATAFILE '/dm8/data/DMDB/AGILE3.DBF';
删除表空间中数据文件时必须遵守文件 ID 从大到小的原则。先从具有最大文件 ID 的数
据文件开始,且表空间中文件 ID 为零的数据文件不能被删除。
ALTER TABLESPACE agile_data RESIZE DATAFILE '/dm8/data/DMDB/AGILE2.DBF' TO 1200;
ALTER TABLESPACE agile_data RESIZE DATAFILE '/dm8/data/DMDB/AGILE3.DBF' TO 800;
CREATE USER AGILE_APP IDENTIFIED BY "123456Aa_" DEFAULT TABLESPACE AGILE_DATA DEFAULT INDEX TABLESPACE AGILE_INDEX;
GRANT PUBLIC,RESOURCE,SOI,VTI TO AGILE_APP;
drop user AGILE_APP; # 删除用户
drop user AGILE_APP cascade; # 级联删除,把用户以及用户下的所有表、视图等对象全部删除
alter user "agile_app" identified by "Aa12345678_";
SELECT
USERNAME AS 用户名,
DEFAULT_TABLESPACE AS 默认数据表空间,
DEFAULT_INDEX_TABLESPACE AS 默认索引表空间,
TEMPORARY_TABLESPACE AS 临时表空间,
DECODE(ACCOUNT_STATUS,'OPEN','正常','LOCKED','锁定','未知') AS 用户状态,
CREATED AS 创建时间
FROM
DBA_USERS;
SELECT
S2.NAME AS 模式名,
S1.TYPE$ AS 主类型,
S1.SUBTYPE$ AS 子类型,
COUNT(*) AS 对象数量
FROM
SYSOBJECTS S1,
SYSOBJECTS S2
WHERE
S1.SCHID = S2.ID
AND S2.TYPE$ = 'SCH'
GROUP BY
S2.NAME,
S1.TYPE$,
S1.SUBTYPE$
ORDER BY
S2.NAME,
S1.TYPE$,
S1.SUBTYPE$;
SELECT USER_USED_SPACE('agile_app');
SELECT
USERNAME AS 用户名,
USER_USED_SPACE(USERNAME) * PAGE / 1024.0 / 1024.0 AS "用户占用空间(MB)"
FROM
DBA_USERS
ORDER BY
2 DESC;
-- 创建表1
CREATE TABLE "AGILE_APP"."test1"
(
"id" INT NOT NULL,
"name" VARCHAR(50) NOT NULL,
"size" VARCHAR(50),
NOT CLUSTER PRIMARY KEY("id", "name") USING INDEX TABLESPACE "AGILE_INDEX"
)
STORAGE(ON "AGILE_DATA", CLUSTERBTR);
-- 创建表2
CREATE TABLE "AGILE_APP"."test2"
(
"id" INT NOT NULL,
"tname" VARCHAR(50),
"fname" VARCHAR(50),
"connect" VARCHAR(50),
CLUSTER KEY("tname", "fname"),
NOT CLUSTER PRIMARY KEY("id") USING INDEX TABLESPACE "AGILE_INDEX" )
STORAGE(ON "AGILE_DATA", CLUSTERBTR);
DROP TABLE employee;
DROP TABLE IF EXISTS employee;
DROP TABLE employee CASCADE; # 如果要删除的表被其他表引用,即其他表的外键引用了表的任何主键或唯一键,则需要在DROP TABLE语句中包含CASCADE选项
TRUNCATE TABLE EMPLOYEE; # 快速清空表数据,但保留表结构和存储空间分配(如数据文件、簇等),不可以回滚
TRUNCATE TABLE EMPLOYEE PURGE; # 彻底清空表数据并立即释放存储空间,同时清除表的元数据依赖(如索引、约束等),不可以回滚
ALTER TABLE "AGILE_APP"."test2" ALTER COLUMN "connect" RENAME TO "connect_new";
ALTER TABLE "AGILE_APP"."test2" ADD COLUMN "address" VARCHAR(50);
ALTER TABLE "AGILE_APP"."test2" MODIFY "connect_new" TEXT NULL;
ALTER TABLE "AGILE_APP"."test2" DROP "connect";
update AGILE_APP."test2" set "connect"='202505091710' where "id"=13412341;
commit;
delete from AGILE_APP."test2" where "id"=13412341;
commit;
SQL> SP_TABLEDEF('AGILE_APP','test2');
行号 COLUMN_VALUE
---------- -----------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 CREATE TABLE "AGILE_APP"."test2" ( "id" INT NOT NULL, "tname" VARCHAR(50), "fname" VARCHAR(50), "connect" VARCHAR(50), CLUSTER KEY("tname", "fname"), NOT CLUSTER PRIMARY KEY("id") USING INDEX TABLESPACE "AGILE_INDEX" ) STORAGE(ON "AGILE_DATA", CLUSTERBTR) ;
已用时间: 2.021(毫秒). 执行号:35000.
-- 已分配给表的页面数
SQL> SELECT table_used_space('AGILE_APP','test2'); --
行号 TABLE_USED_SPACE('AGILE_APP','test2')
---------- -------------------------------------
1 1872
-- 表已使用的页面数
SQL> SELECT table_used_pages('AGILE_APP','test2');
行号 TABLE_USED_PAGES('AGILE_APP','test2')
---------- -------------------------------------
1 1868
SELECT
S2.NAME AS SCHEMA_NAME,
S1.NAME AS TABLE_SPACE,
TABLE_USED_SPACE(S2.NAME,S1.NAME) * PAGE /1024.0/1024.0 AS PHYSICS_SIZW_MB
FROM
SYSOBJECTS S1,
SYSOBJECTS S2
WHERE
S1.SCHID = S2.ID
AND S1."SUBTYPE$" = 'UTAB'
AND S2."TYPE$" = 'SCH'
ORDER BY
3 DESC;
CREATE INDEX idx_test1_size ON AGILE_APP."test1"("size") TABLESPACE AGILE_INDEX;
select owner,segment_name,TABLESPACE_NAME,bytes/1024/1024 from SYS.DBA_SEGMENTS where SEGMENT_TYPE='INDEX';
-- segment_name为定义的索引的名称
SELECT segment_name AS index_name,
bytes/1024/1024 AS size_mb
FROM dba_segments
WHERE owner = 'AGILE_APP'
AND segment_name = upper('idx_test1_size') -- 替换为实际索引名(如主键索引名或自定义索引名)
AND segment_type = 'INDEX';
-- 查询资源对象id
select OBJECT_ID from sys.DBA_OBJECTS where OBJECT_TYPE='INDEX' and OBJECT_NAME=upper('idx_test1_size') and OWNER='AGILE_APP';
-- 查询结果为33555516
-- 重建索引
SP_REBUILD_INDEX('AGILE_APP', 33555516);
DROP INDEX AGILE_APP."idx_test1_size";
SELECT * FROM V$RLOG; --查看日志空间信息
SELECT * FROM V$RLOGFILE; --RLOG 文件信息
SELECT * FROM V$LOG_HISTORY; --日志文件切换历史
select * from v$dm_ini where PARA_NAME='BAK_PATH';
select arch_name, arch_type, arch_dest from v$dm_arch_ini;
select arch_mode from v$database;
-- 1. 进入MOUNT状态并开启归档模式
ALTER DATABASE MOUNT;
ALTER DATABASE ARCHIVELOG;
-- 2. 添加本地归档路径
ALTER DATABASE ADD ARCHIVELOG 'DEST = /dm8/arch/arch_local_02.log, TYPE = local, FILE_SIZE = 1024, SPACE_LIMIT = 2048';
ALTER DATABASE ADD ARCHIVELOG 'DEST = /dm8/arch/arch_local_03.log, TYPE = local, FILE_SIZE = 1024, SPACE_LIMIT = 2048';
-- 3. 切换为OPEN状态
ALTER DATABASE OPEN;
SELECT
BACKUP_NAME AS 备份名,
BACKUP_PATH AS 备份路径,
CASE
WHEN TYPE = 0 THEN '完全备份'
WHEN TYPE = 1 THEN '增量备份'
WHEN TYPE = 3 THEN '归档备份'
END AS 备份类型,
BACKUP_TIME AS 备份时间
FROM V$BACKUPSET;
-- 生成到默认路径
BACKUP DATABASE FULL BACKUPSET;
BACKUP DATABASE FULL BACKUPSET 'db_full_bak';
-- 指定路径
BACKUP DATABASE full BACKUPSET '/dm8/backup_new/202505121348';
-- 差异增量
BACKUP DATABASE INCREMENT BACKUPSET 'db_incr_bak_202505121551';
-- 指定基备份路径
BACKUP DATABASE INCREMENT BASE ON BACKUPSET '/dm8/backup_new/202505121348' BACKUPSET 'db_incr_bak_202505121552';
-- 备份
./dmrman
BACKUP DATABASE '/dm8/data/DAMENG/dm.ini' FULL TO db_offline_bak;
-- 还原
./dmrman
RESTORE DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/data/backup/DB_DAMENG_FULL_20250512_135423_987587';
RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/data/backup/DB_DAMENG_FULL_20250512_135423_987587';
RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' UPDATE DB_MAGIC;
-- 完全备份表空间MAIN
BACKUP TABLESPACE MAIN BACKUPSET 'ts_main_bak';
-- 增量备份(需存在基备份)
BACKUP TABLESPACE MAIN INCREMENT BACKUPSET 'ts_main_incr';
./dmrman
RESTORE TABLESPACE MAIN FROM BACKUPSET 'ts_main_bak';
RECOVER TABLESPACE MAIN FROM BACKUPSET 'ts_main_bak';
BACKUP TABLE TAB_01 BACKUPSET 'tab_bak_01';
RESTORE TABLE TAB_01 FROM BACKUPSET 'tab_bak_01';
-- 备份所有归档
BACKUP ARCHIVELOG ALL BACKUPSET 'arch_bak_20250512';
-- 按时间/LSN范围备份
BACKUP ARCHIVELOG LSN BETWEEN 50000 AND 60000 BACKUPSET 'arch_bak_20250512_range';
./dmrman
RESTORE ARCHIVELOG FROM BACKUPSET '/dm8/data/backup/arch_bak_20250512' TO ARCHIVEDIR '/tmp/arch_new';
SF_BAKSET_CHECK('DISK', '/dm8/data/backup/DB_DAMENG_FULL_20250512_142007_962153');
-- 删除单个备份
SF_BAKSET_REMOVE('DISK', '/dm8/data/backup/DB_DAMENG_FULL_20250512_142007_96215', 1);
-- 批量删除旧备份(保留最近2个完全备份)
SF_BAKSET_REMOVE_BATCH_N('DISK', NOW(), 1, NULL, 2);
文章
阅读量
获赞