达梦数据库8.0常用命令大全

首发于个人博客

SELECT '实例名称' 数据库选项,INSTANCE_NAME  数据库集群相关参数值 FROM V$INSTANCE UNION ALL
SELECT '数据库名',CUR_DATABASE()FROM DUAL UNION ALL
SELECT '授权客户',(SELECT AUTHORIZED_CUSTOMER FROM V$LICENSE) UNION ALL
SELECT '数据库授权码',(SELECT SERIES_NO FROM V$LICENSE) UNION ALL
SELECT '数据库有效期',CAST((SELECT EXPIRED_DATE FROM V$LICENSE)AS VARCHAR) UNION ALL
SELECT '数据库版本',SUBSTR(SVR_VERSION,INSTR(SVR_VERSION,'('))  FROM V$INSTANCE UNION ALL
SELECT '数据库版本小号',(SELECT BUILD_VERSION  FROM V$INSTANCE) UNION ALL
SELECT '数据库实例路径',(SELECT PARA_VALUE FROM V$DM_INI WHERE PARA_NAME LIKE'%SYSTEM_PATH%')  FROM V$INSTANCE UNION ALL
SELECT '数据库模式',MODE$ FROM V$INSTANCE  UNION ALL
SELECT '数据库状态',STATUS$ FROM V$INSTANCE UNION ALL
SELECT 'OGUID',CAST(OGUID AS VARCHAR) FROM V$INSTANCE UNION ALL
SELECT '归档状态_开 Y/关 N',ARCH_MODE FROM V$DATABASE UNION ALL
SELECT '长度是否以字符为单位',CASE (SELECT PARA_VALUE FROM V$DM_INI WHERE "V$DM_INI".PARA_NAME ='LENGTH_IN_CHAR') WHEN '0' THEN '否' WHEN '1' THEN '是' END UNION ALL
SELECT '大小写是否敏感_是 Y,1/否N,0',CAST(SF_GET_CASE_SENSITIVE_FLAG() AS VARCHAR) UNION ALL
SELECT '字符集',CASE SF_GET_UNICODE_FLAG() WHEN '0' THEN 'GBK18030' WHEN '1' THEN 'UTF-8' WHEN '2' THEN 'EUC-KR' END UNION ALL
SELECT '页大小',CAST(PAGE()/1024 AS VARCHAR) UNION ALL
SELECT '簇大小',CAST(SF_GET_EXTENT_SIZE() AS VARCHAR) UNION ALL
SELECT '唯一魔数',CAST(PERMANENT_MAGIC AS VARCHAR) UNION ALL
SELECT 'LSN',CAST(CUR_LSN AS VARCHAR) FROM V$RLOG UNION ALL
SELECT '当前登录用户',USER;




create tablespace "TEST" datafile '/mypath/TEST.DBF' size 180 autoextend on maxsize 16777215 CACHE = NORMAL;

create user "BAAS" identified by "yourpassword" limit failed_login_attemps 3, password_lock_time 1, password_grace_time 10 default tablespace "MAIN" default index tablespace "MAIN";
grant "DBA","RESOURCE","PUBLIC","SOI" to "BAAS";
grant CREATE SCHEMA,CREATE TABLE,CREATE VIEW,CREATE PROCEDURE,CREATE SEQUENCE,CREATE TRIGGER,CREATE INDEX,CREATE CONTEXT INDEX,CREATE LINK to "BAAS";
CREATE SCHEMA "BAAS" AUTHORIZATION "BAAS";

查询所有模式 提示没有权限,就from all_objects, dab_objects, user_objects
SELECT DISTINCT object_name FROM ALL_OBJECTS WHERE OBJECT_TYPE = 'SCH';

select * from dba_objects where object_type='SCH';



select tablespace_name from user_tablespaces;

查询当前用户表 dba_tables, all_tables
select table_name from user_tables;
select * from dba_tables where owner='XXX';  用单引号
查询当前用户所在模式
select SYS_CONTEXT('USERENV','CURRENT_SCHEMA') as schema_name from dual;
select user();
查询数据库运行状态
select host_name,status$,mode$ from v$instance;

./dm_service_installer.sh -t dmserver -dm_ini /dm8/data/DAMENG/dm.ini -p DMSERVER

环境查看

SELECT '页大小',cast(PAGE()/1024 as varchar) union all   
SELECT '簇大小',cast(SF_GET_EXTENT_SIZE() as varchar) union all
SELECT '字符集',CASE SF_GET_UNICODE_FLAG() WHEN '0' THEN 'GBK18030' WHEN '1' then 'UTF-8' when '2' then 'EUC-KR' end union all
SELECT '大小写敏感',cast(SF_GET_CASE_SENSITIVE_FLAG() as varchar) union all
select 'VARCHAR类型长度是否以字符为单位',para_value from v$dm_ini where para_name='LENGTH_IN_CHAR' union all
select '端口号',para_value from v$dm_ini where para_name='PORT_NUM' union all
select '数据库版本',substr(svr_version,instr(svr_version,'(')) FROM v$instance union all 
select '数据库模式',MODE$ from v$instance union all 
SELECT '字符数据类型' NAME, CASE VALUE WHEN 0 THEN 'BYTE' WHEN 1 THEN 'CHAR' end FROM v$parameter WHERE name like '%LENGTH_IN_CHAR%' union all
select 'KEY文件属性',  cluster_type from v$license union all
select 'REDO日志大小(M)',to_char(rlog_size/1024/1024) from v$rlogfile;   //初步看一下两个环境的这些参数的区别

//查看达梦兼容模式, mysql oracle等等
select * from v$parameter where name = ‘COMPATIBLE_MODE’;

//Server compatible mode, 0:none, 1:SQL92, 2:Oracle, 3:MS SQL Server, 4:MySQL, 5:DM6, 6:Teradata
//更改兼容模式
alter system set ‘COMPATIBLE_MODE’=4 spfile;

服务注册成功后,启动数据库,如下所示:

systemctl start DmServiceDMSERVER.service
停止数据库,如下所示:

systemctl stop DmServiceDMSERVER.service
重启数据库,如下所示:

systemctl restart DmServiceDMSERVER.service
查看数据库服务状态,如下所示:

systemctl status DmServiceDMSERVER.service
可前台启动,进入 DM 安装目录下的 bin 目录下,命令如下:

./dmserver /dm/data/DAMENG/dm.ini
该启动方式为前台启动,若想关闭数据库,则输入 exit 即可。

也可进入 DM 安装目录下的 bin 目录下,启动/停止/重启数据库,如下所示:

./DmServiceDMSERVER start/stop/restart
查看数据库状态,如下所示:

./DmServiceDMSERVER status

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,需要引入达梦数据库的Java驱动包,可以在Maven中添加以下依赖: ```xml <dependency> <groupId>dm</groupId> <artifactId>dmjdbc</artifactId> <version>8.0.0-jar-with-dependencies</version> </dependency> ``` 接下来,我们可以使用Java的ReentrantLock类来实现分布式锁,然后通过达梦数据库的事务来确保锁的正确性。以下是一个示例代码: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class DmLock implements Lock { private static final String LOCK_TABLE = "t_dm_lock"; private static final String LOCK_NAME = "my_lock"; private static final String URL = "jdbc:dm://localhost:5236"; private static final String USERNAME = "username"; private static final String PASSWORD = "password"; private Connection connection; private Lock innerLock = new ReentrantLock(); public DmLock() throws SQLException { connection = DriverManager.getConnection(URL, USERNAME, PASSWORD); createLockTable(); } private void createLockTable() throws SQLException { String sql = "CREATE TABLE IF NOT EXISTS " + LOCK_TABLE + " (name VARCHAR(255) PRIMARY KEY, locked BOOLEAN)"; try (PreparedStatement statement = connection.prepareStatement(sql)) { statement.executeUpdate(); } } @Override public void lock() { innerLock.lock(); try { while (!tryLock()) { Thread.sleep(100); } } catch (InterruptedException e) { e.printStackTrace(); } } @Override public void lockInterruptibly() throws InterruptedException { innerLock.lockInterruptibly(); try { while (!tryLock()) { Thread.sleep(100); } } catch (InterruptedException e) { innerLock.unlock(); throw e; } } @Override public boolean tryLock() { try { connection.setAutoCommit(false); String sql = "SELECT locked FROM " + LOCK_TABLE + " WHERE name = ? FOR UPDATE"; try (PreparedStatement statement = connection.prepareStatement(sql)) { statement.setString(1, LOCK_NAME); if (!statement.execute()) { return false; } if (statement.getResultSet().next()) { boolean locked = statement.getResultSet().getBoolean(1); if (locked) { return false; } } sql = "INSERT INTO " + LOCK_TABLE + " (name, locked) VALUES (?, ?)"; try (PreparedStatement insertStatement = connection.prepareStatement(sql)) { insertStatement.setString(1, LOCK_NAME); insertStatement.setBoolean(2, true); insertStatement.executeUpdate(); } connection.commit(); return true; } } catch (SQLException e) { try { connection.rollback(); } catch (SQLException ex) { ex.printStackTrace(); } return false; } } @Override public boolean tryLock(long time, TimeUnit unit) throws InterruptedException { long timeout = unit.toMillis(time); long start = System.currentTimeMillis(); innerLock.lockInterruptibly(); try { while (!tryLock()) { if (System.currentTimeMillis() - start >= timeout) { return false; } Thread.sleep(100); } } catch (InterruptedException e) { innerLock.unlock(); throw e; } return true; } @Override public void unlock() { try { connection.setAutoCommit(false); String sql = "UPDATE " + LOCK_TABLE + " SET locked = ? WHERE name = ?"; try (PreparedStatement statement = connection.prepareStatement(sql)) { statement.setBoolean(1, false); statement.setString(2, LOCK_NAME); statement.executeUpdate(); } connection.commit(); } catch (SQLException e) { try { connection.rollback(); } catch (SQLException ex) { ex.printStackTrace(); } } finally { innerLock.unlock(); } } @Override public Condition newCondition() { throw new UnsupportedOperationException(); } } ``` 以上是一个基于达梦数据库8.0版本的分布式锁实现的示例代码。需要注意的是,该实现仅供参考,实际使用中需要根据具体的场景和需求进行调整和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值